/[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 2498 - (hide annotations) (download) (as text)
Thu Jan 9 22:05:21 2014 UTC (10 years, 3 months ago) by schoenebeck
File MIME type: text/html
File size: 520441 byte(s)
* New LSCP specs (LSCP 1.6).

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 schoenebeck 2498 <meta name="generator" content="xml2rfc v1.35 (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 schoenebeck 2498 <tr><td class="header">Internet-Draft</td><td class="header">LinuxSampler.org</td></tr>
147     <tr><td class="header">Intended status: Standards Track</td><td class="header">January 9, 2014</td></tr>
148     <tr><td class="header">Expires: July 13, 2014</td><td class="header">&nbsp;</td></tr>
149 senoner 542 </table></td></tr></table>
150 schoenebeck 2498 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.6</h1>
151 senoner 542
152 schoenebeck 2023 <h3>Abstract</h3>
153    
154     <p>The LinuxSampler Control Protocol (LSCP) is an
155     application-level protocol primarily intended for local and
156     remote controlling the LinuxSampler backend application, which is a
157     sophisticated server-like console application essentially playing
158     back audio samples and manipulating the samples in real time to
159     certain extent.
160     </p>
161 senoner 542 <h3>Status of this Memo</h3>
162     <p>
163 schoenebeck 974 By submitting this Internet-Draft,
164     each author represents that any applicable patent or other IPR claims of which
165     he or she is aware have been or will be disclosed,
166     and any of which he or she becomes aware will be disclosed,
167     in accordance with Section&nbsp;6 of BCP&nbsp;79.</p>
168 senoner 542 <p>
169     Internet-Drafts are working documents of the Internet Engineering
170 schoenebeck 2498 Task Force (IETF). Note that other groups may also distribute
171     working documents as Internet-Drafts. The list of current
172     Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.</p>
173 senoner 542 <p>
174     Internet-Drafts are draft documents valid for a maximum of six months
175     and may be updated, replaced, or obsoleted by other documents at any time.
176     It is inappropriate to use Internet-Drafts as reference material or to cite
177 schoenebeck 708 them other than as &ldquo;work in progress.&rdquo;</p>
178 senoner 542 <p>
179 schoenebeck 2498 This Internet-Draft will expire on July 13, 2014.</p>
180 schoenebeck 2023 <a name="toc"></a><br /><hr />
181 senoner 542 <h3>Table of Contents</h3>
182     <p class="toc">
183     <a href="#anchor1">1.</a>&nbsp;
184     Requirements notation<br />
185 schoenebeck 575 <a href="#LSCP versioning">2.</a>&nbsp;
186     Versioning of this specification<br />
187     <a href="#anchor2">3.</a>&nbsp;
188 senoner 542 Introduction<br />
189 schoenebeck 575 <a href="#anchor3">4.</a>&nbsp;
190 senoner 542 Focus of this protocol<br />
191 schoenebeck 575 <a href="#anchor4">5.</a>&nbsp;
192 senoner 542 Communication Overview<br />
193 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
194 senoner 542 Request/response communication method<br />
195 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
196 senoner 542 Result format<br />
197 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
198 senoner 542 Subscribe/notify communication method<br />
199 schoenebeck 575 <a href="#control_commands">6.</a>&nbsp;
200 senoner 542 Description for control commands<br />
201 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
202 senoner 542 Ignored lines and comments<br />
203 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
204 senoner 542 Configuring audio drivers<br />
205 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
206 senoner 542 Getting amount of available audio output drivers<br />
207 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
208 senoner 542 Getting all available audio output drivers<br />
209 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
210 senoner 542 Getting information about a specific audio
211     output driver<br />
212 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
213 senoner 542 Getting information about specific audio
214     output driver parameter<br />
215 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
216 senoner 542 Creating an audio output device<br />
217 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
218 senoner 542 Destroying an audio output device<br />
219 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
220 senoner 542 Getting all created audio output device count<br />
221 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
222 senoner 542 Getting all created audio output device list<br />
223 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
224 senoner 542 Getting current settings of an audio output device<br />
225 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
226 senoner 542 Changing settings of audio output devices<br />
227 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
228 senoner 542 Getting information about an audio channel<br />
229 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
230 senoner 542 Getting information about specific audio channel parameter<br />
231 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
232 senoner 542 Changing settings of audio output channels<br />
233 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
234 senoner 542 Configuring MIDI input drivers<br />
235 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
236 senoner 542 Getting amount of available MIDI input drivers<br />
237 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
238 senoner 542 Getting all available MIDI input drivers<br />
239 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
240 senoner 542 Getting information about a specific MIDI input driver<br />
241 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
242 senoner 542 Getting information about specific MIDI input driver parameter<br />
243 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
244 senoner 542 Creating a MIDI input device<br />
245 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
246 senoner 542 Destroying a MIDI input device<br />
247 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
248 senoner 542 Getting all created MIDI input device count<br />
249 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
250 senoner 542 Getting all created MIDI input device list<br />
251 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
252 senoner 542 Getting current settings of a MIDI input device<br />
253 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
254 senoner 542 Changing settings of MIDI input devices<br />
255 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
256 senoner 542 Getting information about a MIDI port<br />
257 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
258 senoner 542 Getting information about specific MIDI port parameter<br />
259 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
260 senoner 542 Changing settings of MIDI input ports<br />
261 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
262 senoner 542 Configuring sampler channels<br />
263 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
264 senoner 542 Loading an instrument<br />
265 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
266 senoner 542 Loading a sampler engine<br />
267 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
268 senoner 542 Getting all created sampler channel count<br />
269 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
270 senoner 542 Getting all created sampler channel list<br />
271 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
272 senoner 542 Adding a new sampler channel<br />
273 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
274 senoner 542 Removing a sampler channel<br />
275 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
276 senoner 542 Getting amount of available engines<br />
277 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
278 senoner 542 Getting all available engines<br />
279 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
280 senoner 542 Getting information about an engine<br />
281 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
282 senoner 542 Getting sampler channel information<br />
283 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
284 senoner 542 Current number of active voices<br />
285 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
286 senoner 542 Current number of active disk streams<br />
287 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
288 senoner 542 Current fill state of disk stream buffers<br />
289 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
290 senoner 542 Setting audio output device<br />
291 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
292 senoner 542 Setting audio output type<br />
293 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
294 senoner 542 Setting audio output channel<br />
295 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL MIDI_INPUT">6.4.17.</a>&nbsp;
296     Add MIDI input to sampler channel<br />
297     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL MIDI_INPUT">6.4.18.</a>&nbsp;
298     Remove MIDI input(s) from sampler channel<br />
299     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNEL MIDI_INPUTS">6.4.19.</a>&nbsp;
300     Getting all MIDI inputs of a sampler channel<br />
301     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.20.</a>&nbsp;
302 senoner 542 Setting MIDI input device<br />
303 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.21.</a>&nbsp;
304 senoner 542 Setting MIDI input type<br />
305 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.22.</a>&nbsp;
306 senoner 542 Setting MIDI input port<br />
307 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.23.</a>&nbsp;
308 senoner 542 Setting MIDI input channel<br />
309 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.24.</a>&nbsp;
310 senoner 542 Setting channel volume<br />
311 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.25.</a>&nbsp;
312 schoenebeck 708 Muting a sampler channel<br />
313 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.26.</a>&nbsp;
314 schoenebeck 708 Soloing a sampler channel<br />
315 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.27.</a>&nbsp;
316 schoenebeck 974 Assigning a MIDI instrument map to a sampler channel<br />
317 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.28.</a>&nbsp;
318 schoenebeck 1002 Adding an effect send to a sampler channel<br />
319 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.29.</a>&nbsp;
320 schoenebeck 1002 Removing an effect send from a sampler channel<br />
321 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.30.</a>&nbsp;
322 schoenebeck 1002 Getting amount of effect sends on a sampler channel<br />
323 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.31.</a>&nbsp;
324 schoenebeck 1002 Listing all effect sends on a sampler channel<br />
325 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.32.</a>&nbsp;
326 schoenebeck 1002 Getting effect send information<br />
327 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.33.</a>&nbsp;
328 iliev 1137 Changing effect send's name<br />
329 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.34.</a>&nbsp;
330 schoenebeck 1002 Altering effect send's audio routing<br />
331 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND EFFECT">6.4.35.</a>&nbsp;
332 schoenebeck 2139 Assigning destination effect to an effect send<br />
333 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE FX_SEND EFFECT">6.4.36.</a>&nbsp;
334 schoenebeck 2139 Removing destination effect from an effect send<br />
335 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.37.</a>&nbsp;
336 schoenebeck 1028 Altering effect send's MIDI controller<br />
337 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.38.</a>&nbsp;
338 schoenebeck 1028 Altering effect send's send level<br />
339 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SEND CHANNEL MIDI_DATA">6.4.39.</a>&nbsp;
340 iliev 1773 Sending MIDI messages to sampler channel<br />
341 schoenebeck 2498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.40.</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 1801 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOICES">6.6.8.</a>&nbsp;
370     Getting global voice limit<br />
371     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOICES">6.6.9.</a>&nbsp;
372     Setting global voice limit<br />
373     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET STREAMS">6.6.10.</a>&nbsp;
374     Getting global disk stream limit<br />
375     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET STREAMS">6.6.11.</a>&nbsp;
376     Setting global disk stream limit<br />
377 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
378 schoenebeck 945 MIDI Instrument Mapping<br />
379 schoenebeck 1390 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
380 schoenebeck 974 Create a new MIDI instrument map<br />
381     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
382     Delete one particular or all MIDI instrument maps<br />
383     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
384     Get amount of existing MIDI instrument maps<br />
385     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
386     Getting all created MIDI instrument maps<br />
387     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
388     Getting MIDI instrument map information<br />
389     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
390     Renaming a MIDI instrument map<br />
391     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
392 schoenebeck 945 Create or replace a MIDI instrument map entry<br />
393 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
394 schoenebeck 2498 Getting amount of MIDI instrument map entries<br />
395 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
396     Getting indeces of all entries of a MIDI instrument map<br />
397     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
398 schoenebeck 945 Remove an entry from the MIDI instrument map<br />
399 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
400 schoenebeck 945 Get current settings of MIDI instrument map entry<br />
401 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
402 schoenebeck 945 Clear MIDI instrument map<br />
403 iliev 1162 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
404     Managing Instruments Database<br />
405     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
406     Creating a new instrument directory<br />
407     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
408     Deleting an instrument directory<br />
409     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
410     Getting amount of instrument directories<br />
411     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
412     Listing all directories in specific directory<br />
413     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
414     Getting instrument directory information<br />
415     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
416     Renaming an instrument directory<br />
417     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
418     Moving an instrument directory<br />
419 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
420     Copying instrument directories<br />
421     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
422 iliev 1162 Changing the description of directory<br />
423 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
424     Finding directories<br />
425     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
426 iliev 1162 Adding instruments to the instruments database<br />
427 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
428 iliev 1162 Removing an instrument<br />
429 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
430 iliev 1162 Getting amount of instruments<br />
431 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
432 iliev 1162 Listing all instruments in specific directory<br />
433 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
434 iliev 1162 Getting instrument information<br />
435 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
436 iliev 1162 Renaming an instrument<br />
437 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
438 iliev 1162 Moving an instrument<br />
439 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
440     Copying instruments<br />
441     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
442 iliev 1162 Changing the description of instrument<br />
443 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
444     Finding instruments<br />
445 iliev 1201 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
446     Getting job status information<br />
447 schoenebeck 1363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
448     Formatting the instruments database<br />
449 iliev 1731 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND LOST DB_INSTRUMENT_FILES">6.8.23.</a>&nbsp;
450     Checking for lost instrument files<br />
451     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT FILE_PATH">6.8.24.</a>&nbsp;
452     Replacing an instrument file<br />
453 schoenebeck 1363 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
454     Editing Instruments<br />
455     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
456     Opening an appropriate instrument editor application<br />
457 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
458     Managing Files<br />
459     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
460     Retrieving amount of instruments of a file<br />
461     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
462     Retrieving all instruments of a file<br />
463     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
464     Retrieving informations about one instrument in a file<br />
465 schoenebeck 2139 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#effects">6.11.</a>&nbsp;
466     Managing Effects<br />
467     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_EFFECTS">6.11.1.</a>&nbsp;
468     Retrieve amount of available effects<br />
469     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_EFFECTS">6.11.2.</a>&nbsp;
470     Get list of available effects<br />
471     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT INFO">6.11.3.</a>&nbsp;
472     Retrieving general information about an effect<br />
473     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE">6.11.4.</a>&nbsp;
474     Creating an instance of an effect by its portable ID<br />
475     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE (non-portable)">6.11.5.</a>&nbsp;
476     Creating an instance of an effect by its numerical ID<br />
477     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY EFFECT_INSTANCE">6.11.6.</a>&nbsp;
478     Destroy an effect instance<br />
479     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCES">6.11.7.</a>&nbsp;
480     Retrieve amount of effect instances<br />
481     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST EFFECT_INSTANCES">6.11.8.</a>&nbsp;
482     Get list of effect instances<br />
483     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE INFO">6.11.9.</a>&nbsp;
484     Retrieving current information about an effect instance<br />
485     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE_INPUT_CONTROL INFO">6.11.10.</a>&nbsp;
486     Retrieving information about an effect parameter<br />
487     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET EFFECT_INSTANCE_INPUT_CONTROL VALUE">6.11.11.</a>&nbsp;
488     Altering an effect parameter<br />
489     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAINS">6.11.12.</a>&nbsp;
490     Retrieve amount of send effect chains<br />
491     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST SEND_EFFECT_CHAINS">6.11.13.</a>&nbsp;
492     Retrieve list of send effect chains<br />
493     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD SEND_EFFECT_CHAIN">6.11.14.</a>&nbsp;
494     Add send effect chain<br />
495     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN">6.11.15.</a>&nbsp;
496     Remove send effect chain<br />
497     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAIN INFO">6.11.16.</a>&nbsp;
498     Retrieving information about a send effect chain<br />
499     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#APPEND SEND_EFFECT_CHAIN EFFECT">6.11.17.</a>&nbsp;
500     Append effect instance to a send effect chain<br />
501     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#INSERT SEND_EFFECT_CHAIN EFFECT">6.11.18.</a>&nbsp;
502     Insert effect instance to a send effect chain<br />
503     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN EFFECT">6.11.19.</a>&nbsp;
504     Remove effect instance from send effect chain<br />
505 schoenebeck 575 <a href="#command_syntax">7.</a>&nbsp;
506 senoner 542 Command Syntax<br />
507 schoenebeck 1251 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
508     Character Set and Escape Sequences<br />
509 schoenebeck 575 <a href="#events">8.</a>&nbsp;
510 senoner 542 Events<br />
511 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
512     Number of audio output devices changed<br />
513     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
514     Audio output device's settings changed<br />
515     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
516     Number of MIDI input devices changed<br />
517     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
518     MIDI input device's settings changed<br />
519     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
520 senoner 542 Number of sampler channels changed<br />
521 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
522     MIDI data on a sampler channel arrived<br />
523 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DEVICE_MIDI">8.7.</a>&nbsp;
524     MIDI data on a MIDI input device arrived<br />
525     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.8.</a>&nbsp;
526 senoner 542 Number of active voices changed<br />
527 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.9.</a>&nbsp;
528 senoner 542 Number of active disk streams changed<br />
529 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.10.</a>&nbsp;
530 senoner 542 Disk stream buffer fill state changed<br />
531 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.11.</a>&nbsp;
532 senoner 542 Channel information changed<br />
533 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.12.</a>&nbsp;
534 iliev 1110 Number of effect sends changed<br />
535 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.13.</a>&nbsp;
536 iliev 1110 Effect send information changed<br />
537 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.14.</a>&nbsp;
538 schoenebeck 940 Total number of active voices changed<br />
539 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.15.</a>&nbsp;
540 schoenebeck 1572 Total number of active disk streams changed<br />
541 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.16.</a>&nbsp;
542 iliev 992 Number of MIDI instrument maps changed<br />
543 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.17.</a>&nbsp;
544 iliev 992 MIDI instrument map information changed<br />
545 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.18.</a>&nbsp;
546 iliev 992 Number of MIDI instruments changed<br />
547 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.19.</a>&nbsp;
548 iliev 992 MIDI instrument information changed<br />
549 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.20.</a>&nbsp;
550 iliev 1110 Global settings changed<br />
551 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.21.</a>&nbsp;
552 iliev 1162 Number of database instrument directories changed<br />
553 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.22.</a>&nbsp;
554 iliev 1162 Database instrument directory information changed<br />
555 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.23.</a>&nbsp;
556 iliev 1162 Number of database instruments changed<br />
557 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.24.</a>&nbsp;
558 iliev 1162 Database instrument information changed<br />
559 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.25.</a>&nbsp;
560 iliev 1201 Database job status information changed<br />
561 iliev 2189 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_COUNT">8.26.</a>&nbsp;
562     Number of effect instances changed<br />
563     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE EFFECT_INSTANCE_INFO">8.27.</a>&nbsp;
564     Effect instance information changed<br />
565     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_COUNT">8.28.</a>&nbsp;
566     Number of send effect chains changed<br />
567     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE SEND_EFFECT_CHAIN_INFO">8.29.</a>&nbsp;
568     Send effect chain information changed<br />
569     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.30.</a>&nbsp;
570 senoner 542 Miscellaneous and debugging events<br />
571 schoenebeck 974 <a href="#anchor14">9.</a>&nbsp;
572 senoner 542 Security Considerations<br />
573 schoenebeck 974 <a href="#anchor15">10.</a>&nbsp;
574 senoner 542 Acknowledgments<br />
575 schoenebeck 575 <a href="#rfc.references1">11.</a>&nbsp;
576 senoner 542 References<br />
577     <a href="#rfc.authors">&#167;</a>&nbsp;
578     Author's Address<br />
579     <a href="#rfc.copyright">&#167;</a>&nbsp;
580     Intellectual Property and Copyright Statements<br />
581     </p>
582     <br clear="all" />
583    
584     <a name="anchor1"></a><br /><hr />
585 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>
586     <a name="rfc.section.1"></a><h3>1.&nbsp;
587     Requirements notation</h3>
588 senoner 542
589     <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
590     "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
591     and "OPTIONAL" in this document are to be interpreted as
592 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>.
593 senoner 542 </p>
594     <p>This protocol is always case-sensitive if not explicitly
595     claimed the opposite.
596     </p>
597     <p>In examples, "C:" and "S:" indicate lines sent by the client
598     (front-end) and server (LinuxSampler) respectively. Lines in
599     examples must be interpreted as every line being CRLF
600     terminated (carriage return character followed by line feed
601 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>),
602     thus the following example:
603 senoner 542 </p>
604 schoenebeck 708 <p>
605     </p>
606 senoner 542 <blockquote class="text">
607     <p>C: "some line"
608     </p>
609     <p>&nbsp;&nbsp;&nbsp;"another line"
610     </p>
611 schoenebeck 708 </blockquote><p>
612 schoenebeck 940
613 schoenebeck 708 </p>
614 senoner 542 <p>must actually be interpreted as client sending the following
615     message:
616     </p>
617 schoenebeck 708 <p>
618     </p>
619 senoner 542 <blockquote class="text">
620     <p>"some line&lt;CR&gt;&lt;LF&gt;another
621     line&lt;CR&gt;&lt;LF&gt;"
622     </p>
623 schoenebeck 708 </blockquote><p>
624 schoenebeck 940
625 schoenebeck 708 </p>
626 senoner 542 <p>where &lt;CR&gt; symbolizes the carriage return character and
627     &lt;LF&gt; the line feed character as defined in the ASCII
628     standard.
629     </p>
630     <p>Due to technical reasons, messages can arbitrary be
631     fragmented, means the following example:
632     </p>
633 schoenebeck 708 <p>
634     </p>
635 senoner 542 <blockquote class="text">
636     <p>S: "abcd"
637     </p>
638 schoenebeck 708 </blockquote><p>
639 schoenebeck 940
640 schoenebeck 708 </p>
641 senoner 542 <p>could also happen to be sent in three messages like in the
642     following sequence scenario:
643     </p>
644 schoenebeck 708 <p>
645     </p>
646 senoner 542 <ul class="text">
647     <li>server sending message "a"
648     </li>
649     <li>followed by a delay (pause) with
650     arbitrary duration
651     </li>
652     <li>followed by server sending message
653     "bcd&lt;CR&gt;"
654     </li>
655     <li>again followed by a delay (pause) with arbitrary
656     duration
657     </li>
658     <li>followed by server sending the message
659     "&lt;LF&gt;"
660     </li>
661 schoenebeck 708 </ul><p>
662 schoenebeck 940
663 schoenebeck 708 </p>
664 senoner 542 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
665     return and line feed characters respectively.
666     </p>
667 schoenebeck 575 <a name="LSCP versioning"></a><br /><hr />
668 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>
669     <a name="rfc.section.2"></a><h3>2.&nbsp;
670     Versioning of this specification</h3>
671 schoenebeck 575
672     <p>LSCP will certainly be extended and enhanced by-and-by. Each official
673     release of the LSCP specification will be tagged with a unique version
674     tuple. The version tuple consists at least of a major and minor version
675     number like:
676 schoenebeck 940
677 schoenebeck 575 </p>
678 schoenebeck 708 <p>
679     </p>
680 schoenebeck 575 <blockquote class="text">
681     <p>"1.2"
682     </p>
683 schoenebeck 708 </blockquote><p>
684 schoenebeck 940
685 schoenebeck 708 </p>
686 schoenebeck 575 <p>
687     In this example the major version number would be "1" and the minor
688     version number would be "2". Note that the version tuple might also
689     have more than two elements. The major version number defines a
690     group of backward compatible versions. That means a frontend is
691     compatible to the connected sampler if and only if the LSCP versions
692     to which each of the two parties complies to, match both of the
693     following rules:
694 schoenebeck 940
695 schoenebeck 575 </p>
696     <p>Compatibility:
697     </p>
698 schoenebeck 708 <p>
699     </p>
700 schoenebeck 575 <ol class="text">
701     <li>The frontend's LSCP major version and the sampler's LSCP
702     major version are exactly equal.
703     </li>
704     <li>The frontend's LSCP minor version is less or equal than
705     the sampler's LSCP minor version.
706     </li>
707 schoenebeck 708 </ol><p>
708 schoenebeck 940
709 schoenebeck 708 </p>
710 schoenebeck 575 <p>
711     Compatibility can only be claimed if both rules are true.
712     The frontend can use the
713 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
714 schoenebeck 575 get the version of the LSCP specification the sampler complies with.
715 schoenebeck 940
716 schoenebeck 575 </p>
717 senoner 542 <a name="anchor2"></a><br /><hr />
718 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>
719     <a name="rfc.section.3"></a><h3>3.&nbsp;
720     Introduction</h3>
721 senoner 542
722     <p>LinuxSampler is a so called software sampler application
723     capable to playback audio samples from a computer's Random
724     Access Memory (RAM) as well as directly streaming it from disk.
725     LinuxSampler is designed to be modular. It provides several so
726     called "sampler engines" where each engine is specialized for a
727     certain purpose. LinuxSampler has virtual channels which will be
728     referred in this document as "sampler channels". The channels
729     are in such way virtual as they can be connected to an
730     arbitrary MIDI input method and arbitrary MIDI channel (e.g.
731     sampler channel 17 could be connected to an ALSA sequencer
732     device 64:0 and listening to MIDI channel 1 there). Each sampler
733 schoenebeck 575 channel will be associated with an instance of one of the available
734 senoner 542 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
735     each sampler channel can be routed to an arbitrary audio output
736     method (ALSA / JACK) and an arbitrary audio output channel
737     there.
738     </p>
739     <a name="anchor3"></a><br /><hr />
740 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>
741     <a name="rfc.section.4"></a><h3>4.&nbsp;
742     Focus of this protocol</h3>
743 senoner 542
744     <p>Main focus of this protocol is to provide a way to configure
745     a running LinuxSampler instance and to retrieve information
746     about it. The focus of this protocol is not to provide a way to
747     control synthesis parameters or even to trigger or release
748     notes. Or in other words; the focus are those functionalities
749     which are not covered by MIDI or which may at most be handled
750     via MIDI System Exclusive Messages.
751     </p>
752     <a name="anchor4"></a><br /><hr />
753 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>
754     <a name="rfc.section.5"></a><h3>5.&nbsp;
755     Communication Overview</h3>
756 senoner 542
757     <p>There are two distinct methods of communication between a
758     running instance of LinuxSampler and one or more control
759     applications, so called "front-ends": a simple request/response
760     communication method used by the clients to give commands to the
761     server as well as to inquire about server's status and a
762     subscribe/notify communication method used by the client to
763     subscribe to and receive notifications of certain events as they
764     happen on the server. The latter needs more effort to be
765     implemented in the front-end application. The two communication
766     methods will be described next.
767     </p>
768 schoenebeck 940 <a name="anchor5"></a><br /><hr />
769 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>
770     <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
771     Request/response communication method</h3>
772 senoner 542
773 schoenebeck 575 <p>This simple communication method is based on
774 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
775 senoner 542 front-end application establishes a TCP connection to the
776     LinuxSampler instance on a certain host system. Then the
777     front-end application will send certain ASCII based commands
778     as defined in this document (every command line must be CRLF
779     terminated - see "Conventions used in this document" at the
780     beginning of this document) and the LinuxSampler application
781     will response after a certain process time with an
782     appropriate ASCII based answer, also as defined in this
783     document. So this TCP communication is simply based on query
784     and answer paradigm. That way LinuxSampler is only able to
785     answer on queries from front-ends, but not able to
786     automatically send messages to the client if it's not asked
787     to. The fronted should not reconnect to LinuxSampler for
788     every single command, instead it should keep the connection
789     established and simply resend message(s) for subsequent
790     commands. To keep information in the front-end up-to-date
791     the front-end has to periodically send new requests to get
792     the current information from the LinuxSampler instance. This
793     is often referred to as "polling". While polling is simple
794     to implement and may be OK to use in some cases, there may
795     be disadvantages to polling such as network traffic overhead
796     and information being out of date.
797     It is possible for a client or several clients to open more
798     than one connection to the server at the same time. It is
799     also possible to send more than one request to the server
800     at the same time but if those requests are sent over the
801     same connection server MUST execute them sequentially. Upon
802     executing a request server will produce a result set and
803     send it to the client. Each and every request made by the
804     client MUST result in a result set being sent back to the
805     client. No other data other than a result set may be sent by
806     a server to a client. No result set may be sent to a client
807     without the client sending request to the server first. On
808     any particular connection, result sets MUST be sent in their
809     entirety without being interrupted by other result sets. If
810     several requests got queued up at the server they MUST be
811     processed in the order they were received and result sets
812     MUST be sent back in the same order.
813     </p>
814 schoenebeck 940 <a name="anchor6"></a><br /><hr />
815 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>
816     <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
817     Result format</h3>
818 senoner 542
819     <p>Result set could be one of the following types:
820     </p>
821 schoenebeck 708 <p>
822     </p>
823 senoner 542 <ol class="text">
824     <li>Normal
825     </li>
826     <li>Warning
827     </li>
828     <li>Error
829     </li>
830 schoenebeck 708 </ol><p>
831 schoenebeck 940
832 schoenebeck 708 </p>
833 senoner 542 <p>Warning and Error result sets MUST be single line and
834     have the following format:
835     </p>
836 schoenebeck 708 <p>
837     </p>
838 senoner 542 <ul class="text">
839     <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
840     </li>
841     <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
842     </li>
843 schoenebeck 708 </ul><p>
844 schoenebeck 940
845 schoenebeck 708 </p>
846 senoner 542 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
847     numeric unique identifiers of the warning or error and
848     &lt;warning-message&gt; and &lt;error-message&gt; are
849     human readable descriptions of the warning or error
850     respectively.
851     </p>
852     <p>Examples:
853     </p>
854 schoenebeck 708 <p>
855     </p>
856 senoner 542 <blockquote class="text">
857     <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
858     </p>
859     <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
860     </p>
861 schoenebeck 708 </blockquote><p>
862 schoenebeck 940
863 schoenebeck 708 </p>
864     <p>
865     </p>
866 senoner 542 <blockquote class="text">
867     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
868     </p>
869     <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
870     </p>
871 schoenebeck 708 </blockquote><p>
872 schoenebeck 940
873 schoenebeck 708 </p>
874     <p>
875     </p>
876 senoner 542 <blockquote class="text">
877     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
878     </p>
879     <p>S: "ERR:9:There is no audio output device with index 123456."
880     </p>
881 schoenebeck 708 </blockquote><p>
882 schoenebeck 940
883 schoenebeck 708 </p>
884 senoner 542 <p>Normal result sets could be:
885     </p>
886 schoenebeck 708 <p>
887     </p>
888 senoner 542 <ol class="text">
889     <li>Empty
890     </li>
891     <li>Single line
892     </li>
893     <li>Multi-line
894     </li>
895 schoenebeck 708 </ol><p>
896 schoenebeck 940
897 schoenebeck 708 </p>
898 senoner 542 <p> Empty result set is issued when the server only
899     needed to acknowledge the fact that the request was
900     received and it was processed successfully and no
901     additional information is available. This result set has
902     the following format:
903     </p>
904 schoenebeck 708 <p>
905     </p>
906 senoner 542 <blockquote class="text">
907     <p>"OK"
908     </p>
909 schoenebeck 708 </blockquote><p>
910 schoenebeck 940
911 schoenebeck 708 </p>
912 senoner 542 <p>Example:
913     </p>
914 schoenebeck 708 <p>
915     </p>
916 senoner 542 <blockquote class="text">
917     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
918     </p>
919     <p>S: "OK"
920     </p>
921 schoenebeck 708 </blockquote><p>
922 schoenebeck 940
923 schoenebeck 708 </p>
924 senoner 542 <p>Single line result sets are command specific. One
925     example of a single line result set is an empty line.
926     Multi-line result sets are command specific and may
927     include one or more lines of information. They MUST
928     always end with the following line:
929     </p>
930 schoenebeck 708 <p>
931     </p>
932 senoner 542 <blockquote class="text">
933     <p>"."
934     </p>
935 schoenebeck 708 </blockquote><p>
936 schoenebeck 940
937 schoenebeck 708 </p>
938 senoner 542 <p>Example:
939     </p>
940 schoenebeck 708 <p>
941     </p>
942 senoner 542 <blockquote class="text">
943     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
944     </p>
945     <p>S: "DRIVER: ALSA"
946     </p>
947     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
948     </p>
949     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
950     </p>
951     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
952     </p>
953     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
954     </p>
955     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
956     </p>
957     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
958     </p>
959     <p>&nbsp;&nbsp;&nbsp;"."
960     </p>
961 schoenebeck 708 </blockquote><p>
962 schoenebeck 940
963 schoenebeck 708 </p>
964 senoner 542 <p>In addition to above mentioned formats, warnings and
965     empty result sets MAY be indexed. In this case, they
966     have the following formats respectively:
967     </p>
968 schoenebeck 708 <p>
969     </p>
970 senoner 542 <ul class="text">
971     <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
972     </li>
973     <li>"OK[&lt;index&gt;]"
974     </li>
975 schoenebeck 708 </ul><p>
976 schoenebeck 940
977 schoenebeck 708 </p>
978 senoner 542 <p>where &lt;index&gt; is command specific and is used
979     to indicate channel number that the result set was
980     related to or other integer value.
981     </p>
982     <p>Each line of the result set MUST end with
983     &lt;CRLF&gt;.
984     </p>
985     <p>Examples:
986     </p>
987 schoenebeck 708 <p>
988     </p>
989 senoner 542 <blockquote class="text">
990     <p>C: "ADD CHANNEL"
991     </p>
992     <p>S: "OK[12]"
993     </p>
994 schoenebeck 708 </blockquote><p>
995 schoenebeck 940
996 schoenebeck 708 </p>
997     <p>
998     </p>
999 senoner 542 <blockquote class="text">
1000     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
1001     </p>
1002     <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
1003     </p>
1004 schoenebeck 708 </blockquote><p>
1005 schoenebeck 940
1006 schoenebeck 708 </p>
1007 schoenebeck 940 <a name="anchor7"></a><br /><hr />
1008 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>
1009     <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
1010     Subscribe/notify communication method</h3>
1011 senoner 542
1012     <p>This more sophisticated communication method is actually
1013     only an extension of the simple request/response
1014     communication method. The front-end still uses a TCP
1015     connection and sends the same commands on the TCP
1016     connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
1017     commands that allow a client to tell the server that it is
1018     interested in receiving notifications about certain events
1019     as they happen on the server. The SUBSCRIBE command has the
1020     following syntax:
1021     </p>
1022 schoenebeck 708 <p>
1023     </p>
1024 senoner 542 <blockquote class="text">
1025     <p>SUBSCRIBE &lt;event-id&gt;
1026     </p>
1027 schoenebeck 708 </blockquote><p>
1028 schoenebeck 940
1029 schoenebeck 708 </p>
1030 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective
1031     event that client wants to subscribe to. Upon receiving such
1032     request, server SHOULD respond with OK and start sending
1033     EVENT notifications when a given even has occurred to the
1034     front-end when an event has occurred. It MAY be possible
1035     certain events may be sent before OK response during real
1036     time nature of their generation. Event messages have the
1037     following format:
1038     </p>
1039 schoenebeck 708 <p>
1040     </p>
1041 senoner 542 <blockquote class="text">
1042     <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
1043     </p>
1044 schoenebeck 708 </blockquote><p>
1045 schoenebeck 940
1046 schoenebeck 708 </p>
1047 senoner 542 <p>where &lt;event-id&gt; uniquely identifies the event that
1048     has occurred and &lt;custom-event-data&gt; is event
1049     specific.
1050     </p>
1051     <p>Several rules must be followed by the server when
1052     generating events:
1053     </p>
1054 schoenebeck 708 <p>
1055     </p>
1056 senoner 542 <ol class="text">
1057     <li>Events MUST NOT be sent to any client who has not
1058     issued an appropriate SUBSCRIBE command.
1059     </li>
1060     <li>Events MUST only be sent using the same
1061     connection that was used to subscribe to them.
1062     </li>
1063     <li>When response is being sent to the client, event
1064     MUST be inserted in the stream before or after the
1065     response, but NOT in the middle. Same is true about
1066     the response. It should never be inserted in the
1067     middle of the event message as well as any other
1068     response.
1069     </li>
1070 schoenebeck 708 </ol><p>
1071 schoenebeck 940
1072 schoenebeck 708 </p>
1073 senoner 542 <p>If the client is not interested in a particular event
1074     anymore it MAY issue UNSUBSCRIBE command using the following
1075     syntax:
1076     </p>
1077 schoenebeck 708 <p>
1078     </p>
1079 senoner 542 <blockquote class="text">
1080     <p>UNSUBSCRIBE &lt;event-id&gt;
1081     </p>
1082 schoenebeck 708 </blockquote><p>
1083 schoenebeck 940
1084 schoenebeck 708 </p>
1085 senoner 542 <p>where &lt;event-id&gt; will be replace by the respective
1086     event that client is no longer interested in receiving. For
1087 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>.
1088 senoner 542 </p>
1089     <p>Example: the fill states of disk stream buffers have
1090     changed on sampler channel 4 and the LinuxSampler instance
1091     will react by sending the following message to all clients
1092     who subscribed to this event:
1093     </p>
1094 schoenebeck 708 <p>
1095     </p>
1096 senoner 542 <blockquote class="text">
1097     <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1098     </p>
1099 schoenebeck 708 </blockquote><p>
1100 schoenebeck 940
1101 schoenebeck 708 </p>
1102 senoner 542 <p>Which means there are currently three active streams on
1103     sampler channel 4, where the stream with ID "35" is filled
1104     by 62%, stream with ID 33 is filled by 80% and stream with
1105     ID 37 is filled by 98%.
1106     </p>
1107     <p>Clients may choose to open more than one connection to
1108     the server and use some connections to receive notifications
1109     while using other connections to issue commands to the
1110     back-end. This is entirely legal and up to the
1111     implementation. This does not change the protocol in any way
1112     and no special restrictions exist on the server to allow or
1113     disallow this or to track what connections belong to what
1114     front-ends. Server will listen on a single port, accept
1115     multiple connections and support protocol described in this
1116     specification in it's entirety on this single port on each
1117     connection that it accepted.
1118     </p>
1119     <p>Due to the fact that TCP is used for this communication,
1120     dead peers will be detected automatically by the OS TCP
1121     stack. While it may take a while to detect dead peers if no
1122     traffic is being sent from server to client (TCP keep-alive
1123     timer is set to 2 hours on many OSes) it will not be an
1124     issue here as when notifications are sent by the server,
1125     dead client will be detected quickly.
1126     </p>
1127     <p>When connection is closed for any reason server MUST
1128     forget all subscriptions that were made on this connection.
1129     If client reconnects it MUST resubscribe to all events that
1130     it wants to receive.
1131     </p>
1132 schoenebeck 575 <a name="control_commands"></a><br /><hr />
1133 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>
1134     <a name="rfc.section.6"></a><h3>6.&nbsp;
1135     Description for control commands</h3>
1136 senoner 542
1137     <p>This chapter will describe the available control commands
1138     that can be sent on the TCP connection in detail. Some certain
1139 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>
1140     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
1141 senoner 542 multiple-line responses. In this case LinuxSampler signals the
1142     end of the response by a "." (single dot) line.
1143     </p>
1144 schoenebeck 940 <a name="anchor8"></a><br /><hr />
1145 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>
1146     <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1147     Ignored lines and comments</h3>
1148 senoner 542
1149     <p>White lines, that is lines which only contain space and
1150     tabulator characters, and lines that start with a "#"
1151     character are ignored, thus it's possible for example to
1152     group commands and to place comments in a LSCP script
1153     file.
1154     </p>
1155 schoenebeck 940 <a name="anchor9"></a><br /><hr />
1156 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>
1157     <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1158     Configuring audio drivers</h3>
1159 senoner 542
1160     <p>Instances of drivers in LinuxSampler are called devices.
1161     You can use multiple audio devices simultaneously, e.g. to
1162     output the sound of one sampler channel using the ALSA audio
1163     output driver, and on another sampler channel you might want
1164     to use the JACK audio output driver. For particular audio
1165     output systems it's also possible to create several devices
1166     of the same audio output driver, e.g. two separate ALSA
1167     audio output devices for using two different sound cards at
1168     the same time. This chapter describes all commands to
1169     configure LinuxSampler's audio output devices and their
1170     parameters.
1171     </p>
1172     <p>Instead of defining commands and parameters for each
1173     driver individually, all possible parameters, their meanings
1174     and possible values have to be obtained at runtime. This
1175     makes the protocol a bit abstract, but has the advantage,
1176     that front-ends can be written independently of what drivers
1177     are currently implemented and what parameters these drivers
1178     are actually offering. This means front-ends can even handle
1179     drivers which are implemented somewhere in future without
1180     modifying the front-end at all.
1181     </p>
1182     <p>Note: examples in this chapter showing particular
1183     parameters of drivers are not meant as specification of the
1184     drivers' parameters. Driver implementations in LinuxSampler
1185     might have complete different parameter names and meanings
1186     than shown in these examples or might change in future, so
1187     these examples are only meant for showing how to retrieve
1188     what parameters drivers are offering, how to retrieve their
1189     possible values, etc.
1190     </p>
1191 schoenebeck 940 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1192 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>
1193     <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1194     Getting amount of available audio output drivers</h3>
1195 senoner 542
1196     <p>Use the following command to get the number of
1197     audio output drivers currently available for the
1198     LinuxSampler instance:
1199     </p>
1200 schoenebeck 708 <p>
1201     </p>
1202 senoner 542 <blockquote class="text">
1203     <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1204     </p>
1205 schoenebeck 708 </blockquote><p>
1206 schoenebeck 940
1207 schoenebeck 708 </p>
1208 senoner 542 <p>Possible Answers:
1209     </p>
1210 schoenebeck 708 <p>
1211     </p>
1212 senoner 542 <blockquote class="text">
1213     <p>LinuxSampler will answer by sending the
1214     number of audio output drivers.
1215     </p>
1216 schoenebeck 708 </blockquote><p>
1217 schoenebeck 940
1218 schoenebeck 708 </p>
1219 senoner 542 <p>Example:
1220     </p>
1221 schoenebeck 708 <p>
1222     </p>
1223 senoner 542 <blockquote class="text">
1224     <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1225     </p>
1226     <p>S: "2"
1227     </p>
1228 schoenebeck 708 </blockquote><p>
1229 schoenebeck 940
1230 schoenebeck 708 </p>
1231 schoenebeck 940 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1232 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>
1233     <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1234     Getting all available audio output drivers</h3>
1235 senoner 542
1236     <p>Use the following command to list all audio output
1237     drivers currently available for the LinuxSampler
1238     instance:
1239     </p>
1240 schoenebeck 708 <p>
1241     </p>
1242 senoner 542 <blockquote class="text">
1243     <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1244     </p>
1245 schoenebeck 708 </blockquote><p>
1246 schoenebeck 940
1247 schoenebeck 708 </p>
1248 senoner 542 <p>Possible Answers:
1249     </p>
1250 schoenebeck 708 <p>
1251     </p>
1252 senoner 542 <blockquote class="text">
1253     <p>LinuxSampler will answer by sending comma
1254     separated character strings, each symbolizing an
1255     audio output driver.
1256     </p>
1257 schoenebeck 708 </blockquote><p>
1258 schoenebeck 940
1259 schoenebeck 708 </p>
1260 senoner 542 <p>Example:
1261     </p>
1262 schoenebeck 708 <p>
1263     </p>
1264 senoner 542 <blockquote class="text">
1265     <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1266     </p>
1267     <p>S: "ALSA,JACK"
1268     </p>
1269 schoenebeck 708 </blockquote><p>
1270 schoenebeck 940
1271 schoenebeck 708 </p>
1272 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1273 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>
1274     <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1275     Getting information about a specific audio
1276 schoenebeck 940 output driver</h3>
1277 senoner 542
1278     <p>Use the following command to get detailed information
1279     about a specific audio output driver:
1280     </p>
1281 schoenebeck 708 <p>
1282     </p>
1283 senoner 542 <blockquote class="text">
1284     <p>GET AUDIO_OUTPUT_DRIVER INFO
1285     &lt;audio-output-driver&gt;
1286     </p>
1287 schoenebeck 708 </blockquote><p>
1288 schoenebeck 940
1289 schoenebeck 708 </p>
1290 senoner 542 <p>Where &lt;audio-output-driver&gt; is the name of the
1291     audio output driver, returned by the
1292 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.
1293 senoner 542 </p>
1294     <p>Possible Answers:
1295     </p>
1296 schoenebeck 708 <p>
1297     </p>
1298 senoner 542 <blockquote class="text">
1299     <p>LinuxSampler will answer by sending a
1300     &lt;CRLF&gt; separated list. Each answer line
1301     begins with the information category name
1302     followed by a colon and then a space character
1303     &lt;SP&gt; and finally the info character string
1304     to that info category. At the moment the
1305     following information categories are
1306     defined:
1307     </p>
1308 schoenebeck 708 <p>
1309     </p>
1310 senoner 542 <blockquote class="text">
1311     <p>DESCRIPTION -
1312     </p>
1313     <blockquote class="text">
1314     <p> character string describing the
1315     audio output driver
1316     </p>
1317 schoenebeck 940 </blockquote>
1318    
1319 senoner 542
1320     <p>VERSION -
1321     </p>
1322     <blockquote class="text">
1323     <p>character string reflecting the
1324     driver's version
1325     </p>
1326 schoenebeck 940 </blockquote>
1327    
1328 senoner 542
1329     <p>PARAMETERS -
1330     </p>
1331     <blockquote class="text">
1332     <p>comma separated list of all
1333     parameters available for the given
1334     audio output driver, at least
1335     parameters 'channels', 'samplerate'
1336     and 'active' are offered by all audio
1337     output drivers
1338     </p>
1339 schoenebeck 940 </blockquote>
1340    
1341 senoner 542
1342 schoenebeck 940 </blockquote>
1343    
1344 senoner 542
1345     <p>The mentioned fields above don't have to be
1346     in particular order.
1347     </p>
1348 schoenebeck 708 </blockquote><p>
1349 schoenebeck 940
1350 schoenebeck 708 </p>
1351 senoner 542 <p>Example:
1352     </p>
1353 schoenebeck 708 <p>
1354     </p>
1355 senoner 542 <blockquote class="text">
1356     <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1357     </p>
1358     <p>S: "DESCRIPTION: Advanced Linux Sound
1359     Architecture"
1360     </p>
1361     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1362     </p>
1363     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1364     DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1365     FRAGMENTSIZE,CARD"
1366     </p>
1367     <p>&nbsp;&nbsp;&nbsp;"."
1368     </p>
1369 schoenebeck 708 </blockquote><p>
1370 schoenebeck 940
1371 schoenebeck 708 </p>
1372 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1373 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>
1374     <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1375     Getting information about specific audio
1376 schoenebeck 940 output driver parameter</h3>
1377 senoner 542
1378     <p>Use the following command to get detailed information
1379     about a specific audio output driver parameter:
1380     </p>
1381 schoenebeck 708 <p>
1382     </p>
1383 senoner 542 <blockquote class="text">
1384     <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1385     </p>
1386 schoenebeck 708 </blockquote><p>
1387 schoenebeck 940
1388 schoenebeck 708 </p>
1389 senoner 542 <p>Where &lt;audio&gt; is the name of the audio output
1390 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,
1391 senoner 542 &lt;prm&gt; a specific parameter name for which information should be
1392     obtained (as returned by the
1393 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
1394 senoner 542 &lt;deplist&gt; is an optional list of parameters on which the sought
1395     parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1396     pairs in form of "key1=val1 key2=val2 ...", where character string values
1397     are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1398     which are not dependency parameters of &lt;prm&gt; will be ignored, means
1399     the front-end application can simply put all parameters into &lt;deplist&gt;
1400     with the values already selected by the user.
1401     </p>
1402     <p>Possible Answers:
1403     </p>
1404 schoenebeck 708 <p>
1405     </p>
1406 senoner 542 <blockquote class="text">
1407     <p>LinuxSampler will answer by sending a
1408     &lt;CRLF&gt; separated list.
1409     Each answer line begins with the information category name
1410     followed by a colon and then a space character &lt;SP&gt; and
1411     finally
1412     the info character string to that info category. There are
1413     information which is always returned, independently of the
1414     given driver parameter and there are optional information
1415     which is only shown dependently to given driver parameter. At
1416     the moment the following information categories are defined:
1417     </p>
1418 schoenebeck 708 </blockquote><p>
1419 schoenebeck 940
1420 schoenebeck 708 </p>
1421     <p>
1422     </p>
1423 senoner 542 <blockquote class="text">
1424     <p>TYPE -
1425     </p>
1426     <blockquote class="text">
1427     <p>either "BOOL" for boolean value(s) or
1428     "INT" for integer
1429     value(s) or "FLOAT" for dotted number(s) or "STRING" for
1430     character string(s)
1431     (always returned, no matter which driver parameter)
1432     </p>
1433 schoenebeck 940 </blockquote>
1434    
1435 senoner 542
1436     <p>DESCRIPTION -
1437     </p>
1438     <blockquote class="text">
1439     <p>arbitrary text describing the purpose of the parameter
1440     (always returned, no matter which driver parameter)
1441     </p>
1442 schoenebeck 940 </blockquote>
1443    
1444 senoner 542
1445     <p>MANDATORY -
1446     </p>
1447     <blockquote class="text">
1448     <p>either true or false, defines if this parameter must be
1449     given when the device is to be created with the
1450 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>
1451 senoner 542 command (always returned, no matter which driver parameter)
1452     </p>
1453 schoenebeck 940 </blockquote>
1454    
1455 senoner 542
1456     <p>FIX -
1457     </p>
1458     <blockquote class="text">
1459     <p>either true or false, if false then this parameter can
1460     be changed at any time, once the device is created by
1461 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>
1462 senoner 542 command (always returned, no matter which driver parameter)
1463     </p>
1464 schoenebeck 940 </blockquote>
1465    
1466 senoner 542
1467     <p>MULTIPLICITY -
1468     </p>
1469     <blockquote class="text">
1470     <p>either true or false, defines if this parameter allows
1471     only one value or a list of values, where true means
1472     multiple values and false only a single value allowed
1473     (always returned, no matter which driver parameter)
1474     </p>
1475 schoenebeck 940 </blockquote>
1476    
1477 senoner 542
1478     <p>DEPENDS -
1479     </p>
1480     <blockquote class="text">
1481 schoenebeck 561 <p>comma separated list of parameters this parameter depends
1482 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1483     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1484     listed parameters, for example assuming that an audio
1485     driver (like the ALSA driver) offers parameters 'card'
1486     and 'samplerate' then parameter 'samplerate' would
1487     depend on 'card' because the possible values for
1488     'samplerate' depends on the sound card which can be
1489     chosen by the 'card' parameter
1490     (optionally returned, dependent to driver parameter)
1491     </p>
1492 schoenebeck 940 </blockquote>
1493    
1494 senoner 542
1495     <p>DEFAULT -
1496     </p>
1497     <blockquote class="text">
1498     <p>reflects the default value for this parameter which is
1499     used when the device is created and not explicitly
1500 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,
1501 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
1502     list, that's why character strings are encapsulated into
1503     apostrophes (')
1504     (optionally returned, dependent to driver parameter)
1505     </p>
1506 schoenebeck 940 </blockquote>
1507    
1508 senoner 542
1509     <p>RANGE_MIN -
1510     </p>
1511     <blockquote class="text">
1512     <p>defines lower limit of the allowed value range for this
1513     parameter, can be an integer value as well as a dotted
1514     number, this parameter is often used in conjunction
1515     with RANGE_MAX, but may also appear without
1516     (optionally returned, dependent to driver parameter)
1517     </p>
1518 schoenebeck 940 </blockquote>
1519    
1520 senoner 542
1521     <p>RANGE_MAX -
1522     </p>
1523     <blockquote class="text">
1524     <p>defines upper limit of the allowed value range for this
1525     parameter, can be an integer value as well as a dotted
1526     number, this parameter is often used in conjunction with
1527     RANGE_MIN, but may also appear without
1528     (optionally returned, dependent to driver parameter)
1529     </p>
1530 schoenebeck 940 </blockquote>
1531    
1532 senoner 542
1533     <p>POSSIBILITIES -
1534     </p>
1535     <blockquote class="text">
1536     <p>comma separated list of possible values for this
1537     parameter, character strings are encapsulated into
1538     apostrophes
1539     (optionally returned, dependent to driver parameter)
1540     </p>
1541 schoenebeck 940 </blockquote>
1542    
1543 senoner 542
1544 schoenebeck 708 </blockquote><p>
1545 schoenebeck 940
1546 schoenebeck 708 </p>
1547 senoner 542 <p>The mentioned fields above don't have to be in particular order.
1548     </p>
1549     <p>Examples:
1550     </p>
1551 schoenebeck 708 <p>
1552     </p>
1553 senoner 542 <blockquote class="text">
1554     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1555     </p>
1556     <p>S: "DESCRIPTION: sound card to be used"
1557     </p>
1558     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1559     </p>
1560     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1561     </p>
1562     <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1563     </p>
1564     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1565     </p>
1566     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1567     </p>
1568     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1569     </p>
1570     <p>&nbsp;&nbsp;&nbsp;"."
1571     </p>
1572 schoenebeck 708 </blockquote><p>
1573 schoenebeck 940
1574 schoenebeck 708 </p>
1575     <p>
1576     </p>
1577 senoner 542 <blockquote class="text">
1578     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1579     </p>
1580     <p>S: "DESCRIPTION: output sample rate in Hz"
1581     </p>
1582     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1583     </p>
1584     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1585     </p>
1586     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1587     </p>
1588     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1589     </p>
1590     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1591     </p>
1592     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1593     </p>
1594     <p>&nbsp;&nbsp;&nbsp;"."
1595     </p>
1596 schoenebeck 708 </blockquote><p>
1597 schoenebeck 940
1598 schoenebeck 708 </p>
1599     <p>
1600     </p>
1601 senoner 542 <blockquote class="text">
1602     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1603     </p>
1604     <p>S: "DESCRIPTION: output sample rate in Hz"
1605     </p>
1606     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1607     </p>
1608     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1609     </p>
1610     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1611     </p>
1612     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1613     </p>
1614     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1615     </p>
1616     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1617     </p>
1618     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1619     </p>
1620     <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1621     </p>
1622     <p>&nbsp;&nbsp;&nbsp;"."
1623     </p>
1624 schoenebeck 708 </blockquote><p>
1625 schoenebeck 940
1626 schoenebeck 708 </p>
1627 schoenebeck 940 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1628 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>
1629     <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1630     Creating an audio output device</h3>
1631 senoner 542
1632     <p>Use the following command to create a new audio output device for the desired audio output system:
1633     </p>
1634 schoenebeck 708 <p>
1635     </p>
1636 senoner 542 <blockquote class="text">
1637     <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1638     </p>
1639 schoenebeck 708 </blockquote><p>
1640 schoenebeck 940
1641 schoenebeck 708 </p>
1642 senoner 542 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1643 schoenebeck 575 output system as returned by the
1644 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>
1645 schoenebeck 575 command and &lt;param-list&gt; by an optional list of driver
1646 senoner 542 specific parameters in form of "key1=val1 key2=val2 ...", where
1647     character string values should be encapsulated into apostrophes (').
1648     Note that there might be drivers which require parameter(s) to be
1649     given with this command. Use the previously described commands in
1650     this chapter to get this information.
1651     </p>
1652     <p>Possible Answers:
1653     </p>
1654 schoenebeck 708 <p>
1655     </p>
1656 senoner 542 <blockquote class="text">
1657     <p>"OK[&lt;device-id&gt;]" -
1658     </p>
1659     <blockquote class="text">
1660     <p>in case the device was successfully created, where
1661     &lt;device-id&gt; is the numerical ID of the new device
1662     </p>
1663 schoenebeck 940 </blockquote>
1664    
1665 senoner 542
1666     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1667     </p>
1668     <blockquote class="text">
1669     <p>in case the device was created successfully, where
1670     &lt;device-id&gt; is the numerical ID of the new device, but there
1671     are noteworthy issue(s) related (e.g. sound card doesn't
1672     support given hardware parameters and the driver is using
1673     fall-back values), providing an appropriate warning code and
1674     warning message
1675     </p>
1676 schoenebeck 940 </blockquote>
1677    
1678 senoner 542
1679     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1680     </p>
1681     <blockquote class="text">
1682     <p>in case it failed, providing an appropriate error code and error message
1683     </p>
1684 schoenebeck 940 </blockquote>
1685    
1686 senoner 542
1687 schoenebeck 708 </blockquote><p>
1688 schoenebeck 940
1689 schoenebeck 708 </p>
1690 senoner 542 <p>Examples:
1691     </p>
1692 schoenebeck 708 <p>
1693     </p>
1694 senoner 542 <blockquote class="text">
1695     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1696     </p>
1697     <p>S: "OK[0]"
1698     </p>
1699 schoenebeck 708 </blockquote><p>
1700 schoenebeck 940
1701 schoenebeck 708 </p>
1702     <p>
1703     </p>
1704 senoner 542 <blockquote class="text">
1705     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1706     </p>
1707     <p>S: "OK[1]"
1708     </p>
1709 schoenebeck 708 </blockquote><p>
1710 schoenebeck 940
1711 schoenebeck 708 </p>
1712 schoenebeck 940 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1713 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>
1714     <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1715     Destroying an audio output device</h3>
1716 senoner 542
1717     <p>Use the following command to destroy a created output device:
1718     </p>
1719 schoenebeck 708 <p>
1720     </p>
1721 senoner 542 <blockquote class="text">
1722     <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1723     </p>
1724 schoenebeck 708 </blockquote><p>
1725 schoenebeck 940
1726 schoenebeck 708 </p>
1727 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1728     audio output device as given by the
1729 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>
1730     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>
1731 senoner 542 command.
1732     </p>
1733     <p>Possible Answers:
1734     </p>
1735 schoenebeck 708 <p>
1736     </p>
1737 senoner 542 <blockquote class="text">
1738     <p>"OK" -
1739     </p>
1740     <blockquote class="text">
1741     <p>in case the device was successfully destroyed
1742     </p>
1743 schoenebeck 940 </blockquote>
1744    
1745 senoner 542
1746     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1747     </p>
1748     <blockquote class="text">
1749     <p>in case the device was destroyed successfully, but there are
1750     noteworthy issue(s) related (e.g. an audio over ethernet
1751     driver was unloaded but the other host might not be
1752     informed about this situation), providing an appropriate
1753     warning code and warning message
1754     </p>
1755 schoenebeck 940 </blockquote>
1756    
1757 senoner 542
1758     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1759     </p>
1760     <blockquote class="text">
1761     <p>in case it failed, providing an appropriate error code and
1762     error message
1763     </p>
1764 schoenebeck 940 </blockquote>
1765    
1766 senoner 542
1767 schoenebeck 708 </blockquote><p>
1768 schoenebeck 940
1769 schoenebeck 708 </p>
1770 senoner 542 <p>Example:
1771     </p>
1772 schoenebeck 708 <p>
1773     </p>
1774 senoner 542 <blockquote class="text">
1775     <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1776     </p>
1777     <p>S: "OK"
1778     </p>
1779 schoenebeck 708 </blockquote><p>
1780 schoenebeck 940
1781 schoenebeck 708 </p>
1782 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1783 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>
1784     <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1785     Getting all created audio output device count</h3>
1786 senoner 542
1787     <p>Use the following command to count all created audio output devices:
1788     </p>
1789 schoenebeck 708 <p>
1790     </p>
1791 senoner 542 <blockquote class="text">
1792     <p>GET AUDIO_OUTPUT_DEVICES
1793     </p>
1794 schoenebeck 708 </blockquote><p>
1795 schoenebeck 940
1796 schoenebeck 708 </p>
1797 senoner 542 <p>Possible Answers:
1798     </p>
1799 schoenebeck 708 <p>
1800     </p>
1801 senoner 542 <blockquote class="text">
1802     <p>LinuxSampler will answer by sending the current number of all
1803     audio output devices.
1804     </p>
1805 schoenebeck 708 </blockquote><p>
1806 schoenebeck 940
1807 schoenebeck 708 </p>
1808 senoner 542 <p>Example:
1809     </p>
1810 schoenebeck 708 <p>
1811     </p>
1812 senoner 542 <blockquote class="text">
1813     <p>C: "GET AUDIO_OUTPUT_DEVICES"
1814     </p>
1815     <p>S: "4"
1816     </p>
1817 schoenebeck 708 </blockquote><p>
1818 schoenebeck 940
1819 schoenebeck 708 </p>
1820 schoenebeck 940 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1821 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>
1822     <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1823     Getting all created audio output device list</h3>
1824 senoner 542
1825     <p>Use the following command to list all created audio output devices:
1826     </p>
1827 schoenebeck 708 <p>
1828     </p>
1829 senoner 542 <blockquote class="text">
1830     <p>LIST AUDIO_OUTPUT_DEVICES
1831     </p>
1832 schoenebeck 708 </blockquote><p>
1833 schoenebeck 940
1834 schoenebeck 708 </p>
1835 senoner 542 <p>Possible Answers:
1836     </p>
1837 schoenebeck 708 <p>
1838     </p>
1839 senoner 542 <blockquote class="text">
1840     <p>LinuxSampler will answer by sending a comma separated list with
1841     the numerical IDs of all audio output devices.
1842     </p>
1843 schoenebeck 708 </blockquote><p>
1844 schoenebeck 940
1845 schoenebeck 708 </p>
1846 senoner 542 <p>Example:
1847     </p>
1848 schoenebeck 708 <p>
1849     </p>
1850 senoner 542 <blockquote class="text">
1851     <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1852     </p>
1853     <p>S: "0,1,4,5"
1854     </p>
1855 schoenebeck 708 </blockquote><p>
1856 schoenebeck 940
1857 schoenebeck 708 </p>
1858 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1859 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>
1860     <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1861     Getting current settings of an audio output device</h3>
1862 senoner 542
1863     <p>Use the following command to get current settings of a specific, created audio output device:
1864     </p>
1865 schoenebeck 708 <p>
1866     </p>
1867 senoner 542 <blockquote class="text">
1868     <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1869     </p>
1870 schoenebeck 708 </blockquote><p>
1871 schoenebeck 940
1872 schoenebeck 708 </p>
1873 senoner 542 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1874     of the audio output device as e.g. returned by the
1875 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.
1876 senoner 542 </p>
1877     <p>Possible Answers:
1878     </p>
1879     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1880     Each answer line begins with the information category name
1881     followed by a colon and then a space character &lt;SP&gt; and finally
1882     the info character string to that info category. As some
1883     parameters might allow multiple values, character strings are
1884     encapsulated into apostrophes ('). At the moment the following
1885     information categories are defined (independently of device):
1886     </p>
1887 schoenebeck 708 <p>
1888     </p>
1889 senoner 542 <blockquote class="text">
1890     <p>DRIVER -
1891     </p>
1892     <blockquote class="text">
1893     <p>identifier of the used audio output driver, as also
1894     returned by the
1895 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>
1896 senoner 542 command
1897     </p>
1898 schoenebeck 940 </blockquote>
1899    
1900 senoner 542
1901     <p>CHANNELS -
1902     </p>
1903     <blockquote class="text">
1904     <p>amount of audio output channels this device currently
1905     offers
1906     </p>
1907 schoenebeck 940 </blockquote>
1908    
1909 senoner 542
1910     <p>SAMPLERATE -
1911     </p>
1912     <blockquote class="text">
1913     <p>playback sample rate the device uses
1914     </p>
1915 schoenebeck 940 </blockquote>
1916    
1917 senoner 542
1918     <p>ACTIVE -
1919     </p>
1920     <blockquote class="text">
1921     <p>either true or false, if false then the audio device is
1922     inactive and doesn't output any sound, nor do the
1923     sampler channels connected to this audio device render
1924     any audio
1925     </p>
1926 schoenebeck 940 </blockquote>
1927    
1928 senoner 542
1929 schoenebeck 708 </blockquote><p>
1930 schoenebeck 940
1931 schoenebeck 708 </p>
1932 senoner 542 <p>The mentioned fields above don't have to be in particular
1933     order. The fields above are only those fields which are
1934     returned by all audio output devices. Every audio output driver
1935     might have its own, additional driver specific parameters (see
1936 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>)
1937 senoner 542 which are also returned by this command.
1938     </p>
1939     <p>Example:
1940     </p>
1941 schoenebeck 708 <p>
1942     </p>
1943 senoner 542 <blockquote class="text">
1944     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1945     </p>
1946     <p>S: "DRIVER: ALSA"
1947     </p>
1948     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1949     </p>
1950     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1951     </p>
1952     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1953     </p>
1954     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1955     </p>
1956     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1957     </p>
1958     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1959     </p>
1960     <p>&nbsp;&nbsp;&nbsp;"."
1961     </p>
1962 schoenebeck 708 </blockquote><p>
1963 schoenebeck 940
1964 schoenebeck 708 </p>
1965 schoenebeck 940 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1966 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>
1967     <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1968     Changing settings of audio output devices</h3>
1969 senoner 542
1970     <p>Use the following command to alter a specific setting of a created audio output device:
1971     </p>
1972 schoenebeck 708 <p>
1973     </p>
1974 senoner 542 <blockquote class="text">
1975     <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1976     </p>
1977 schoenebeck 708 </blockquote><p>
1978 schoenebeck 940
1979 schoenebeck 708 </p>
1980 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1981 schoenebeck 575 audio output device as given by the
1982 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>
1983     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>
1984 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change
1985 senoner 542 and &lt;value&gt; by the new value for this parameter.
1986     </p>
1987     <p>Possible Answers:
1988     </p>
1989 schoenebeck 708 <p>
1990     </p>
1991 senoner 542 <blockquote class="text">
1992     <p>"OK" -
1993     </p>
1994     <blockquote class="text">
1995     <p>in case setting was successfully changed
1996     </p>
1997 schoenebeck 940 </blockquote>
1998    
1999 senoner 542
2000     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2001     </p>
2002     <blockquote class="text">
2003     <p>in case setting was changed successfully, but there are
2004     noteworthy issue(s) related, providing an appropriate
2005     warning code and warning message
2006     </p>
2007 schoenebeck 940 </blockquote>
2008    
2009 senoner 542
2010     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2011     </p>
2012     <blockquote class="text">
2013     <p>in case it failed, providing an appropriate error code and
2014     error message
2015     </p>
2016 schoenebeck 940 </blockquote>
2017    
2018 senoner 542
2019 schoenebeck 708 </blockquote><p>
2020 schoenebeck 940
2021 schoenebeck 708 </p>
2022 senoner 542 <p>Example:
2023     </p>
2024 schoenebeck 708 <p>
2025     </p>
2026 senoner 542 <blockquote class="text">
2027     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
2028     </p>
2029     <p>S: "OK"
2030     </p>
2031 schoenebeck 708 </blockquote><p>
2032 schoenebeck 940
2033 schoenebeck 708 </p>
2034 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
2035 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>
2036     <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
2037     Getting information about an audio channel</h3>
2038 senoner 542
2039     <p>Use the following command to get information about an audio channel:
2040     </p>
2041 schoenebeck 708 <p>
2042     </p>
2043 senoner 542 <blockquote class="text">
2044     <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
2045     </p>
2046 schoenebeck 708 </blockquote><p>
2047 schoenebeck 940
2048 schoenebeck 708 </p>
2049 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
2050 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>
2051     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>
2052 schoenebeck 575 command and &lt;audio-chan&gt; the audio channel number.
2053 senoner 542 </p>
2054     <p>Possible Answers:
2055     </p>
2056 schoenebeck 708 <p>
2057     </p>
2058 senoner 542 <blockquote class="text">
2059     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2060     Each answer line begins with the information category name
2061     followed by a colon and then a space character &lt;SP&gt; and finally
2062     the info character string to that info category. At the moment
2063     the following information categories are defined:
2064     </p>
2065 schoenebeck 708 <p>
2066     </p>
2067 senoner 542 <blockquote class="text">
2068     <p>NAME -
2069     </p>
2070     <blockquote class="text">
2071     <p>arbitrary character string naming the channel, which
2072     doesn't have to be unique (always returned by all audio channels)
2073     </p>
2074 schoenebeck 940 </blockquote>
2075    
2076 senoner 542
2077     <p>IS_MIX_CHANNEL -
2078     </p>
2079     <blockquote class="text">
2080     <p>either true or false, a mix-channel is not a real,
2081     independent audio channel, but a virtual channel which
2082     is mixed to another real channel, this mechanism is
2083     needed for sampler engines which need more audio
2084     channels than the used audio system might be able to offer
2085     (always returned by all audio channels)
2086     </p>
2087 schoenebeck 940 </blockquote>
2088    
2089 senoner 542
2090     <p>MIX_CHANNEL_DESTINATION -
2091     </p>
2092     <blockquote class="text">
2093     <p>numerical ID (positive integer including 0)
2094     which reflects the real audio channel (of the same audio
2095     output device) this mix channel refers to, means where
2096     the audio signal actually will be routed / added to
2097     (only returned in case the audio channel is mix channel)
2098     </p>
2099 schoenebeck 940 </blockquote>
2100    
2101 senoner 542
2102 schoenebeck 940 </blockquote>
2103    
2104 senoner 542
2105 schoenebeck 708 </blockquote><p>
2106 schoenebeck 940
2107 schoenebeck 708 </p>
2108 senoner 542 <p>The mentioned fields above don't have to be in particular
2109     order. The fields above are only those fields which are
2110     generally returned for the described cases by all audio
2111     channels regardless of the audio driver. Every audio channel
2112     might have its own, additional driver and channel specific
2113     parameters.
2114     </p>
2115     <p>Examples:
2116     </p>
2117 schoenebeck 708 <p>
2118     </p>
2119 senoner 542 <blockquote class="text">
2120     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2121     </p>
2122     <p>S: "NAME: studio monitor left"
2123     </p>
2124     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2125     </p>
2126     <p>&nbsp;&nbsp;&nbsp;"."
2127     </p>
2128 schoenebeck 708 </blockquote><p>
2129 schoenebeck 940
2130 schoenebeck 708 </p>
2131     <p>
2132     </p>
2133 senoner 542 <blockquote class="text">
2134     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2135     </p>
2136     <p>S: "NAME: studio monitor right"
2137     </p>
2138     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2139     </p>
2140     <p>&nbsp;&nbsp;&nbsp;"."
2141     </p>
2142 schoenebeck 708 </blockquote><p>
2143 schoenebeck 940
2144 schoenebeck 708 </p>
2145     <p>
2146     </p>
2147 senoner 542 <blockquote class="text">
2148     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2149     </p>
2150     <p>S: "NAME: studio monitor left"
2151     </p>
2152     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2153     </p>
2154     <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2155     </p>
2156     <p>&nbsp;&nbsp;&nbsp;"."
2157     </p>
2158 schoenebeck 708 </blockquote><p>
2159 schoenebeck 940
2160 schoenebeck 708 </p>
2161     <p>
2162     </p>
2163 senoner 542 <blockquote class="text">
2164     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2165     </p>
2166     <p>S: "NAME: 'ardour (left)'"
2167     </p>
2168     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2169     </p>
2170     <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2171     </p>
2172     <p>&nbsp;&nbsp;&nbsp;"."
2173     </p>
2174 schoenebeck 708 </blockquote><p>
2175 schoenebeck 940
2176 schoenebeck 708 </p>
2177 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2178 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>
2179     <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2180     Getting information about specific audio channel parameter</h3>
2181 senoner 542
2182     <p>Use the following command to get detailed information about specific audio channel parameter:
2183     </p>
2184 schoenebeck 708 <p>
2185     </p>
2186 senoner 542 <blockquote class="text">
2187     <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2188     </p>
2189 schoenebeck 708 </blockquote><p>
2190 schoenebeck 940
2191 schoenebeck 708 </p>
2192 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2193 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>
2194     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>
2195 senoner 542 command, &lt;chan&gt; the audio channel number
2196     and &lt;param&gt; a specific channel parameter name for which information should
2197 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).
2198 senoner 542 </p>
2199     <p>Possible Answers:
2200     </p>
2201 schoenebeck 708 <p>
2202     </p>
2203 senoner 542 <blockquote class="text">
2204     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2205     Each answer line begins with the information category name
2206     followed by a colon and then a space character &lt;SP&gt; and finally
2207     the info character string to that info category. There are
2208     information which is always returned, independently of the
2209     given channel parameter and there is optional information
2210     which is only shown dependently to the given audio channel. At
2211     the moment the following information categories are defined:
2212     </p>
2213 schoenebeck 708 <p>
2214     </p>
2215 senoner 542 <blockquote class="text">
2216     <p>TYPE -
2217     </p>
2218     <blockquote class="text">
2219     <p>either "BOOL" for boolean value(s) or "INT" for integer
2220     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2221     character string(s)
2222     (always returned)
2223     </p>
2224 schoenebeck 940 </blockquote>
2225    
2226 senoner 542
2227     <p>DESCRIPTION -
2228     </p>
2229     <blockquote class="text">
2230     <p>arbitrary text describing the purpose of the parameter (always returned)
2231     </p>
2232 schoenebeck 940 </blockquote>
2233    
2234 senoner 542
2235     <p>FIX -
2236     </p>
2237     <blockquote class="text">
2238     <p>either true or false, if true then this parameter is
2239     read only, thus cannot be altered
2240     (always returned)
2241     </p>
2242 schoenebeck 940 </blockquote>
2243    
2244 senoner 542
2245     <p>MULTIPLICITY -
2246     </p>
2247     <blockquote class="text">
2248     <p>either true or false, defines if this parameter allows
2249     only one value or a list of values, where true means
2250     multiple values and false only a single value allowed
2251     (always returned)
2252     </p>
2253 schoenebeck 940 </blockquote>
2254    
2255 senoner 542
2256     <p>RANGE_MIN -
2257     </p>
2258     <blockquote class="text">
2259     <p>defines lower limit of the allowed value range for this
2260     parameter, can be an integer value as well as a dotted
2261     number, usually used in conjunction with 'RANGE_MAX',
2262     but may also appear without
2263     (optionally returned, dependent to driver and channel
2264     parameter)
2265     </p>
2266 schoenebeck 940 </blockquote>
2267    
2268 senoner 542
2269     <p>RANGE_MAX -
2270     </p>
2271     <blockquote class="text">
2272     <p>defines upper limit of the allowed value range for this
2273     parameter, can be an integer value as well as a dotted
2274     number, usually used in conjunction with 'RANGE_MIN',
2275     but may also appear without
2276     (optionally returned, dependent to driver and channel
2277     parameter)
2278     </p>
2279 schoenebeck 940 </blockquote>
2280    
2281 senoner 542
2282     <p>POSSIBILITIES -
2283     </p>
2284     <blockquote class="text">
2285     <p>comma separated list of possible values for this
2286     parameter, character strings are encapsulated into
2287     apostrophes
2288     (optionally returned, dependent to driver and channel
2289     parameter)
2290     </p>
2291 schoenebeck 940 </blockquote>
2292    
2293 senoner 542
2294 schoenebeck 940 </blockquote>
2295    
2296 senoner 542
2297     <p>The mentioned fields above don't have to be in particular order.
2298     </p>
2299 schoenebeck 708 </blockquote><p>
2300 schoenebeck 940
2301 schoenebeck 708 </p>
2302 senoner 542 <p>Example:
2303     </p>
2304 schoenebeck 708 <p>
2305     </p>
2306 senoner 542 <blockquote class="text">
2307     <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2308     </p>
2309     <p>S: "DESCRIPTION: bindings to other JACK clients"
2310     </p>
2311     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2312     </p>
2313     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2314     </p>
2315     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2316     </p>
2317     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2318     </p>
2319     <p>&nbsp;&nbsp;&nbsp;"."
2320     </p>
2321 schoenebeck 708 </blockquote><p>
2322 schoenebeck 940
2323 schoenebeck 708 </p>
2324 schoenebeck 940 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2325 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>
2326     <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2327     Changing settings of audio output channels</h3>
2328 senoner 542
2329     <p>Use the following command to alter a specific setting of an audio output channel:
2330     </p>
2331 schoenebeck 708 <p>
2332     </p>
2333 senoner 542 <blockquote class="text">
2334     <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2335     </p>
2336 schoenebeck 708 </blockquote><p>
2337 schoenebeck 940
2338 schoenebeck 708 </p>
2339 schoenebeck 575 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2340 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>
2341     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>
2342 schoenebeck 575 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2343 senoner 542 parameter to change and &lt;value&gt; by the new value for this parameter.
2344     </p>
2345     <p>Possible Answers:
2346     </p>
2347 schoenebeck 708 <p>
2348     </p>
2349 senoner 542 <blockquote class="text">
2350     <p>"OK" -
2351     </p>
2352     <blockquote class="text">
2353     <p>in case setting was successfully changed
2354     </p>
2355 schoenebeck 940 </blockquote>
2356    
2357 senoner 542
2358     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2359     </p>
2360     <blockquote class="text">
2361     <p>in case setting was changed successfully, but there are
2362     noteworthy issue(s) related, providing an appropriate
2363     warning code and warning message
2364     </p>
2365 schoenebeck 940 </blockquote>
2366    
2367 senoner 542
2368     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2369     </p>
2370     <blockquote class="text">
2371     <p>in case it failed, providing an appropriate error code and
2372     error message
2373     </p>
2374 schoenebeck 940 </blockquote>
2375    
2376 senoner 542
2377 schoenebeck 708 </blockquote><p>
2378 schoenebeck 940
2379 schoenebeck 708 </p>
2380 senoner 542 <p>Example:
2381     </p>
2382 schoenebeck 708 <p>
2383     </p>
2384 senoner 542 <blockquote class="text">
2385     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2386     </p>
2387     <p>S: "OK"
2388     </p>
2389 schoenebeck 708 </blockquote><p>
2390 schoenebeck 940
2391 schoenebeck 708 </p>
2392     <p>
2393     </p>
2394 senoner 542 <blockquote class="text">
2395     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2396     </p>
2397     <p>S: "OK"
2398     </p>
2399 schoenebeck 708 </blockquote><p>
2400 schoenebeck 940
2401 schoenebeck 708 </p>
2402 schoenebeck 940 <a name="anchor10"></a><br /><hr />
2403 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>
2404     <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2405     Configuring MIDI input drivers</h3>
2406 senoner 542
2407     <p>Instances of drivers in LinuxSampler are called devices. You can use
2408     multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2409     MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2410     channel. For particular MIDI input systems it's also possible to create
2411     several devices of the same MIDI input type. This chapter describes all
2412     commands to configure LinuxSampler's MIDI input devices and their parameters.
2413     </p>
2414     <p>Instead of defining commands and parameters for each driver individually,
2415     all possible parameters, their meanings and possible values have to be obtained
2416     at runtime. This makes the protocol a bit abstract, but has the advantage, that
2417     front-ends can be written independently of what drivers are currently implemented
2418     and what parameters these drivers are actually offering. This means front-ends can
2419     even handle drivers which are implemented somewhere in future without modifying
2420     the front-end at all.
2421     </p>
2422     <p>Commands for configuring MIDI input devices are pretty much the same as the
2423     commands for configuring audio output drivers, already described in the last
2424     chapter.
2425     </p>
2426     <p>Note: examples in this chapter showing particular parameters of drivers are
2427     not meant as specification of the drivers' parameters. Driver implementations in
2428     LinuxSampler might have complete different parameter names and meanings than shown
2429     in these examples or might change in future, so these examples are only meant for
2430     showing how to retrieve what parameters drivers are offering, how to retrieve their
2431     possible values, etc.
2432     </p>
2433 schoenebeck 940 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2434 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>
2435     <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2436     Getting amount of available MIDI input drivers</h3>
2437 senoner 542
2438     <p>Use the following command to get the number of
2439     MIDI input drivers currently available for the
2440     LinuxSampler instance:
2441     </p>
2442 schoenebeck 708 <p>
2443     </p>
2444 senoner 542 <blockquote class="text">
2445     <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2446     </p>
2447 schoenebeck 708 </blockquote><p>
2448 schoenebeck 940
2449 schoenebeck 708 </p>
2450 senoner 542 <p>Possible Answers:
2451     </p>
2452 schoenebeck 708 <p>
2453     </p>
2454 senoner 542 <blockquote class="text">
2455     <p>LinuxSampler will answer by sending the
2456     number of available MIDI input drivers.
2457     </p>
2458 schoenebeck 708 </blockquote><p>
2459 schoenebeck 940
2460 schoenebeck 708 </p>
2461 senoner 542 <p>Example:
2462     </p>
2463 schoenebeck 708 <p>
2464     </p>
2465 senoner 542 <blockquote class="text">
2466     <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2467     </p>
2468     <p>S: "2"
2469     </p>
2470 schoenebeck 708 </blockquote><p>
2471 schoenebeck 940
2472 schoenebeck 708 </p>
2473 schoenebeck 940 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2474 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>
2475     <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2476     Getting all available MIDI input drivers</h3>
2477 senoner 542
2478     <p>Use the following command to list all MIDI input drivers currently available
2479     for the LinuxSampler instance:
2480     </p>
2481 schoenebeck 708 <p>
2482     </p>
2483 senoner 542 <blockquote class="text">
2484     <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2485     </p>
2486 schoenebeck 708 </blockquote><p>
2487 schoenebeck 940
2488 schoenebeck 708 </p>
2489 senoner 542 <p>Possible Answers:
2490     </p>
2491 schoenebeck 708 <p>
2492     </p>
2493 senoner 542 <blockquote class="text">
2494     <p>LinuxSampler will answer by sending comma separated character
2495     strings, each symbolizing a MIDI input driver.
2496     </p>
2497 schoenebeck 708 </blockquote><p>
2498 schoenebeck 940
2499 schoenebeck 708 </p>
2500 senoner 542 <p>Example:
2501     </p>
2502 schoenebeck 708 <p>
2503     </p>
2504 senoner 542 <blockquote class="text">
2505     <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2506     </p>
2507     <p>S: "ALSA,JACK"
2508     </p>
2509 schoenebeck 708 </blockquote><p>
2510 schoenebeck 940
2511 schoenebeck 708 </p>
2512 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2513 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>
2514     <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2515     Getting information about a specific MIDI input driver</h3>
2516 senoner 542
2517     <p>Use the following command to get detailed information about a specific MIDI input driver:
2518     </p>
2519 schoenebeck 708 <p>
2520     </p>
2521 senoner 542 <blockquote class="text">
2522     <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2523     </p>
2524 schoenebeck 708 </blockquote><p>
2525 schoenebeck 940
2526 schoenebeck 708 </p>
2527 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2528 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.
2529 senoner 542 </p>
2530     <p>Possible Answers:
2531     </p>
2532 schoenebeck 708 <p>
2533     </p>
2534 senoner 542 <blockquote class="text">
2535     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2536     Each answer line begins with the information category name
2537     followed by a colon and then a space character &lt;SP&gt; and finally
2538     the info character string to that info category. At the moment
2539     the following information categories are defined:
2540     </p>
2541 schoenebeck 708 <p>
2542     </p>
2543 senoner 542 <blockquote class="text">
2544     <p>DESCRIPTION -
2545     </p>
2546     <blockquote class="text">
2547     <p>arbitrary description text about the MIDI input driver
2548     </p>
2549 schoenebeck 940 </blockquote>
2550    
2551 senoner 542
2552     <p>VERSION -
2553     </p>
2554     <blockquote class="text">
2555     <p>arbitrary character string regarding the driver's version
2556     </p>
2557 schoenebeck 940 </blockquote>
2558    
2559 senoner 542
2560     <p>PARAMETERS -
2561     </p>
2562     <blockquote class="text">
2563     <p>comma separated list of all parameters available for the given MIDI input driver
2564     </p>
2565 schoenebeck 940 </blockquote>
2566    
2567 senoner 542
2568 schoenebeck 940 </blockquote>
2569    
2570 senoner 542
2571     <p>The mentioned fields above don't have to be in particular order.
2572     </p>
2573 schoenebeck 708 </blockquote><p>
2574 schoenebeck 940
2575 schoenebeck 708 </p>
2576 senoner 542 <p>Example:
2577     </p>
2578 schoenebeck 708 <p>
2579     </p>
2580 senoner 542 <blockquote class="text">
2581     <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2582     </p>
2583     <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2584     </p>
2585     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2586     </p>
2587     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2588     </p>
2589     <p>&nbsp;&nbsp;&nbsp;"."
2590     </p>
2591 schoenebeck 708 </blockquote><p>
2592 schoenebeck 940
2593 schoenebeck 708 </p>
2594 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2595 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>
2596     <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2597     Getting information about specific MIDI input driver parameter</h3>
2598 senoner 542
2599     <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2600     </p>
2601 schoenebeck 708 <p>
2602     </p>
2603 senoner 542 <blockquote class="text">
2604     <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2605     </p>
2606 schoenebeck 708 </blockquote><p>
2607 schoenebeck 940
2608 schoenebeck 708 </p>
2609 schoenebeck 561 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2610 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
2611 senoner 542 parameter name for which information should be obtained (as returned by the
2612 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
2613 senoner 542 of parameters on which the sought parameter &lt;param&gt; depends on,
2614     &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2615     where character string values are encapsulated into apostrophes ('). Arguments
2616     given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2617     will be ignored, means the front-end application can simply put all parameters
2618     in &lt;deplist&gt; with the values selected by the user.
2619     </p>
2620     <p>Possible Answers:
2621     </p>
2622     <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2623     Each answer line begins with the information category name
2624     followed by a colon and then a space character &lt;SP> and finally
2625     the info character string to that info category. There is
2626     information which is always returned, independent of the
2627     given driver parameter and there is optional information
2628     which is only shown dependent to given driver parameter. At
2629     the moment the following information categories are defined:
2630     </p>
2631 schoenebeck 708 <p>
2632     </p>
2633 senoner 542 <blockquote class="text">
2634     <p>TYPE -
2635     </p>
2636     <blockquote class="text">
2637     <p>either "BOOL" for boolean value(s) or "INT" for integer
2638     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2639     character string(s)
2640     (always returned, no matter which driver parameter)
2641     </p>
2642 schoenebeck 940 </blockquote>
2643    
2644 senoner 542
2645     <p>DESCRIPTION -
2646     </p>
2647     <blockquote class="text">
2648     <p>arbitrary text describing the purpose of the parameter
2649     (always returned, no matter which driver parameter)
2650     </p>
2651 schoenebeck 940 </blockquote>
2652    
2653 senoner 542
2654     <p>MANDATORY -
2655     </p>
2656     <blockquote class="text">
2657     <p>either true or false, defines if this parameter must be
2658     given when the device is to be created with the
2659 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
2660 senoner 542 (always returned, no matter which driver parameter)
2661     </p>
2662 schoenebeck 940 </blockquote>
2663    
2664 senoner 542
2665     <p>FIX -
2666     </p>
2667     <blockquote class="text">
2668     <p>either true or false, if false then this parameter can
2669     be changed at any time, once the device is created by
2670 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
2671 senoner 542 (always returned, no matter which driver parameter)
2672     </p>
2673 schoenebeck 940 </blockquote>
2674    
2675 senoner 542
2676     <p>MULTIPLICITY -
2677     </p>
2678     <blockquote class="text">
2679     <p>either true or false, defines if this parameter allows
2680     only one value or a list of values, where true means
2681     multiple values and false only a single value allowed
2682     (always returned, no matter which driver parameter)
2683     </p>
2684 schoenebeck 940 </blockquote>
2685    
2686 senoner 542
2687     <p>DEPENDS -
2688     </p>
2689     <blockquote class="text">
2690 schoenebeck 561 <p>comma separated list of parameters this parameter depends
2691 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2692     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2693     listed parameters, for example assuming that an audio
2694     driver (like the ALSA driver) offers parameters 'card'
2695     and 'samplerate' then parameter 'samplerate' would
2696     depend on 'card' because the possible values for
2697     'samplerate' depends on the sound card which can be
2698     chosen by the 'card' parameter
2699     (optionally returned, dependent to driver parameter)
2700     </p>
2701 schoenebeck 940 </blockquote>
2702    
2703 senoner 542
2704     <p>DEFAULT -
2705     </p>
2706     <blockquote class="text">
2707     <p>reflects the default value for this parameter which is
2708     used when the device is created and not explicitly
2709 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,
2710 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
2711     list, that's why character strings are encapsulated into
2712     apostrophes (')
2713     (optionally returned, dependent to driver parameter)
2714     </p>
2715 schoenebeck 940 </blockquote>
2716    
2717 senoner 542
2718     <p>RANGE_MIN -
2719     </p>
2720     <blockquote class="text">
2721     <p>defines lower limit of the allowed value range for this
2722     parameter, can be an integer value as well as a dotted
2723     number, this parameter is often used in conjunction
2724     with RANGE_MAX, but may also appear without
2725     (optionally returned, dependent to driver parameter)
2726     </p>
2727 schoenebeck 940 </blockquote>
2728    
2729 senoner 542
2730     <p>RANGE_MAX -
2731     </p>
2732     <blockquote class="text">
2733     <p>defines upper limit of the allowed value range for this
2734     parameter, can be an integer value as well as a dotted
2735     number, this parameter is often used in conjunction with
2736     RANGE_MIN, but may also appear without
2737     (optionally returned, dependent to driver parameter)
2738     </p>
2739 schoenebeck 940 </blockquote>
2740    
2741 senoner 542
2742     <p>POSSIBILITIES -
2743     </p>
2744     <blockquote class="text">
2745     <p>comma separated list of possible values for this
2746     parameter, character strings are encapsulated into
2747     apostrophes
2748     (optionally returned, dependent to driver parameter)
2749     </p>
2750 schoenebeck 940 </blockquote>
2751    
2752 senoner 542
2753 schoenebeck 708 </blockquote><p>
2754 schoenebeck 940
2755 schoenebeck 708 </p>
2756 senoner 542 <p>The mentioned fields above don't have to be in particular order.
2757     </p>
2758     <p>Example:
2759     </p>
2760 schoenebeck 708 <p>
2761     </p>
2762 senoner 542 <blockquote class="text">
2763     <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2764     </p>
2765     <p>S: "DESCRIPTION: Whether device is enabled"
2766     </p>
2767     <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2768     </p>
2769     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2770     </p>
2771     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2772     </p>
2773     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2774     </p>
2775     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2776     </p>
2777     <p>&nbsp;&nbsp;&nbsp;"."
2778     </p>
2779 schoenebeck 708 </blockquote><p>
2780 schoenebeck 940
2781 schoenebeck 708 </p>
2782 schoenebeck 940 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2783 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>
2784     <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2785     Creating a MIDI input device</h3>
2786 senoner 542
2787     <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2788     </p>
2789 schoenebeck 708 <p>
2790     </p>
2791 senoner 542 <blockquote class="text">
2792     <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2793     </p>
2794 schoenebeck 708 </blockquote><p>
2795 schoenebeck 940
2796 schoenebeck 708 </p>
2797 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2798 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
2799 senoner 542 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2800     character string values should be encapsulated into apostrophes (').
2801     Note that there might be drivers which require parameter(s) to be
2802     given with this command. Use the previously described commands in
2803     this chapter to get that information.
2804     </p>
2805     <p>Possible Answers:
2806     </p>
2807 schoenebeck 708 <p>
2808     </p>
2809 senoner 542 <blockquote class="text">
2810     <p>"OK[&lt;device-id&gt;]" -
2811     </p>
2812     <blockquote class="text">
2813     <p>in case the device was successfully created, where
2814     &lt;device-id&gt; is the numerical ID of the new device
2815     </p>
2816 schoenebeck 940 </blockquote>
2817    
2818 senoner 542
2819     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2820     </p>
2821     <blockquote class="text">
2822     <p>in case the driver was loaded successfully, where
2823     &lt;device-id&gt; is the numerical ID of the new device, but
2824     there are noteworthy issue(s) related, providing an
2825     appropriate warning code and warning message
2826     </p>
2827 schoenebeck 940 </blockquote>
2828    
2829 senoner 542
2830     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2831     </p>
2832     <blockquote class="text">
2833     <p>in case it failed, providing an appropriate error code and error message
2834     </p>
2835 schoenebeck 940 </blockquote>
2836    
2837 senoner 542
2838 schoenebeck 708 </blockquote><p>
2839 schoenebeck 940
2840 schoenebeck 708 </p>
2841 senoner 542 <p>Example:
2842     </p>
2843 schoenebeck 708 <p>
2844     </p>
2845 senoner 542 <blockquote class="text">
2846     <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2847     </p>
2848     <p>S: "OK[0]"
2849     </p>
2850 schoenebeck 708 </blockquote><p>
2851 schoenebeck 940
2852 schoenebeck 708 </p>
2853 schoenebeck 940 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2854 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>
2855     <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2856     Destroying a MIDI input device</h3>
2857 senoner 542
2858     <p>Use the following command to destroy a created MIDI input device:
2859     </p>
2860 schoenebeck 708 <p>
2861     </p>
2862 senoner 542 <blockquote class="text">
2863     <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2864     </p>
2865 schoenebeck 708 </blockquote><p>
2866 schoenebeck 940
2867 schoenebeck 708 </p>
2868 schoenebeck 575 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2869 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>
2870     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>
2871 schoenebeck 575 command.
2872 senoner 542 </p>
2873     <p>Possible Answers:
2874     </p>
2875 schoenebeck 708 <p>
2876     </p>
2877 senoner 542 <blockquote class="text">
2878     <p>"OK" -
2879     </p>
2880     <blockquote class="text">
2881     <p>in case the device was successfully destroyed
2882     </p>
2883 schoenebeck 940 </blockquote>
2884    
2885 senoner 542
2886     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2887     </p>
2888     <blockquote class="text">
2889     <p>in case the device was destroyed, but there are noteworthy
2890     issue(s) related, providing an appropriate warning code and
2891     warning message
2892     </p>
2893 schoenebeck 940 </blockquote>
2894    
2895 senoner 542
2896     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2897     </p>
2898     <blockquote class="text">
2899     <p>in case it failed, providing an appropriate error code and error message
2900     </p>
2901 schoenebeck 940 </blockquote>
2902    
2903 senoner 542
2904 schoenebeck 708 </blockquote><p>
2905 schoenebeck 940
2906 schoenebeck 708 </p>
2907 senoner 542 <p>Example:
2908     </p>
2909 schoenebeck 708 <p>
2910     </p>
2911 senoner 542 <blockquote class="text">
2912     <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2913     </p>
2914     <p>S: "OK"
2915     </p>
2916 schoenebeck 708 </blockquote><p>
2917 schoenebeck 940
2918 schoenebeck 708 </p>
2919 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2920 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>
2921     <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2922     Getting all created MIDI input device count</h3>
2923 senoner 542
2924     <p>Use the following command to count all created MIDI input devices:
2925     </p>
2926 schoenebeck 708 <p>
2927     </p>
2928 senoner 542 <blockquote class="text">
2929     <p>GET MIDI_INPUT_DEVICES
2930     </p>
2931 schoenebeck 708 </blockquote><p>
2932 schoenebeck 940
2933 schoenebeck 708 </p>
2934 senoner 542 <p>Possible Answers:
2935     </p>
2936 schoenebeck 708 <p>
2937     </p>
2938 senoner 542 <blockquote class="text">
2939     <p>LinuxSampler will answer by sending the current number of all
2940     MIDI input devices.
2941     </p>
2942 schoenebeck 708 </blockquote><p>
2943 schoenebeck 940
2944 schoenebeck 708 </p>
2945 senoner 542 <p>Example:
2946     </p>
2947 schoenebeck 708 <p>
2948     </p>
2949 senoner 542 <blockquote class="text">
2950     <p>C: "GET MIDI_INPUT_DEVICES"
2951     </p>
2952     <p>S: "3"
2953     </p>
2954 schoenebeck 708 </blockquote><p>
2955 schoenebeck 940
2956 schoenebeck 708 </p>
2957 schoenebeck 940 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2958 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>
2959     <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2960     Getting all created MIDI input device list</h3>
2961 senoner 542
2962     <p>Use the following command to list all created MIDI input devices:
2963     </p>
2964 schoenebeck 708 <p>
2965     </p>
2966 senoner 542 <blockquote class="text">
2967     <p>LIST MIDI_INPUT_DEVICES
2968     </p>
2969 schoenebeck 708 </blockquote><p>
2970 schoenebeck 940
2971 schoenebeck 708 </p>
2972 senoner 542 <p>Possible Answers:
2973     </p>
2974 schoenebeck 708 <p>
2975     </p>
2976 senoner 542 <blockquote class="text">
2977     <p>LinuxSampler will answer by sending a comma separated list
2978     with the numerical Ids of all created MIDI input devices.
2979     </p>
2980 schoenebeck 708 </blockquote><p>
2981 schoenebeck 940
2982 schoenebeck 708 </p>
2983 senoner 542 <p>Examples:
2984     </p>
2985 schoenebeck 708 <p>
2986     </p>
2987 senoner 542 <blockquote class="text">
2988     <p>C: "LIST MIDI_INPUT_DEVICES"
2989     </p>
2990     <p>S: "0,1,2"
2991     </p>
2992 schoenebeck 708 </blockquote><p>
2993 schoenebeck 940
2994 schoenebeck 708 </p>
2995     <p>
2996     </p>
2997 senoner 542 <blockquote class="text">
2998     <p>C: "LIST MIDI_INPUT_DEVICES"
2999     </p>
3000     <p>S: "1,3"
3001     </p>
3002 schoenebeck 708 </blockquote><p>
3003 schoenebeck 940
3004 schoenebeck 708 </p>
3005 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
3006 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>
3007     <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
3008     Getting current settings of a MIDI input device</h3>
3009 senoner 542
3010     <p>Use the following command to get current settings of a specific, created MIDI input device:
3011     </p>
3012 schoenebeck 708 <p>
3013     </p>
3014 senoner 542 <blockquote class="text">
3015     <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
3016     </p>
3017 schoenebeck 708 </blockquote><p>
3018 schoenebeck 940
3019 schoenebeck 708 </p>
3020 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3021 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>
3022     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>
3023 schoenebeck 575 command.
3024 senoner 542 </p>
3025     <p>Possible Answers:
3026     </p>
3027 schoenebeck 708 <p>
3028     </p>
3029 senoner 542 <blockquote class="text">
3030     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3031     Each answer line begins with the information category name
3032     followed by a colon and then a space character &lt;SP&gt; and finally
3033     the info character string to that info category. As some
3034     parameters might allow multiple values, character strings are
3035     encapsulated into apostrophes ('). At the moment the following
3036     information categories are defined (independent of driver):
3037     </p>
3038 schoenebeck 708 <p>
3039     </p>
3040 senoner 542 <blockquote class="text">
3041     <p>DRIVER -
3042     </p>
3043     <blockquote class="text">
3044     <p>identifier of the used MIDI input driver, as e.g.
3045 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>
3046 senoner 542 command
3047     </p>
3048 schoenebeck 940 </blockquote>
3049    
3050 senoner 542
3051 schoenebeck 940 </blockquote>
3052    
3053 senoner 542 <blockquote class="text">
3054 schoenebeck 708 <p>ACTIVE -
3055 senoner 542 </p>
3056     <blockquote class="text">
3057     <p>either true or false, if false then the MIDI device is
3058     inactive and doesn't listen to any incoming MIDI events
3059     and thus doesn't forward them to connected sampler
3060     channels
3061     </p>
3062 schoenebeck 940 </blockquote>
3063    
3064 senoner 542
3065 schoenebeck 940 </blockquote>
3066    
3067 senoner 542
3068 schoenebeck 708 </blockquote><p>
3069 schoenebeck 940
3070 schoenebeck 708 </p>
3071 senoner 542 <p>The mentioned fields above don't have to be in particular
3072     order. The fields above are only those fields which are
3073     returned by all MIDI input devices. Every MIDI input driver
3074     might have its own, additional driver specific parameters (see
3075 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
3076 senoner 542 by this command.
3077     </p>
3078     <p>Example:
3079     </p>
3080 schoenebeck 708 <p>
3081     </p>
3082 senoner 542 <blockquote class="text">
3083     <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3084     </p>
3085     <p>S: "DRIVER: ALSA"
3086     </p>
3087     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3088     </p>
3089     <p>&nbsp;&nbsp;&nbsp;"."
3090     </p>
3091 schoenebeck 708 </blockquote><p>
3092 schoenebeck 940
3093 schoenebeck 708 </p>
3094 schoenebeck 940 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3095 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>
3096     <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3097     Changing settings of MIDI input devices</h3>
3098 senoner 542
3099     <p>Use the following command to alter a specific setting of a created MIDI input device:
3100     </p>
3101 schoenebeck 708 <p>
3102     </p>
3103 senoner 542 <blockquote class="text">
3104     <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3105     </p>
3106 schoenebeck 708 </blockquote><p>
3107 schoenebeck 940
3108 schoenebeck 708 </p>
3109 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3110 schoenebeck 575 MIDI input device as returned by the
3111 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>
3112     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>
3113 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change and
3114 senoner 542 &lt;value&gt; by the new value for this parameter.
3115     </p>
3116     <p>Possible Answers:
3117     </p>
3118 schoenebeck 708 <p>
3119     </p>
3120 senoner 542 <blockquote class="text">
3121     <p>"OK" -
3122     </p>
3123     <blockquote class="text">
3124     <p>in case setting was successfully changed
3125     </p>
3126 schoenebeck 940 </blockquote>
3127    
3128 senoner 542
3129     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3130     </p>
3131     <blockquote class="text">
3132     <p>in case setting was changed successfully, but there are
3133     noteworthy issue(s) related, providing an appropriate
3134     warning code and warning message
3135     </p>
3136 schoenebeck 940 </blockquote>
3137    
3138 senoner 542
3139     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3140     </p>
3141     <blockquote class="text">
3142     <p>in case it failed, providing an appropriate error code and error message
3143     </p>
3144 schoenebeck 940 </blockquote>
3145    
3146 senoner 542
3147 schoenebeck 708 </blockquote><p>
3148 schoenebeck 940
3149 schoenebeck 708 </p>
3150 senoner 542 <p>Example:
3151     </p>
3152 schoenebeck 708 <p>
3153     </p>
3154 senoner 542 <blockquote class="text">
3155     <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3156     </p>
3157     <p>S: "OK"
3158     </p>
3159 schoenebeck 708 </blockquote><p>
3160 schoenebeck 940
3161 schoenebeck 708 </p>
3162 schoenebeck 940 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3163 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>
3164     <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3165     Getting information about a MIDI port</h3>
3166 senoner 542
3167     <p>Use the following command to get information about a MIDI port:
3168     </p>
3169 schoenebeck 708 <p>
3170     </p>
3171 senoner 542 <blockquote class="text">
3172     <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3173     </p>
3174 schoenebeck 708 </blockquote><p>
3175 schoenebeck 940
3176 schoenebeck 708 </p>
3177 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3178 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>
3179     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>
3180 schoenebeck 575 command and &lt;midi-port&gt; the MIDI input port number.
3181 senoner 542 </p>
3182     <p>Possible Answers:
3183     </p>
3184 schoenebeck 708 <p>
3185     </p>
3186 senoner 542 <blockquote class="text">
3187     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3188     Each answer line begins with the information category name
3189     followed by a colon and then a space character &lt;SP&gt; and finally
3190     the info character string to that info category. At the moment
3191     the following information categories are defined:
3192     </p>
3193     <p>NAME -
3194     </p>
3195     <blockquote class="text">
3196     <p>arbitrary character string naming the port
3197     </p>
3198 schoenebeck 940 </blockquote>
3199    
3200 senoner 542
3201 schoenebeck 708 </blockquote><p>
3202 schoenebeck 940
3203 schoenebeck 708 </p>
3204 senoner 542 <p>The field above is only the one which is returned by all MIDI
3205     ports regardless of the MIDI driver and port. Every MIDI port
3206     might have its own, additional driver and port specific
3207     parameters.
3208     </p>
3209     <p>Example:
3210     </p>
3211 schoenebeck 708 <p>
3212     </p>
3213 senoner 542 <blockquote class="text">
3214     <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3215     </p>
3216     <p>S: "NAME: 'Masterkeyboard'"
3217     </p>
3218     <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3219     </p>
3220     <p>&nbsp;&nbsp;&nbsp;"."
3221     </p>
3222 schoenebeck 708 </blockquote><p>
3223 schoenebeck 940
3224 schoenebeck 708 </p>
3225 schoenebeck 940 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3226 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>
3227     <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3228     Getting information about specific MIDI port parameter</h3>
3229 senoner 542
3230     <p>Use the following command to get detailed information about specific MIDI port parameter:
3231     </p>
3232 schoenebeck 708 <p>
3233     </p>
3234 senoner 542 <blockquote class="text">
3235     <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3236     </p>
3237 schoenebeck 708 </blockquote><p>
3238 schoenebeck 940
3239 schoenebeck 708 </p>
3240 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3241 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>
3242     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>
3243 schoenebeck 575 command, &lt;port&gt; the MIDI port number and
3244 senoner 542 &lt;param&gt; a specific port parameter name for which information should be
3245 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).
3246 senoner 542 </p>
3247     <p>Possible Answers:
3248     </p>
3249 schoenebeck 708 <p>
3250     </p>
3251 senoner 542 <blockquote class="text">
3252     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3253     Each answer line begins with the information category name
3254     followed by a colon and then a space character &lt;SP&gt; and finally
3255     the info character string to that info category. There is
3256     information which is always returned, independently of the
3257     given channel parameter and there is optional information
3258     which are only shown dependently to the given MIDI port. At the
3259     moment the following information categories are defined:
3260     </p>
3261     <p>TYPE -
3262     </p>
3263     <blockquote class="text">
3264     <p>either "BOOL" for boolean value(s) or "INT" for integer
3265     value(s) or "FLOAT" for dotted number(s) or "STRING" for
3266     character string(s)
3267     (always returned)
3268     </p>
3269 schoenebeck 940 </blockquote>
3270    
3271 senoner 542
3272     <p>DESCRIPTION -
3273     </p>
3274     <blockquote class="text">
3275     <p>arbitrary text describing the purpose of the parameter
3276     (always returned)
3277     </p>
3278 schoenebeck 940 </blockquote>
3279    
3280 senoner 542
3281     <p>FIX -
3282     </p>
3283     <blockquote class="text">
3284     <p>either true or false, if true then this parameter is
3285     read only, thus cannot be altered
3286     (always returned)
3287     </p>
3288 schoenebeck 940 </blockquote>
3289    
3290 senoner 542
3291     <p>MULTIPLICITY -
3292     </p>
3293     <blockquote class="text">
3294     <p>either true or false, defines if this parameter allows
3295     only one value or a list of values, where true means
3296     multiple values and false only a single value allowed
3297     (always returned)
3298     </p>
3299 schoenebeck 940 </blockquote>
3300    
3301 senoner 542
3302     <p>RANGE_MIN -
3303     </p>
3304     <blockquote class="text">
3305     <p>defines lower limit of the allowed value range for this
3306     parameter, can be an integer value as well as a dotted
3307     number, this parameter is usually used in conjunction
3308     with 'RANGE_MAX' but may also appear without
3309     (optionally returned, dependent to driver and port
3310     parameter)
3311     </p>
3312 schoenebeck 940 </blockquote>
3313    
3314 senoner 542
3315     <p>RANGE_MAX -
3316     </p>
3317     <blockquote class="text">
3318     <p>defines upper limit of the allowed value range for this
3319     parameter, can be an integer value as well as a dotted
3320     number, this parameter is usually used in conjunction
3321     with 'RANGE_MIN' but may also appear without
3322     (optionally returned, dependent to driver and port
3323     parameter)
3324     </p>
3325 schoenebeck 940 </blockquote>
3326    
3327 senoner 542
3328     <p>POSSIBILITIES -
3329     </p>
3330     <blockquote class="text">
3331     <p>comma separated list of possible values for this
3332     parameter, character strings are encapsulated into
3333     apostrophes
3334     (optionally returned, dependent to device and port
3335     parameter)
3336     </p>
3337 schoenebeck 940 </blockquote>
3338    
3339 senoner 542
3340 schoenebeck 708 </blockquote><p>
3341 schoenebeck 940
3342 schoenebeck 708 </p>
3343 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3344     </p>
3345     <p>Example:
3346     </p>
3347 schoenebeck 708 <p>
3348     </p>
3349 senoner 542 <blockquote class="text">
3350     <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3351     </p>
3352     <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3353     </p>
3354     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3355     </p>
3356     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3357     </p>
3358     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3359     </p>
3360     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3361     </p>
3362     <p>&nbsp;&nbsp;&nbsp;"."
3363     </p>
3364 schoenebeck 708 </blockquote><p>
3365 schoenebeck 940
3366 schoenebeck 708 </p>
3367 schoenebeck 940 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3368 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>
3369     <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3370     Changing settings of MIDI input ports</h3>
3371 senoner 542
3372     <p>Use the following command to alter a specific setting of a MIDI input port:
3373     </p>
3374 schoenebeck 708 <p>
3375     </p>
3376 senoner 542 <blockquote class="text">
3377     <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3378     </p>
3379 schoenebeck 708 </blockquote><p>
3380 schoenebeck 940
3381 schoenebeck 708 </p>
3382 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3383 schoenebeck 575 MIDI device as returned by the
3384 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>
3385     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>
3386 schoenebeck 575 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3387 senoner 542 the parameter to change and &lt;value&gt; by the new value for this
3388 schoenebeck 1363 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3389     for specifying no value for parameters allowing a list of values.
3390 senoner 542 </p>
3391     <p>Possible Answers:
3392     </p>
3393 schoenebeck 708 <p>
3394     </p>
3395 senoner 542 <blockquote class="text">
3396     <p>"OK" -
3397     </p>
3398     <blockquote class="text">
3399     <p>in case setting was successfully changed
3400     </p>
3401 schoenebeck 940 </blockquote>
3402    
3403 senoner 542
3404     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3405     </p>
3406     <blockquote class="text">
3407     <p>in case setting was changed successfully, but there are
3408     noteworthy issue(s) related, providing an appropriate
3409     warning code and warning message
3410     </p>
3411 schoenebeck 940 </blockquote>
3412    
3413 senoner 542
3414     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3415     </p>
3416     <blockquote class="text">
3417     <p>in case it failed, providing an appropriate error code and error message
3418     </p>
3419 schoenebeck 940 </blockquote>
3420    
3421 senoner 542
3422 schoenebeck 708 </blockquote><p>
3423 schoenebeck 940
3424 schoenebeck 708 </p>
3425 senoner 542 <p>Example:
3426     </p>
3427 schoenebeck 708 <p>
3428     </p>
3429 senoner 542 <blockquote class="text">
3430 schoenebeck 1363 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3431     </p>
3432     <p>S: "OK"
3433     </p>
3434     </blockquote><p>
3435    
3436     </p>
3437 senoner 542 <p>
3438 schoenebeck 1363 </p>
3439     <blockquote class="text">
3440     <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3441 senoner 542 </p>
3442 schoenebeck 1363 <p>S: "OK"
3443     </p>
3444 schoenebeck 708 </blockquote><p>
3445 schoenebeck 940
3446 schoenebeck 708 </p>
3447 schoenebeck 940 <a name="anchor11"></a><br /><hr />
3448 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>
3449     <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3450     Configuring sampler channels</h3>
3451 senoner 542
3452 schoenebeck 575 <p>The following commands describe how to add and remove sampler channels, associate a
3453     sampler channel with a sampler engine, load instruments and connect sampler channels to
3454     MIDI and audio devices.
3455 senoner 542 </p>
3456 schoenebeck 940 <a name="LOAD INSTRUMENT"></a><br /><hr />
3457 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>
3458     <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3459     Loading an instrument</h3>
3460 senoner 542
3461     <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3462     </p>
3463 schoenebeck 708 <p>
3464     </p>
3465 senoner 542 <blockquote class="text">
3466     <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3467     </p>
3468 schoenebeck 708 </blockquote><p>
3469 schoenebeck 940
3470 schoenebeck 708 </p>
3471 senoner 542 <p>Where &lt;filename&gt; is the name of the instrument file on the
3472     LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3473     instrument in the instrument file and &lt;sampler-channel> is the
3474     number of the sampler channel the instrument should be assigned to.
3475     Each sampler channel can only have one instrument.
3476     </p>
3477 schoenebeck 1251 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3478     escape characters for special characters (see chapter
3479     "<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>"
3480     for details) and accordingly backslash characters in the filename
3481     MUST now be escaped as well!
3482     </p>
3483 senoner 542 <p>The difference between regular and NON_MODAL versions of the command
3484     is that the regular command returns OK only after the instrument has been
3485     fully loaded and the channel is ready to be used while NON_MODAL version
3486     returns immediately and a background process is launched to load the instrument
3487 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>
3488 senoner 542 command can be used to obtain loading
3489     progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3490     such as making sure that the file could be read and it is of a proper format
3491     and SHOULD return ERR and SHOULD not launch the background process should any
3492     errors be detected at that point.
3493     </p>
3494     <p>Possible Answers:
3495     </p>
3496 schoenebeck 708 <p>
3497     </p>
3498 senoner 542 <blockquote class="text">
3499     <p>"OK" -
3500     </p>
3501     <blockquote class="text">
3502     <p>in case the instrument was successfully loaded
3503     </p>
3504 schoenebeck 940 </blockquote>
3505    
3506 senoner 542
3507     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3508     </p>
3509     <blockquote class="text">
3510     <p>in case the instrument was loaded successfully, but there
3511     are noteworthy issue(s) related (e.g. Engine doesn't support
3512     one or more patch parameters provided by the loaded
3513     instrument file), providing an appropriate warning code and
3514     warning message
3515     </p>
3516 schoenebeck 940 </blockquote>
3517    
3518 senoner 542
3519     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3520     </p>
3521     <blockquote class="text">
3522     <p>in case it failed, providing an appropriate error code and error message
3523     </p>
3524 schoenebeck 940 </blockquote>
3525    
3526 senoner 542
3527 schoenebeck 708 </blockquote><p>
3528 schoenebeck 940
3529 schoenebeck 708 </p>
3530 schoenebeck 1572 <p>Example (Unix):
3531 senoner 542 </p>
3532 schoenebeck 708 <p>
3533     </p>
3534 senoner 542 <blockquote class="text">
3535 schoenebeck 1572 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3536     </p>
3537     <p>S: OK
3538     </p>
3539     </blockquote><p>
3540    
3541     </p>
3542     <p>Example (Windows):
3543     </p>
3544 senoner 542 <p>
3545 schoenebeck 1572 </p>
3546     <blockquote class="text">
3547     <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3548 senoner 542 </p>
3549 schoenebeck 1572 <p>S: OK
3550     </p>
3551 schoenebeck 708 </blockquote><p>
3552 schoenebeck 940
3553 schoenebeck 708 </p>
3554 schoenebeck 940 <a name="LOAD ENGINE"></a><br /><hr />
3555 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>
3556     <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3557     Loading a sampler engine</h3>
3558 senoner 542
3559 schoenebeck 575 <p>A sampler engine type can be associated to a specific sampler
3560 senoner 542 channel by the following command:
3561     </p>
3562 schoenebeck 708 <p>
3563     </p>
3564 senoner 542 <blockquote class="text">
3565     <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3566     </p>
3567 schoenebeck 708 </blockquote><p>
3568 schoenebeck 940
3569 schoenebeck 708 </p>
3570 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3571 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;
3572 schoenebeck 575 the sampler channel as returned by the
3573 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
3574     <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
3575 schoenebeck 575 the engine type should be assigned to. This command should be issued
3576     after adding a new sampler channel and before any other control
3577     commands on the new sampler channel. It can also be used to change
3578     the engine type of a sampler channel. This command has (currently) no
3579     way to define or force if a new engine instance should be created and
3580     assigned to the given sampler channel or if an already existing
3581     instance of that engine type, shared with other sampler channels,
3582     should be used.
3583 senoner 542 </p>
3584     <p>Possible Answers:
3585     </p>
3586 schoenebeck 708 <p>
3587     </p>
3588 senoner 542 <blockquote class="text">
3589     <p>"OK" -
3590     </p>
3591     <blockquote class="text">
3592     <p>in case the engine was successfully deployed
3593     </p>
3594 schoenebeck 940 </blockquote>
3595    
3596 senoner 542
3597     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3598     </p>
3599     <blockquote class="text">
3600     <p>in case the engine was deployed successfully, but there
3601     are noteworthy issue(s) related, providing an appropriate
3602     warning code and warning message
3603     </p>
3604 schoenebeck 940 </blockquote>
3605    
3606 senoner 542
3607     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3608     </p>
3609     <blockquote class="text">
3610     <p>in case it failed, providing an appropriate error code and
3611     error message
3612     </p>
3613 schoenebeck 940 </blockquote>
3614    
3615 senoner 542
3616 schoenebeck 708 </blockquote><p>
3617 schoenebeck 940
3618 schoenebeck 708 </p>
3619 senoner 542 <p>Example:
3620     </p>
3621 schoenebeck 708 <p>
3622     </p>
3623 senoner 542 <blockquote class="text">
3624     <p>
3625     </p>
3626 schoenebeck 708 </blockquote><p>
3627 schoenebeck 940
3628 schoenebeck 708 </p>
3629 schoenebeck 940 <a name="GET CHANNELS"></a><br /><hr />
3630 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>
3631     <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3632     Getting all created sampler channel count</h3>
3633 senoner 542
3634     <p>The number of sampler channels can change on runtime. To get the
3635     current amount of sampler channels, the front-end can send the
3636     following command:
3637     </p>
3638 schoenebeck 708 <p>
3639     </p>
3640 senoner 542 <blockquote class="text">
3641     <p>GET CHANNELS
3642     </p>
3643 schoenebeck 708 </blockquote><p>
3644 schoenebeck 940
3645 schoenebeck 708 </p>
3646 senoner 542 <p>Possible Answers:
3647     </p>
3648 schoenebeck 708 <p>
3649     </p>
3650 senoner 542 <blockquote class="text">
3651     <p>LinuxSampler will answer by returning the current number of sampler channels.
3652     </p>
3653 schoenebeck 708 </blockquote><p>
3654 schoenebeck 940
3655 schoenebeck 708 </p>
3656 senoner 542 <p>Example:
3657     </p>
3658 schoenebeck 708 <p>
3659     </p>
3660 senoner 542 <blockquote class="text">
3661     <p>C: "GET CHANNELS"
3662     </p>
3663     <p>S: "12"
3664     </p>
3665 schoenebeck 708 </blockquote><p>
3666 schoenebeck 940
3667 schoenebeck 708 </p>
3668 schoenebeck 940 <a name="LIST CHANNELS"></a><br /><hr />
3669 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>
3670     <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3671     Getting all created sampler channel list</h3>
3672 senoner 542
3673     <p>The number of sampler channels can change on runtime. To get the
3674     current list of sampler channels, the front-end can send the
3675     following command:
3676     </p>
3677 schoenebeck 708 <p>
3678     </p>
3679 senoner 542 <blockquote class="text">
3680     <p>LIST CHANNELS
3681     </p>
3682 schoenebeck 708 </blockquote><p>
3683 schoenebeck 940
3684 schoenebeck 708 </p>
3685 senoner 542 <p>Possible Answers:
3686     </p>
3687 schoenebeck 708 <p>
3688     </p>
3689 senoner 542 <blockquote class="text">
3690     <p>LinuxSampler will answer by returning a comma separated list
3691     with all sampler channels numerical IDs.
3692     </p>
3693 schoenebeck 708 </blockquote><p>
3694 schoenebeck 940
3695 schoenebeck 708 </p>
3696 senoner 542 <p>Example:
3697     </p>
3698 schoenebeck 708 <p>
3699     </p>
3700 senoner 542 <blockquote class="text">
3701     <p>C: "LIST CHANNELS"
3702     </p>
3703     <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3704     </p>
3705 schoenebeck 708 </blockquote><p>
3706 schoenebeck 940
3707 schoenebeck 708 </p>
3708 schoenebeck 940 <a name="ADD CHANNEL"></a><br /><hr />
3709 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>
3710     <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3711     Adding a new sampler channel</h3>
3712 senoner 542
3713     <p>A new sampler channel can be added to the end of the sampler
3714     channel list by sending the following command:
3715     </p>
3716 schoenebeck 708 <p>
3717     </p>
3718 senoner 542 <blockquote class="text">
3719     <p>ADD CHANNEL
3720     </p>
3721 schoenebeck 708 </blockquote><p>
3722 schoenebeck 940
3723 schoenebeck 708 </p>
3724 senoner 542 <p>This will increment the sampler channel count by one and the new
3725     sampler channel will be appended to the end of the sampler channel
3726     list. The front-end should send the respective, related commands
3727     right after to e.g. load an engine, load an instrument and setting
3728     input, output method and eventually other commands to initialize
3729     the new channel. The front-end should use the sampler channel
3730     returned by the answer of this command to perform the previously
3731     recommended commands, to avoid race conditions e.g. with other
3732     front-ends that might also have sent an "ADD CHANNEL" command.
3733     </p>
3734     <p>Possible Answers:
3735     </p>
3736 schoenebeck 708 <p>
3737     </p>
3738 senoner 542 <blockquote class="text">
3739     <p>"OK[&lt;sampler-channel&gt;]" -
3740     </p>
3741     <blockquote class="text">
3742     <p>in case a new sampler channel could be added, where
3743     &lt;sampler-channel&gt; reflects the channel number of the new
3744 schoenebeck 561 created sampler channel which should be used to set up
3745     the sampler channel by sending subsequent initialization
3746 senoner 542 commands
3747     </p>
3748 schoenebeck 940 </blockquote>
3749    
3750 senoner 542
3751     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3752     </p>
3753     <blockquote class="text">
3754     <p>in case a new channel was added successfully, but there are
3755     noteworthy issue(s) related, providing an appropriate
3756     warning code and warning message
3757     </p>
3758 schoenebeck 940 </blockquote>
3759    
3760 senoner 542
3761     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3762     </p>
3763     <blockquote class="text">
3764     <p>in case it failed, providing an appropriate error code and
3765     error message
3766     </p>
3767 schoenebeck 940 </blockquote>
3768    
3769 senoner 542
3770 schoenebeck 708 </blockquote><p>
3771 schoenebeck 940
3772 schoenebeck 708 </p>
3773 senoner 542 <p>Example:
3774     </p>
3775 schoenebeck 708 <p>
3776     </p>
3777 senoner 542 <blockquote class="text">
3778     <p>
3779     </p>
3780 schoenebeck 708 </blockquote><p>
3781 schoenebeck 940
3782 schoenebeck 708 </p>
3783 schoenebeck 940 <a name="REMOVE CHANNEL"></a><br /><hr />
3784 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>
3785     <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3786     Removing a sampler channel</h3>
3787 senoner 542
3788     <p>A sampler channel can be removed by sending the following command:
3789     </p>
3790 schoenebeck 708 <p>
3791     </p>
3792 senoner 542 <blockquote class="text">
3793     <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3794     </p>
3795 schoenebeck 708 </blockquote><p>
3796 schoenebeck 940
3797 schoenebeck 708 </p>
3798 schoenebeck 561 <p>Where &lt;sampler-channel&gt; should be replaced by the
3799     number of the sampler channel as given by the
3800 schoenebeck 974 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3801     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3802 schoenebeck 561 command. The channel numbers of all subsequent sampler channels
3803     remain the same.
3804 senoner 542 </p>
3805     <p>Possible Answers:
3806     </p>
3807 schoenebeck 708 <p>
3808     </p>
3809 senoner 542 <blockquote class="text">
3810     <p>"OK" -
3811     </p>
3812     <blockquote class="text">
3813     <p>in case the given sampler channel could be removed
3814     </p>
3815 schoenebeck 940 </blockquote>
3816    
3817 senoner 542
3818     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3819     </p>
3820     <blockquote class="text">
3821     <p>in case the given channel was removed, but there are
3822     noteworthy issue(s) related, providing an appropriate
3823     warning code and warning message
3824     </p>
3825 schoenebeck 940 </blockquote>
3826    
3827 senoner 542
3828     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3829     </p>
3830     <blockquote class="text">
3831     <p>in case it failed, providing an appropriate error code and
3832     error message
3833     </p>
3834 schoenebeck 940 </blockquote>
3835    
3836 senoner 542
3837 schoenebeck 708 </blockquote><p>
3838 schoenebeck 940
3839 schoenebeck 708 </p>
3840 senoner 542 <p>Example:
3841     </p>
3842 schoenebeck 708 <p>
3843     </p>
3844 senoner 542 <blockquote class="text">
3845     <p>
3846     </p>
3847 schoenebeck 708 </blockquote><p>
3848 schoenebeck 940
3849 schoenebeck 708 </p>
3850 schoenebeck 940 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3851 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>
3852     <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3853     Getting amount of available engines</h3>
3854 senoner 542
3855     <p>The front-end can ask for the number of available engines by sending the following command:
3856     </p>
3857 schoenebeck 708 <p>
3858     </p>
3859 senoner 542 <blockquote class="text">
3860     <p>GET AVAILABLE_ENGINES
3861     </p>
3862 schoenebeck 708 </blockquote><p>
3863 schoenebeck 940
3864 schoenebeck 708 </p>
3865 senoner 542 <p>Possible Answers:
3866     </p>
3867 schoenebeck 708 <p>
3868     </p>
3869 senoner 542 <blockquote class="text">
3870     <p>LinuxSampler will answer by sending the number of available engines.
3871     </p>
3872 schoenebeck 708 </blockquote><p>
3873 schoenebeck 940
3874 schoenebeck 708 </p>
3875 senoner 542 <p>Example:
3876     </p>
3877 schoenebeck 708 <p>
3878     </p>
3879 senoner 542 <blockquote class="text">
3880     <p>C: "GET AVAILABLE_ENGINES"
3881     </p>
3882     <p>S: "4"
3883     </p>
3884 schoenebeck 708 </blockquote><p>
3885 schoenebeck 940
3886 schoenebeck 708 </p>
3887 schoenebeck 940 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3888 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>
3889     <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3890     Getting all available engines</h3>
3891 senoner 542
3892     <p>The front-end can ask for a list of all available engines by sending the following command:
3893     </p>
3894 schoenebeck 708 <p>
3895     </p>
3896 senoner 542 <blockquote class="text">
3897     <p>LIST AVAILABLE_ENGINES
3898     </p>
3899 schoenebeck 708 </blockquote><p>
3900 schoenebeck 940
3901 schoenebeck 708 </p>
3902 senoner 542 <p>Possible Answers:
3903     </p>
3904 schoenebeck 708 <p>
3905     </p>
3906 senoner 542 <blockquote class="text">
3907 schoenebeck 561 <p>LinuxSampler will answer by sending a comma separated list
3908     of the engines' names encapsulated into apostrophes (').
3909     Engine names can consist of lower and upper cases,
3910     digits and underlines ("_" character).
3911 senoner 542 </p>
3912 schoenebeck 708 </blockquote><p>
3913 schoenebeck 940
3914 schoenebeck 708 </p>
3915 senoner 542 <p>Example:
3916     </p>
3917 schoenebeck 708 <p>
3918     </p>
3919 senoner 542 <blockquote class="text">
3920     <p>C: "LIST AVAILABLE_ENGINES"
3921     </p>
3922 schoenebeck 2498 <p>S: "'gig','sfz','sf2'"
3923 senoner 542 </p>
3924 schoenebeck 708 </blockquote><p>
3925 schoenebeck 940
3926 schoenebeck 708 </p>
3927 schoenebeck 940 <a name="GET ENGINE INFO"></a><br /><hr />
3928 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>
3929     <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3930     Getting information about an engine</h3>
3931 senoner 542
3932     <p>The front-end can ask for information about a specific engine by
3933     sending the following command:
3934     </p>
3935 schoenebeck 708 <p>
3936     </p>
3937 senoner 542 <blockquote class="text">
3938     <p>GET ENGINE INFO &lt;engine-name&gt;
3939     </p>
3940 schoenebeck 708 </blockquote><p>
3941 schoenebeck 940
3942 schoenebeck 708 </p>
3943 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3944 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.
3945 senoner 542 </p>
3946     <p>Possible Answers:
3947     </p>
3948 schoenebeck 708 <p>
3949     </p>
3950 senoner 542 <blockquote class="text">
3951     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3952     Each answer line begins with the information category name
3953     followed by a colon and then a space character &lt;SP&gt; and finally
3954     the info character string to that info category. At the moment
3955     the following categories are defined:
3956     </p>
3957 schoenebeck 708 <p>
3958     </p>
3959 senoner 542 <blockquote class="text">
3960     <p>DESCRIPTION -
3961     </p>
3962     <blockquote class="text">
3963     <p>arbitrary description text about the engine
3964 schoenebeck 1400 (note that the character string may contain
3965     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3966 senoner 542 </p>
3967 schoenebeck 940 </blockquote>
3968    
3969 senoner 542
3970     <p>VERSION -
3971     </p>
3972     <blockquote class="text">
3973     <p>arbitrary character string regarding the engine's version
3974     </p>
3975 schoenebeck 940 </blockquote>
3976    
3977 senoner 542
3978 schoenebeck 940 </blockquote>
3979    
3980 senoner 542
3981 schoenebeck 708 </blockquote><p>
3982 schoenebeck 940
3983 schoenebeck 708 </p>
3984 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3985     </p>
3986 schoenebeck 2498 <p>Examples:
3987 senoner 542 </p>
3988 schoenebeck 708 <p>
3989     </p>
3990 senoner 542 <blockquote class="text">
3991 schoenebeck 2498 <p>C: "GET ENGINE INFO gig"
3992 senoner 542 </p>
3993 schoenebeck 2498 <p>S: "DESCRIPTION: GigaSampler Format Engine"
3994 senoner 542 </p>
3995 schoenebeck 2498 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.110"
3996 senoner 542 </p>
3997     <p>&nbsp;&nbsp;&nbsp;"."
3998     </p>
3999 schoenebeck 2498 <p>C: "GET ENGINE INFO sf2"
4000     </p>
4001     <p>S: "DESCRIPTION: SoundFont Format Engine"
4002     </p>
4003     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.4"
4004     </p>
4005     <p>&nbsp;&nbsp;&nbsp;"."
4006     </p>
4007     <p>C: "GET ENGINE INFO sfz"
4008     </p>
4009     <p>S: "DESCRIPTION: SFZ Format Engine"
4010     </p>
4011     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.11"
4012     </p>
4013     <p>&nbsp;&nbsp;&nbsp;"."
4014     </p>
4015 schoenebeck 708 </blockquote><p>
4016 schoenebeck 940
4017 schoenebeck 708 </p>
4018 schoenebeck 940 <a name="GET CHANNEL INFO"></a><br /><hr />
4019 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>
4020     <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
4021     Getting sampler channel information</h3>
4022 senoner 542
4023     <p>The front-end can ask for the current settings of a sampler channel
4024     by sending the following command:
4025     </p>
4026 schoenebeck 708 <p>
4027     </p>
4028 senoner 542 <blockquote class="text">
4029     <p>GET CHANNEL INFO &lt;sampler-channel&gt;
4030     </p>
4031 schoenebeck 708 </blockquote><p>
4032 schoenebeck 940
4033 schoenebeck 708 </p>
4034 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4035 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>
4036     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.
4037 senoner 542 </p>
4038     <p>Possible Answers:
4039     </p>
4040 schoenebeck 708 <p>
4041     </p>
4042 senoner 542 <blockquote class="text">
4043     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4044     Each answer line begins with the settings category name
4045     followed by a colon and then a space character &lt;SP&gt; and finally
4046     the info character string to that setting category. At the
4047     moment the following categories are defined:
4048     </p>
4049 schoenebeck 708 <p>
4050     </p>
4051 senoner 542 <blockquote class="text">
4052     <p>ENGINE_NAME -
4053     </p>
4054     <blockquote class="text">
4055 schoenebeck 575 <p>name of the engine that is associated with the sampler
4056     channel, "NONE" if there's no engine associated yet for
4057 senoner 542 this sampler channel
4058     </p>
4059 schoenebeck 940 </blockquote>
4060    
4061 senoner 542
4062     <p>AUDIO_OUTPUT_DEVICE -
4063     </p>
4064     <blockquote class="text">
4065     <p>numerical ID of the audio output device which is
4066     currently connected to this sampler channel to output
4067 schoenebeck 1805 the audio signal, "-1" if there's no device
4068 senoner 542 connected to this sampler channel
4069     </p>
4070 schoenebeck 940 </blockquote>
4071    
4072 senoner 542
4073     <p>AUDIO_OUTPUT_CHANNELS -
4074     </p>
4075     <blockquote class="text">
4076     <p>number of output channels the sampler channel offers
4077     (dependent to used sampler engine and loaded instrument)
4078     </p>
4079 schoenebeck 940 </blockquote>
4080    
4081 senoner 542
4082     <p>AUDIO_OUTPUT_ROUTING -
4083     </p>
4084     <blockquote class="text">
4085     <p>comma separated list which reflects to which audio
4086     channel of the selected audio output device each
4087     sampler output channel is routed to, e.g. "0,3" would
4088     mean the engine's output channel 0 is routed to channel
4089     0 of the audio output device and the engine's output
4090     channel 1 is routed to the channel 3 of the audio
4091     output device
4092     </p>
4093 schoenebeck 940 </blockquote>
4094    
4095 senoner 542
4096     <p>INSTRUMENT_FILE -
4097     </p>
4098     <blockquote class="text">
4099     <p>the file name of the loaded instrument, "NONE" if
4100     there's no instrument yet loaded for this sampler
4101 schoenebeck 1400 channel (note: since LSCP 1.2 this path may contain
4102     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4103 senoner 542 </p>
4104 schoenebeck 940 </blockquote>
4105    
4106 senoner 542
4107     <p>INSTRUMENT_NR -
4108     </p>
4109     <blockquote class="text">
4110 schoenebeck 1805 <p>the instrument index number of the loaded instrument,
4111     "-1" if there's no instrument loaded for this sampler
4112     channel
4113 senoner 542 </p>
4114 schoenebeck 940 </blockquote>
4115    
4116 senoner 542
4117     <p>INSTRUMENT_NAME -
4118     </p>
4119     <blockquote class="text">
4120     <p>the instrument name of the loaded instrument
4121 schoenebeck 1400 (note: since LSCP 1.2 this character string may contain
4122     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4123 senoner 542 </p>
4124 schoenebeck 940 </blockquote>
4125    
4126 senoner 542
4127     <p>INSTRUMENT_STATUS -
4128     </p>
4129     <blockquote class="text">
4130 schoenebeck 1805 <p>Integer values 0 to 100 indicating loading progress
4131     percentage for the instrument. Negative
4132     value indicates a loading exception (also returns "-1" in case no
4133     instrument was yet to be loaded on the sampler channel).
4134     Value of 100 indicates that the instrument is fully
4135 senoner 542 loaded.
4136     </p>
4137 schoenebeck 940 </blockquote>
4138    
4139 senoner 542
4140     <p>MIDI_INPUT_DEVICE -
4141     </p>
4142     <blockquote class="text">
4143     <p>numerical ID of the MIDI input device which is
4144     currently connected to this sampler channel to deliver
4145 schoenebeck 1805 MIDI input commands, "-1" if there's no device
4146 senoner 542 connected to this sampler channel
4147     </p>
4148 schoenebeck 940 </blockquote>
4149    
4150 senoner 542
4151     <p>MIDI_INPUT_PORT -
4152     </p>
4153     <blockquote class="text">
4154 schoenebeck 1805 <p>port number of the MIDI input device (in case a
4155     MIDI device was already assigned to the sampler
4156     channel)
4157 senoner 542 </p>
4158 schoenebeck 940 </blockquote>
4159    
4160 senoner 542
4161     <p>MIDI_INPUT_CHANNEL -
4162     </p>
4163     <blockquote class="text">
4164     <p>the MIDI input channel number this sampler channel
4165     should listen to or "ALL" to listen on all MIDI channels
4166     </p>
4167 schoenebeck 940 </blockquote>
4168    
4169 senoner 542
4170     <p>VOLUME -
4171     </p>
4172     <blockquote class="text">
4173     <p>optionally dotted number for the channel volume factor
4174 schoenebeck 1028 (where a value &lt; 1.0 means attenuation and a value >
4175 senoner 542 1.0 means amplification)
4176     </p>
4177 schoenebeck 940 </blockquote>
4178    
4179 senoner 542
4180 schoenebeck 708 <p>MUTE -
4181     </p>
4182     <blockquote class="text">
4183     <p>Determines whether the channel is muted, "true" if the
4184     channel is muted, "false" if the channel is not muted, and
4185     "MUTED_BY_SOLO" if the channel is muted because of the
4186     presence of a solo channel and will be unmuted when
4187     there are no solo channels left
4188     </p>
4189 schoenebeck 940 </blockquote>
4190    
4191 senoner 542
4192 schoenebeck 708 <p>SOLO -
4193     </p>
4194     <blockquote class="text">
4195     <p>Determines whether this is a solo channel, "true" if
4196     the channel is a solo channel; "false" otherwise
4197     </p>
4198 schoenebeck 940 </blockquote>
4199    
4200 senoner 542
4201 schoenebeck 974 <p>MIDI_INSTRUMENT_MAP -
4202     </p>
4203     <blockquote class="text">
4204     <p>Determines to which MIDI instrument map this sampler
4205     channel is assigned to. Read chapter
4206     <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>
4207     for a list of possible values.
4208     </p>
4209 schoenebeck 940 </blockquote>
4210 schoenebeck 974
4211    
4212     </blockquote>
4213 schoenebeck 940
4214 schoenebeck 708
4215     </blockquote><p>
4216 schoenebeck 940
4217 schoenebeck 708 </p>
4218 senoner 542 <p>The mentioned fields above don't have to be in particular order.
4219     </p>
4220     <p>Example:
4221     </p>
4222 schoenebeck 708 <p>
4223     </p>
4224 senoner 542 <blockquote class="text">
4225     <p>C: "GET CHANNEL INFO 34"
4226     </p>
4227 schoenebeck 2498 <p>S: "ENGINE_NAME: gig"
4228 senoner 542 </p>
4229     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4230     </p>
4231     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4232     </p>
4233     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4234     </p>
4235     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4236     </p>
4237     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4238     </p>
4239     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4240     </p>
4241     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4242     </p>
4243     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4244     </p>
4245     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4246     </p>
4247     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4248     </p>
4249     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4250     </p>
4251 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4252     </p>
4253     <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4254     </p>
4255     <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4256     </p>
4257     <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4258     </p>
4259 senoner 542 <p>&nbsp;&nbsp;&nbsp;"."
4260     </p>
4261 schoenebeck 708 </blockquote><p>
4262 schoenebeck 940
4263 schoenebeck 708 </p>
4264 schoenebeck 940 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4265 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>
4266     <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4267     Current number of active voices</h3>
4268 senoner 542
4269     <p>The front-end can ask for the current number of active voices on a
4270     sampler channel by sending the following command:
4271     </p>
4272 schoenebeck 708 <p>
4273     </p>
4274 senoner 542 <blockquote class="text">
4275     <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4276     </p>
4277 schoenebeck 708 </blockquote><p>
4278 schoenebeck 940
4279 schoenebeck 708 </p>
4280 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4281 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>
4282     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.
4283 senoner 542 </p>
4284     <p>Possible Answers:
4285     </p>
4286 schoenebeck 708 <p>
4287     </p>
4288 senoner 542 <blockquote class="text">
4289     <p>LinuxSampler will answer by returning the number of active
4290     voices on that channel.
4291     </p>
4292 schoenebeck 708 </blockquote><p>
4293 schoenebeck 940
4294 schoenebeck 708 </p>
4295 senoner 542 <p>Example:
4296     </p>
4297 schoenebeck 708 <p>
4298     </p>
4299 senoner 542 <blockquote class="text">
4300     <p>
4301     </p>
4302 schoenebeck 708 </blockquote><p>
4303 schoenebeck 940
4304 schoenebeck 708 </p>
4305 schoenebeck 940 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4306 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>
4307     <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4308     Current number of active disk streams</h3>
4309 senoner 542
4310     <p>The front-end can ask for the current number of active disk streams
4311     on a sampler channel by sending the following command:
4312     </p>
4313 schoenebeck 708 <p>
4314     </p>
4315 senoner 542 <blockquote class="text">
4316     <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4317     </p>
4318 schoenebeck 708 </blockquote><p>
4319 schoenebeck 940
4320 schoenebeck 708 </p>
4321 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4322 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>
4323     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.
4324 senoner 542 </p>
4325     <p>Possible Answers:
4326     </p>
4327 schoenebeck 708 <p>
4328     </p>
4329 senoner 542 <blockquote class="text">
4330     <p>LinuxSampler will answer by returning the number of active
4331     disk streams on that channel in case the engine supports disk
4332     streaming, if the engine doesn't support disk streaming it will
4333     return "NA" for not available.
4334     </p>
4335 schoenebeck 708 </blockquote><p>
4336 schoenebeck 940
4337 schoenebeck 708 </p>
4338 senoner 542 <p>Example:
4339     </p>
4340 schoenebeck 708 <p>
4341     </p>
4342 senoner 542 <blockquote class="text">
4343     <p>
4344     </p>
4345 schoenebeck 708 </blockquote><p>
4346 schoenebeck 940
4347 schoenebeck 708 </p>
4348 schoenebeck 940 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4349 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>
4350     <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4351     Current fill state of disk stream buffers</h3>
4352 senoner 542
4353     <p>The front-end can ask for the current fill state of all disk streams
4354     on a sampler channel by sending the following command:
4355     </p>
4356 schoenebeck 708 <p>
4357     </p>
4358 senoner 542 <blockquote class="text">
4359     <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4360     </p>
4361 schoenebeck 708 </blockquote><p>
4362 schoenebeck 940
4363 schoenebeck 708 </p>
4364 senoner 542 <p>to get the fill state in bytes or
4365     </p>
4366 schoenebeck 708 <p>
4367     </p>
4368 senoner 542 <blockquote class="text">
4369     <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4370     </p>
4371 schoenebeck 708 </blockquote><p>
4372 schoenebeck 940
4373 schoenebeck 708 </p>
4374 senoner 542 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4375 schoenebeck 575 sampler channel number the front-end is interested in
4376 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>
4377     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.
4378 senoner 542 </p>
4379     <p>Possible Answers:
4380     </p>
4381 schoenebeck 708 <p>
4382     </p>
4383 senoner 542 <blockquote class="text">
4384     <p>LinuxSampler will either answer by returning a comma separated
4385     string with the fill state of all disk stream buffers on that
4386     channel or an empty line if there are no active disk streams or
4387     "NA" for *not available* in case the engine which is deployed
4388     doesn't support disk streaming. Each entry in the answer list
4389     will begin with the stream's ID in brackets followed by the
4390     numerical representation of the fill size (either in bytes or
4391     percentage). Note: due to efficiency reasons the fill states in
4392     the response are not in particular order, thus the front-end has
4393     to sort them by itself if necessary.
4394     </p>
4395 schoenebeck 708 </blockquote><p>
4396 schoenebeck 940
4397 schoenebeck 708 </p>
4398 senoner 542 <p>Examples:
4399     </p>
4400 schoenebeck 708 <p>
4401     </p>
4402 senoner 542 <blockquote class="text">
4403     <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4404     </p>
4405     <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4406     </p>
4407 schoenebeck 708 </blockquote><p>
4408    
4409     </p>
4410 senoner 542 <blockquote class="text">
4411 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4412 senoner 542 </p>
4413     <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4414     </p>
4415 schoenebeck 708 </blockquote><p>
4416    
4417     </p>
4418 senoner 542 <blockquote class="text">
4419 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4420 senoner 542 </p>
4421     <p>S: ""
4422     </p>
4423 schoenebeck 708 </blockquote><p>
4424 schoenebeck 940
4425 schoenebeck 708 </p>
4426 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4427 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>
4428     <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4429     Setting audio output device</h3>
4430 senoner 542
4431     <p>The front-end can set the audio output device on a specific sampler
4432     channel by sending the following command:
4433     </p>
4434 schoenebeck 708 <p>
4435     </p>
4436 senoner 542 <blockquote class="text">
4437     <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4438     </p>
4439 schoenebeck 708 </blockquote><p>
4440 schoenebeck 940
4441 schoenebeck 708 </p>
4442 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4443 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>
4444     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
4445 schoenebeck 575 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4446 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>
4447     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>
4448 schoenebeck 575 command.
4449 senoner 542 </p>
4450     <p>Possible Answers:
4451     </p>
4452 schoenebeck 708 <p>
4453     </p>
4454 senoner 542 <blockquote class="text">
4455     <p>"OK" -
4456     </p>
4457     <blockquote class="text">
4458     <p>on success
4459     </p>
4460 schoenebeck 940 </blockquote>
4461    
4462 senoner 542
4463     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4464     </p>
4465     <blockquote class="text">
4466     <p>if audio output device was set, but there are noteworthy
4467     issue(s) related, providing an appropriate warning code and
4468     warning message
4469     </p>
4470 schoenebeck 940 </blockquote>
4471    
4472 senoner 542
4473     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4474     </p>
4475     <blockquote class="text">
4476     <p>in case it failed, providing an appropriate error code and error message
4477     </p>
4478 schoenebeck 940 </blockquote>
4479    
4480 senoner 542
4481 schoenebeck 708 </blockquote><p>
4482 schoenebeck 940
4483 schoenebeck 708 </p>
4484 senoner 542 <p>Examples:
4485     </p>
4486 schoenebeck 708 <p>
4487     </p>
4488 senoner 542 <blockquote class="text">
4489     <p>
4490     </p>
4491 schoenebeck 708 </blockquote><p>
4492 schoenebeck 940
4493 schoenebeck 708 </p>
4494 schoenebeck 974 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4495     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4496     <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4497     Setting audio output type</h3>
4498 senoner 542
4499 schoenebeck 2498 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
4500 senoner 542 </p>
4501     <p>The front-end can alter the audio output type on a specific sampler
4502     channel by sending the following command:
4503     </p>
4504 schoenebeck 708 <p>
4505     </p>
4506 senoner 542 <blockquote class="text">
4507     <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4508     </p>
4509 schoenebeck 708 </blockquote><p>
4510 schoenebeck 940
4511 schoenebeck 708 </p>
4512 senoner 542 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4513     &lt;sampler-channel&gt; is the respective sampler channel number.
4514     </p>
4515     <p>Possible Answers:
4516     </p>
4517 schoenebeck 708 <p>
4518     </p>
4519 senoner 542 <blockquote class="text">
4520     <p>"OK" -
4521     </p>
4522     <blockquote class="text">
4523     <p>on success
4524     </p>
4525 schoenebeck 940 </blockquote>
4526    
4527 senoner 542
4528     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4529     </p>
4530     <blockquote class="text">
4531     <p>if audio output type was set, but there are noteworthy
4532     issue(s) related, providing an appropriate warning code and
4533     warning message
4534     </p>
4535 schoenebeck 940 </blockquote>
4536    
4537 senoner 542
4538     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4539     </p>
4540     <blockquote class="text">
4541     <p>in case it failed, providing an appropriate error code and error message
4542     </p>
4543 schoenebeck 940 </blockquote>
4544    
4545 senoner 542
4546 schoenebeck 708 </blockquote><p>
4547 schoenebeck 940
4548 schoenebeck 708 </p>
4549 senoner 542 <p>Examples:
4550     </p>
4551 schoenebeck 708 <p>
4552     </p>
4553 senoner 542 <blockquote class="text">
4554     <p>
4555     </p>
4556 schoenebeck 708 </blockquote><p>
4557 schoenebeck 940
4558 schoenebeck 708 </p>
4559 schoenebeck 2498 <p>Deprecated:
4560     </p>
4561     <p>
4562     </p>
4563     <blockquote class="text">
4564     <p>Should not be used anymore. This command is currently only preserved for backward compatibility.
4565     </p>
4566     <p>This command is a relict from times where there was no sophisticated driver management yet. Use <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> and <a class='info' href='#SET CHANNEL AUDIO_OUTPUT_DEVICE'>"SET CHANNEL AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Setting audio output device</span><span>)</span></a> instead.
4567     </p>
4568     </blockquote><p>
4569    
4570     </p>
4571 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4572 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>
4573     <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4574     Setting audio output channel</h3>
4575 senoner 542
4576     <p>The front-end can alter the audio output channel on a specific
4577     sampler channel by sending the following command:
4578     </p>
4579 schoenebeck 708 <p>
4580     </p>
4581 senoner 542 <blockquote class="text">
4582     <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4583     </p>
4584 schoenebeck 708 </blockquote><p>
4585 schoenebeck 940
4586 schoenebeck 708 </p>
4587 schoenebeck 575 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4588 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>
4589     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
4590 senoner 542 numerical ID of the sampler channel's audio output channel which should be
4591     rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4592     output device where &lt;audio-out&gt; should be routed to.
4593     </p>
4594     <p>Possible Answers:
4595     </p>
4596 schoenebeck 708 <p>
4597     </p>
4598 senoner 542 <blockquote class="text">
4599     <p>"OK" -
4600     </p>
4601     <blockquote class="text">
4602     <p>on success
4603     </p>
4604 schoenebeck 940 </blockquote>
4605    
4606 senoner 542
4607     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4608     </p>
4609     <blockquote class="text">
4610     <p>if audio output channel was set, but there are noteworthy
4611     issue(s) related, providing an appropriate warning code and
4612     warning message
4613     </p>
4614 schoenebeck 940 </blockquote>
4615    
4616 senoner 542
4617     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4618     </p>
4619     <blockquote class="text">
4620     <p>in case it failed, providing an appropriate error code and error message
4621     </p>
4622 schoenebeck 940 </blockquote>
4623    
4624 senoner 542
4625 schoenebeck 708 </blockquote><p>
4626 schoenebeck 940
4627 schoenebeck 708 </p>
4628 senoner 542 <p>Examples:
4629     </p>
4630 schoenebeck 708 <p>
4631     </p>
4632 senoner 542 <blockquote class="text">
4633     <p>
4634     </p>
4635 schoenebeck 708 </blockquote><p>
4636 schoenebeck 940
4637 schoenebeck 708 </p>
4638 schoenebeck 2498 <a name="ADD CHANNEL MIDI_INPUT"></a><br /><hr />
4639     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4640     <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4641     Add MIDI input to sampler channel</h3>
4642    
4643     <p>The front-end can add a MIDI input on a specific sampler
4644     channel by sending the following command:
4645     </p>
4646     <p>
4647     </p>
4648     <blockquote class="text">
4649     <p>ADD CHANNEL MIDI_INPUT &lt;sampler-channel&gt; &lt;midi-device-id&gt; [&lt;midi-input-port&gt;]
4650     </p>
4651     </blockquote><p>
4652    
4653     </p>
4654     <p>Where &lt;sampler-channel&gt; is the sampler channel number
4655     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>
4656     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
4657     and &lt;midi-device-id&gt; is the numerical ID of the MIDI input
4658     device as returned by the
4659     <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>
4660     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,
4661     and &lt;midi-input-port&gt; is an optional MIDI input port number of that
4662     MIDI input device. If &lt;midi-input-port&gt; is omitted,
4663     then the MIDI input device's first port (port number 0) is
4664     used.
4665    
4666     </p>
4667     <p>Possible Answers:
4668     </p>
4669     <p>
4670     </p>
4671     <blockquote class="text">
4672     <p>"OK" -
4673     </p>
4674     <blockquote class="text">
4675     <p>on success
4676     </p>
4677     </blockquote>
4678    
4679    
4680     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4681     </p>
4682     <blockquote class="text">
4683     <p>if MIDI input port was connected, but there are noteworthy
4684     issue(s) related, providing an appropriate warning code and
4685     warning message
4686     </p>
4687     </blockquote>
4688    
4689    
4690     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4691     </p>
4692     <blockquote class="text">
4693     <p>in case it failed, providing an appropriate error code and error message
4694     </p>
4695     </blockquote>
4696    
4697    
4698     </blockquote><p>
4699    
4700     </p>
4701     <p>Examples:
4702     </p>
4703     <p>
4704     </p>
4705     <blockquote class="text">
4706     <p>C: "ADD CHANNEL MIDI_INPUT 0 0"
4707     </p>
4708     <p>S: "OK"
4709     </p>
4710     <p>C: "ADD CHANNEL MIDI_INPUT 1 0"
4711     </p>
4712     <p>S: "OK"
4713     </p>
4714     <p>C: "ADD CHANNEL MIDI_INPUT 1 1 1"
4715     </p>
4716     <p>S: "OK"
4717     </p>
4718     <p>C: "ADD CHANNEL MIDI_INPUT 1 2 0"
4719     </p>
4720     <p>S: "OK"
4721     </p>
4722     </blockquote><p>
4723    
4724     </p>
4725     <p>Since:
4726     </p>
4727     <p>
4728     </p>
4729     <blockquote class="text">
4730     <p>Introduced with LSCP v1.6
4731     </p>
4732     </blockquote><p>
4733    
4734     </p>
4735     <a name="REMOVE CHANNEL MIDI_INPUT"></a><br /><hr />
4736     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4737     <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4738     Remove MIDI input(s) from sampler channel</h3>
4739    
4740     <p>The front-end can remove one ore more MIDI input(s) on a
4741     specific sampler channel by sending the following command:
4742     </p>
4743     <p>
4744     </p>
4745     <blockquote class="text">
4746     <p>REMOVE CHANNEL MIDI_INPUT &lt;sampler-channel&gt; [&lt;midi-device-id&gt; [&lt;midi-input-port&gt;]]
4747     </p>
4748     </blockquote><p>
4749    
4750     </p>
4751     <p>Where &lt;sampler-channel&gt; is the sampler channel number
4752     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>
4753     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
4754     and &lt;midi-device-id&gt; and &lt;midi-input-port&gt; are
4755     optional numerical IDs defining the MIDI input device and
4756     one of its MIDI ports as returned by the
4757     <a class='info' href='#LIST CHANNEL MIDI_INPUTS'>"LIST CHANNEL MIDI_INPUTS"<span> (</span><span class='info'>Getting all MIDI inputs of a sampler channel</span><span>)</span></a> command.
4758    
4759     </p>
4760     <p>
4761     If &lt;midi-input-port&gt; is omitted, then all MIDI input
4762     ports of &lt;midi-device-id&gt; are disconnected from this
4763     sampler channel.
4764    
4765     </p>
4766     <p>
4767     If both, &lt;midi-device-id&gt; and &lt;midi-input-port&gt;
4768     are omitted, then all MIDI input ports currently connected
4769     to this sampler channel are disconnected from this sampler
4770     channel.
4771    
4772     </p>
4773     <p>Possible Answers:
4774     </p>
4775     <p>
4776     </p>
4777     <blockquote class="text">
4778     <p>"OK" -
4779     </p>
4780     <blockquote class="text">
4781     <p>on success
4782     </p>
4783     </blockquote>
4784    
4785    
4786     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4787     </p>
4788     <blockquote class="text">
4789     <p>if MIDI input porst were disconnected, but there are noteworthy
4790     issue(s) related, providing an appropriate warning code and
4791     warning message
4792     </p>
4793     </blockquote>
4794    
4795    
4796     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4797     </p>
4798     <blockquote class="text">
4799     <p>in case it failed, providing an appropriate error code and error message
4800     </p>
4801     </blockquote>
4802    
4803    
4804     </blockquote><p>
4805    
4806     </p>
4807     <p>Examples:
4808     </p>
4809     <p>
4810     </p>
4811     <blockquote class="text">
4812     <p>C: "REMOVE CHANNEL MIDI_INPUT 0"
4813     </p>
4814     <p>S: "OK"
4815     </p>
4816     <p>C: "REMOVE CHANNEL MIDI_INPUT 1"
4817     </p>
4818     <p>S: "OK"
4819     </p>
4820     <p>C: "REMOVE CHANNEL MIDI_INPUT 1 2 0"
4821     </p>
4822     <p>S: "OK"
4823     </p>
4824     </blockquote><p>
4825    
4826     </p>
4827     <p>Since:
4828     </p>
4829     <p>
4830     </p>
4831     <blockquote class="text">
4832     <p>Introduced with LSCP v1.6
4833     </p>
4834     </blockquote><p>
4835    
4836     </p>
4837     <a name="LIST CHANNEL MIDI_INPUTS"></a><br /><hr />
4838     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4839     <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4840     Getting all MIDI inputs of a sampler channel</h3>
4841    
4842     <p>The front-end can query a list of all currently connected
4843     MIDI inputs of a certain sampler channel by sending the following
4844     command:
4845     </p>
4846     <p>
4847     </p>
4848     <blockquote class="text">
4849     <p>LIST CHANNEL MIDI_INPUTS &lt;sampler-channel&gt;
4850     </p>
4851     </blockquote><p>
4852    
4853     </p>
4854     <p>Where &lt;sampler-channel&gt; is the sampler channel number
4855     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>
4856     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.
4857    
4858     </p>
4859     <p>Possible Answers:
4860     </p>
4861     <p>
4862     </p>
4863     <blockquote class="text">
4864     <p>The sampler will answer by sending a comma separated
4865     list of MIDI input device ID - MIDI input port number pairs, where
4866     each pair is encapsulated into curly braces. The
4867     list is returned in one single line. The MIDI input
4868     device ID corresponds to the number returned by
4869     <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>
4870     and the port number is the index of the respective MIDI
4871     port of that MIDI input device.
4872     </p>
4873     </blockquote><p>
4874    
4875     </p>
4876     <p>Example:
4877     </p>
4878     <p>
4879     </p>
4880     <blockquote class="text">
4881     <p>C: "LIST CHANNEL MIDI_INPUTS 0"
4882     </p>
4883     <p>S: "{0,0},{1,3},{2,0}"
4884     </p>
4885     </blockquote><p>
4886    
4887     </p>
4888     <p>Since:
4889     </p>
4890     <p>
4891     </p>
4892     <blockquote class="text">
4893     <p>Introduced with LSCP v1.6
4894     </p>
4895     </blockquote><p>
4896    
4897     </p>
4898 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4899 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>
4900 schoenebeck 2498 <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4901 schoenebeck 974 Setting MIDI input device</h3>
4902 senoner 542
4903 schoenebeck 2498 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
4904     </p>
4905 senoner 542 <p>The front-end can set the MIDI input device on a specific sampler
4906     channel by sending the following command:
4907     </p>
4908 schoenebeck 708 <p>
4909     </p>
4910 senoner 542 <blockquote class="text">
4911     <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4912     </p>
4913 schoenebeck 708 </blockquote><p>
4914 schoenebeck 940
4915 schoenebeck 708 </p>
4916 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4917 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>
4918     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
4919 schoenebeck 575 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4920 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>
4921     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.
4922 senoner 542 </p>
4923 schoenebeck 2498 <p>
4924     If more than 1 MIDI inputs are currently connected to this
4925     sampler channel: Sending this command will disconnect ALL
4926     currently connected MIDI input ports connected to this
4927     sampler channel before establishing the new MIDI input
4928     connection. So this command does NOT add the connection,
4929     it replaces all existing ones instead. This behavior is due
4930     to preserving full behavior backward compatibility.
4931    
4932     </p>
4933 senoner 542 <p>Possible Answers:
4934     </p>
4935 schoenebeck 708 <p>
4936     </p>
4937 senoner 542 <blockquote class="text">
4938     <p>"OK" -
4939     </p>
4940     <blockquote class="text">
4941     <p>on success
4942     </p>
4943 schoenebeck 940 </blockquote>
4944    
4945 senoner 542
4946     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4947     </p>
4948     <blockquote class="text">
4949     <p>if MIDI input device was set, but there are noteworthy
4950     issue(s) related, providing an appropriate warning code and
4951     warning message
4952     </p>
4953 schoenebeck 940 </blockquote>
4954    
4955 senoner 542
4956     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4957     </p>
4958     <blockquote class="text">
4959     <p>in case it failed, providing an appropriate error code and error message
4960     </p>
4961 schoenebeck 940 </blockquote>
4962    
4963 senoner 542
4964 schoenebeck 708 </blockquote><p>
4965 schoenebeck 940
4966 schoenebeck 708 </p>
4967 senoner 542 <p>Examples:
4968     </p>
4969 schoenebeck 708 <p>
4970     </p>
4971 senoner 542 <blockquote class="text">
4972     <p>
4973     </p>
4974 schoenebeck 708 </blockquote><p>
4975 schoenebeck 940
4976 schoenebeck 708 </p>
4977 schoenebeck 2498 <p>Deprecated:
4978     </p>
4979     <p>
4980     </p>
4981     <blockquote class="text">
4982     <p>Should not be used anymore as of LSCP v1.6 and younger. This command is currently only preserved for backward compatibility.
4983     </p>
4984     <p>This command is a relict from times where only one MIDI input per sampler channel was allowed. Use <a class='info' href='#ADD CHANNEL MIDI_INPUT'>"ADD CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Add MIDI input to sampler channel</span><span>)</span></a> and <a class='info' href='#REMOVE CHANNEL MIDI_INPUT'>"REMOVE CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Remove MIDI input(s) from sampler channel</span><span>)</span></a> instead.
4985     </p>
4986     </blockquote><p>
4987    
4988     </p>
4989 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4990 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>
4991 schoenebeck 2498 <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4992 schoenebeck 974 Setting MIDI input type</h3>
4993 senoner 542
4994 schoenebeck 2498 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
4995 senoner 542 </p>
4996     <p>The front-end can alter the MIDI input type on a specific sampler
4997     channel by sending the following command:
4998     </p>
4999 schoenebeck 708 <p>
5000     </p>
5001 senoner 542 <blockquote class="text">
5002     <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
5003     </p>
5004 schoenebeck 708 </blockquote><p>
5005 schoenebeck 940
5006 schoenebeck 708 </p>
5007 senoner 542 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
5008     &lt;sampler-channel&gt; is the respective sampler channel number.
5009     </p>
5010 schoenebeck 2498 <p>
5011     If more than 1 MIDI inputs are currently connected to this
5012     sampler channel: Sending this command will disconnect ALL
5013     currently connected MIDI input ports connected to this
5014     sampler channel before establishing the new MIDI input
5015     connection. So this command does NOT add the connection,
5016     it replaces all existing ones instead. This behavior is due
5017     to preserving full behavior backward compatibility.
5018    
5019     </p>
5020 senoner 542 <p>Possible Answers:
5021     </p>
5022 schoenebeck 708 <p>
5023     </p>
5024 senoner 542 <blockquote class="text">
5025     <p>"OK" -
5026     </p>
5027     <blockquote class="text">
5028     <p>on success
5029     </p>
5030 schoenebeck 940 </blockquote>
5031    
5032 senoner 542
5033     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5034     </p>
5035     <blockquote class="text">
5036     <p>if MIDI input type was set, but there are noteworthy
5037     issue(s) related, providing an appropriate warning code and
5038     warning message
5039     </p>
5040 schoenebeck 940 </blockquote>
5041    
5042 senoner 542
5043     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5044     </p>
5045     <blockquote class="text">
5046     <p>in case it failed, providing an appropriate error code and error message
5047     </p>
5048 schoenebeck 940 </blockquote>
5049    
5050 senoner 542
5051 schoenebeck 708 </blockquote><p>
5052 schoenebeck 940
5053 schoenebeck 708 </p>
5054 senoner 542 <p>Examples:
5055     </p>
5056 schoenebeck 708 <p>
5057     </p>
5058 senoner 542 <blockquote class="text">
5059     <p>
5060     </p>
5061 schoenebeck 708 </blockquote><p>
5062 schoenebeck 940
5063 schoenebeck 708 </p>
5064 schoenebeck 2498 <p>Deprecated:
5065     </p>
5066     <p>
5067     </p>
5068     <blockquote class="text">
5069     <p>Should not be used anymore. This command is currently only preserved for backward compatibility.
5070     </p>
5071     <p>This command is a relict from times where only 1 MIDI input per sampler channels was allowed and where no sophisticated driver management existed yet. Use <a class='info' href='#ADD CHANNEL MIDI_INPUT'>"ADD CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Add MIDI input to sampler channel</span><span>)</span></a> and <a class='info' href='#REMOVE CHANNEL MIDI_INPUT'>"REMOVE CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Remove MIDI input(s) from sampler channel</span><span>)</span></a> instead.
5072     </p>
5073     </blockquote><p>
5074    
5075     </p>
5076 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
5077 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>
5078 schoenebeck 2498 <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
5079 schoenebeck 974 Setting MIDI input port</h3>
5080 senoner 542
5081 schoenebeck 2498 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR!
5082     </p>
5083 senoner 542 <p>The front-end can alter the MIDI input port on a specific sampler
5084     channel by sending the following command:
5085     </p>
5086 schoenebeck 708 <p>
5087     </p>
5088 senoner 542 <blockquote class="text">
5089     <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
5090     </p>
5091 schoenebeck 708 </blockquote><p>
5092 schoenebeck 940
5093 schoenebeck 708 </p>
5094 senoner 542 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
5095     MIDI input device connected to the sampler channel given by
5096     &lt;sampler-channel&gt;.
5097     </p>
5098 schoenebeck 2498 <p>
5099     If more than 1 MIDI inputs are currently connected to this
5100     sampler channel: Sending this command will switch the
5101     connection of the first (and only the first) MIDI input port
5102     currently being connected to this sampler channel, to
5103     another port of the same MIDI input device. Or in other
5104     words: the first MIDI input port currently connected to
5105     this sampler channel will be disconnected, and the requested
5106     other port of its MIDI input device will be connected to
5107     this sampler channel instead. This behavior is due
5108     to preserving full behavior backward compatibility.
5109    
5110     </p>
5111 senoner 542 <p>Possible Answers:
5112     </p>
5113 schoenebeck 708 <p>
5114     </p>
5115 senoner 542 <blockquote class="text">
5116     <p>"OK" -
5117     </p>
5118     <blockquote class="text">
5119     <p>on success
5120     </p>
5121 schoenebeck 940 </blockquote>
5122    
5123 senoner 542
5124     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5125     </p>
5126     <blockquote class="text">
5127     <p>if MIDI input port was set, but there are noteworthy
5128     issue(s) related, providing an appropriate warning code and
5129     warning message
5130     </p>
5131 schoenebeck 940 </blockquote>
5132    
5133 senoner 542
5134     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5135     </p>
5136     <blockquote class="text">
5137 schoenebeck 561 <p>in case it failed, providing an appropriate error code and error message
5138 senoner 542 </p>
5139 schoenebeck 940 </blockquote>
5140    
5141 senoner 542
5142 schoenebeck 708 </blockquote><p>
5143 schoenebeck 940
5144 schoenebeck 708 </p>
5145 senoner 542 <p>Examples:
5146     </p>
5147 schoenebeck 708 <p>
5148     </p>
5149 senoner 542 <blockquote class="text">
5150     <p>
5151     </p>
5152 schoenebeck 708 </blockquote><p>
5153 schoenebeck 940
5154 schoenebeck 708 </p>
5155 schoenebeck 2498 <p>Deprecated:
5156     </p>
5157     <p>
5158     </p>
5159     <blockquote class="text">
5160     <p>Should not be used anymore. This command is currently only preserved for backward compatibility.
5161     </p>
5162     <p>This command is a relict from times where only one MIDI input per sampler channel was allowed. Use <a class='info' href='#ADD CHANNEL MIDI_INPUT'>"ADD CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Add MIDI input to sampler channel</span><span>)</span></a> and <a class='info' href='#REMOVE CHANNEL MIDI_INPUT'>"REMOVE CHANNEL MIDI_INPUT"<span> (</span><span class='info'>Remove MIDI input(s) from sampler channel</span><span>)</span></a> instead.
5163     </p>
5164     </blockquote><p>
5165    
5166     </p>
5167 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
5168 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>
5169 schoenebeck 2498 <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
5170 schoenebeck 974 Setting MIDI input channel</h3>
5171 senoner 542
5172     <p>The front-end can alter the MIDI channel a sampler channel should
5173     listen to by sending the following command:
5174     </p>
5175 schoenebeck 708 <p>
5176     </p>
5177 senoner 542 <blockquote class="text">
5178     <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
5179     </p>
5180 schoenebeck 708 </blockquote><p>
5181 schoenebeck 940
5182 schoenebeck 708 </p>
5183 schoenebeck 2498 <p>Where &lt;midi-input-chan&gt; is the number
5184     of the new MIDI input channel (zero indexed!) where
5185     &lt;sampler-channel&gt; should listen to, or "ALL" to listen on all 16 MIDI
5186 senoner 542 channels.
5187     </p>
5188     <p>Possible Answers:
5189     </p>
5190 schoenebeck 708 <p>
5191     </p>
5192 senoner 542 <blockquote class="text">
5193     <p>"OK" -
5194     </p>
5195     <blockquote class="text">
5196     <p>on success
5197     </p>
5198 schoenebeck 940 </blockquote>
5199    
5200 senoner 542
5201     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5202     </p>
5203     <blockquote class="text">
5204     <p>if MIDI input channel was set, but there are noteworthy
5205     issue(s) related, providing an appropriate warning code and
5206     warning message
5207     </p>
5208 schoenebeck 940 </blockquote>
5209    
5210 senoner 542
5211     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5212     </p>
5213     <blockquote class="text">
5214     <p>in case it failed, providing an appropriate error code and error message
5215     </p>
5216 schoenebeck 940 </blockquote>
5217    
5218 senoner 542
5219 schoenebeck 708 </blockquote><p>
5220 schoenebeck 940
5221 schoenebeck 708 </p>
5222 senoner 542 <p>Examples:
5223     </p>
5224 schoenebeck 708 <p>
5225     </p>
5226 senoner 542 <blockquote class="text">
5227 schoenebeck 2498 <p>C: "SET CHANNEL MIDI_INPUT_CHANNEL 0 0"
5228 senoner 542 </p>
5229 schoenebeck 2498 <p>S: "OK"
5230     </p>
5231     <p>C: "SET CHANNEL MIDI_INPUT_CHANNEL 1 ALL"
5232     </p>
5233     <p>S: "OK"
5234     </p>
5235 schoenebeck 708 </blockquote><p>
5236 schoenebeck 940
5237 schoenebeck 708 </p>
5238 schoenebeck 940 <a name="SET CHANNEL VOLUME"></a><br /><hr />
5239 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>
5240 schoenebeck 2498 <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5241 schoenebeck 974 Setting channel volume</h3>
5242 senoner 542
5243     <p>The front-end can alter the volume of a sampler channel by sending
5244     the following command:
5245     </p>
5246 schoenebeck 708 <p>
5247     </p>
5248 senoner 542 <blockquote class="text">
5249     <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
5250     </p>
5251 schoenebeck 708 </blockquote><p>
5252 schoenebeck 940
5253 schoenebeck 708 </p>
5254 senoner 542 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
5255     smaller than 1.0 means attenuation, whereas a value greater than
5256     1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
5257     channel where this volume factor should be set.
5258     </p>
5259     <p>Possible Answers:
5260     </p>
5261 schoenebeck 708 <p>
5262     </p>
5263 senoner 542 <blockquote class="text">
5264     <p>"OK" -
5265     </p>
5266     <blockquote class="text">
5267     <p>on success
5268     </p>
5269 schoenebeck 940 </blockquote>
5270    
5271 senoner 542
5272     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5273     </p>
5274     <blockquote class="text">
5275     <p>if channel volume was set, but there are noteworthy
5276     issue(s) related, providing an appropriate warning code and
5277     warning message
5278     </p>
5279 schoenebeck 940 </blockquote>
5280    
5281 senoner 542
5282     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5283     </p>
5284     <blockquote class="text">
5285     <p>in case it failed, providing an appropriate error code and error message
5286     </p>
5287 schoenebeck 940 </blockquote>
5288    
5289 senoner 542
5290 schoenebeck 708 </blockquote><p>
5291 schoenebeck 940
5292 schoenebeck 708 </p>
5293 senoner 542 <p>Examples:
5294     </p>
5295 schoenebeck 708 <p>
5296     </p>
5297 senoner 542 <blockquote class="text">
5298     <p>
5299     </p>
5300 schoenebeck 708 </blockquote><p>
5301 schoenebeck 940
5302 schoenebeck 708 </p>
5303 schoenebeck 940 <a name="SET CHANNEL MUTE"></a><br /><hr />
5304 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>
5305 schoenebeck 2498 <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5306 schoenebeck 974 Muting a sampler channel</h3>
5307 senoner 542
5308 schoenebeck 708 <p>The front-end can mute/unmute a specific sampler
5309     channel by sending the following command:
5310     </p>
5311     <p>
5312     </p>
5313     <blockquote class="text">
5314     <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
5315     </p>
5316     </blockquote><p>
5317 schoenebeck 940
5318 schoenebeck 708 </p>
5319     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5320 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>
5321     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
5322 schoenebeck 708 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
5323     to unmute the channel.
5324     </p>
5325     <p>Possible Answers:
5326     </p>
5327     <p>
5328     </p>
5329     <blockquote class="text">
5330     <p>"OK" -
5331     </p>
5332     <blockquote class="text">
5333     <p>on success
5334     </p>
5335 schoenebeck 940 </blockquote>
5336    
5337 schoenebeck 708
5338     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5339     </p>
5340     <blockquote class="text">
5341     <p>if the channel was muted/unmuted, but there are noteworthy
5342     issue(s) related, providing an appropriate warning code and
5343     warning message
5344     </p>
5345 schoenebeck 940 </blockquote>
5346    
5347 schoenebeck 708
5348     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5349     </p>
5350     <blockquote class="text">
5351     <p>in case it failed, providing an appropriate error code and error message
5352     </p>
5353 schoenebeck 940 </blockquote>
5354    
5355 schoenebeck 708
5356     </blockquote><p>
5357 schoenebeck 940
5358 schoenebeck 708 </p>
5359     <p>Examples:
5360     </p>
5361     <p>
5362     </p>
5363     <blockquote class="text">
5364     <p>
5365     </p>
5366     </blockquote><p>
5367 schoenebeck 940
5368 schoenebeck 708 </p>
5369 schoenebeck 940 <a name="SET CHANNEL SOLO"></a><br /><hr />
5370 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>
5371 schoenebeck 2498 <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5372 schoenebeck 974 Soloing a sampler channel</h3>
5373 schoenebeck 708
5374     <p>The front-end can solo/unsolo a specific sampler channel
5375     by sending the following command:
5376     </p>
5377     <p>
5378     </p>
5379     <blockquote class="text">
5380     <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
5381     </p>
5382     </blockquote><p>
5383 schoenebeck 940
5384 schoenebeck 708 </p>
5385     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5386 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>
5387     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
5388 schoenebeck 708 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
5389     to unsolo the channel.
5390     </p>
5391     <p>Possible Answers:
5392     </p>
5393     <p>
5394     </p>
5395     <blockquote class="text">
5396     <p>"OK" -
5397     </p>
5398     <blockquote class="text">
5399     <p>on success
5400     </p>
5401 schoenebeck 940 </blockquote>
5402    
5403 schoenebeck 708
5404     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5405     </p>
5406     <blockquote class="text">
5407     <p>if the channel was soloed/unsoloed, but there are noteworthy
5408     issue(s) related, providing an appropriate warning code and
5409     warning message
5410     </p>
5411 schoenebeck 940 </blockquote>
5412    
5413 schoenebeck 708
5414     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5415     </p>
5416     <blockquote class="text">
5417     <p>in case it failed, providing an appropriate error code and error message
5418     </p>
5419 schoenebeck 940 </blockquote>
5420    
5421 schoenebeck 708
5422     </blockquote><p>
5423 schoenebeck 940
5424 schoenebeck 708 </p>
5425     <p>Examples:
5426     </p>
5427     <p>
5428     </p>
5429     <blockquote class="text">
5430     <p>
5431     </p>
5432     </blockquote><p>
5433 schoenebeck 940
5434 schoenebeck 708 </p>
5435 schoenebeck 974 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5436     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5437 schoenebeck 2498 <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5438 schoenebeck 974 Assigning a MIDI instrument map to a sampler channel</h3>
5439    
5440     <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5441     by sending the following command:
5442     </p>
5443     <p>
5444     </p>
5445     <blockquote class="text">
5446     <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5447     </p>
5448     </blockquote><p>
5449    
5450     </p>
5451     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5452     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>
5453     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
5454     &lt;map&gt; can have the following possibilites:
5455     </p>
5456     <p>
5457     </p>
5458     <blockquote class="text">
5459     <p>"NONE" -
5460     </p>
5461     <blockquote class="text">
5462     <p>This is the default setting. In this case
5463     the sampler channel is not assigned any MIDI
5464     instrument map and thus will ignore all MIDI
5465     program change messages.
5466     </p>
5467     </blockquote>
5468    
5469    
5470     <p>"DEFAULT" -
5471     </p>
5472     <blockquote class="text">
5473     <p>The sampler channel will always use the
5474     default MIDI instrument map to handle MIDI
5475     program change messages.
5476     </p>
5477     </blockquote>
5478    
5479    
5480     <p>numeric ID -
5481     </p>
5482     <blockquote class="text">
5483     <p>You can assign a specific MIDI instrument map
5484     by replacing &lt;map&gt; with the respective numeric
5485     ID of the MIDI instrument map as returned by the
5486     <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>
5487     command. Once that map will be deleted, the sampler
5488     channel would fall back to "NONE".
5489     </p>
5490     </blockquote>
5491    
5492    
5493     </blockquote><p>
5494    
5495     </p>
5496     <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>
5497     for details regarding MIDI instrument mapping.
5498     </p>
5499     <p>Possible Answers:
5500     </p>
5501     <p>
5502     </p>
5503     <blockquote class="text">
5504     <p>"OK" -
5505     </p>
5506     <blockquote class="text">
5507     <p>on success
5508     </p>
5509     </blockquote>
5510    
5511    
5512     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5513     </p>
5514     <blockquote class="text">
5515     <p>in case it failed, providing an appropriate error code and error message
5516     </p>
5517     </blockquote>
5518    
5519    
5520     </blockquote><p>
5521    
5522     </p>
5523     <p>Examples:
5524     </p>
5525     <p>
5526     </p>
5527     <blockquote class="text">
5528     <p>
5529     </p>
5530     </blockquote><p>
5531    
5532     </p>
5533 schoenebeck 1002 <a name="CREATE FX_SEND"></a><br /><hr />
5534     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5535 schoenebeck 2498 <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5536 schoenebeck 1002 Adding an effect send to a sampler channel</h3>
5537    
5538     <p>The front-end can create an additional effect send on a specific sampler channel
5539     by sending the following command:
5540     </p>
5541     <p>
5542     </p>
5543     <blockquote class="text">
5544     <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5545     </p>
5546     </blockquote><p>
5547    
5548     </p>
5549     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5550     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>
5551     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
5552     sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5553     is a number between 0..127 defining the MIDI controller which can alter the
5554     effect send level and &lt;name&gt; is an optional argument defining a name
5555 schoenebeck 1390 for the effect send entity. The name does not have to be unique, but MUST be
5556     encapsulated into apostrophes and supports escape sequences as described in chapter
5557     "<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>".
5558 schoenebeck 1002 </p>
5559     <p>By default, that is as initial routing, the effect send's audio channels
5560     are automatically routed to the last audio channels of the sampler channel's
5561     audio output device, that way you can i.e. first increase the amount of audio
5562     channels on the audio output device for having dedicated effect send output
5563     channels and when "CREATE FX_SEND" is called, those channels will automatically
5564     be picked. You can alter the destination channels however with
5565     <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>.
5566    
5567     </p>
5568     <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5569     sends on a sampler channel will decrease runtime performance, because for implementing channel
5570     effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5571     the voices and route the audio signal afterwards to the master outputs and effect send
5572     outputs (along with their respective effect send levels). A sampler channel without effect
5573     sends however can mix its voices directly into the audio output devices's audio buffers
5574     and is thus faster.
5575    
5576     </p>
5577     <p>Possible Answers:
5578     </p>
5579     <p>
5580     </p>
5581     <blockquote class="text">
5582     <p>"OK[&lt;fx-send-id&gt;]" -
5583     </p>
5584     <blockquote class="text">
5585     <p>in case a new effect send could be added to the
5586     sampler channel, where &lt;fx-send-id&gt; reflects the
5587     unique ID of the newly created effect send entity
5588     </p>
5589     </blockquote>
5590    
5591    
5592     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5593     </p>
5594     <blockquote class="text">
5595     <p>when a new effect send could not be added, i.e.
5596     due to invalid parameters
5597     </p>
5598     </blockquote>
5599    
5600    
5601     </blockquote><p>
5602    
5603     </p>
5604     <p>Examples:
5605     </p>
5606     <p>
5607     </p>
5608     <blockquote class="text">
5609     <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5610     </p>
5611     <p>S: "OK[0]"
5612     </p>
5613     </blockquote><p>
5614    
5615     </p>
5616     <p>
5617     </p>
5618     <blockquote class="text">
5619     <p>C: "CREATE FX_SEND 0 93"
5620     </p>
5621     <p>S: "OK[1]"
5622     </p>
5623     </blockquote><p>
5624    
5625     </p>
5626     <a name="DESTROY FX_SEND"></a><br /><hr />
5627     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5628 schoenebeck 2498 <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5629 schoenebeck 1002 Removing an effect send from a sampler channel</h3>
5630    
5631     <p>The front-end can remove an existing effect send on a specific sampler channel
5632     by sending the following command:
5633     </p>
5634     <p>
5635     </p>
5636     <blockquote class="text">
5637     <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5638     </p>
5639     </blockquote><p>
5640    
5641     </p>
5642     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5643     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>
5644     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
5645     sampler channel from which the effect send should be removed from and
5646     &lt;fx-send-id&gt; is the respective effect send number as returned by the
5647     <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>
5648     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.
5649     </p>
5650     <p>Possible Answers:
5651     </p>
5652     <p>
5653     </p>
5654     <blockquote class="text">
5655     <p>"OK" -
5656     </p>
5657     <blockquote class="text">
5658     <p>on success
5659     </p>
5660     </blockquote>
5661    
5662    
5663     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5664     </p>
5665     <blockquote class="text">
5666     <p>in case it failed, providing an appropriate error code and
5667     error message
5668     </p>
5669     </blockquote>
5670    
5671    
5672     </blockquote><p>
5673    
5674     </p>
5675     <p>Example:
5676     </p>
5677     <p>
5678     </p>
5679     <blockquote class="text">
5680     <p>C: "DESTROY FX_SEND 0 0"
5681     </p>
5682     <p>S: "OK"
5683     </p>
5684     </blockquote><p>
5685    
5686     </p>
5687     <a name="GET FX_SENDS"></a><br /><hr />
5688     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5689 schoenebeck 2498 <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5690 schoenebeck 1002 Getting amount of effect sends on a sampler channel</h3>
5691    
5692     <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5693     by sending the following command:
5694     </p>
5695     <p>
5696     </p>
5697     <blockquote class="text">
5698     <p>GET FX_SENDS &lt;sampler-channel&gt;
5699     </p>
5700     </blockquote><p>
5701    
5702     </p>
5703     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5704     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>
5705     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.
5706     </p>
5707     <p>Possible Answers:
5708     </p>
5709     <p>
5710     </p>
5711     <blockquote class="text">
5712     <p>The sampler will answer by returning the number of effect
5713     sends on the given sampler channel.
5714     </p>
5715     </blockquote><p>
5716    
5717     </p>
5718     <p>Example:
5719     </p>
5720     <p>
5721     </p>
5722     <blockquote class="text">
5723     <p>C: "GET FX_SENDS 0"
5724     </p>
5725     <p>S: "2"
5726     </p>
5727     </blockquote><p>
5728    
5729     </p>
5730     <a name="LIST FX_SENDS"></a><br /><hr />
5731     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5732 schoenebeck 2498 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5733 schoenebeck 1002 Listing all effect sends on a sampler channel</h3>
5734    
5735     <p>The front-end can ask for a list of effect sends on a specific sampler channel
5736     by sending the following command:
5737     </p>
5738     <p>
5739     </p>
5740     <blockquote class="text">
5741     <p>LIST FX_SENDS &lt;sampler-channel&gt;
5742     </p>
5743     </blockquote><p>
5744    
5745     </p>
5746     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5747     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>
5748     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.
5749     </p>
5750     <p>Possible Answers:
5751     </p>
5752     <p>
5753     </p>
5754     <blockquote class="text">
5755     <p>The sampler will answer by returning a comma separated list
5756     with all effect sends' numerical IDs on the given sampler
5757     channel.
5758     </p>
5759     </blockquote><p>
5760    
5761     </p>
5762     <p>Examples:
5763     </p>
5764     <p>
5765     </p>
5766     <blockquote class="text">
5767     <p>C: "LIST FX_SENDS 0"
5768     </p>
5769     <p>S: "0,1"
5770     </p>
5771     </blockquote><p>
5772    
5773     </p>
5774     <p>
5775     </p>
5776     <blockquote class="text">
5777     <p>C: "LIST FX_SENDS 1"
5778     </p>
5779     <p>S: ""
5780     </p>
5781     </blockquote><p>
5782    
5783     </p>
5784     <a name="GET FX_SEND INFO"></a><br /><hr />
5785     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5786 schoenebeck 2498 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5787 schoenebeck 1002 Getting effect send information</h3>
5788    
5789     <p>The front-end can ask for the current settings of an effect send entity
5790     by sending the following command:
5791     </p>
5792     <p>
5793     </p>
5794     <blockquote class="text">
5795     <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5796     </p>
5797     </blockquote><p>
5798    
5799     </p>
5800     <p>Where &lt;sampler-channel&gt; is the sampler channel number
5801     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>
5802     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
5803     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5804     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>
5805     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.
5806    
5807     </p>
5808     <p>Possible Answers:
5809     </p>
5810     <p>
5811     </p>
5812     <blockquote class="text">
5813     <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5814     Each answer line begins with the settings category name
5815     followed by a colon and then a space character &lt;SP&gt; and finally
5816     the info character string to that setting category. At the
5817     moment the following categories are defined:
5818     </p>
5819     <p>
5820     </p>
5821     <blockquote class="text">
5822     <p>NAME -
5823     </p>
5824     <blockquote class="text">
5825     <p>name of the effect send entity
5826 schoenebeck 1400 (note that this character string may contain
5827     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5828 schoenebeck 1002 </p>
5829     </blockquote>
5830    
5831    
5832 schoenebeck 1028 <p>MIDI_CONTROLLER -
5833     </p>
5834     <blockquote class="text">
5835     <p>a value between 0 and 127 reflecting the MIDI controller
5836     which is able to modify the effect send's send level
5837     </p>
5838     </blockquote>
5839    
5840    
5841     <p>LEVEL -
5842     </p>
5843     <blockquote class="text">
5844     <p>optionally dotted number reflecting the effect send's
5845     current send level (where a value &lt; 1.0 means attenuation
5846     and a value > 1.0 means amplification)
5847     </p>
5848     </blockquote>
5849    
5850    
5851 schoenebeck 1002 <p>AUDIO_OUTPUT_ROUTING -
5852     </p>
5853     <blockquote class="text">
5854     <p>comma separated list which reflects to which audio
5855     channel of the selected audio output device each
5856     effect send output channel is routed to, e.g. "0,3" would
5857     mean the effect send's output channel 0 is routed to channel
5858     0 of the audio output device and the effect send's output
5859     channel 1 is routed to the channel 3 of the audio
5860     output device (see
5861     <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>
5862 schoenebeck 2139 for details), if an internal send
5863     effect is assigned to the effect
5864     send, then this setting defines the
5865     audio channel routing to that
5866     effect instance respectively
5867 schoenebeck 1002 </p>
5868     </blockquote>
5869    
5870    
5871 schoenebeck 2141 <p>EFFECT -
5872 schoenebeck 2139 </p>
5873     <blockquote class="text">
5874     <p>destination send effect chain ID
5875     and destination effect chain
5876     position, separated by comma in the
5877     form "&lt;effect-chain&gt;,&lt;chain-pos&gt;"
5878     or "NONE" if there is no send effect
5879     assigned to the effect send
5880     </p>
5881 schoenebeck 1002 </blockquote>
5882 schoenebeck 2139
5883    
5884     </blockquote>
5885 schoenebeck 1002
5886    
5887     </blockquote><p>
5888    
5889     </p>
5890     <p>The mentioned fields above don't have to be in particular order.
5891     </p>
5892     <p>Example:
5893     </p>
5894     <p>
5895     </p>
5896     <blockquote class="text">
5897     <p>C: "GET FX_SEND INFO 0 0"
5898     </p>
5899     <p>S: "NAME: Reverb Send"
5900     </p>
5901 schoenebeck 1028 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5902     </p>
5903     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5904     </p>
5905 schoenebeck 1002 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5906     </p>
5907 schoenebeck 2141 <p>&nbsp;&nbsp;&nbsp;"EFFECT: NONE"
5908     </p>
5909 schoenebeck 1002 <p>&nbsp;&nbsp;&nbsp;"."
5910     </p>
5911     </blockquote><p>
5912    
5913     </p>
5914 schoenebeck 2141 <p>
5915     </p>
5916     <blockquote class="text">
5917     <p>C: "GET FX_SEND INFO 0 1"
5918     </p>
5919     <p>S: "NAME: Delay Send (Internal)"
5920     </p>
5921     <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 93"
5922     </p>
5923     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.51"
5924     </p>
5925     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 1,2"
5926     </p>
5927     <p>&nbsp;&nbsp;&nbsp;"EFFECT: 2,0"
5928     </p>
5929     <p>&nbsp;&nbsp;&nbsp;"."
5930     </p>
5931     </blockquote><p>
5932    
5933     </p>
5934 iliev 1137 <a name="SET FX_SEND NAME"></a><br /><hr />
5935     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5936 schoenebeck 2498 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5937 iliev 1137 Changing effect send's name</h3>
5938    
5939     <p>The front-end can alter the current name of an effect
5940     send entity by sending the following command:
5941     </p>
5942     <p>
5943     </p>
5944     <blockquote class="text">
5945     <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5946     </p>
5947     </blockquote><p>
5948    
5949     </p>
5950     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5951     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>
5952     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,
5953     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5954     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>
5955     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
5956     &lt;name&gt; is the new name of the effect send entity, which
5957 schoenebeck 1390 does not have to be unique (name MUST be encapsulated into apostrophes
5958     and supports escape sequences as described in chapter
5959     "<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>").
5960    
5961 iliev 1137 </p>
5962     <p>Possible Answers:
5963     </p>
5964     <p>
5965     </p>
5966     <blockquote class="text">
5967     <p>"OK" -
5968     </p>
5969     <blockquote class="text">
5970     <p>on success
5971     </p>
5972     </blockquote>
5973    
5974    
5975     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5976     </p>
5977     <blockquote class="text">
5978     <p>in case it failed, providing an appropriate error code and error message
5979     </p>
5980     </blockquote>
5981    
5982    
5983     </blockquote><p>
5984    
5985     </p>
5986     <p>Example:
5987     </p>
5988     <p>
5989     </p>
5990     <blockquote class="text">
5991     <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5992     </p>
5993     <p>S: "OK"
5994     </p>
5995     </blockquote><p>
5996    
5997     </p>
5998 schoenebeck 1002 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5999     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6000 schoenebeck 2498 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
6001 schoenebeck 1002 Altering effect send's audio routing</h3>
6002    
6003     <p>The front-end can alter the destination of an effect send's audio channel on a specific
6004     sampler channel by sending the following command:
6005     </p>
6006     <p>
6007     </p>
6008     <blockquote class="text">
6009     <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
6010     </p>
6011     </blockquote><p>
6012    
6013     </p>
6014     <p>Where &lt;sampler-chan&gt; is the sampler channel number
6015     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>
6016     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,
6017     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6018     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>
6019     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,
6020     &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
6021     which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
6022     the audio channel of the selected audio output device where &lt;audio-src&gt;
6023 schoenebeck 2139 should be routed to. If an internal send effect is assigned
6024     to the effect send, then this setting defines the audio
6025     channel routing to that effect instance respectively.
6026 schoenebeck 1002 </p>
6027     <p>Note that effect sends can only route audio to the same audio output
6028     device as assigned to the effect send's sampler channel. Also note that an
6029     effect send entity does always have exactly as much audio channels as its
6030     sampler channel. So if the sampler channel is stereo, the effect send does
6031     have two audio channels as well. Also keep in mind that the amount of audio
6032     channels on a sampler channel might be dependant not only to the deployed
6033     sampler engine on the sampler channel, but also dependant to the instrument
6034     currently loaded. However you can (effectively) turn an i.e. stereo effect
6035     send into a mono one by simply altering its audio routing appropriately.
6036     </p>
6037     <p>Possible Answers:
6038     </p>
6039     <p>
6040     </p>
6041     <blockquote class="text">
6042     <p>"OK" -
6043     </p>
6044     <blockquote class="text">
6045     <p>on success
6046     </p>
6047     </blockquote>
6048    
6049    
6050     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6051     </p>
6052     <blockquote class="text">
6053     <p>if audio output channel was set, but there are noteworthy
6054     issue(s) related, providing an appropriate warning code and
6055     warning message
6056     </p>
6057     </blockquote>
6058    
6059    
6060     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6061     </p>
6062     <blockquote class="text">
6063     <p>in case it failed, providing an appropriate error code and error message
6064     </p>
6065     </blockquote>
6066    
6067    
6068     </blockquote><p>
6069    
6070     </p>
6071     <p>Example:
6072     </p>
6073     <p>
6074     </p>
6075     <blockquote class="text">
6076     <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
6077     </p>
6078     <p>S: "OK"
6079     </p>
6080     </blockquote><p>
6081    
6082     </p>
6083 schoenebeck 2141 <a name="SET FX_SEND EFFECT"></a><br /><hr />
6084 schoenebeck 2139 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6085 schoenebeck 2498 <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
6086 schoenebeck 2139 Assigning destination effect to an effect send</h3>
6087    
6088     <p>The front-end can (re-)assign a destination effect to an
6089     effect send by sending the following command:
6090     </p>
6091     <p>
6092     </p>
6093     <blockquote class="text">
6094 schoenebeck 2141 <p>SET FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
6095 schoenebeck 2139 </p>
6096     </blockquote><p>
6097    
6098     </p>
6099     <p>Where &lt;sampler-chan&gt; is the sampler channel number
6100     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>
6101     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,
6102     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6103     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>
6104     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,
6105     &lt;effect-chain&gt; by the numerical ID of the destination
6106     effect chain as returned by the
6107     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
6108     or
6109     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
6110     command and &lt;chain-pos&gt; reflects the exact effect
6111     chain position in the effect chain which hosts the actual
6112     destination effect.
6113     </p>
6114     <p>Possible Answers:
6115     </p>
6116     <p>
6117     </p>
6118     <blockquote class="text">
6119     <p>"OK" -
6120     </p>
6121     <blockquote class="text">
6122     <p>on success
6123     </p>
6124     </blockquote>
6125    
6126    
6127     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6128     </p>
6129     <blockquote class="text">
6130     <p>in case it failed, providing an appropriate error code and error message
6131     </p>
6132     </blockquote>
6133    
6134    
6135     </blockquote><p>
6136    
6137     </p>
6138     <p>Example:
6139     </p>
6140     <p>
6141     </p>
6142     <blockquote class="text">
6143 schoenebeck 2141 <p>C: "SET FX_SEND EFFECT 0 0 2 5"
6144 schoenebeck 2139 </p>
6145     <p>S: "OK"
6146     </p>
6147     </blockquote><p>
6148    
6149     </p>
6150 schoenebeck 2141 <a name="REMOVE FX_SEND EFFECT"></a><br /><hr />
6151 schoenebeck 2139 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6152 schoenebeck 2498 <a name="rfc.section.6.4.36"></a><h3>6.4.36.&nbsp;
6153 schoenebeck 2139 Removing destination effect from an effect send</h3>
6154    
6155     <p>The front-end can (re-)assign a destination effect to an
6156     effect send by sending the following command:
6157     </p>
6158     <p>
6159     </p>
6160     <blockquote class="text">
6161 schoenebeck 2141 <p>REMOVE FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt;
6162 schoenebeck 2139 </p>
6163     </blockquote><p>
6164    
6165     </p>
6166     <p>Where &lt;sampler-chan&gt; is the sampler channel number
6167     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>
6168     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,
6169     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6170     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>
6171     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.
6172     </p>
6173     <p>After the destination effect has been removed from the
6174     effect send, the audio signal of the effect send will be
6175     routed directly to the audio output device, according to the
6176     audio channel routing setting of the effect send.
6177    
6178     </p>
6179     <p>Possible Answers:
6180     </p>
6181     <p>
6182     </p>
6183     <blockquote class="text">
6184     <p>"OK" -
6185     </p>
6186     <blockquote class="text">
6187     <p>on success
6188     </p>
6189     </blockquote>
6190    
6191    
6192     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6193     </p>
6194     <blockquote class="text">
6195     <p>in case it failed, providing an appropriate error code and error message
6196     </p>
6197     </blockquote>
6198    
6199    
6200     </blockquote><p>
6201    
6202     </p>
6203     <p>Example:
6204     </p>
6205     <p>
6206     </p>
6207     <blockquote class="text">
6208 schoenebeck 2141 <p>C: "REMOVE FX_SEND EFFECT 0 0"
6209 schoenebeck 2139 </p>
6210     <p>S: "OK"
6211     </p>
6212     </blockquote><p>
6213    
6214     </p>
6215 schoenebeck 1028 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
6216     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6217 schoenebeck 2498 <a name="rfc.section.6.4.37"></a><h3>6.4.37.&nbsp;
6218 schoenebeck 1028 Altering effect send's MIDI controller</h3>
6219    
6220     <p>The front-end can alter the MIDI controller of an effect
6221     send entity by sending the following command:
6222     </p>
6223     <p>
6224     </p>
6225     <blockquote class="text">
6226     <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
6227     </p>
6228     </blockquote><p>
6229    
6230     </p>
6231     <p>Where &lt;sampler-chan&gt; is the sampler channel number
6232     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>
6233     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,
6234     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6235     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>
6236     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
6237     &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
6238     able to modify the effect send's send level.
6239     </p>
6240     <p>Possible Answers:
6241     </p>
6242     <p>
6243     </p>
6244     <blockquote class="text">
6245     <p>"OK" -
6246     </p>
6247     <blockquote class="text">
6248     <p>on success
6249     </p>
6250     </blockquote>
6251    
6252    
6253     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6254     </p>
6255     <blockquote class="text">
6256     <p>if MIDI controller was set, but there are noteworthy
6257     issue(s) related, providing an appropriate warning code and
6258     warning message
6259     </p>
6260     </blockquote>
6261    
6262    
6263     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6264     </p>
6265     <blockquote class="text">
6266     <p>in case it failed, providing an appropriate error code and error message
6267     </p>
6268     </blockquote>
6269    
6270    
6271     </blockquote><p>
6272    
6273     </p>
6274     <p>Example:
6275     </p>
6276     <p>
6277     </p>
6278     <blockquote class="text">
6279     <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
6280     </p>
6281     <p>S: "OK"
6282     </p>
6283     </blockquote><p>
6284    
6285     </p>
6286     <a name="SET FX_SEND LEVEL"></a><br /><hr />
6287     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6288 schoenebeck 2498 <a name="rfc.section.6.4.38"></a><h3>6.4.38.&nbsp;
6289 schoenebeck 1028 Altering effect send's send level</h3>
6290    
6291     <p>The front-end can alter the current send level of an effect
6292     send entity by sending the following command:
6293     </p>
6294     <p>
6295     </p>
6296     <blockquote class="text">
6297     <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
6298     </p>
6299     </blockquote><p>
6300    
6301     </p>
6302     <p>Where &lt;sampler-chan&gt; is the sampler channel number
6303     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>
6304     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,
6305     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
6306     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>
6307     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
6308     &lt;volume&gt; is an optionally dotted positive number (a value
6309     smaller than 1.0 means attenuation, whereas a value greater than
6310     1.0 means amplification) reflecting the new send level.
6311     </p>
6312     <p>Possible Answers:
6313     </p>
6314     <p>
6315     </p>
6316     <blockquote class="text">
6317     <p>"OK" -
6318     </p>
6319     <blockquote class="text">
6320     <p>on success
6321     </p>
6322     </blockquote>
6323    
6324    
6325     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6326     </p>
6327     <blockquote class="text">
6328     <p>if new send level was set, but there are noteworthy
6329     issue(s) related, providing an appropriate warning code and
6330     warning message
6331     </p>
6332     </blockquote>
6333    
6334    
6335     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6336     </p>
6337     <blockquote class="text">
6338     <p>in case it failed, providing an appropriate error code and error message
6339     </p>
6340     </blockquote>
6341    
6342    
6343     </blockquote><p>
6344    
6345     </p>
6346     <p>Example:
6347     </p>
6348     <p>
6349     </p>
6350     <blockquote class="text">
6351     <p>C: "SET FX_SEND LEVEL 0 0 0.15"
6352     </p>
6353     <p>S: "OK"
6354     </p>
6355     </blockquote><p>
6356    
6357     </p>
6358 iliev 1773 <a name="SEND CHANNEL MIDI_DATA"></a><br /><hr />
6359     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6360 schoenebeck 2498 <a name="rfc.section.6.4.39"></a><h3>6.4.39.&nbsp;
6361 iliev 1773 Sending MIDI messages to sampler channel</h3>
6362    
6363 schoenebeck 2023 <p>The front-end can send MIDI events to a specific sampler channel
6364 iliev 1773 by sending the following command:
6365     </p>
6366     <p>
6367     </p>
6368     <blockquote class="text">
6369     <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;
6370     </p>
6371     </blockquote><p>
6372    
6373     </p>
6374     <p>Where &lt;sampler-chan&gt; is the sampler channel number
6375     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>
6376     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,
6377     &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
6378     specifies the MIDI message type. Currently, the following MIDI messages are supported:
6379     </p>
6380     <p>
6381     </p>
6382     <blockquote class="text">
6383     <p>"NOTE_ON" -
6384     </p>
6385     <blockquote class="text">
6386     <p>For turning on MIDI notes, where &lt;arg1&gt;
6387     specifies the key number and &lt;arg2&gt; the velocity
6388     as described in the MIDI specification.
6389     </p>
6390     </blockquote>
6391    
6392    
6393     <p>"NOTE_OFF" -
6394     </p>
6395     <blockquote class="text">
6396     <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
6397     specifies the key number and &lt;arg2&gt; the velocity
6398     as described in the MIDI specification.
6399     </p>
6400     </blockquote>
6401    
6402    
6403 schoenebeck 2023 <p>"CC" -
6404     </p>
6405     <blockquote class="text">
6406     <p>For changing a MIDI controller, where &lt;arg1&gt;
6407     specifies the controller number and &lt;arg2&gt; the
6408     new value of the controller as described in the Control
6409     Change section of the MIDI specification.
6410     </p>
6411     </blockquote>
6412    
6413    
6414 iliev 1773 </blockquote><p>
6415    
6416     </p>
6417     <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
6418     and no realtime guarantee whatsoever will be made!
6419     </p>
6420     <p>Possible Answers:
6421     </p>
6422     <p>
6423     </p>
6424     <blockquote class="text">
6425     <p>"OK" -
6426     </p>
6427     <blockquote class="text">
6428     <p>on success
6429     </p>
6430     </blockquote>
6431    
6432    
6433     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6434     </p>
6435     <blockquote class="text">
6436     <p>in case it failed, providing an appropriate error code and error message
6437     </p>
6438     </blockquote>
6439    
6440    
6441     </blockquote><p>
6442    
6443     </p>
6444     <p>Example:
6445     </p>
6446     <p>
6447     </p>
6448     <blockquote class="text">
6449     <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
6450     </p>
6451     <p>S: "OK"
6452     </p>
6453     </blockquote><p>
6454    
6455     </p>
6456 schoenebeck 940 <a name="RESET CHANNEL"></a><br /><hr />
6457 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>
6458 schoenebeck 2498 <a name="rfc.section.6.4.40"></a><h3>6.4.40.&nbsp;
6459 schoenebeck 974 Resetting a sampler channel</h3>
6460 schoenebeck 708
6461 senoner 542 <p>The front-end can reset a particular sampler channel by sending the following command:
6462     </p>
6463 schoenebeck 708 <p>
6464     </p>
6465 senoner 542 <blockquote class="text">
6466     <p>RESET CHANNEL &lt;sampler-channel&gt;
6467     </p>
6468 schoenebeck 708 </blockquote><p>
6469 schoenebeck 940
6470 schoenebeck 708 </p>
6471 senoner 542 <p>
6472     Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
6473     This will cause the engine on that sampler channel, its voices and
6474     eventually disk streams and all control and status variables to be
6475     reset.
6476     </p>
6477     <p>Possible Answers:
6478     </p>
6479 schoenebeck 708 <p>
6480     </p>
6481 senoner 542 <blockquote class="text">
6482     <p>"OK" -
6483     </p>
6484     <blockquote class="text">
6485     <p>on success
6486     </p>
6487 schoenebeck 940 </blockquote>
6488    
6489 senoner 542
6490     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6491     </p>
6492     <blockquote class="text">
6493     <p>if channel was reset, but there are noteworthy issue(s)
6494     related, providing an appropriate warning code and warning
6495     message
6496     </p>
6497 schoenebeck 940 </blockquote>
6498    
6499 senoner 542
6500     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6501     </p>
6502     <blockquote class="text">
6503     <p>in case it failed, providing an appropriate error code and
6504     error message
6505     </p>
6506 schoenebeck 940 </blockquote>
6507    
6508 senoner 542
6509 schoenebeck 708 </blockquote><p>
6510 schoenebeck 940
6511 schoenebeck 708 </p>
6512 senoner 542 <p>Examples:
6513     </p>
6514 schoenebeck 708 <p>
6515     </p>
6516 senoner 542 <blockquote class="text">
6517     <p>
6518     </p>
6519 schoenebeck 708 </blockquote><p>
6520 schoenebeck 940
6521 schoenebeck 708 </p>
6522 schoenebeck 940 <a name="anchor12"></a><br /><hr />
6523 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>
6524     <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
6525     Controlling connection</h3>
6526 senoner 542
6527     <p>The following commands are used to control the connection to LinuxSampler.
6528     </p>
6529 schoenebeck 940 <a name="SUBSCRIBE"></a><br /><hr />
6530 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>
6531     <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
6532     Register front-end for receiving event messages</h3>
6533 senoner 542
6534     <p>The front-end can register itself to the LinuxSampler application to
6535     be informed about noteworthy events by sending this command:
6536     </p>
6537 schoenebeck 708 <p>
6538     </p>
6539 senoner 542 <blockquote class="text">
6540     <p>SUBSCRIBE &lt;event-id&gt;
6541     </p>
6542 schoenebeck 708 </blockquote><p>
6543 schoenebeck 940
6544 schoenebeck 708 </p>
6545 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective event that
6546     client wants to subscribe to.
6547     </p>
6548     <p>Possible Answers:
6549     </p>
6550 schoenebeck 708 <p>
6551     </p>
6552 senoner 542 <blockquote class="text">
6553     <p>"OK" -
6554     </p>
6555     <blockquote class="text">
6556     <p>on success
6557     </p>
6558 schoenebeck 940 </blockquote>
6559    
6560 senoner 542
6561     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6562     </p>
6563     <blockquote class="text">
6564     <p>if registration succeeded, but there are noteworthy
6565     issue(s) related, providing an appropriate warning code and
6566     warning message
6567     </p>
6568 schoenebeck 940 </blockquote>
6569    
6570 senoner 542
6571     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6572     </p>
6573     <blockquote class="text">
6574     <p>in case it failed, providing an appropriate error code and
6575     error message
6576     </p>
6577 schoenebeck 940 </blockquote>
6578    
6579 senoner 542
6580 schoenebeck 708 </blockquote><p>
6581 schoenebeck 940
6582 schoenebeck 708 </p>
6583 senoner 542 <p>Examples:
6584     </p>
6585 schoenebeck 708 <p>
6586     </p>
6587 senoner 542 <blockquote class="text">
6588     <p>
6589     </p>
6590 schoenebeck 708 </blockquote><p>
6591 schoenebeck 940
6592 schoenebeck 708 </p>
6593 schoenebeck 940 <a name="UNSUBSCRIBE"></a><br /><hr />
6594 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>
6595     <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
6596     Unregister front-end for not receiving event messages</h3>
6597 senoner 542
6598     <p>The front-end can unregister itself if it doesn't want to receive event
6599     messages anymore by sending the following command:
6600     </p>
6601 schoenebeck 708 <p>
6602     </p>
6603 senoner 542 <blockquote class="text">
6604     <p>UNSUBSCRIBE &lt;event-id&gt;
6605     </p>
6606 schoenebeck 708 </blockquote><p>
6607 schoenebeck 940
6608 schoenebeck 708 </p>
6609 senoner 542 <p>Where &lt;event-id&gt; will be replaced by the respective event that
6610     client doesn't want to receive anymore.
6611     </p>
6612     <p>Possible Answers:
6613     </p>
6614 schoenebeck 708 <p>
6615     </p>
6616 senoner 542 <blockquote class="text">
6617     <p>"OK" -
6618     </p>
6619     <blockquote class="text">
6620     <p>on success
6621     </p>
6622 schoenebeck 940 </blockquote>
6623    
6624 senoner 542
6625     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6626     </p>
6627     <blockquote class="text">
6628     <p>if unregistration succeeded, but there are noteworthy
6629     issue(s) related, providing an appropriate warning code and
6630     warning message
6631     </p>
6632 schoenebeck 940 </blockquote>
6633    
6634 senoner 542
6635     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6636     </p>
6637     <blockquote class="text">
6638     <p>in case it failed, providing an appropriate error code and
6639     error message
6640     </p>
6641 schoenebeck 940 </blockquote>
6642    
6643 senoner 542
6644 schoenebeck 708 </blockquote><p>
6645 schoenebeck 940
6646 schoenebeck 708 </p>
6647 senoner 542 <p>Examples:
6648     </p>
6649 schoenebeck 708 <p>
6650     </p>
6651 senoner 542 <blockquote class="text">
6652     <p>
6653     </p>
6654 schoenebeck 708 </blockquote><p>
6655 schoenebeck 940
6656 schoenebeck 708 </p>
6657 schoenebeck 940 <a name="SET ECHO"></a><br /><hr />
6658 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>
6659     <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6660     Enable or disable echo of commands</h3>
6661 senoner 542
6662     <p>To enable or disable back sending of commands to the client the following command can be used:
6663     </p>
6664 schoenebeck 708 <p>
6665     </p>
6666 senoner 542 <blockquote class="text">
6667     <p>SET ECHO &lt;value&gt;
6668     </p>
6669 schoenebeck 708 </blockquote><p>
6670 schoenebeck 940
6671 schoenebeck 708 </p>
6672 senoner 542 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6673     or "0" to disable echo mode. When echo mode is enabled, all
6674     commands send to LinuxSampler will be immediately send back and
6675     after this echo the actual response to the command will be
6676     returned. Echo mode will only be altered for the client connection
6677     that issued the "SET ECHO" command, not globally for all client
6678     connections.
6679     </p>
6680     <p>Possible Answers:
6681     </p>
6682 schoenebeck 708 <p>
6683     </p>
6684 senoner 542 <blockquote class="text">
6685     <p>"OK" -
6686     </p>
6687     <blockquote class="text">
6688     <p>usually
6689     </p>
6690 schoenebeck 940 </blockquote>
6691    
6692 senoner 542
6693     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6694     </p>
6695     <blockquote class="text">
6696     <p>on syntax error, e.g. non boolean value
6697     </p>
6698 schoenebeck 940 </blockquote>
6699    
6700 senoner 542
6701 schoenebeck 708 </blockquote><p>
6702 schoenebeck 940
6703 schoenebeck 708 </p>
6704 senoner 542 <p>Examples:
6705     </p>
6706 schoenebeck 708 <p>
6707     </p>
6708 senoner 542 <blockquote class="text">
6709     <p>
6710     </p>
6711 schoenebeck 708 </blockquote><p>
6712 schoenebeck 940
6713 schoenebeck 708 </p>
6714 schoenebeck 940 <a name="QUIT"></a><br /><hr />
6715 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>
6716     <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6717     Close client connection</h3>
6718 senoner 542
6719     <p>The client can close its network connection to LinuxSampler by sending the following command:
6720     </p>
6721 schoenebeck 708 <p>
6722     </p>
6723 senoner 542 <blockquote class="text">
6724     <p>QUIT
6725     </p>
6726 schoenebeck 708 </blockquote><p>
6727 schoenebeck 940
6728 schoenebeck 708 </p>
6729 senoner 542 <p>This is probably more interesting for manual telnet connections to
6730     LinuxSampler than really useful for a front-end implementation.
6731     </p>
6732 schoenebeck 940 <a name="anchor13"></a><br /><hr />
6733 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>
6734     <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6735     Global commands</h3>
6736 senoner 542
6737     <p>The following commands have global impact on the sampler.
6738     </p>
6739 schoenebeck 940 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6740 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>
6741     <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6742     Current number of active voices</h3>
6743 senoner 542
6744 schoenebeck 940 <p>The front-end can ask for the current number of active voices on
6745     the sampler by sending the following command:
6746     </p>
6747     <p>
6748     </p>
6749     <blockquote class="text">
6750     <p>GET TOTAL_VOICE_COUNT
6751     </p>
6752     </blockquote><p>
6753    
6754     </p>
6755     <p>Possible Answers:
6756     </p>
6757     <p>
6758     </p>
6759     <blockquote class="text">
6760     <p>LinuxSampler will answer by returning the number of all active
6761     voices on the sampler.
6762     </p>
6763     </blockquote><p>
6764    
6765     </p>
6766     <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6767 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>
6768     <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6769     Maximum amount of active voices</h3>
6770 schoenebeck 940
6771     <p>The front-end can ask for the maximum number of active voices
6772     by sending the following command:
6773     </p>
6774     <p>
6775     </p>
6776     <blockquote class="text">
6777     <p>GET TOTAL_VOICE_COUNT_MAX
6778     </p>
6779     </blockquote><p>
6780    
6781     </p>
6782     <p>Possible Answers:
6783     </p>
6784     <p>
6785     </p>
6786     <blockquote class="text">
6787     <p>LinuxSampler will answer by returning the maximum number
6788     of active voices.
6789     </p>
6790     </blockquote><p>
6791    
6792     </p>
6793 schoenebeck 1572 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6794     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6795     <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6796     Current number of active disk streams</h3>
6797    
6798     <p>The front-end can ask for the current number of active disk streams on
6799     the sampler by sending the following command:
6800     </p>
6801     <p>
6802     </p>
6803     <blockquote class="text">
6804     <p>GET TOTAL_STREAM_COUNT
6805     </p>
6806     </blockquote><p>
6807    
6808     </p>
6809     <p>Possible Answers:
6810     </p>
6811     <p>
6812     </p>
6813     <blockquote class="text">
6814     <p>LinuxSampler will answer by returning the number of all active
6815     disk streams on the sampler.
6816     </p>
6817     </blockquote><p>
6818    
6819     </p>
6820 schoenebeck 940 <a name="RESET"></a><br /><hr />
6821 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>
6822 schoenebeck 1572 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6823 schoenebeck 974 Reset sampler</h3>
6824 schoenebeck 940
6825 senoner 542 <p>The front-end can reset the whole sampler by sending the following command:
6826     </p>
6827 schoenebeck 708 <p>
6828     </p>
6829 senoner 542 <blockquote class="text">
6830     <p>RESET
6831     </p>
6832 schoenebeck 708 </blockquote><p>
6833 schoenebeck 940
6834 schoenebeck 708 </p>
6835 senoner 542 <p>Possible Answers:
6836     </p>
6837 schoenebeck 708 <p>
6838     </p>
6839 senoner 542 <blockquote class="text">
6840     <p>"OK" -
6841     </p>
6842     <blockquote class="text">
6843     <p>always
6844     </p>
6845 schoenebeck 940 </blockquote>
6846    
6847 senoner 542
6848 schoenebeck 708 </blockquote><p>
6849 schoenebeck 940
6850 schoenebeck 708 </p>
6851 senoner 542 <p>Examples:
6852     </p>
6853 schoenebeck 708 <p>
6854     </p>
6855 senoner 542 <blockquote class="text">
6856     <p>
6857     </p>
6858 schoenebeck 708 </blockquote><p>
6859 schoenebeck 940
6860 schoenebeck 708 </p>
6861 schoenebeck 940 <a name="GET SERVER INFO"></a><br /><hr />
6862 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>
6863 schoenebeck 1572 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6864 schoenebeck 974 General sampler informations</h3>
6865 schoenebeck 575
6866     <p>The client can ask for general informations about the LinuxSampler
6867     instance by sending the following command:
6868     </p>
6869 schoenebeck 708 <p>
6870     </p>
6871 schoenebeck 575 <blockquote class="text">
6872     <p>GET SERVER INFO
6873     </p>
6874 schoenebeck 708 </blockquote><p>
6875 schoenebeck 940
6876 schoenebeck 708 </p>
6877 schoenebeck 575 <p>Possible Answers:
6878     </p>
6879 schoenebeck 708 <p>
6880     </p>
6881 schoenebeck 575 <blockquote class="text">
6882     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6883     Each answer line begins with the information category name
6884     followed by a colon and then a space character &lt;SP&gt; and finally
6885     the info character string to that information category. At the
6886     moment the following categories are defined:
6887 schoenebeck 940
6888 schoenebeck 575 </p>
6889 schoenebeck 708 <p>
6890     </p>
6891 schoenebeck 575 <blockquote class="text">
6892     <p>DESCRIPTION -
6893     </p>
6894     <blockquote class="text">
6895     <p>arbitrary textual description about the sampler
6896 schoenebeck 1390 (note that the character string may contain
6897     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6898 schoenebeck 575 </p>
6899 schoenebeck 940 </blockquote>
6900    
6901 schoenebeck 575
6902     <p>VERSION -
6903     </p>
6904     <blockquote class="text">
6905     <p>version of the sampler
6906     </p>
6907 schoenebeck 940 </blockquote>
6908    
6909 schoenebeck 575
6910     <p>PROTOCOL_VERSION -
6911     </p>
6912     <blockquote class="text">
6913     <p>version of the LSCP specification the sampler
6914 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)
6915 schoenebeck 575 </p>
6916 schoenebeck 940 </blockquote>
6917    
6918 schoenebeck 575
6919 iliev 1162 <p>INSTRUMENTS_DB_SUPPORT -
6920     </p>
6921     <blockquote class="text">
6922     <p>either yes or no, specifies whether the
6923     sampler is build with instruments database support.
6924     </p>
6925 schoenebeck 940 </blockquote>
6926 iliev 1162
6927    
6928     </blockquote>
6929 schoenebeck 940
6930 schoenebeck 575
6931 schoenebeck 708 </blockquote><p>
6932 schoenebeck 940
6933 schoenebeck 708 </p>
6934 schoenebeck 575 <p>The mentioned fields above don't have to be in particular order.
6935     Other fields might be added in future.
6936     </p>
6937 schoenebeck 2498 <p>Example:
6938     </p>
6939     <p>
6940     </p>
6941     <blockquote class="text">
6942     <p>C: "GET SERVER INFO"
6943     </p>
6944     <p>S: "DESCRIPTION: LinuxSampler - modular, streaming capable sampler"
6945     </p>
6946     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0.0.svn23"
6947     </p>
6948     <p>&nbsp;&nbsp;&nbsp;"PROTOCOL_VERSION: 1.5"
6949     </p>
6950     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENTS_DB_SUPPORT: no"
6951     </p>
6952     <p>&nbsp;&nbsp;&nbsp;"."
6953     </p>
6954     </blockquote><p>
6955    
6956     </p>
6957 schoenebeck 1006 <a name="GET VOLUME"></a><br /><hr />
6958     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6959 schoenebeck 1572 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6960 schoenebeck 1006 Getting global volume attenuation</h3>
6961    
6962     <p>The client can ask for the current global sampler-wide volume
6963     attenuation by sending the following command:
6964     </p>
6965     <p>
6966     </p>
6967     <blockquote class="text">
6968     <p>GET VOLUME
6969     </p>
6970     </blockquote><p>
6971    
6972     </p>
6973     <p>Possible Answers:
6974     </p>
6975     <p>
6976     </p>
6977     <blockquote class="text">
6978     <p>The sampler will always answer by returning the optional
6979     dotted floating point coefficient, reflecting the current
6980     global volume attenuation.
6981    
6982     </p>
6983     </blockquote><p>
6984    
6985     </p>
6986     <p>Note: it is up to the respective sampler engine whether to obey
6987     that global volume parameter or not, but in general all engines SHOULD
6988     use this parameter.
6989     </p>
6990     <a name="SET VOLUME"></a><br /><hr />
6991     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6992 schoenebeck 1572 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6993 schoenebeck 1006 Setting global volume attenuation</h3>
6994    
6995     <p>The client can alter the current global sampler-wide volume
6996     attenuation by sending the following command:
6997     </p>
6998     <p>
6999     </p>
7000     <blockquote class="text">
7001     <p>SET VOLUME &lt;volume&gt;
7002     </p>
7003     </blockquote><p>
7004    
7005     </p>
7006     <p>Where &lt;volume&gt; should be replaced by the optional dotted
7007     floating point value, reflecting the new global volume parameter.
7008     This value might usually be in the range between 0.0 and 1.0, that
7009     is for attenuating the overall volume.
7010     </p>
7011     <p>Possible Answers:
7012     </p>
7013     <p>
7014     </p>
7015     <blockquote class="text">
7016     <p>"OK" -
7017     </p>
7018     <blockquote class="text">
7019     <p>on success
7020     </p>
7021     </blockquote>
7022    
7023    
7024     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
7025     </p>
7026     <blockquote class="text">
7027     <p>if the global volume was set, but there are noteworthy
7028     issue(s) related, providing an appropriate warning code and
7029     warning message
7030     </p>
7031     </blockquote>
7032    
7033    
7034     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7035     </p>
7036     <blockquote class="text">
7037     <p>in case it failed, providing an appropriate error code and error message
7038     </p>
7039     </blockquote>
7040    
7041    
7042     </blockquote><p>
7043    
7044     </p>
7045 schoenebeck 1801 <a name="GET VOICES"></a><br /><hr />
7046     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7047     <a name="rfc.section.6.6.8"></a><h3>6.6.8.&nbsp;
7048     Getting global voice limit</h3>
7049    
7050     <p>The client can ask for the current global sampler-wide limit
7051     for maximum voices by sending the following command:
7052     </p>
7053     <p>
7054     </p>
7055     <blockquote class="text">
7056     <p>GET VOICES
7057     </p>
7058     </blockquote><p>
7059    
7060     </p>
7061     <p>Possible Answers:
7062     </p>
7063     <p>
7064     </p>
7065     <blockquote class="text">
7066     <p>LinuxSampler will answer by returning the number for
7067     the current limit of maximum voices.
7068     </p>
7069     </blockquote><p>
7070    
7071     </p>
7072     <p>The voice limit setting defines how many voices should maximum
7073     be processed by the sampler at the same time. If the user
7074     triggers new notes which would exceed that voice limit, the
7075     sampler engine will react by stealing old voices for those
7076     newly triggered notes. Note that the amount of voices triggered
7077     by a new note can be larger than one and is dependent to the
7078     respective instrument and probably further criterias.
7079     </p>
7080     <a name="SET VOICES"></a><br /><hr />
7081     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7082     <a name="rfc.section.6.6.9"></a><h3>6.6.9.&nbsp;
7083     Setting global voice limit</h3>
7084    
7085     <p>The client can alter the current global sampler-wide limit
7086     for maximum voices by sending the following command:
7087     </p>
7088     <p>
7089     </p>
7090     <blockquote class="text">
7091     <p>SET VOICES &lt;max-voices&gt;
7092     </p>
7093     </blockquote><p>
7094    
7095     </p>
7096     <p>Where &lt;max-voices&gt; should be replaced by the integer
7097     value, reflecting the new global amount limit of maximum voices.
7098     This value has to be larger than 0.
7099     </p>
7100     <p>Possible Answers:
7101     </p>
7102     <p>
7103     </p>
7104     <blockquote class="text">
7105     <p>"OK" -
7106     </p>
7107     <blockquote class="text">
7108     <p>on success
7109     </p>
7110     </blockquote>
7111    
7112    
7113     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
7114     </p>
7115     <blockquote class="text">
7116     <p>if the voice limit was set, but there are noteworthy
7117     issue(s) related, providing an appropriate warning code and
7118     warning message
7119     </p>
7120     </blockquote>
7121    
7122    
7123     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7124     </p>
7125     <blockquote class="text">
7126     <p>in case it failed, providing an appropriate error code and error message
7127     </p>
7128     </blockquote>
7129    
7130    
7131     </blockquote><p>
7132    
7133     </p>
7134     <p>Note: the given value will be passed to all sampler engine instances.
7135     The total amount of maximum voices on the running system might thus
7136     be as big as the given value multiplied by the current amount of engine
7137     instances.
7138     </p>
7139     <p>Caution: when adjusting the voice limit, you SHOULD also
7140     adjust the disk stream limit respectively and vice versa.
7141     </p>
7142     <a name="GET STREAMS"></a><br /><hr />
7143     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7144     <a name="rfc.section.6.6.10"></a><h3>6.6.10.&nbsp;
7145     Getting global disk stream limit</h3>
7146    
7147     <p>The client can ask for the current global sampler-wide limit
7148     for maximum disk streams by sending the following command:
7149     </p>
7150     <p>
7151     </p>
7152     <blockquote class="text">
7153     <p>GET STREAMS
7154     </p>
7155     </blockquote><p>
7156    
7157     </p>
7158     <p>Possible Answers:
7159     </p>
7160     <p>
7161     </p>
7162     <blockquote class="text">
7163     <p>LinuxSampler will answer by returning the number for
7164     the current limit of maximum disk streams.
7165     </p>
7166     </blockquote><p>
7167    
7168     </p>
7169     <p>The disk stream limit setting defines how many disk streams should
7170     maximum be processed by a sampler engine at the same time. The
7171     higher this value, the more memory (RAM) will be occupied, since
7172     every disk streams allocates a certain buffer size for being able
7173     to perform its streaming operations.
7174     </p>
7175     <a name="SET STREAMS"></a><br /><hr />
7176     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7177     <a name="rfc.section.6.6.11"></a><h3>6.6.11.&nbsp;
7178     Setting global disk stream limit</h3>
7179    
7180     <p>The client can alter the current global sampler-wide limit
7181     for maximum disk streams by sending the following command:
7182     </p>
7183     <p>
7184     </p>
7185     <blockquote class="text">
7186     <p>SET STREAMS &lt;max-streams&gt;
7187     </p>
7188     </blockquote><p>
7189    
7190     </p>
7191     <p>Where &lt;max-streams&gt; should be replaced by the integer
7192     value, reflecting the new global amount limit of maximum disk streams.
7193     This value has to be positive.
7194     </p>
7195     <p>Possible Answers:
7196     </p>
7197     <p>
7198     </p>
7199     <blockquote class="text">
7200     <p>"OK" -
7201     </p>
7202     <blockquote class="text">
7203     <p>on success
7204     </p>
7205     </blockquote>
7206    
7207    
7208     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
7209     </p>
7210     <blockquote class="text">
7211     <p>if the disk stream limit was set, but there are noteworthy
7212     issue(s) related, providing an appropriate warning code and
7213     warning message
7214     </p>
7215     </blockquote>
7216    
7217    
7218     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7219     </p>
7220     <blockquote class="text">
7221     <p>in case it failed, providing an appropriate error code and error message
7222     </p>
7223     </blockquote>
7224    
7225    
7226     </blockquote><p>
7227    
7228     </p>
7229     <p>Note: the given value will be passed to all sampler engine instances.
7230     The total amount of maximum disk streams on the running system might
7231     thus be as big as the given value multiplied by the current amount of
7232     engine instances.
7233     </p>
7234     <p>Caution: when adjusting the disk stream limit, you SHOULD also
7235     adjust the voice limit respectively and vice versa.
7236     </p>
7237 schoenebeck 974 <a name="MIDI Instrument Mapping"></a><br /><hr />
7238     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7239     <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
7240     MIDI Instrument Mapping</h3>
7241 schoenebeck 945
7242     <p>The MIDI protocol provides a way to switch between instruments
7243     by sending so called MIDI bank select and MIDI program change
7244     messages which are essentially just numbers. The following commands
7245     allow to actually map arbitrary MIDI bank select / program change
7246     numbers with real instruments.
7247     </p>
7248 schoenebeck 974 <p>The sampler allows to manage an arbitrary amount of MIDI
7249     instrument maps which define which instrument to load on
7250     which MIDI program change message.
7251 schoenebeck 945 </p>
7252 schoenebeck 974 <p>By default, that is when the sampler is launched, there is no
7253     map, thus the sampler will simply ignore all program change
7254     messages. The front-end has to explicitly create at least one
7255     map, add entries to the map and tell the respective sampler
7256     channel(s) which MIDI instrument map to use, so the sampler
7257     knows how to react on a given program change message on the
7258     respective sampler channel, that is by switching to the
7259     respectively defined engine type and loading the respective
7260     instrument. See command
7261     <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>
7262     for how to assign a MIDI instrument map to a sampler channel.
7263     </p>
7264 schoenebeck 945 <p>Also note per MIDI specification a bank select message does not
7265     cause to switch to another instrument. Instead when receiving a
7266     bank select message the bank value will be stored and a subsequent
7267     program change message (which may occur at any time) will finally
7268     cause the sampler to switch to the respective instrument as
7269     reflected by the current MIDI instrument map.
7270     </p>
7271 schoenebeck 1390 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
7272 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>
7273     <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
7274     Create a new MIDI instrument map</h3>
7275    
7276     <p>The front-end can add a new MIDI instrument map by sending
7277     the following command:
7278     </p>
7279     <p>
7280     </p>
7281     <blockquote class="text">
7282     <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
7283     </p>
7284     </blockquote><p>
7285    
7286     </p>
7287     <p>Where &lt;name&gt; is an optional argument allowing to
7288     assign a custom name to the new map. MIDI instrument Map
7289 schoenebeck 1390 names do not have to be unique, but MUST be encapsulated
7290     into apostrophes and support escape sequences as described
7291     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>".
7292    
7293 schoenebeck 974 </p>
7294     <p>Possible Answers:
7295     </p>
7296     <p>
7297     </p>
7298     <blockquote class="text">
7299     <p>"OK[&lt;map&gt;]" -
7300     </p>
7301     <blockquote class="text">
7302     <p>in case a new MIDI instrument map could
7303     be added, where &lt;map&gt; reflects the
7304     unique ID of the newly created MIDI
7305     instrument map
7306     </p>
7307     </blockquote>
7308    
7309    
7310     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7311     </p>
7312     <blockquote class="text">
7313     <p>when a new map could not be created, which
7314     might never occur in practice
7315     </p>
7316     </blockquote>
7317    
7318    
7319     </blockquote><p>
7320    
7321     </p>
7322     <p>Examples:
7323     </p>
7324     <p>
7325     </p>
7326     <blockquote class="text">
7327     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
7328     </p>
7329     <p>S: "OK[0]"
7330     </p>
7331     </blockquote><p>
7332    
7333     </p>
7334     <p>
7335     </p>
7336     <blockquote class="text">
7337     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
7338     </p>
7339     <p>S: "OK[1]"
7340     </p>
7341     </blockquote><p>
7342    
7343     </p>
7344     <p>
7345     </p>
7346     <blockquote class="text">
7347     <p>C: "ADD MIDI_INSTRUMENT_MAP"
7348     </p>
7349     <p>S: "OK[5]"
7350     </p>
7351     </blockquote><p>
7352    
7353     </p>
7354     <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
7355     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7356     <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
7357     Delete one particular or all MIDI instrument maps</h3>
7358    
7359     <p>The front-end can delete a particular MIDI instrument map
7360     by sending the following command:
7361     </p>
7362     <p>
7363     </p>
7364     <blockquote class="text">
7365     <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
7366     </p>
7367     </blockquote><p>
7368    
7369     </p>
7370     <p>Where &lt;map&gt; reflects the unique ID of the map to delete
7371     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>
7372     command.
7373     </p>
7374     <p>The front-end can delete all MIDI instrument maps by
7375     sending the following command:
7376     </p>
7377     <p>
7378     </p>
7379     <blockquote class="text">
7380     <p>REMOVE MIDI_INSTRUMENT_MAP ALL
7381     </p>
7382     </blockquote><p>
7383    
7384     </p>
7385     <p>Possible Answers:
7386     </p>
7387     <p>
7388     </p>
7389     <blockquote class="text">
7390     <p>"OK" -
7391     </p>
7392     <blockquote class="text">
7393     <p>in case the map(s) could be deleted
7394     </p>
7395     </blockquote>
7396    
7397    
7398     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7399     </p>
7400     <blockquote class="text">
7401     <p>when the given map does not exist
7402     </p>
7403     </blockquote>
7404    
7405    
7406     </blockquote><p>
7407    
7408     </p>
7409     <p>Examples:
7410     </p>
7411     <p>
7412     </p>
7413     <blockquote class="text">
7414     <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
7415     </p>
7416     <p>S: "OK"
7417     </p>
7418     </blockquote><p>
7419    
7420     </p>
7421     <p>
7422     </p>
7423     <blockquote class="text">
7424     <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
7425     </p>
7426     <p>S: "OK"
7427     </p>
7428     </blockquote><p>
7429    
7430     </p>
7431     <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7432     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7433     <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
7434     Get amount of existing MIDI instrument maps</h3>
7435    
7436     <p>The front-end can retrieve the current amount of MIDI
7437     instrument maps by sending the following command:
7438     </p>
7439     <p>
7440     </p>
7441     <blockquote class="text">
7442     <p>GET MIDI_INSTRUMENT_MAPS
7443     </p>
7444     </blockquote><p>
7445    
7446     </p>
7447     <p>Possible Answers:
7448     </p>
7449     <p>
7450     </p>
7451     <blockquote class="text">
7452     <p>The sampler will answer by returning the current
7453     number of MIDI instrument maps.
7454     </p>
7455     </blockquote><p>
7456    
7457     </p>
7458     <p>Example:
7459     </p>
7460     <p>
7461     </p>
7462     <blockquote class="text">
7463     <p>C: "GET MIDI_INSTRUMENT_MAPS"
7464     </p>
7465     <p>S: "2"
7466     </p>
7467     </blockquote><p>
7468    
7469     </p>
7470     <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7471     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7472     <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
7473     Getting all created MIDI instrument maps</h3>
7474    
7475     <p>The number of MIDI instrument maps can change on runtime. To get the
7476     current list of MIDI instrument maps, the front-end can send the
7477     following command:
7478     </p>
7479     <p>
7480     </p>
7481     <blockquote class="text">
7482     <p>LIST MIDI_INSTRUMENT_MAPS
7483     </p>
7484     </blockquote><p>
7485    
7486     </p>
7487     <p>Possible Answers:
7488     </p>
7489     <p>
7490     </p>
7491     <blockquote class="text">
7492     <p>The sampler will answer by returning a comma separated list
7493     with all MIDI instrument maps' numerical IDs.
7494     </p>
7495     </blockquote><p>
7496    
7497     </p>
7498     <p>Example:
7499     </p>
7500     <p>
7501     </p>
7502     <blockquote class="text">
7503     <p>C: "LIST MIDI_INSTRUMENT_MAPS"
7504     </p>
7505     <p>S: "0,1,5,12"
7506     </p>
7507     </blockquote><p>
7508    
7509     </p>
7510     <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
7511     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7512     <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
7513     Getting MIDI instrument map information</h3>
7514    
7515     <p>The front-end can ask for the current settings of a MIDI
7516     instrument map by sending the following command:
7517     </p>
7518     <p>
7519     </p>
7520     <blockquote class="text">
7521     <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
7522     </p>
7523     </blockquote><p>
7524    
7525     </p>
7526     <p>Where &lt;map&gt; is the numerical ID of the map the
7527     front-end is interested in as returned by the
7528     <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>
7529     command.
7530     </p>
7531     <p>Possible Answers:
7532     </p>
7533     <p>
7534     </p>
7535     <blockquote class="text">
7536     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7537     Each answer line begins with the settings category name
7538     followed by a colon and then a space character &lt;SP&gt; and finally
7539     the info character string to that setting category. At the
7540     moment the following categories are defined:
7541     </p>
7542     <p>
7543     </p>
7544     <blockquote class="text">
7545     <p>NAME -
7546     </p>
7547     <blockquote class="text">
7548     <p>custom name of the given map,
7549     which does not have to be unique
7550 schoenebeck 1400 (note that this character string may contain
7551     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7552 schoenebeck 974 </p>
7553     </blockquote>
7554    
7555    
7556 iliev 1137 <p>DEFAULT -
7557     </p>
7558     <blockquote class="text">
7559     <p>either true or false,
7560     defines whether this map is the default map
7561     </p>
7562 schoenebeck 974 </blockquote>
7563 iliev 1137
7564    
7565     </blockquote>
7566 schoenebeck 974
7567    
7568     </blockquote><p>
7569    
7570     </p>
7571     <p>The mentioned fields above don't have to be in particular order.
7572     </p>
7573     <p>Example:
7574     </p>
7575     <p>
7576     </p>
7577     <blockquote class="text">
7578     <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
7579     </p>
7580     <p>S: "NAME: Standard Map"
7581     </p>
7582 iliev 1137 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
7583     </p>
7584 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"."
7585     </p>
7586     </blockquote><p>
7587    
7588     </p>
7589     <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
7590     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7591     <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
7592     Renaming a MIDI instrument map</h3>
7593    
7594     <p>The front-end can alter the custom name of a MIDI
7595     instrument map by sending the following command:
7596     </p>
7597     <p>
7598     </p>
7599     <blockquote class="text">
7600     <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
7601     </p>
7602     </blockquote><p>
7603    
7604     </p>
7605     <p>Where &lt;map&gt; is the numerical ID of the map and
7606     &lt;name&gt; the new custom name of the map, which does not
7607 schoenebeck 1390 have to be unique (name MUST be encapsulated into apostrophes
7608     and supports escape sequences as described in chapter
7609     "<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>").
7610    
7611 schoenebeck 974 </p>
7612     <p>Possible Answers:
7613     </p>
7614     <p>
7615     </p>
7616     <blockquote class="text">
7617     <p>"OK" -
7618     </p>
7619     <blockquote class="text">
7620     <p>on success
7621     </p>
7622     </blockquote>
7623    
7624    
7625     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7626     </p>
7627     <blockquote class="text">
7628     <p>in case the given map does not exist
7629     </p>
7630     </blockquote>
7631    
7632    
7633     </blockquote><p>
7634    
7635     </p>
7636     <p>Example:
7637     </p>
7638     <p>
7639     </p>
7640     <blockquote class="text">
7641     <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
7642     </p>
7643     <p>S: "OK"
7644     </p>
7645     </blockquote><p>
7646    
7647     </p>
7648 schoenebeck 945 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
7649 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>
7650     <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
7651     Create or replace a MIDI instrument map entry</h3>
7652 schoenebeck 945
7653     <p>The front-end can create a new or replace an existing entry
7654 schoenebeck 974 in a sampler's MIDI instrument map by sending the following
7655 schoenebeck 945 command:
7656     </p>
7657     <p>
7658     </p>
7659     <blockquote class="text">
7660 schoenebeck 1048 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
7661 schoenebeck 974 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
7662 schoenebeck 945 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
7663     [&lt;instr_load_mode&gt;] [&lt;name&gt;]
7664     </p>
7665     </blockquote><p>
7666    
7667     </p>
7668 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
7669     &lt;midi_bank&gt; is an integer value between
7670     0..16383 reflecting the MIDI bank select index,
7671     &lt;midi_prog&gt; an
7672 schoenebeck 945 integer value between 0..127 reflecting the MIDI program change
7673     index, &lt;engine_name&gt; a sampler engine name as returned by
7674 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>
7675 schoenebeck 945 command (not encapsulated into apostrophes), &lt;filename&gt; the name
7676 schoenebeck 1251 of the instrument's file to be deployed (encapsulated into apostrophes,
7677     supporting escape sequences as described in chapter
7678     "<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>"),
7679 schoenebeck 974 &lt;instrument_index&gt; the index (integer value) of the instrument
7680 schoenebeck 945 within the given file, &lt;volume_value&gt; reflects the master
7681     volume of the instrument as optionally dotted number (where a
7682 schoenebeck 1028 value &lt; 1.0 means attenuation and a value > 1.0 means
7683 schoenebeck 945 amplification). This parameter easily allows to adjust the
7684     volume of all intruments within a custom instrument map
7685     without having to adjust their instrument files. The
7686     OPTIONAL &lt;instr_load_mode&gt; argument defines the life
7687     time of the instrument, that is when the instrument should
7688     be loaded, when freed and has exactly the following
7689     possibilities:
7690     </p>
7691     <p>
7692     </p>
7693     <blockquote class="text">
7694     <p>"ON_DEMAND" -
7695     </p>
7696     <blockquote class="text">
7697     <p>The instrument will be loaded when needed,
7698     that is when demanded by at least one sampler
7699     channel. It will immediately be freed from memory
7700     when not needed by any sampler channel anymore.
7701     </p>
7702     </blockquote>
7703    
7704    
7705     <p>"ON_DEMAND_HOLD" -
7706     </p>
7707     <blockquote class="text">
7708     <p>The instrument will be loaded when needed,
7709     that is when demanded by at least one sampler
7710     channel. It will be kept in memory even when
7711     not needed by any sampler channel anymore.
7712     Instruments with this mode are only freed
7713     when the sampler is reset or all mapping
7714     entries with this mode (and respective
7715     instrument) are explicitly changed to
7716     "ON_DEMAND" and no sampler channel is using
7717     the instrument anymore.
7718     </p>
7719     </blockquote>
7720    
7721    
7722     <p>"PERSISTENT" -
7723     </p>
7724     <blockquote class="text">
7725     <p>The instrument will immediately be loaded
7726 schoenebeck 1048 into memory when this mapping
7727 schoenebeck 945 command is sent and the instrument is kept all
7728     the time. Instruments with this mode are
7729     only freed when the sampler is reset or all
7730     mapping entries with this mode (and
7731     respective instrument) are explicitly
7732     changed to "ON_DEMAND" and no sampler
7733     channel is using the instrument anymore.
7734     </p>
7735     </blockquote>
7736    
7737    
7738     <p>not supplied -
7739     </p>
7740     <blockquote class="text">
7741     <p>In case there is no &lt;instr_load_mode&gt;
7742     argument given, it will be up to the
7743     InstrumentManager to decide which mode to use.
7744     Usually it will use "ON_DEMAND" if an entry
7745     for the given instrument does not exist in
7746     the InstrumentManager's list yet, otherwise
7747     if an entry already exists, it will simply
7748     stick with the mode currently reflected by
7749     the already existing entry, that is it will
7750     not change the mode.
7751     </p>
7752     </blockquote>
7753    
7754    
7755     </blockquote><p>
7756    
7757     </p>
7758     <p>
7759     The &lt;instr_load_mode&gt; argument thus allows to define an
7760     appropriate strategy (low memory consumption vs. fast
7761     instrument switching) for each instrument individually. Note, the
7762     following restrictions apply to this argument: "ON_DEMAND_HOLD" and
7763     "PERSISTENT" have to be supported by the respective sampler engine
7764     (which is technically the case when the engine provides an
7765     InstrumentManager for its format). If this is not the case the
7766     argument will automatically fall back to the default value
7767     "ON_DEMAND". Also the load mode of one instrument may
7768     automatically change the laod mode of other instrument(s), i.e.
7769     because the instruments are part of the same file and the
7770     engine does not allow a way to manage load modes for them
7771     individually. Due to this, in case the frontend shows the
7772     load modes of entries, the frontend should retrieve the actual
7773     mode by i.e. sending
7774 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>
7775 schoenebeck 1390 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
7776     (encapsulated into apostrophes, supporting escape sequences as described in chapter
7777     "<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
7778     mapping entry, useful for frontends for displaying an appropriate name for
7779 schoenebeck 945 mapped instruments (using
7780 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>).
7781 schoenebeck 945
7782     </p>
7783     <p>
7784 schoenebeck 1048 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
7785     completely established in the sampler. The OPTIONAL "NON_MODAL" argument
7786     however causes the respective "MAP MIDI_INSTRUMENT" command to return
7787     immediately, that is to let the sampler establish the mapping in the
7788     background. So this argument might be especially useful for mappings with
7789     a "PERSISTENT" type, because these have to load the respective instruments
7790     immediately and might thus block for a very long time. It is recommended
7791     however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
7792     because it has the following drawbacks: as "NON_MODAL" instructions return
7793     immediately, they may not necessarily return an error i.e. when the given
7794     instrument file turns out to be corrupt, beside that subsequent commands
7795     in a LSCP instruction sequence might fail, because mandatory mappings are
7796     not yet completed.
7797 schoenebeck 945
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>usually
7808     </p>
7809     </blockquote>
7810    
7811    
7812     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7813     </p>
7814     <blockquote class="text">
7815 schoenebeck 974 <p>when the given map or engine does not exist or a value
7816 schoenebeck 945 is out of range
7817     </p>
7818     </blockquote>
7819    
7820    
7821     </blockquote><p>
7822    
7823     </p>
7824     <p>Examples:
7825     </p>
7826     <p>
7827     </p>
7828     <blockquote class="text">
7829 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7830 schoenebeck 945 </p>
7831     <p>S: "OK"
7832     </p>
7833     </blockquote><p>
7834    
7835     </p>
7836     <p>
7837     </p>
7838     <blockquote class="text">
7839 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7840 schoenebeck 945 </p>
7841     <p>S: "OK"
7842     </p>
7843     </blockquote><p>
7844    
7845     </p>
7846     <p>
7847     </p>
7848     <blockquote class="text">
7849     <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7850     </p>
7851     <p>S: "OK"
7852     </p>
7853 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7854 schoenebeck 945 </p>
7855     <p>S: "OK"
7856     </p>
7857     </blockquote><p>
7858    
7859     </p>
7860     <p>
7861     </p>
7862     <blockquote class="text">
7863 schoenebeck 1048 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7864 schoenebeck 945 </p>
7865     <p>S: "OK"
7866     </p>
7867     </blockquote><p>
7868    
7869     </p>
7870     <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7871 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>
7872     <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7873 schoenebeck 2498 Getting amount of MIDI instrument map entries</h3>
7874 schoenebeck 945
7875 schoenebeck 974 <p>The front-end can query the amount of currently existing
7876     entries in a MIDI instrument map by sending the following
7877 schoenebeck 945 command:
7878     </p>
7879     <p>
7880     </p>
7881     <blockquote class="text">
7882 schoenebeck 974 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7883 schoenebeck 945 </p>
7884     </blockquote><p>
7885    
7886     </p>
7887 schoenebeck 974 <p>The front-end can query the amount of currently existing
7888     entries in all MIDI instrument maps by sending the following
7889     command:
7890     </p>
7891     <p>
7892     </p>
7893     <blockquote class="text">
7894     <p>GET MIDI_INSTRUMENTS ALL
7895     </p>
7896     </blockquote><p>
7897    
7898     </p>
7899 schoenebeck 945 <p>Possible Answers:
7900     </p>
7901     <p>
7902     </p>
7903     <blockquote class="text">
7904 schoenebeck 974 <p>The sampler will answer by sending the current number of
7905     entries in the MIDI instrument map(s).
7906 schoenebeck 945 </p>
7907     </blockquote><p>
7908    
7909     </p>
7910     <p>Example:
7911     </p>
7912     <p>
7913     </p>
7914     <blockquote class="text">
7915 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENTS 0"
7916 schoenebeck 945 </p>
7917 schoenebeck 974 <p>S: "234"
7918 schoenebeck 945 </p>
7919     </blockquote><p>
7920    
7921     </p>
7922 schoenebeck 974 <p>
7923     </p>
7924     <blockquote class="text">
7925     <p>C: "GET MIDI_INSTRUMENTS ALL"
7926     </p>
7927     <p>S: "954"
7928     </p>
7929     </blockquote><p>
7930    
7931     </p>
7932 schoenebeck 945 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7933 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>
7934     <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7935     Getting indeces of all entries of a MIDI instrument map</h3>
7936 schoenebeck 945
7937 schoenebeck 974 <p>The front-end can query a list of all currently existing
7938     entries in a certain MIDI instrument map by sending the following
7939     command:
7940 schoenebeck 945 </p>
7941     <p>
7942     </p>
7943     <blockquote class="text">
7944 schoenebeck 974 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7945 schoenebeck 945 </p>
7946     </blockquote><p>
7947    
7948     </p>
7949 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7950     </p>
7951     <p>The front-end can query a list of all currently existing
7952     entries of all MIDI instrument maps by sending the following
7953     command:
7954     </p>
7955     <p>
7956     </p>
7957     <blockquote class="text">
7958     <p>LIST MIDI_INSTRUMENTS ALL
7959     </p>
7960     </blockquote><p>
7961    
7962     </p>
7963 schoenebeck 945 <p>Possible Answers:
7964     </p>
7965     <p>
7966     </p>
7967     <blockquote class="text">
7968 schoenebeck 974 <p>The sampler will answer by sending a comma separated
7969     list of map ID - MIDI bank - MIDI program triples, where
7970     each triple is encapsulated into curly braces. The
7971     list is returned in one single line. Each triple
7972     just reflects the key of the respective map entry,
7973     thus subsequent
7974     <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>
7975 schoenebeck 945 command(s) are necessary to retrieve detailed informations
7976     about each entry.
7977     </p>
7978     </blockquote><p>
7979    
7980     </p>
7981     <p>Example:
7982     </p>
7983     <p>
7984     </p>
7985     <blockquote class="text">
7986 schoenebeck 974 <p>C: "LIST MIDI_INSTRUMENTS 0"
7987 schoenebeck 945 </p>
7988 schoenebeck 974 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7989 schoenebeck 945 </p>
7990     </blockquote><p>
7991    
7992     </p>
7993     <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7994 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>
7995     <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7996     Remove an entry from the MIDI instrument map</h3>
7997 schoenebeck 945
7998 schoenebeck 974 <p>The front-end can delete an entry from a MIDI instrument
7999 schoenebeck 945 map by sending the following command:
8000     </p>
8001     <p>
8002     </p>
8003     <blockquote class="text">
8004 schoenebeck 974 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
8005 schoenebeck 945 </p>
8006     </blockquote><p>
8007    
8008     </p>
8009     <p>
8010 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
8011     &lt;midi_bank&gt; is an integer value between 0..16383
8012     reflecting the MIDI bank value and
8013     &lt;midi_prog&gt; an integer value between
8014     0..127 reflecting the MIDI program value of the map's entrie's key
8015 schoenebeck 945 index triple.
8016    
8017     </p>
8018     <p>Possible Answers:
8019     </p>
8020     <p>
8021     </p>
8022     <blockquote class="text">
8023     <p>"OK" -
8024     </p>
8025     <blockquote class="text">
8026     <p>usually
8027     </p>
8028     </blockquote>
8029    
8030    
8031     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8032     </p>
8033     <blockquote class="text">
8034     <p>when index out of bounds
8035     </p>
8036     </blockquote>
8037    
8038    
8039     </blockquote><p>
8040    
8041     </p>
8042     <p>Example:
8043     </p>
8044     <p>
8045     </p>
8046     <blockquote class="text">
8047 schoenebeck 974 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
8048 schoenebeck 945 </p>
8049     <p>S: "OK"
8050     </p>
8051     </blockquote><p>
8052    
8053     </p>
8054     <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
8055 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>
8056     <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
8057     Get current settings of MIDI instrument map entry</h3>
8058 schoenebeck 945
8059     <p>The front-end can retrieve the current settings of a certain
8060     instrument map entry by sending the following command:
8061     </p>
8062     <p>
8063     </p>
8064     <blockquote class="text">
8065 schoenebeck 974 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
8066 schoenebeck 945 </p>
8067     </blockquote><p>
8068    
8069     </p>
8070     <p>
8071 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
8072     &lt;midi_bank&gt; is an integer value between 0..16383
8073     reflecting the MIDI bank value, &lt;midi_bank&gt;
8074     and &lt;midi_prog&gt; an integer value between
8075     0..127 reflecting the MIDI program value of the map's entrie's key
8076 schoenebeck 945 index triple.
8077    
8078     </p>
8079     <p>Possible Answers:
8080     </p>
8081     <p>
8082     </p>
8083     <blockquote class="text">
8084     <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
8085     separated list. Each answer line begins with the
8086     information category name followed by a colon and then
8087     a space character &lt;SP&gt; and finally the info
8088     character string to that info category. At the moment
8089     the following categories are defined:
8090     </p>
8091     <p>"NAME" -
8092     </p>
8093     <blockquote class="text">
8094     <p>Name for this MIDI instrument map entry (if defined).
8095     This name shall be used by frontends for displaying a
8096     name for this mapped instrument. It can be set and
8097     changed with the
8098 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>
8099 schoenebeck 945 command and does not have to be unique.
8100 schoenebeck 1400 (note that this character string may contain
8101     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
8102 schoenebeck 945 </p>
8103     </blockquote>
8104    
8105    
8106     <p>"ENGINE_NAME" -
8107     </p>
8108     <blockquote class="text">
8109     <p>Name of the engine to be deployed for this
8110     instrument.
8111     </p>
8112     </blockquote>
8113    
8114    
8115     <p>"INSTRUMENT_FILE" -
8116     </p>
8117     <blockquote class="text">
8118 schoenebeck 1400 <p>File name of the instrument
8119     (note that this path may contain
8120     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
8121 schoenebeck 945 </p>
8122     </blockquote>
8123    
8124    
8125     <p>"INSTRUMENT_NR" -
8126     </p>
8127     <blockquote class="text">
8128     <p>Index of the instrument within the file.
8129     </p>
8130     </blockquote>
8131    
8132    
8133     <p>"INSTRUMENT_NAME" -
8134     </p>
8135     <blockquote class="text">
8136     <p>Name of the loaded instrument as reflected by its file.
8137     In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
8138 schoenebeck 1400 cannot be changed (note that this character string may contain
8139     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
8140 schoenebeck 945 </p>
8141     </blockquote>
8142    
8143    
8144     <p>"LOAD_MODE" -
8145     </p>
8146     <blockquote class="text">
8147     <p>Life time of instrument
8148 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).
8149 schoenebeck 945 </p>
8150     </blockquote>
8151    
8152    
8153     <p>"VOLUME" -
8154     </p>
8155     <blockquote class="text">
8156     <p>master volume of the instrument as optionally
8157 schoenebeck 1028 dotted number (where a value &lt; 1.0 means attenuation
8158 schoenebeck 945 and a value > 1.0 means amplification)
8159     </p>
8160     </blockquote>
8161    
8162    
8163     <p>The mentioned fields above don't have to be in particular order.
8164     </p>
8165     </blockquote><p>
8166    
8167     </p>
8168     <p>Example:
8169     </p>
8170     <p>
8171     </p>
8172     <blockquote class="text">
8173 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
8174 schoenebeck 945 </p>
8175     <p>S: "NAME: Drums for Foo Song"
8176     </p>
8177     <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
8178     </p>
8179     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
8180     </p>
8181     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8182     </p>
8183     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
8184     </p>
8185     <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
8186     </p>
8187     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
8188     </p>
8189     <p>&nbsp;&nbsp;&nbsp;"."
8190     </p>
8191     </blockquote><p>
8192    
8193     </p>
8194     <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
8195 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>
8196     <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
8197     Clear MIDI instrument map</h3>
8198 schoenebeck 945
8199 schoenebeck 974 <p>The front-end can clear a whole MIDI instrument map, that
8200     is delete all its entries by sending the following command:
8201 schoenebeck 945 </p>
8202     <p>
8203     </p>
8204     <blockquote class="text">
8205 schoenebeck 974 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
8206 schoenebeck 945 </p>
8207     </blockquote><p>
8208    
8209     </p>
8210 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
8211     </p>
8212     <p>The front-end can clear all MIDI instrument maps, that
8213     is delete all entries of all maps by sending the following
8214     command:
8215     </p>
8216     <p>
8217     </p>
8218     <blockquote class="text">
8219     <p>CLEAR MIDI_INSTRUMENTS ALL
8220     </p>
8221     </blockquote><p>
8222    
8223     </p>
8224     <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
8225     maps, only their entries, thus the map's settings like
8226     custom name will be preservevd.
8227     </p>
8228 schoenebeck 945 <p>Possible Answers:
8229     </p>
8230     <p>
8231     </p>
8232     <blockquote class="text">
8233     <p>"OK" -
8234     </p>
8235     <blockquote class="text">
8236     <p>always
8237     </p>
8238     </blockquote>
8239    
8240    
8241     </blockquote><p>
8242    
8243     </p>
8244 schoenebeck 974 <p>Examples:
8245 schoenebeck 945 </p>
8246     <p>
8247     </p>
8248     <blockquote class="text">
8249 schoenebeck 974 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
8250 schoenebeck 945 </p>
8251     <p>S: "OK"
8252     </p>
8253     </blockquote><p>
8254    
8255     </p>
8256 schoenebeck 974 <p>
8257     </p>
8258     <blockquote class="text">
8259     <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
8260     </p>
8261     <p>S: "OK"
8262     </p>
8263     </blockquote><p>
8264    
8265     </p>
8266 iliev 1162 <a name="Managing Instruments Database"></a><br /><hr />
8267     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8268     <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
8269     Managing Instruments Database</h3>
8270    
8271     <p>The following commands describe how to use and manage
8272     the instruments database.
8273     </p>
8274 schoenebeck 1363 <p>Notice:
8275     </p>
8276     <p>
8277     </p>
8278     <blockquote class="text">
8279     <p>All command arguments representing a path or
8280     instrument/directory name support escape sequences as described in chapter
8281     "<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>".
8282    
8283     </p>
8284     <p>All occurrences of a forward slash in instrument and directory
8285     names are escaped with its hex (\x2f) or octal (\057) escape sequence.
8286    
8287     </p>
8288     </blockquote><p>
8289    
8290     </p>
8291 iliev 1162 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8292     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8293     <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
8294     Creating a new instrument directory</h3>
8295    
8296     <p>The front-end can add a new instrument directory to the
8297     instruments database by sending the following command:
8298     </p>
8299     <p>
8300     </p>
8301     <blockquote class="text">
8302     <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
8303     </p>
8304     </blockquote><p>
8305    
8306     </p>
8307     <p>Where &lt;dir&gt; is the absolute path name of the directory
8308     to be created (encapsulated into apostrophes).
8309     </p>
8310     <p>Possible Answers:
8311     </p>
8312     <p>
8313     </p>
8314     <blockquote class="text">
8315     <p>"OK" -
8316     </p>
8317     <blockquote class="text">
8318     <p>on success
8319     </p>
8320     </blockquote>
8321    
8322    
8323     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8324     </p>
8325     <blockquote class="text">
8326     <p>when the directory could not be created, which
8327     can happen if the directory already exists or the
8328     name contains not allowed symbols
8329     </p>
8330     </blockquote>
8331    
8332    
8333     </blockquote><p>
8334    
8335     </p>
8336     <p>Examples:
8337     </p>
8338     <p>
8339     </p>
8340     <blockquote class="text">
8341     <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
8342     </p>
8343     <p>S: "OK"
8344     </p>
8345     </blockquote><p>
8346    
8347     </p>
8348     <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8349     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8350     <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
8351     Deleting an instrument directory</h3>
8352    
8353     <p>The front-end can delete a particular instrument directory
8354     from the instruments database by sending the following command:
8355     </p>
8356     <p>
8357     </p>
8358     <blockquote class="text">
8359     <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
8360     </p>
8361     </blockquote><p>
8362    
8363     </p>
8364     <p>Where &lt;dir&gt; is the absolute path name of the directory
8365     to delete. The optional FORCE argument can be used to
8366     force the deletion of a non-empty directory and all its content.
8367     </p>
8368     <p>Possible Answers:
8369     </p>
8370     <p>
8371     </p>
8372     <blockquote class="text">
8373     <p>"OK" -
8374     </p>
8375     <blockquote class="text">
8376     <p>if the directory is deleted successfully
8377     </p>
8378     </blockquote>
8379    
8380    
8381     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8382     </p>
8383     <blockquote class="text">
8384     <p>if the given directory does not exist, or
8385     if trying to delete a non-empty directory,
8386     without using the FORCE argument.
8387     </p>
8388     </blockquote>
8389    
8390    
8391     </blockquote><p>
8392    
8393     </p>
8394     <p>Examples:
8395     </p>
8396     <p>
8397     </p>
8398     <blockquote class="text">
8399     <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
8400     </p>
8401     <p>S: "OK"
8402     </p>
8403     </blockquote><p>
8404    
8405     </p>
8406     <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8407     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8408     <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
8409     Getting amount of instrument directories</h3>
8410    
8411     <p>The front-end can retrieve the current amount of
8412     directories in a specific directory by sending the following command:
8413     </p>
8414     <p>
8415     </p>
8416     <blockquote class="text">
8417 iliev 1189 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8418 iliev 1162 </p>
8419     </blockquote><p>
8420    
8421     </p>
8422     <p>Where &lt;dir&gt; should be replaced by the absolute path
8423 iliev 1189 name of the directory. If RECURSIVE is specified, the number of
8424     all directories, including those located in subdirectories of the
8425     specified directory, will be returned.
8426 iliev 1162 </p>
8427     <p>Possible Answers:
8428     </p>
8429     <p>
8430     </p>
8431     <blockquote class="text">
8432     <p>The current number of instrument directories
8433     in the specified directory.
8434     </p>
8435     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8436     </p>
8437     <blockquote class="text">
8438     <p>if the given directory does not exist.
8439     </p>
8440     </blockquote>
8441    
8442    
8443     </blockquote><p>
8444    
8445     </p>
8446     <p>Example:
8447     </p>
8448     <p>
8449     </p>
8450     <blockquote class="text">
8451     <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
8452     </p>
8453     <p>S: "2"
8454     </p>
8455     </blockquote><p>
8456    
8457     </p>
8458     <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8459     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8460     <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
8461     Listing all directories in specific directory</h3>
8462    
8463     <p>The front-end can retrieve the current list of directories
8464     in specific directory by sending the following command:
8465     </p>
8466     <p>
8467     </p>
8468     <blockquote class="text">
8469 iliev 1189 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8470 iliev 1162 </p>
8471     </blockquote><p>
8472    
8473     </p>
8474     <p>Where &lt;dir&gt; should be replaced by the absolute path
8475 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path names
8476     of all directories, including those located in subdirectories of the
8477     specified directory, will be returned.
8478 iliev 1162 </p>
8479     <p>Possible Answers:
8480     </p>
8481     <p>
8482     </p>
8483     <blockquote class="text">
8484     <p>A comma separated list of all instrument directories
8485     (encapsulated into apostrophes) in the specified directory.
8486     </p>
8487     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8488     </p>
8489     <blockquote class="text">
8490     <p>if the given directory does not exist.
8491     </p>
8492     </blockquote>
8493    
8494    
8495     </blockquote><p>
8496    
8497     </p>
8498     <p>Example:
8499     </p>
8500     <p>
8501     </p>
8502     <blockquote class="text">
8503     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
8504     </p>
8505     <p>S: "'Piano Collection','Percussion Collection'"
8506     </p>
8507     </blockquote><p>
8508    
8509     </p>
8510 iliev 1189 <p>
8511     </p>
8512     <blockquote class="text">
8513     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
8514     </p>
8515     <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
8516     </p>
8517     </blockquote><p>
8518    
8519     </p>
8520 iliev 1162 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
8521     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8522     <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
8523     Getting instrument directory information</h3>
8524    
8525     <p>The front-end can ask for the current settings of an
8526     instrument directory by sending the following command:
8527     </p>
8528     <p>
8529     </p>
8530     <blockquote class="text">
8531     <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
8532     </p>
8533     </blockquote><p>
8534    
8535     </p>
8536     <p>Where &lt;dir&gt; should be replaced by the absolute path
8537     name of the directory the front-end is interested in.
8538     </p>
8539     <p>Possible Answers:
8540     </p>
8541     <p>
8542     </p>
8543     <blockquote class="text">
8544     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8545     Each answer line begins with the settings category name
8546     followed by a colon and then a space character &lt;SP&gt; and finally
8547     the info character string to that setting category. At the
8548     moment the following categories are defined:
8549     </p>
8550     <p>
8551     </p>
8552     <blockquote class="text">
8553     <p>DESCRIPTION -
8554     </p>
8555     <blockquote class="text">
8556 schoenebeck 1363 <p>A brief description of the directory content.
8557     Note that the character string may contain
8558     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8559 iliev 1162 </p>
8560     </blockquote>
8561    
8562    
8563     <p>CREATED -
8564     </p>
8565     <blockquote class="text">
8566     <p>The creation date and time of the directory,
8567     represented in "YYYY-MM-DD HH:MM:SS" format
8568     </p>
8569     </blockquote>
8570    
8571    
8572     <p>MODIFIED -
8573     </p>
8574     <blockquote class="text">
8575     <p>The date and time of the last modification of the
8576     directory, represented in "YYYY-MM-DD HH:MM:SS" format
8577     </p>
8578     </blockquote>
8579    
8580    
8581     </blockquote>
8582    
8583    
8584     </blockquote><p>
8585    
8586     </p>
8587     <p>The mentioned fields above don't have to be in particular order.
8588     </p>
8589     <p>Example:
8590     </p>
8591     <p>
8592     </p>
8593     <blockquote class="text">
8594     <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
8595     </p>
8596     <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
8597     </p>
8598     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8599     </p>
8600     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8601     </p>
8602     <p>&nbsp;&nbsp;&nbsp;"."
8603     </p>
8604     </blockquote><p>
8605    
8606     </p>
8607     <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
8608     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8609     <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
8610     Renaming an instrument directory</h3>
8611    
8612     <p>The front-end can alter the name of a specific
8613     instrument directory by sending the following command:
8614     </p>
8615     <p>
8616     </p>
8617     <blockquote class="text">
8618     <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
8619     </p>
8620     </blockquote><p>
8621    
8622     </p>
8623     <p>Where &lt;dir&gt; is the absolute path name of the directory and
8624     &lt;name&gt; is the new name for that directory.
8625     </p>
8626     <p>Possible Answers:
8627     </p>
8628     <p>
8629     </p>
8630     <blockquote class="text">
8631     <p>"OK" -
8632     </p>
8633     <blockquote class="text">
8634     <p>on success
8635     </p>
8636     </blockquote>
8637    
8638    
8639     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8640     </p>
8641     <blockquote class="text">
8642     <p>in case the given directory does not exists,
8643     or if a directory with name equal to the new
8644     name already exists.
8645     </p>
8646     </blockquote>
8647    
8648    
8649     </blockquote><p>
8650    
8651     </p>
8652     <p>Example:
8653     </p>
8654     <p>
8655     </p>
8656     <blockquote class="text">
8657     <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
8658     </p>
8659     <p>S: "OK"
8660     </p>
8661     </blockquote><p>
8662    
8663     </p>
8664     <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8665     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8666     <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
8667     Moving an instrument directory</h3>
8668    
8669     <p>The front-end can move a specific
8670     instrument directory by sending the following command:
8671     </p>
8672     <p>
8673     </p>
8674     <blockquote class="text">
8675     <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8676     </p>
8677     </blockquote><p>
8678    
8679     </p>
8680     <p>Where &lt;dir&gt; is the absolute path name of the directory
8681     to move and &lt;dst&gt; is the location where the directory will
8682     be moved to.
8683     </p>
8684     <p>Possible Answers:
8685     </p>
8686     <p>
8687     </p>
8688     <blockquote class="text">
8689     <p>"OK" -
8690     </p>
8691     <blockquote class="text">
8692     <p>on success
8693     </p>
8694     </blockquote>
8695    
8696    
8697     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8698     </p>
8699     <blockquote class="text">
8700     <p>in case a given directory does not exists,
8701     or if a directory with name equal to the name
8702     of the specified directory already exists in
8703     the destination directory. Error is also thrown
8704     when trying to move a directory to a subdirectory
8705     of itself.
8706     </p>
8707     </blockquote>
8708    
8709    
8710     </blockquote><p>
8711    
8712     </p>
8713     <p>Example:
8714     </p>
8715     <p>
8716     </p>
8717     <blockquote class="text">
8718     <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
8719     </p>
8720     <p>S: "OK"
8721     </p>
8722     </blockquote><p>
8723    
8724     </p>
8725 iliev 1189 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8726     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8727     <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
8728     Copying instrument directories</h3>
8729    
8730     <p>The front-end can copy a specific
8731     instrument directory by sending the following command:
8732     </p>
8733     <p>
8734     </p>
8735     <blockquote class="text">
8736     <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8737     </p>
8738     </blockquote><p>
8739    
8740     </p>
8741     <p>Where &lt;dir&gt; is the absolute path name of the directory
8742     to copy and &lt;dst&gt; is the location where the directory will
8743     be copied to.
8744     </p>
8745     <p>Possible Answers:
8746     </p>
8747     <p>
8748     </p>
8749     <blockquote class="text">
8750     <p>"OK" -
8751     </p>
8752     <blockquote class="text">
8753     <p>on success
8754     </p>
8755     </blockquote>
8756    
8757    
8758     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8759     </p>
8760     <blockquote class="text">
8761     <p>in case a given directory does not exists,
8762     or if a directory with name equal to the name
8763     of the specified directory already exists in
8764     the destination directory. Error is also thrown
8765     when trying to copy a directory to a subdirectory
8766     of itself.
8767     </p>
8768     </blockquote>
8769    
8770    
8771     </blockquote><p>
8772    
8773     </p>
8774     <p>Example:
8775     </p>
8776     <p>
8777     </p>
8778     <blockquote class="text">
8779     <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
8780     </p>
8781     <p>S: "OK"
8782     </p>
8783     </blockquote><p>
8784    
8785     </p>
8786 iliev 1162 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
8787     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8788 iliev 1189 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
8789 iliev 1162 Changing the description of directory</h3>
8790    
8791     <p>The front-end can alter the description of a specific
8792     instrument directory by sending the following command:
8793     </p>
8794     <p>
8795     </p>
8796     <blockquote class="text">
8797     <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
8798     </p>
8799     </blockquote><p>
8800    
8801     </p>
8802     <p>Where &lt;dir&gt; is the absolute path name of the directory and
8803 schoenebeck 1363 &lt;desc&gt; is the new description for the directory
8804     (encapsulated into apostrophes, supporting escape sequences as described in chapter
8805     "<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>").
8806 iliev 1162 </p>
8807     <p>Possible Answers:
8808     </p>
8809     <p>
8810     </p>
8811     <blockquote class="text">
8812     <p>"OK" -
8813     </p>
8814     <blockquote class="text">
8815     <p>on success
8816     </p>
8817     </blockquote>
8818    
8819    
8820     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8821     </p>
8822     <blockquote class="text">
8823     <p>in case the given directory does not exists.
8824     </p>
8825     </blockquote>
8826    
8827    
8828     </blockquote><p>
8829    
8830     </p>
8831     <p>Example:
8832     </p>
8833     <p>
8834     </p>
8835     <blockquote class="text">
8836     <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8837     </p>
8838     <p>S: "OK"
8839     </p>
8840     </blockquote><p>
8841    
8842     </p>
8843 iliev 1189 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8844     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8845     <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8846     Finding directories</h3>
8847    
8848     <p>The front-end can search for directories
8849     in specific directory by sending the following command:
8850     </p>
8851     <p>
8852     </p>
8853     <blockquote class="text">
8854     <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8855     </p>
8856     </blockquote><p>
8857    
8858     </p>
8859     <p>Where &lt;dir&gt; should be replaced by the absolute path
8860     name of the directory to search in. If NON_RECURSIVE is specified, the
8861     directories located in subdirectories of the specified directory will not
8862     be searched. &lt;criteria-list&gt; is a list of search criterias
8863     in form of "key1=val1 key2=val2 ...". The following criterias are
8864     allowed:
8865     </p>
8866     <p>
8867    
8868     <p>NAME='&lt;search-string&gt;'
8869     </p>
8870     <blockquote class="text">
8871     <p>Restricts the search to directories, which names
8872 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
8873     supporting escape sequences as described in chapter
8874     "<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>").
8875 iliev 1189 </p>
8876     </blockquote><p>
8877    
8878     </p>
8879    
8880    
8881     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8882     </p>
8883     <blockquote class="text">
8884     <p>Restricts the search to directories, which creation
8885     date satisfies the specified period, where &lt;date-after&gt;
8886     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8887     If &lt;date-after&gt; is omitted the search is restricted to
8888     directories created before &lt;date-before&gt;. If
8889     &lt;date-before&gt; is omitted, the search is restricted
8890     to directories created after &lt;date-after&gt;.
8891     </p>
8892     </blockquote><p>
8893    
8894     </p>
8895    
8896    
8897     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8898     </p>
8899     <blockquote class="text">
8900     <p>Restricts the search to directories, which
8901     date of last modification satisfies the specified period, where
8902     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8903     format. If &lt;date-after&gt; is omitted the search is restricted to
8904     directories, which are last modified before &lt;date-before&gt;. If
8905     &lt;date-before&gt; is omitted, the search is restricted to directories,
8906     which are last modified after &lt;date-after&gt;.
8907     </p>
8908     </blockquote><p>
8909    
8910     </p>
8911    
8912    
8913     <p>DESCRIPTION='&lt;search-string&gt;'
8914     </p>
8915     <blockquote class="text">
8916     <p>Restricts the search to directories with description
8917 schoenebeck 1363 that satisfies the supplied search string
8918     (encapsulated into apostrophes, supporting escape
8919     sequences as described in chapter
8920     "<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>").
8921 iliev 1189 </p>
8922     </blockquote><p>
8923    
8924     </p>
8925    
8926    
8927     <p>Where &lt;search-string&gt; is either a regular expression, or a
8928     word list separated with spaces for OR search and with '+' for AND search.
8929     </p>
8930     <p>Possible Answers:
8931     </p>
8932     <p>
8933     </p>
8934     <blockquote class="text">
8935     <p>A comma separated list with the absolute path names (encapsulated into
8936     apostrophes) of all directories in the specified directory that satisfy
8937     the supplied search criterias.
8938     </p>
8939     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8940     </p>
8941     <blockquote class="text">
8942     <p>if the given directory does not exist.
8943     </p>
8944     </blockquote>
8945    
8946    
8947     </blockquote><p>
8948    
8949     </p>
8950     <p>Example:
8951     </p>
8952     <p>
8953     </p>
8954     <blockquote class="text">
8955     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8956     </p>
8957     <p>S: "'/Piano Collection'"
8958     </p>
8959     </blockquote><p>
8960    
8961     </p>
8962     <p>
8963     </p>
8964     <blockquote class="text">
8965     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8966     </p>
8967     <p>S: "'/Piano Collection','/Percussions'"
8968     </p>
8969     </blockquote><p>
8970    
8971     </p>
8972 iliev 1162 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8973     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8974 iliev 1189 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8975 iliev 1162 Adding instruments to the instruments database</h3>
8976    
8977     <p>The front-end can add one or more instruments
8978     to the instruments database by sending the following command:
8979     </p>
8980     <p>
8981     </p>
8982     <blockquote class="text">
8983 schoenebeck 1801 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;[ FILE_AS_DIR]] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8984 iliev 1162 </p>
8985     </blockquote><p>
8986    
8987     </p>
8988     <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8989     (encapsulated into apostrophes) in the instruments database in which
8990     only the new instruments (that are not already in the database) will
8991     be added, &lt;file_path&gt; is the absolute path name of a file or
8992     directory in the file system (encapsulated into apostrophes). In case
8993     an instrument file is supplied, only the instruments in the specified
8994     file will be added to the instruments database. If the optional
8995     &lt;instr_index&gt; (the index of the instrument within the given file)
8996     is supplied too, then only the specified instrument will be added.
8997     In case a directory is supplied, the instruments in that directory
8998     will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8999     when a directory is provided as &lt;file_path&gt; and specifies how the
9000     scanning will be done and has exactly the following possibilities:
9001     </p>
9002     <p>
9003     </p>
9004     <blockquote class="text">
9005 iliev 1201 <p>"RECURSIVE" -
9006     </p>
9007     <blockquote class="text">
9008     <p>All instruments will be processed, including those
9009     in the subdirectories, and the respective subdirectory
9010     tree structure will be recreated in the instruments
9011     database
9012     </p>
9013     </blockquote>
9014    
9015    
9016 iliev 1162 <p>"NON_RECURSIVE" -
9017     </p>
9018     <blockquote class="text">
9019     <p>Only the instruments in the specified directory
9020     will be added, the instruments in the subdirectories
9021     will not be processed.
9022     </p>
9023     </blockquote>
9024    
9025    
9026     <p>"FLAT" -
9027     </p>
9028     <blockquote class="text">
9029     <p>All instruments will be processed, including those
9030     in the subdirectories, but the respective subdirectory
9031     structure will not be recreated in the instruments
9032     database. All instruments will be added directly in
9033     the specified database directory.
9034     </p>
9035     </blockquote>
9036    
9037    
9038     </blockquote><p>
9039    
9040     </p>
9041 schoenebeck 1801 <p> If FILE_AS_DIR argument is supplied, all instruments in an instrument
9042     file will be added to a separate directory in the instruments database, which
9043     name will be the name of the instrument file with the file extension stripped off.
9044    
9045     </p>
9046 iliev 1201 <p>The difference between regular and NON_MODAL versions of the command
9047     is that the regular command returns when the scanning is finished
9048     while NON_MODAL version returns immediately and a background process is launched.
9049     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>
9050     command can be used to monitor the scanning progress.
9051     </p>
9052 iliev 1162 <p>Possible Answers:
9053     </p>
9054     <p>
9055     </p>
9056     <blockquote class="text">
9057     <p>"OK" -
9058     </p>
9059     <blockquote class="text">
9060 iliev 1201 <p>on success when NON_MODAL is not supplied
9061 iliev 1162 </p>
9062     </blockquote>
9063    
9064    
9065 iliev 1201 <p>"OK[&lt;job-id&gt;]" -
9066     </p>
9067     <blockquote class="text">
9068     <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
9069     is a numerical ID used to obtain status information about the job progress.
9070     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>
9071    
9072     </p>
9073     </blockquote>
9074    
9075    
9076 iliev 1162 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9077     </p>
9078     <blockquote class="text">
9079     <p>if an invalid path is specified.
9080     </p>
9081     </blockquote>
9082    
9083    
9084     </blockquote><p>
9085    
9086     </p>
9087     <p>Examples:
9088     </p>
9089     <p>
9090     </p>
9091     <blockquote class="text">
9092     <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
9093     </p>
9094     <p>S: "OK"
9095     </p>
9096     </blockquote><p>
9097    
9098     </p>
9099     <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
9100     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9101 iliev 1189 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
9102 iliev 1162 Removing an instrument</h3>
9103    
9104     <p>The front-end can remove a particular instrument
9105     from the instruments database by sending the following command:
9106     </p>
9107     <p>
9108     </p>
9109     <blockquote class="text">
9110     <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
9111     </p>
9112     </blockquote><p>
9113    
9114     </p>
9115     <p>Where &lt;instr_path&gt; is the absolute path name
9116     (in the instruments database) of the instrument to remove.
9117     </p>
9118     <p>Possible Answers:
9119     </p>
9120     <p>
9121     </p>
9122     <blockquote class="text">
9123     <p>"OK" -
9124     </p>
9125     <blockquote class="text">
9126     <p>if the instrument is removed successfully
9127     </p>
9128     </blockquote>
9129    
9130    
9131     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9132     </p>
9133     <blockquote class="text">
9134     <p>if the given path does not exist or
9135     is a directory.
9136     </p>
9137     </blockquote>
9138    
9139    
9140     </blockquote><p>
9141    
9142     </p>
9143     <p>Examples:
9144     </p>
9145     <p>
9146     </p>
9147     <blockquote class="text">
9148     <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
9149     </p>
9150     <p>S: "OK"
9151     </p>
9152     </blockquote><p>
9153    
9154     </p>
9155     <a name="GET DB_INSTRUMENTS"></a><br /><hr />
9156     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9157 iliev 1189 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
9158 iliev 1162 Getting amount of instruments</h3>
9159    
9160     <p>The front-end can retrieve the current amount of
9161     instruments in a specific directory by sending the following command:
9162     </p>
9163     <p>
9164     </p>
9165     <blockquote class="text">
9166 iliev 1189 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
9167 iliev 1162 </p>
9168     </blockquote><p>
9169    
9170     </p>
9171     <p>Where &lt;dir&gt; should be replaced by the absolute path name
9172 iliev 1189 of the directory. If RECURSIVE is specified, the number of all
9173     instruments, including those located in subdirectories of the
9174     specified directory, will be returned.
9175 iliev 1162 </p>
9176     <p>Possible Answers:
9177     </p>
9178     <p>
9179     </p>
9180     <blockquote class="text">
9181     <p>The current number of instruments
9182     in the specified directory.
9183     </p>
9184     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9185     </p>
9186     <blockquote class="text">
9187     <p>if the given directory does not exist.
9188     </p>
9189     </blockquote>
9190    
9191    
9192     </blockquote><p>
9193    
9194     </p>
9195     <p>Example:
9196     </p>
9197     <p>
9198     </p>
9199     <blockquote class="text">
9200     <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
9201     </p>
9202     <p>S: "2"
9203     </p>
9204     </blockquote><p>
9205    
9206     </p>
9207     <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
9208     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9209 iliev 1189 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
9210 iliev 1162 Listing all instruments in specific directory</h3>
9211    
9212     <p>The front-end can retrieve the current list of instruments
9213     in specific directory by sending the following command:
9214     </p>
9215     <p>
9216     </p>
9217     <blockquote class="text">
9218 iliev 1189 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
9219 iliev 1162 </p>
9220     </blockquote><p>
9221    
9222     </p>
9223     <p>Where &lt;dir&gt; should be replaced by the absolute path
9224 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path
9225     names of all instruments, including those located in subdirectories
9226     of the specified directory, will be returned.
9227 iliev 1162 </p>
9228     <p>Possible Answers:
9229     </p>
9230     <p>
9231     </p>
9232     <blockquote class="text">
9233     <p>A comma separated list of all instruments
9234     (encapsulated into apostrophes) in the specified directory.
9235     </p>
9236     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9237     </p>
9238     <blockquote class="text">
9239     <p>if the given directory does not exist.
9240     </p>
9241     </blockquote>
9242    
9243    
9244     </blockquote><p>
9245    
9246     </p>
9247     <p>Example:
9248     </p>
9249     <p>
9250     </p>
9251     <blockquote class="text">
9252     <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
9253     </p>
9254     <p>S: "'Bosendorfer 290','Steinway D'"
9255     </p>
9256     </blockquote><p>
9257    
9258     </p>
9259 iliev 1189 <p>
9260     </p>
9261     <blockquote class="text">
9262     <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
9263     </p>
9264     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
9265     </p>
9266     </blockquote><p>
9267    
9268     </p>
9269 iliev 1162 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
9270     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9271 iliev 1189 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
9272 iliev 1162 Getting instrument information</h3>
9273    
9274     <p>The front-end can ask for the current settings of an
9275     instrument by sending the following command:
9276     </p>
9277     <p>
9278     </p>
9279     <blockquote class="text">
9280     <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
9281     </p>
9282     </blockquote><p>
9283    
9284     </p>
9285     <p>Where &lt;instr_path&gt; should be replaced by the absolute path
9286     name of the instrument the front-end is interested in.
9287     </p>
9288     <p>Possible Answers:
9289     </p>
9290     <p>
9291     </p>
9292     <blockquote class="text">
9293     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9294     Each answer line begins with the settings category name
9295     followed by a colon and then a space character &lt;SP&gt; and finally
9296     the info character string to that setting category. At the
9297     moment the following categories are defined:
9298     </p>
9299     <p>
9300     </p>
9301     <blockquote class="text">
9302     <p>INSTRUMENT_FILE -
9303     </p>
9304     <blockquote class="text">
9305     <p>File name of the instrument.
9306 schoenebeck 1363 Note that the character string may contain
9307     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9308 iliev 1162 </p>
9309     </blockquote>
9310    
9311    
9312     <p>INSTRUMENT_NR -
9313     </p>
9314     <blockquote class="text">
9315     <p>Index of the instrument within the file.
9316     </p>
9317     </blockquote>
9318    
9319    
9320     <p>FORMAT_FAMILY -
9321     </p>
9322     <blockquote class="text">
9323     <p>The format family of the instrument.
9324     </p>
9325     </blockquote>
9326    
9327    
9328     <p>FORMAT_VERSION -
9329     </p>
9330     <blockquote class="text">
9331     <p>The format version of the instrument.
9332     </p>
9333     </blockquote>
9334    
9335    
9336     <p>SIZE -
9337     </p>
9338     <blockquote class="text">
9339     <p>The size of the instrument in bytes.
9340     </p>
9341     </blockquote>
9342    
9343    
9344     <p>CREATED -
9345     </p>
9346     <blockquote class="text">
9347     <p>The date and time when the instrument is added
9348     in the instruments database, represented in
9349     "YYYY-MM-DD HH:MM:SS" format
9350     </p>
9351     </blockquote>
9352    
9353    
9354     <p>MODIFIED -
9355     </p>
9356     <blockquote class="text">
9357     <p>The date and time of the last modification of the
9358     instrument's database settings, represented in
9359     "YYYY-MM-DD HH:MM:SS" format
9360     </p>
9361     </blockquote>
9362    
9363    
9364     <p>DESCRIPTION -
9365     </p>
9366     <blockquote class="text">
9367 schoenebeck 1363 <p>A brief description of the instrument.
9368     Note that the character string may contain
9369     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9370 iliev 1162 </p>
9371     </blockquote>
9372    
9373    
9374     <p>IS_DRUM -
9375     </p>
9376     <blockquote class="text">
9377     <p>either true or false, determines whether the
9378     instrument is a drumkit or a chromatic instrument
9379     </p>
9380     </blockquote>
9381    
9382    
9383     <p>PRODUCT -
9384     </p>
9385     <blockquote class="text">
9386 schoenebeck 1363 <p>The product title of the instrument.
9387     Note that the character string may contain
9388     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9389 iliev 1162 </p>
9390     </blockquote>
9391    
9392    
9393     <p>ARTISTS -
9394     </p>
9395     <blockquote class="text">
9396 schoenebeck 1363 <p>Lists the artist names.
9397     Note that the character string may contain
9398     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9399 iliev 1162 </p>
9400     </blockquote>
9401    
9402    
9403     <p>KEYWORDS -
9404     </p>
9405     <blockquote class="text">
9406     <p>Provides a list of keywords that refer to the instrument.
9407     Keywords are separated with semicolon and blank.
9408 schoenebeck 1363 Note that the character string may contain
9409     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9410 iliev 1162 </p>
9411     </blockquote>
9412    
9413    
9414     </blockquote>
9415    
9416    
9417     </blockquote><p>
9418    
9419     </p>
9420     <p>The mentioned fields above don't have to be in particular order.
9421     </p>
9422     <p>Example:
9423     </p>
9424     <p>
9425     </p>
9426     <blockquote class="text">
9427     <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
9428     </p>
9429     <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
9430     </p>
9431     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
9432     </p>
9433     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9434     </p>
9435     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
9436     </p>
9437     <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
9438     </p>
9439     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
9440     </p>
9441     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
9442     </p>
9443     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
9444     </p>
9445     <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
9446     </p>
9447     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
9448     </p>
9449     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
9450     </p>
9451     <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
9452     </p>
9453     <p>&nbsp;&nbsp;&nbsp;"."
9454     </p>
9455     </blockquote><p>
9456    
9457     </p>
9458     <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
9459     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9460 iliev 1189 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
9461 iliev 1162 Renaming an instrument</h3>
9462    
9463     <p>The front-end can alter the name of a specific
9464     instrument by sending the following command:
9465     </p>
9466     <p>
9467     </p>
9468     <blockquote class="text">
9469     <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
9470     </p>
9471     </blockquote><p>
9472    
9473     </p>
9474     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9475     &lt;name&gt; is the new name for that instrument.
9476     </p>
9477     <p>Possible Answers:
9478     </p>
9479     <p>
9480     </p>
9481     <blockquote class="text">
9482     <p>"OK" -
9483     </p>
9484     <blockquote class="text">
9485     <p>on success
9486     </p>
9487     </blockquote>
9488    
9489    
9490     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9491     </p>
9492     <blockquote class="text">
9493     <p>in case the given instrument does not exists,
9494     or if an instrument with name equal to the new
9495     name already exists.
9496     </p>
9497     </blockquote>
9498    
9499    
9500     </blockquote><p>
9501    
9502     </p>
9503     <p>Example:
9504     </p>
9505     <p>
9506     </p>
9507     <blockquote class="text">
9508     <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
9509     </p>
9510     <p>S: "OK"
9511     </p>
9512     </blockquote><p>
9513    
9514     </p>
9515     <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
9516     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9517 iliev 1189 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
9518 iliev 1162 Moving an instrument</h3>
9519    
9520     <p>The front-end can move a specific instrument to another directory by
9521     sending the following command:
9522     </p>
9523     <p>
9524     </p>
9525     <blockquote class="text">
9526     <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9527     </p>
9528     </blockquote><p>
9529    
9530     </p>
9531     <p>Where &lt;instr&gt; is the absolute path name of the instrument
9532     to move and &lt;dst&gt; is the directory where the instrument will
9533     be moved to.
9534     </p>
9535     <p>Possible Answers:
9536     </p>
9537     <p>
9538     </p>
9539     <blockquote class="text">
9540     <p>"OK" -
9541     </p>
9542     <blockquote class="text">
9543     <p>on success
9544     </p>
9545     </blockquote>
9546    
9547    
9548     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9549     </p>
9550     <blockquote class="text">
9551     <p>in case the given instrument does not exists,
9552     or if an instrument with name equal to the name of the
9553     specified instrument already exists in the destination
9554     directory.
9555     </p>
9556     </blockquote>
9557    
9558    
9559     </blockquote><p>
9560    
9561     </p>
9562     <p>Example:
9563     </p>
9564     <p>
9565     </p>
9566     <blockquote class="text">
9567     <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
9568     </p>
9569     <p>S: "OK"
9570     </p>
9571     </blockquote><p>
9572    
9573     </p>
9574 iliev 1189 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
9575     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9576     <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
9577     Copying instruments</h3>
9578    
9579     <p>The front-end can copy a specific instrument to another directory by
9580     sending the following command:
9581     </p>
9582     <p>
9583     </p>
9584     <blockquote class="text">
9585     <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9586     </p>
9587     </blockquote><p>
9588    
9589     </p>
9590     <p>Where &lt;instr&gt; is the absolute path name of the instrument
9591     to copy and &lt;dst&gt; is the directory where the instrument will
9592     be copied to.
9593     </p>
9594     <p>Possible Answers:
9595     </p>
9596     <p>
9597     </p>
9598     <blockquote class="text">
9599     <p>"OK" -
9600     </p>
9601     <blockquote class="text">
9602     <p>on success
9603     </p>
9604     </blockquote>
9605    
9606    
9607     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9608     </p>
9609     <blockquote class="text">
9610     <p>in case the given instrument does not exists,
9611     or if an instrument with name equal to the name of the
9612     specified instrument already exists in the destination
9613     directory.
9614     </p>
9615     </blockquote>
9616    
9617    
9618     </blockquote><p>
9619    
9620     </p>
9621     <p>Example:
9622     </p>
9623     <p>
9624     </p>
9625     <blockquote class="text">
9626     <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
9627     </p>
9628     <p>S: "OK"
9629     </p>
9630     </blockquote><p>
9631    
9632     </p>
9633 iliev 1162 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
9634     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9635 iliev 1189 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
9636 iliev 1162 Changing the description of instrument</h3>
9637    
9638     <p>The front-end can alter the description of a specific
9639     instrument by sending the following command:
9640     </p>
9641     <p>
9642     </p>
9643     <blockquote class="text">
9644     <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
9645     </p>
9646     </blockquote><p>
9647    
9648     </p>
9649     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9650 schoenebeck 1572 &lt;desc&gt; is the new description for the instrument
9651 schoenebeck 1363 (encapsulated into apostrophes, supporting escape sequences as described in chapter
9652     "<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>").
9653 iliev 1162 </p>
9654     <p>Possible Answers:
9655     </p>
9656     <p>
9657     </p>
9658     <blockquote class="text">
9659     <p>"OK" -
9660     </p>
9661     <blockquote class="text">
9662     <p>on success
9663     </p>
9664     </blockquote>
9665    
9666    
9667     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9668     </p>
9669     <blockquote class="text">
9670     <p>in case the given instrument does not exists.
9671     </p>
9672     </blockquote>
9673    
9674    
9675     </blockquote><p>
9676    
9677     </p>
9678     <p>Example:
9679     </p>
9680     <p>
9681     </p>
9682     <blockquote class="text">
9683     <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
9684     </p>
9685     <p>S: "OK"
9686     </p>
9687     </blockquote><p>
9688    
9689     </p>
9690 iliev 1189 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
9691     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9692     <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
9693     Finding instruments</h3>
9694    
9695     <p>The front-end can search for instruments
9696     in specific directory by sending the following command:
9697     </p>
9698     <p>
9699     </p>
9700     <blockquote class="text">
9701     <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
9702     </p>
9703     </blockquote><p>
9704    
9705     </p>
9706     <p>Where &lt;dir&gt; should be replaced by the absolute path
9707     name of the directory to search in. If NON_RECURSIVE is specified, the
9708     directories located in subdirectories of the specified directory will not
9709     be searched. &lt;criteria-list&gt; is a list of search criterias
9710     in form of "key1=val1 key2=val2 ...". The following criterias are
9711     allowed:
9712     </p>
9713     <p>
9714    
9715     <p>NAME='&lt;search-string&gt;'
9716     </p>
9717     <blockquote class="text">
9718     <p>Restricts the search to instruments, which names
9719 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
9720     supporting escape sequences as described in chapter
9721     "<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>").
9722 iliev 1189 </p>
9723     </blockquote><p>
9724    
9725     </p>
9726    
9727    
9728     <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
9729     </p>
9730     <blockquote class="text">
9731 schoenebeck 1251 <p>Restricts the search to instruments, which
9732 iliev 1189 size is in the specified range. If &lt;min&gt; is omitted,
9733     the search results are restricted to instruments with size less then
9734     or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
9735     search is restricted to instruments with size greater then
9736     or equal to &lt;min&gt;.
9737     </p>
9738     </blockquote><p>
9739    
9740     </p>
9741    
9742    
9743     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9744     </p>
9745     <blockquote class="text">
9746     <p>Restricts the search to instruments, which creation
9747     date satisfies the specified period, where &lt;date-after&gt;
9748     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
9749     If &lt;date-after&gt; is omitted the search is restricted to
9750     instruments created before &lt;date-before&gt;. If
9751     &lt;date-before&gt; is omitted, the search is restricted
9752     to instruments created after &lt;date-after&gt;.
9753     </p>
9754     </blockquote><p>
9755    
9756     </p>
9757    
9758    
9759     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9760     </p>
9761     <blockquote class="text">
9762     <p>Restricts the search to instruments, which
9763     date of last modification satisfies the specified period, where
9764     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
9765     format. If &lt;date-after&gt; is omitted the search is restricted to
9766     instruments, which are last modified before &lt;date-before&gt;. If
9767     &lt;date-before&gt; is omitted, the search is restricted to instruments,
9768     which are last modified after &lt;date-after&gt;.
9769     </p>
9770     </blockquote><p>
9771    
9772     </p>
9773    
9774    
9775     <p>DESCRIPTION='&lt;search-string&gt;'
9776     </p>
9777     <blockquote class="text">
9778     <p>Restricts the search to instruments with description
9779 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9780     supporting escape sequences as described in chapter
9781     "<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>").
9782 iliev 1189 </p>
9783     </blockquote><p>
9784    
9785     </p>
9786    
9787    
9788     <p>PRODUCT='&lt;search-string&gt;'
9789     </p>
9790     <blockquote class="text">
9791     <p>Restricts the search to instruments with product info
9792 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9793     supporting escape sequences as described in chapter
9794     "<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>").
9795 iliev 1189 </p>
9796     </blockquote><p>
9797    
9798     </p>
9799    
9800    
9801     <p>ARTISTS='&lt;search-string&gt;'
9802     </p>
9803     <blockquote class="text">
9804     <p>Restricts the search to instruments with artists info
9805 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9806     supporting escape sequences as described in chapter
9807     "<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>").
9808 iliev 1189 </p>
9809     </blockquote><p>
9810    
9811     </p>
9812    
9813    
9814     <p>KEYWORDS='&lt;search-string&gt;'
9815     </p>
9816     <blockquote class="text">
9817     <p>Restricts the search to instruments with keyword list
9818 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9819     supporting escape sequences as described in chapter
9820     "<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>").
9821 iliev 1189 </p>
9822     </blockquote><p>
9823    
9824     </p>
9825    
9826    
9827     <p>IS_DRUM=true | false
9828     </p>
9829     <blockquote class="text">
9830 schoenebeck 1251 <p>Either true or false. Restricts the search to
9831 iliev 1189 drum kits or chromatic instruments.
9832     </p>
9833     </blockquote><p>
9834    
9835     </p>
9836    
9837    
9838     <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9839     </p>
9840     <blockquote class="text">
9841     <p>Restricts the search to instruments of the supplied format families,
9842     where &lt;format-list&gt; is a comma separated list of format families.
9843     </p>
9844     </blockquote><p>
9845    
9846     </p>
9847    
9848    
9849     <p>Where &lt;search-string&gt; is either a regular expression, or a
9850     word list separated with spaces for OR search and with '+' for AND search.
9851     </p>
9852     <p>Possible Answers:
9853     </p>
9854     <p>
9855     </p>
9856     <blockquote class="text">
9857     <p>A comma separated list with the absolute path names (encapsulated into
9858     apostrophes) of all instruments in the specified directory that satisfy
9859     the supplied search criterias.
9860     </p>
9861     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9862     </p>
9863     <blockquote class="text">
9864     <p>if the given directory does not exist.
9865     </p>
9866     </blockquote>
9867    
9868    
9869     </blockquote><p>
9870    
9871     </p>
9872     <p>Example:
9873     </p>
9874     <p>
9875     </p>
9876     <blockquote class="text">
9877     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9878     </p>
9879     <p>S: "'/Piano Collection/Bosendorfer 290'"
9880     </p>
9881     </blockquote><p>
9882    
9883     </p>
9884     <p>
9885     </p>
9886     <blockquote class="text">
9887     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9888     </p>
9889     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9890     </p>
9891     </blockquote><p>
9892    
9893     </p>
9894 iliev 1201 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9895     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9896     <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9897     Getting job status information</h3>
9898    
9899     <p>The front-end can ask for the current status of a
9900     particular database instruments job by sending the following command:
9901     </p>
9902     <p>
9903     </p>
9904     <blockquote class="text">
9905     <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9906     </p>
9907     </blockquote><p>
9908    
9909     </p>
9910     <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9911     of the job the front-end is interested in.
9912     </p>
9913     <p>Possible Answers:
9914     </p>
9915     <p>
9916     </p>
9917     <blockquote class="text">
9918     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9919     Each answer line begins with the settings category name
9920     followed by a colon and then a space character &lt;SP&gt; and finally
9921     the info character string to that setting category. At the
9922     moment the following categories are defined:
9923     </p>
9924     <p>
9925     </p>
9926     <blockquote class="text">
9927     <p>FILES_TOTAL -
9928     </p>
9929     <blockquote class="text">
9930     <p>The total number of files scheduled for scanning
9931     </p>
9932     </blockquote>
9933    
9934    
9935     <p>FILES_SCANNED -
9936     </p>
9937     <blockquote class="text">
9938     <p>The current number of scanned files
9939     </p>
9940     </blockquote>
9941    
9942    
9943     <p>SCANNING -
9944     </p>
9945     <blockquote class="text">
9946     <p>The absolute path name of the file which is currently
9947     being scanned
9948     </p>
9949     </blockquote>
9950    
9951    
9952     <p>STATUS -
9953     </p>
9954     <blockquote class="text">
9955     <p>An integer value between 0 and 100 indicating the
9956     scanning progress percentage of the file which is
9957     currently being scanned
9958     </p>
9959     </blockquote>
9960    
9961    
9962     </blockquote>
9963    
9964    
9965     </blockquote><p>
9966    
9967     </p>
9968     <p>The mentioned fields above don't have to be in particular order.
9969     </p>
9970     <p>Example:
9971     </p>
9972     <p>
9973     </p>
9974     <blockquote class="text">
9975     <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9976     </p>
9977     <p>S: "FILES_TOTAL: 12"
9978     </p>
9979     <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9980     </p>
9981     <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9982     </p>
9983     <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9984     </p>
9985     <p>&nbsp;&nbsp;&nbsp;"."
9986     </p>
9987     </blockquote><p>
9988    
9989     </p>
9990 schoenebeck 1363 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9991     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9992     <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9993     Formatting the instruments database</h3>
9994    
9995     <p>The front-end can remove all instruments and directories and re-create
9996     the instruments database structure (e.g., in case of a database corruption)
9997     by sending the following command:
9998     </p>
9999     <p>
10000     </p>
10001     <blockquote class="text">
10002     <p>FORMAT INSTRUMENTS_DB
10003     </p>
10004     </blockquote><p>
10005    
10006     </p>
10007     <p>Possible Answers:
10008     </p>
10009     <p>
10010     </p>
10011     <blockquote class="text">
10012     <p>"OK" -
10013     </p>
10014     <blockquote class="text">
10015     <p>on success
10016     </p>
10017     </blockquote>
10018    
10019    
10020     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10021     </p>
10022     <blockquote class="text">
10023     <p>If the formatting of the instruments database
10024     failed.
10025     </p>
10026     </blockquote>
10027    
10028    
10029     </blockquote><p>
10030    
10031     </p>
10032 iliev 1731 <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
10033     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10034     <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
10035     Checking for lost instrument files</h3>
10036    
10037     <p>The front-end can retrieve the list of all instrument files in the instruments database
10038     that don't exist in the filesystem by sending the following command:
10039     </p>
10040     <p>
10041     </p>
10042     <blockquote class="text">
10043     <p>FIND LOST DB_INSTRUMENT_FILES
10044     </p>
10045     </blockquote><p>
10046    
10047     </p>
10048     <p>Possible Answers:
10049     </p>
10050     <p>
10051     </p>
10052     <blockquote class="text">
10053     <p>A comma separated list with the absolute path names
10054     (encapsulated into apostrophes) of all lost instrument files.
10055     </p>
10056     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10057     </p>
10058     <blockquote class="text">
10059     <p>in case it failed, providing an appropriate error code and error message.
10060     </p>
10061     </blockquote>
10062    
10063    
10064     </blockquote><p>
10065    
10066     </p>
10067     <p>Example:
10068     </p>
10069     <p>
10070     </p>
10071     <blockquote class="text">
10072     <p>C: "FIND LOST DB_INSTRUMENT_FILES"
10073     </p>
10074     <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
10075     </p>
10076     </blockquote><p>
10077    
10078     </p>
10079     <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
10080     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10081     <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
10082     Replacing an instrument file</h3>
10083    
10084     <p>The front-end can substitute all occurrences of an instrument file
10085     in the instruments database with a new one by sending the following command:
10086     </p>
10087     <p>
10088     </p>
10089     <blockquote class="text">
10090     <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
10091     </p>
10092     </blockquote><p>
10093    
10094     </p>
10095     <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
10096     to substitute with &lt;new_path&gt;.
10097     </p>
10098     <p>Possible Answers:
10099     </p>
10100     <p>
10101     </p>
10102     <blockquote class="text">
10103     <p>"OK" -
10104     </p>
10105     <blockquote class="text">
10106     <p>on success
10107     </p>
10108     </blockquote>
10109    
10110    
10111     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10112     </p>
10113     <blockquote class="text">
10114     <p>in case it failed, providing an appropriate error code and error message.
10115     </p>
10116     </blockquote>
10117    
10118    
10119     </blockquote><p>
10120    
10121     </p>
10122     <p>Example:
10123     </p>
10124     <p>
10125     </p>
10126     <blockquote class="text">
10127     <p>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
10128     </p>
10129     <p>S: "OK"
10130     </p>
10131     </blockquote><p>
10132    
10133     </p>
10134 schoenebeck 1363 <a name="editing_instruments"></a><br /><hr />
10135     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10136     <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
10137     Editing Instruments</h3>
10138    
10139     <p>The sampler allows to edit instruments while playing with the
10140     sampler by spawning an external (3rd party) instrument editor
10141     application for a given instrument. The 3rd party instrument
10142     editor applications have to place a respective plugin DLL file
10143     into the sampler's plugins directory. The sampler will
10144     automatically try to load all plugin DLLs in that directory on
10145     startup and only on startup!
10146     </p>
10147     <p>At the moment there is only one command for this feature set,
10148     but this will most probably change in future.
10149     </p>
10150     <a name="EDIT INSTRUMENT"></a><br /><hr />
10151     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10152     <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
10153     Opening an appropriate instrument editor application</h3>
10154    
10155     <p>The front-end can request to open an appropriate instrument
10156     editor application by sending the following command:
10157     </p>
10158     <p>
10159     </p>
10160     <blockquote class="text">
10161 schoenebeck 1430 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
10162 schoenebeck 1363 </p>
10163     </blockquote><p>
10164    
10165     </p>
10166     <p>Where &lt;sampler-channel&gt; should be replaced by the
10167     number of the sampler channel as given by the
10168     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
10169     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
10170     command.
10171     </p>
10172     <p>The sampler will try to ask all registered instrument
10173     editors (or to be more specific: their sampler plugins)
10174     whether they are capable to handle the instrument on the
10175     given sampler channel. The sampler will simply use the first
10176     instrument editor application which replied with a positive
10177     answer and spawn that instrument editor application within
10178     the sampler's process and provide that application access
10179     to the instrument's data structures, so both applications
10180     can share and access the same instruments data at the same
10181     time, thus allowing to immediately hear changes with the
10182     sampler made by the instrument editor.
10183     </p>
10184     <p>Note: consequently instrument editors are always spawned
10185     locally on the same machine where the sampler is running
10186     on!
10187     </p>
10188     <p>Possible Answers:
10189     </p>
10190     <p>
10191     </p>
10192     <blockquote class="text">
10193     <p>"OK" -
10194     </p>
10195     <blockquote class="text">
10196     <p>when an appropriate instrument editor was
10197     launched
10198     </p>
10199     </blockquote>
10200    
10201    
10202     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10203     </p>
10204     <blockquote class="text">
10205     <p>when an appropriate instrument editor was
10206     launched, but there are noteworthy issues
10207     </p>
10208     </blockquote>
10209    
10210    
10211     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10212     </p>
10213     <blockquote class="text">
10214     <p>when an appropriate instrument editor
10215     could not be launched
10216     </p>
10217     </blockquote>
10218    
10219    
10220     </blockquote><p>
10221    
10222     </p>
10223     <p>Examples:
10224     </p>
10225     <p>
10226     </p>
10227     <blockquote class="text">
10228 schoenebeck 1430 <p>C: "EDIT CHANNEL INSTRUMENT 0"
10229 schoenebeck 1363 </p>
10230     <p>S: "OK"
10231     </p>
10232     </blockquote><p>
10233    
10234     </p>
10235 schoenebeck 1572 <a name="file_management"></a><br /><hr />
10236     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10237     <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
10238     Managing Files</h3>
10239    
10240     <p>You can query detailed informations about files located
10241     at the same system where the sampler instance is running on.
10242     Using this command set allows to retrieve file informations
10243     even remotely from another machine.
10244     </p>
10245     <a name="GET FILE INSTRUMENTS"></a><br /><hr />
10246     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10247     <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
10248     Retrieving amount of instruments of a file</h3>
10249    
10250     <p>The front-end can retrieve the amount of instruments
10251     within a given instrument file by sending the
10252     following command:
10253     </p>
10254     <p>
10255     </p>
10256     <blockquote class="text">
10257     <p>GET FILE INSTRUMENTS &lt;filename&gt;
10258     </p>
10259     </blockquote><p>
10260    
10261     </p>
10262     <p>Where &lt;filename&gt; is the name of the instrument
10263     file (encapsulated into apostrophes, supporting escape
10264     sequences as described in chapter
10265     "<a class='info' href='#character_set'>Character Set and Escape
10266     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
10267     </p>
10268     <p>The sampler will try to ask all sampler engines,
10269     whether they support the given file and ask the first
10270     engine with a positive answer for the amount of
10271     instruments.
10272     </p>
10273     <p>Possible Answers:
10274     </p>
10275     <p>
10276     </p>
10277     <blockquote class="text">
10278     <p>On success, the sampler will answer by
10279     returning the amount of instruments.
10280    
10281     </p>
10282     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10283     </p>
10284     <blockquote class="text">
10285     <p>if the file could not be handled
10286     </p>
10287     </blockquote>
10288    
10289    
10290     </blockquote><p>
10291    
10292     </p>
10293     <p>Examples:
10294     </p>
10295     <p>
10296     </p>
10297     <blockquote class="text">
10298     <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
10299     </p>
10300     <p>S: "10"
10301     </p>
10302     </blockquote><p>
10303    
10304     </p>
10305     <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
10306     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10307     <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
10308     Retrieving all instruments of a file</h3>
10309    
10310     <p>The front-end can retrieve a list of all instruments
10311     within a given instrument file by sending the
10312     following command:
10313     </p>
10314     <p>
10315     </p>
10316     <blockquote class="text">
10317     <p>LIST FILE INSTRUMENTS &lt;filename&gt;
10318     </p>
10319     </blockquote><p>
10320    
10321     </p>
10322     <p>Where &lt;filename&gt; is the name of the instrument
10323     file (encapsulated into apostrophes, supporting escape
10324     sequences as described in chapter
10325     "<a class='info' href='#character_set'>Character Set and Escape
10326     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
10327     </p>
10328     <p>The sampler will try to ask all sampler engines,
10329     whether they support the given file and ask the first
10330     engine with a positive answer for a list of IDs for the
10331     instruments in the given file.
10332     </p>
10333     <p>Possible Answers:
10334     </p>
10335     <p>
10336     </p>
10337     <blockquote class="text">
10338     <p>On success, the sampler will answer by
10339     returning a comma separated list of
10340     instrument IDs.
10341    
10342     </p>
10343     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10344     </p>
10345     <blockquote class="text">
10346     <p>if the file could not be handled
10347     </p>
10348     </blockquote>
10349    
10350    
10351     </blockquote><p>
10352    
10353     </p>
10354     <p>Examples:
10355     </p>
10356     <p>
10357     </p>
10358     <blockquote class="text">
10359     <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
10360     </p>
10361     <p>S: "0,1,2,3,4,5,6,7,8,9"
10362     </p>
10363     </blockquote><p>
10364    
10365     </p>
10366     <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
10367     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10368     <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
10369     Retrieving informations about one instrument in a file</h3>
10370    
10371     <p>The front-end can retrieve detailed informations
10372     about a specific instrument within a given instrument
10373     file by sending the following command:
10374     </p>
10375     <p>
10376     </p>
10377     <blockquote class="text">
10378     <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
10379     &lt;instr-id&gt;
10380     </p>
10381     </blockquote><p>
10382    
10383     </p>
10384     <p>Where &lt;filename&gt; is the name of the instrument
10385     file (encapsulated into apostrophes, supporting escape
10386     sequences as described in chapter
10387     "<a class='info' href='#character_set'>Character Set and Escape
10388     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
10389     instrument ID as returned by the
10390     <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.
10391     </p>
10392     <p>The sampler will try to ask all sampler engines,
10393     whether they support the given file and ask the first
10394     engine with a positive answer for informations about the
10395     specific instrument in the given file.
10396     </p>
10397     <p>Possible Answers:
10398     </p>
10399     <p>
10400     </p>
10401     <blockquote class="text">
10402     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10403     Each answer line begins with the settings category name
10404     followed by a colon and then a space character &lt;SP&gt; and finally
10405     the info character string to that setting category. At the
10406     moment the following categories are defined:
10407     </p>
10408     <p>
10409     </p>
10410     <blockquote class="text">
10411     <p>NAME -
10412     </p>
10413     <blockquote class="text">
10414     <p>name of the instrument as
10415     stored in the instrument file
10416     </p>
10417     </blockquote>
10418    
10419    
10420     <p>FORMAT_FAMILY -
10421     </p>
10422     <blockquote class="text">
10423     <p>name of the sampler format
10424     of the given instrument
10425     </p>
10426     </blockquote>
10427    
10428    
10429     <p>FORMAT_VERSION -
10430     </p>
10431     <blockquote class="text">
10432     <p>version of the sampler format
10433     the instrumen is stored as
10434     </p>
10435     </blockquote>
10436    
10437    
10438     <p>PRODUCT -
10439     </p>
10440     <blockquote class="text">
10441     <p>official product name of the
10442     instrument as stored in the file
10443    
10444     </p>
10445     </blockquote>
10446    
10447    
10448     <p>ARTISTS -
10449     </p>
10450     <blockquote class="text">
10451     <p>artists / sample library
10452     vendor of the instrument
10453     </p>
10454     </blockquote>
10455    
10456    
10457 iliev 1773 <p>KEY_BINDINGS -
10458     </p>
10459     <blockquote class="text">
10460     <p>comma separated list of integer values representing
10461     the instrument's key mapping in the range between 0 .. 127,
10462     reflecting the analog meaning of the MIDI specification.
10463     </p>
10464 schoenebeck 1572 </blockquote>
10465 iliev 1773
10466    
10467     <p>KEYSWITCH_BINDINGS -
10468     </p>
10469     <blockquote class="text">
10470     <p>comma separated list of integer values representing
10471     the instrument's keyswitch mapping in the range between 0 .. 127,
10472     reflecting the analog meaning of the MIDI specification.
10473     </p>
10474     </blockquote>
10475    
10476    
10477     </blockquote>
10478 schoenebeck 1572
10479    
10480     </blockquote><p>
10481    
10482     </p>
10483     <p>The mentioned fields above don't have to be in particular order.
10484     </p>
10485     <p>Example:
10486     </p>
10487     <p>
10488     </p>
10489     <blockquote class="text">
10490     <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
10491     </p>
10492     <p>S: "NAME: Lunatic Loops"
10493     </p>
10494     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
10495     </p>
10496     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
10497     </p>
10498     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
10499     </p>
10500     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
10501     </p>
10502     <p>&nbsp;&nbsp;&nbsp;"."
10503     </p>
10504     </blockquote><p>
10505    
10506     </p>
10507 schoenebeck 2139 <a name="effects"></a><br /><hr />
10508     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10509     <a name="rfc.section.6.11"></a><h3>6.11.&nbsp;
10510     Managing Effects</h3>
10511    
10512     <p>Audio effects (e.g. reverb, delay, compression) can be
10513     applied to the audio signals generated by the sampler. The
10514     sampler usually provides a set of internal audio effects for
10515     this task. The exact set of effects depends on the availability
10516     of third party effect plugins installed on the system where the
10517     sampler runs on.
10518     </p>
10519     <p>At the moment only "send effects" are supported. Support for
10520     "insert effects" and "master effects" is planned to be added at
10521     a later point.
10522     </p>
10523     <p>The following commands allow to retrieve the set of internal
10524     effects available to the sampler, detailed informations about
10525     those effects and to create and destroy instances of such
10526     effects. After an instance of an effect is created, the effect
10527     instance can be inserted into the audio signal path of the
10528     sampler, e.g. as send effect.
10529     </p>
10530     <p>The sampler allows to create an arbitrary amount of so called
10531     send effect chains. Each effect chain can host an arbitrary
10532     amount of effect instances. The output of the first effect
10533     instance in an effect chain is fed to the input of the second
10534     effect instance of the chain and so on. So effects in one chain
10535     are processed sequentially. Send effect chains however are
10536     processed in parallel to other send effect chains. Audio signals
10537     of sampler channels are fed to send effects by creating FX sends
10538     to the respective sampler channel and assigning a destination
10539     send effect to that FX by using the
10540 schoenebeck 2141 <a class='info' href='#SET FX_SEND EFFECT'>"SET FX_SEND EFFECT"<span> (</span><span class='info'>Assigning destination effect to an effect send</span><span>)</span></a>
10541 schoenebeck 2139 command. The latter allows to route the FX send to the beginning
10542     of a send effect chain, as well as directly to any other
10543     position of the send effect chain.
10544     </p>
10545     <a name="GET AVAILABLE_EFFECTS"></a><br /><hr />
10546     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10547     <a name="rfc.section.6.11.1"></a><h3>6.11.1.&nbsp;
10548     Retrieve amount of available effects</h3>
10549    
10550     <p>The front-end can retrieve the amount of internal
10551     effects, available to the sampler by sending
10552     the following command:
10553     </p>
10554     <p>
10555     </p>
10556     <blockquote class="text">
10557     <p>GET AVAILABLE_EFFECTS
10558     </p>
10559     </blockquote><p>
10560    
10561     </p>
10562     <p>Possible Answers:
10563     </p>
10564     <p>
10565     </p>
10566     <blockquote class="text">
10567     <p>The sampler will answer by returning the current
10568     number of effects available to the sampler.
10569     </p>
10570     </blockquote><p>
10571    
10572     </p>
10573     <p>Examples:
10574     </p>
10575     <p>
10576     </p>
10577     <blockquote class="text">
10578     <p>C: "GET AVAILABLE_EFFECTS"
10579     </p>
10580     <p>S: "129"
10581     </p>
10582     </blockquote><p>
10583    
10584     </p>
10585     <a name="LIST AVAILABLE_EFFECTS"></a><br /><hr />
10586     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10587     <a name="rfc.section.6.11.2"></a><h3>6.11.2.&nbsp;
10588     Get list of available effects</h3>
10589    
10590     <p>The set of available internal effects can change at
10591     runtime. The front-end can retrieve the list of internal
10592     effects, available to the sampler by sending the following
10593     command:
10594     </p>
10595     <p>
10596     </p>
10597     <blockquote class="text">
10598     <p>LIST AVAILABLE_EFFECTS
10599     </p>
10600     </blockquote><p>
10601    
10602     </p>
10603     <p>Possible Answers:
10604     </p>
10605     <p>
10606     </p>
10607     <blockquote class="text">
10608     <p>The sampler will answer by returning a comma
10609     separated list with numerical IDs of effects. Note:
10610     the numercial ID of an effect is generated by the
10611     sampler for the current moment. The numerical ID of
10612     the same effect can change at runtime, e.g. when the
10613     user requests a rescan of available effect plugins.
10614    
10615     </p>
10616     </blockquote><p>
10617    
10618     </p>
10619     <p>Example:
10620     </p>
10621     <p>
10622     </p>
10623     <blockquote class="text">
10624     <p>C: "LIST AVAILABLE_EFFECTS"
10625     </p>
10626     <p>S: "5,6,7,120,121,122,123,124"
10627     </p>
10628     </blockquote><p>
10629    
10630     </p>
10631     <a name="GET EFFECT INFO"></a><br /><hr />
10632     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10633     <a name="rfc.section.6.11.3"></a><h3>6.11.3.&nbsp;
10634     Retrieving general information about an effect</h3>
10635    
10636     <p>The front-end can ask for general informations about an
10637     effect by sending the following command:
10638     </p>
10639     <p>
10640     </p>
10641     <blockquote class="text">
10642     <p>GET EFFECT INFO &lt;effect-index&gt;
10643     </p>
10644     </blockquote><p>
10645    
10646     </p>
10647     <p>Where &lt;effect-index&gt; is the numerical ID of an
10648     effect as returned by the
10649     <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10650     command.
10651     </p>
10652     <p>Possible Answers:
10653     </p>
10654     <p>
10655     </p>
10656     <blockquote class="text">
10657     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10658     Each answer line begins with the effect information
10659     category name, followed by a colon and then a space
10660     character &lt;SP&gt; and finally the info character
10661     string to that effect information category. At the
10662     moment the following categories are defined:
10663     </p>
10664     <p>
10665     </p>
10666     <blockquote class="text">
10667     <p>SYSTEM -
10668     </p>
10669     <blockquote class="text">
10670     <p>name of the effect plugin system
10671     the effect is based on
10672     (e.g. "LADSPA")
10673     </p>
10674     </blockquote>
10675    
10676    
10677     <p>MODULE -
10678     </p>
10679     <blockquote class="text">
10680     <p>module of the effect plugin
10681     system that contains this effect,
10682     the module is usually the
10683     dynamic-linked library (DLL)
10684     filename of the effect plugin,
10685     including full path (note that this
10686     filename may contain
10687     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10688     </p>
10689     </blockquote>
10690    
10691    
10692     <p>NAME -
10693     </p>
10694     <blockquote class="text">
10695     <p>character string defining the
10696     unique name of the effect within its
10697     module (note that the character
10698     string may contain
10699     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10700     </p>
10701     </blockquote>
10702    
10703    
10704     <p>DESCRIPTION -
10705     </p>
10706     <blockquote class="text">
10707     <p>human readable name of the
10708     effect, intended to be displayed in
10709     user interfaces (note that the
10710     character string may contain
10711     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10712     </p>
10713     </blockquote>
10714    
10715    
10716     </blockquote>
10717    
10718    
10719     </blockquote><p>
10720    
10721     </p>
10722     <p>The mentioned fields above don't have to be in particular order.
10723     </p>
10724     <p>Example:
10725     </p>
10726     <p>
10727     </p>
10728     <blockquote class="text">
10729     <p>C: "GET EFFECT INFO 121"
10730     </p>
10731     <p>S: "SYSTEM: LADSPA"
10732     </p>
10733     <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/lowpass_iir_1891.so"
10734     </p>
10735     <p>&nbsp;&nbsp;&nbsp;"NAME: lowpass_iir"
10736     </p>
10737     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Glame Lowpass Filter"
10738     </p>
10739     <p>&nbsp;&nbsp;&nbsp;"."
10740     </p>
10741     </blockquote><p>
10742    
10743     </p>
10744     <a name="CREATE EFFECT_INSTANCE"></a><br /><hr />
10745     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10746     <a name="rfc.section.6.11.4"></a><h3>6.11.4.&nbsp;
10747     Creating an instance of an effect by its portable ID</h3>
10748    
10749     <p>The front-end can spawn an instance of the desired
10750     effect by sending the following command:
10751     </p>
10752     <p>
10753     </p>
10754     <blockquote class="text">
10755     <p>CREATE EFFECT_INSTANCE &lt;effect-system&gt; &lt;module&gt; &lt;effect-name&gt;
10756     </p>
10757     </blockquote><p>
10758    
10759     </p>
10760     <p>Where &lt;effect-system&gt; is the "SYSTEM" field,
10761     &lt;module&gt; the "MODULE" field and &lt;effect-name&gt;
10762     the "NAME" field as returned by the
10763     <a class='info' href='#GET EFFECT INFO'>"GET EFFECT INFO"<span> (</span><span class='info'>Retrieving general information about an effect</span><span>)</span></a>
10764     command. The filename of argument &lt;module&gt; and the
10765     character string of argument &lt;effect-name&gt; may contain
10766     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
10767     </p>
10768     <p>The sampler will try to load the requested effect and to
10769     create an instance of it. To allow loading the same effect
10770     on a different machine, probably even running a completely
10771     different operating system (e.g. Linux vs. Windows), the
10772     sampler tries to match &lt;module&gt; "softly". That means
10773     it first tries to find an effect that exactly matches the
10774     given &lt;module&gt; argument. If there is no exact match,
10775     the sampler will try to lower the restrictions on matching
10776     the &lt;module&gt; argument more and more, e.g. by ignoring
10777     upper / lower case differences and by ignoring the path of
10778     the DLL filename and file extension. If there is still no
10779     match at the end, the sampler will try to ignore the
10780     &lt;module&gt; argument completely and as a last resort
10781     search for an effect that only matches the given
10782     &lt;effect-system&gt; and &lt;effect-name&gt; arguments.
10783     </p>
10784     <p>Possible Answers:
10785     </p>
10786     <p>
10787     </p>
10788     <blockquote class="text">
10789     <p>"OK[&lt;effect-instance&gt;]" -
10790     </p>
10791     <blockquote class="text">
10792     <p>in case the effect instance was
10793     successfully created, where
10794     &lt;effect-instance&gt; is the numerical ID
10795     of the new effect instance
10796     </p>
10797     </blockquote>
10798    
10799    
10800     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10801     </p>
10802     <blockquote class="text">
10803     <p>in case the effect instance was spawned
10804     successfully, but there are noteworthy
10805     issue(s) related, providing an appropriate
10806     warning code and warning message
10807     </p>
10808     </blockquote>
10809    
10810    
10811     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10812     </p>
10813     <blockquote class="text">
10814     <p>if the effect could not be instantiated
10815     </p>
10816     </blockquote>
10817    
10818    
10819     </blockquote><p>
10820    
10821     </p>
10822     <p>Examples:
10823     </p>
10824     <p>
10825     </p>
10826     <blockquote class="text">
10827     <p>C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'"
10828     </p>
10829     <p>S: "OK[0]"
10830     </p>
10831     </blockquote><p>
10832    
10833     </p>
10834     <a name="CREATE EFFECT_INSTANCE (non-portable)"></a><br /><hr />
10835     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10836     <a name="rfc.section.6.11.5"></a><h3>6.11.5.&nbsp;
10837     Creating an instance of an effect by its numerical ID</h3>
10838    
10839     <p>The front-end can spawn an instance of the desired
10840     effect by sending the following command:
10841     </p>
10842     <p>
10843     </p>
10844     <blockquote class="text">
10845     <p>CREATE EFFECT_INSTANCE &lt;effect-index&gt;
10846     </p>
10847     </blockquote><p>
10848    
10849     </p>
10850     <p>Where &lt;effect-index&gt; is the numerical ID of the
10851     effect as returned by the
10852     <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10853     command.
10854     </p>
10855     <p>The sampler will try to load the requested effect and to
10856     create an instance of it.
10857     </p>
10858     <p>Note: Since the numerical ID of a certain effect can
10859     change at any time, you should not use this command in
10860     LSCP files to restore a certain effect at a later time! To
10861     store a sampler session including all its effects, use the
10862     <a class='info' href='#CREATE EFFECT_INSTANCE'>portable text-based
10863     version of "CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> instead! This
10864     allows to restore a sampler session with all its effects
10865     also on other machines, possibly even running a completely
10866     different operating system (e.g. Linux vs. Windows), with
10867     different plugin directories or plugin DLL names.
10868     </p>
10869     <p>Possible Answers:
10870     </p>
10871     <p>
10872     </p>
10873     <blockquote class="text">
10874     <p>"OK[&lt;effect-instance&gt;]" -
10875     </p>
10876     <blockquote class="text">
10877     <p>in case the effect instance was
10878     successfully created, where
10879     &lt;effect-instance&gt; is the numerical ID
10880     of the new effect instance
10881     </p>
10882     </blockquote>
10883    
10884    
10885     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10886     </p>
10887     <blockquote class="text">
10888     <p>in case the effect instance was spawned
10889     successfully, but there are noteworthy
10890     issue(s) related, providing an appropriate
10891     warning code and warning message
10892     </p>
10893     </blockquote>
10894    
10895    
10896     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10897     </p>
10898     <blockquote class="text">
10899     <p>if the effect could not be instantiated
10900     </p>
10901     </blockquote>
10902    
10903    
10904     </blockquote><p>
10905    
10906     </p>
10907     <p>Examples:
10908     </p>
10909     <p>
10910     </p>
10911     <blockquote class="text">
10912     <p>C: "CREATE EFFECT_INSTANCE 72"
10913     </p>
10914     <p>S: "OK[5]"
10915     </p>
10916     </blockquote><p>
10917    
10918     </p>
10919     <a name="DESTROY EFFECT_INSTANCE"></a><br /><hr />
10920     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10921     <a name="rfc.section.6.11.6"></a><h3>6.11.6.&nbsp;
10922     Destroy an effect instance</h3>
10923    
10924     <p>The front-end can destroy an unusued effect instance and
10925     thus freeing it from memory by sending the following command:
10926     </p>
10927     <p>
10928     </p>
10929     <blockquote class="text">
10930     <p>DESTROY EFFECT_INSTANCE &lt;effect-instance&gt;
10931     </p>
10932     </blockquote><p>
10933    
10934     </p>
10935     <p>Where &lt;effect-instance&gt; is the numerical ID of the
10936     effect instance as returned by the
10937     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
10938     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10939     command.
10940     </p>
10941     <p>The effect instance can only be destroyed if it's not
10942     used in any part of the sampler's audio signal path anymore.
10943     If the effect instance is still in use somewhere, trying to
10944     destroy the effect instance will result in an error
10945     message.
10946     </p>
10947     <p>Possible Answers:
10948     </p>
10949     <p>
10950     </p>
10951     <blockquote class="text">
10952     <p>"OK" -
10953     </p>
10954     <blockquote class="text">
10955     <p>in case the effect instance was successfully destroyed
10956     </p>
10957     </blockquote>
10958    
10959    
10960     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10961     </p>
10962     <blockquote class="text">
10963     <p>in case it failed, providing an appropriate error code and
10964     error message
10965     </p>
10966     </blockquote>
10967    
10968    
10969     </blockquote><p>
10970    
10971     </p>
10972     <p>Examples:
10973     </p>
10974     <p>
10975     </p>
10976     <blockquote class="text">
10977     <p>C: "DESTROY EFFECT_INSTANCE 5"
10978     </p>
10979     <p>S: "OK"
10980     </p>
10981     </blockquote><p>
10982    
10983     </p>
10984     <a name="GET EFFECT_INSTANCES"></a><br /><hr />
10985     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10986     <a name="rfc.section.6.11.7"></a><h3>6.11.7.&nbsp;
10987     Retrieve amount of effect instances</h3>
10988    
10989     <p>The front-end can retrieve the current amount of effect
10990     instances by sending the following command:
10991     </p>
10992     <p>
10993     </p>
10994     <blockquote class="text">
10995     <p>GET EFFECT_INSTANCES
10996     </p>
10997     </blockquote><p>
10998    
10999     </p>
11000     <p>Possible Answers:
11001     </p>
11002     <p>
11003     </p>
11004     <blockquote class="text">
11005     <p>The sampler will answer by returning the current
11006     number of effect instances created and not yet
11007     destroyed in the current sampler session.
11008     </p>
11009     </blockquote><p>
11010    
11011     </p>
11012     <p>Examples:
11013     </p>
11014     <p>
11015     </p>
11016     <blockquote class="text">
11017     <p>C: "GET EFFECT_INSTANCES"
11018     </p>
11019     <p>S: "14"
11020     </p>
11021     </blockquote><p>
11022    
11023     </p>
11024     <a name="LIST EFFECT_INSTANCES"></a><br /><hr />
11025     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11026     <a name="rfc.section.6.11.8"></a><h3>6.11.8.&nbsp;
11027     Get list of effect instances</h3>
11028    
11029     <p>The front-end can retrieve the current list of effect
11030     instances by sending the following command:
11031     </p>
11032     <p>
11033     </p>
11034     <blockquote class="text">
11035     <p>LIST EFFECT_INSTANCES
11036     </p>
11037     </blockquote><p>
11038    
11039     </p>
11040     <p>Possible Answers:
11041     </p>
11042     <p>
11043     </p>
11044     <blockquote class="text">
11045     <p>The sampler will answer by returning a comma
11046     separated list with numerical IDs of effects
11047     instances.
11048    
11049     </p>
11050     </blockquote><p>
11051    
11052     </p>
11053     <p>Example:
11054     </p>
11055     <p>
11056     </p>
11057     <blockquote class="text">
11058     <p>C: "LIST EFFECT_INSTANCES"
11059     </p>
11060     <p>S: "9,11,14,15,16,17,25"
11061     </p>
11062     </blockquote><p>
11063    
11064     </p>
11065     <a name="GET EFFECT_INSTANCE INFO"></a><br /><hr />
11066     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11067     <a name="rfc.section.6.11.9"></a><h3>6.11.9.&nbsp;
11068     Retrieving current information about an effect instance</h3>
11069    
11070     <p>The front-end can ask for the current informations about
11071     a particular effect instance by sending the following command:
11072     </p>
11073     <p>
11074     </p>
11075     <blockquote class="text">
11076     <p>GET EFFECT_INSTANCE INFO &lt;effect-instance&gt;
11077     </p>
11078     </blockquote><p>
11079    
11080     </p>
11081     <p>Where &lt;effect-instance&gt; is the numerical ID of an
11082     effect instance as returned by the
11083     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
11084     or
11085     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11086     command.
11087     </p>
11088     <p>Possible Answers:
11089     </p>
11090     <p>
11091     </p>
11092     <blockquote class="text">
11093     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11094     Each answer line begins with the information
11095     category name, followed by a colon and then a space
11096     character &lt;SP&gt; and finally the info character
11097     string to that information category. At the
11098     moment the following categories are defined:
11099     </p>
11100     <p>
11101     </p>
11102     <blockquote class="text">
11103     <p>SYSTEM -
11104     </p>
11105     <blockquote class="text">
11106     <p>name of the effect plugin system
11107     the effect is based on
11108     (e.g. "LADSPA")
11109     </p>
11110     </blockquote>
11111    
11112    
11113     <p>MODULE -
11114     </p>
11115     <blockquote class="text">
11116     <p>module of the effect plugin
11117     system that contains this effect,
11118     the module is usually the
11119     dynamic-linked library (DLL)
11120     filename of the effect plugin,
11121     including full path (note that this
11122     filename may contain
11123     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11124     </p>
11125     </blockquote>
11126    
11127    
11128     <p>NAME -
11129     </p>
11130     <blockquote class="text">
11131     <p>character string defining the
11132     unique name of the effect within its
11133     module (note that the character
11134     string may contain
11135     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11136     </p>
11137     </blockquote>
11138    
11139    
11140     <p>DESCRIPTION -
11141     </p>
11142     <blockquote class="text">
11143     <p>human readable name of the
11144     effect, intended to be displayed in
11145     user interfaces (note that the
11146     character string may contain
11147     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11148     </p>
11149     </blockquote>
11150    
11151    
11152     <p>INPUT_CONTROLS -
11153     </p>
11154     <blockquote class="text">
11155     <p>amount of input controls the
11156     effect instance provides, to allow
11157     controlling the effect parameters in
11158     realtime
11159     </p>
11160     </blockquote>
11161    
11162    
11163     </blockquote>
11164    
11165    
11166     </blockquote><p>
11167    
11168     </p>
11169     <p>The mentioned fields above don't have to be in particular order.
11170     </p>
11171     <p>Example:
11172     </p>
11173     <p>
11174     </p>
11175     <blockquote class="text">
11176     <p>C: "GET EFFECT_INSTANCE INFO 3"
11177     </p>
11178     <p>S: "SYSTEM: LADSPA"
11179     </p>
11180     <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/mod_delay_1419.so"
11181     </p>
11182     <p>&nbsp;&nbsp;&nbsp;"NAME: modDelay"
11183     </p>
11184     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Modulatable delay"
11185     </p>
11186     <p>&nbsp;&nbsp;&nbsp;"INPUT_CONTROLS: 1"
11187     </p>
11188     <p>&nbsp;&nbsp;&nbsp;"."
11189     </p>
11190     </blockquote><p>
11191    
11192     </p>
11193     <a name="GET EFFECT_INSTANCE_INPUT_CONTROL INFO"></a><br /><hr />
11194     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11195     <a name="rfc.section.6.11.10"></a><h3>6.11.10.&nbsp;
11196     Retrieving information about an effect parameter</h3>
11197    
11198     <p>Effects typically provide a certain set of effect
11199     parameters which can be altered by the user in realtime
11200     (e.g. depth of a reverb effect, duration of a delay effect,
11201     dry / wet signal ratio). Those controllable effect parameters
11202     are called "input controls". The front-end can ask for the
11203     current informations of an effect instance's input control
11204     by sending the following command:
11205     </p>
11206     <p>
11207     </p>
11208     <blockquote class="text">
11209     <p>GET EFFECT_INSTANCE_INPUT_CONTROL INFO &lt;effect-instance&gt; &lt;input-control&gt;
11210     </p>
11211     </blockquote><p>
11212    
11213     </p>
11214     <p>Where &lt;effect-instance&gt; is the numerical ID of an
11215     effect instance as returned by the
11216     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
11217     or
11218     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11219     command and &lt;input-control&gt; is the index of the input
11220     control within the numerical bounds as returned by the
11221     "INPUT_CONTROLS" field of the
11222     <a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
11223     command.
11224     </p>
11225     <p>Possible Answers:
11226     </p>
11227     <p>
11228     </p>
11229     <blockquote class="text">
11230     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11231     Each answer line begins with the information
11232     category name, followed by a colon and then a space
11233     character &lt;SP&gt; and finally the info character
11234     string to that information category. There are
11235     information categories which are always returned,
11236     independent of the respective effect parameter and
11237     there are optional information categories
11238     which are only shown for certain effect parameters.
11239     At the moment the following categories are defined:
11240     </p>
11241     <p>
11242     </p>
11243     <blockquote class="text">
11244     <p>DESCRIPTION -
11245     </p>
11246     <blockquote class="text">
11247     <p>(always returned)
11248     human readable name of the
11249     effect parameter, intended to be
11250     displayed in user interfaces (note
11251     that the character string may
11252     contain <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
11253     </p>
11254     </blockquote>
11255    
11256    
11257     <p>VALUE -
11258     </p>
11259     <blockquote class="text">
11260     <p>
11261     (always returned)
11262     current (optional dotted)
11263     floating point value of this effect
11264     parameter
11265     </p>
11266     </blockquote>
11267    
11268    
11269     <p>RANGE_MIN -
11270     </p>
11271     <blockquote class="text">
11272     <p>
11273     (optionally returned)
11274     minimum allowed value for this
11275     effect parameter
11276     </p>
11277     </blockquote>
11278    
11279    
11280     <p>RANGE_MAX -
11281     </p>
11282     <blockquote class="text">
11283     <p>
11284     (optionally returned)
11285     maximum allowed value for this
11286     effect parameter
11287     </p>
11288     </blockquote>
11289    
11290    
11291     <p>POSSIBILITIES -
11292     </p>
11293     <blockquote class="text">
11294     <p>
11295     (optionally returned)
11296     comma separated list of
11297     (optional dotted) floating point
11298     numbers, reflecting the exact set of
11299     possible values for this effect
11300     parameter
11301     </p>
11302     </blockquote>
11303    
11304    
11305     <p>DEFAULT -
11306     </p>
11307     <blockquote class="text">
11308     <p>
11309     (optionally returned)
11310     default value of this effect
11311     parameter
11312     </p>
11313     </blockquote>
11314    
11315    
11316     </blockquote>
11317    
11318    
11319     </blockquote><p>
11320    
11321     </p>
11322     <p>The mentioned fields above don't have to be in particular order.
11323     </p>
11324     <p>Example:
11325     </p>
11326     <p>
11327     </p>
11328     <blockquote class="text">
11329     <p>C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0"
11330     </p>
11331 schoenebeck 2143 <p>S: "DESCRIPTION: Base delay (s)"
11332 schoenebeck 2139 </p>
11333     <p>&nbsp;&nbsp;&nbsp;"VALUE: 0.500"
11334     </p>
11335     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 0.000"
11336     </p>
11337     <p>&nbsp;&nbsp;&nbsp;"."
11338     </p>
11339     </blockquote><p>
11340    
11341     </p>
11342     <a name="SET EFFECT_INSTANCE_INPUT_CONTROL VALUE"></a><br /><hr />
11343     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11344     <a name="rfc.section.6.11.11"></a><h3>6.11.11.&nbsp;
11345     Altering an effect parameter</h3>
11346    
11347     <p>The front-end can alter the current value of an effect
11348     parameter by sending the following command:
11349     </p>
11350     <p>
11351     </p>
11352     <blockquote class="text">
11353     <p>SET EFFECT_INSTANCE_INPUT_CONTROL VALUE &lt;effect-instance&gt; &lt;input-control&gt; &lt;value&gt;
11354     </p>
11355     </blockquote><p>
11356    
11357     </p>
11358     <p>Where &lt;effect-instance&gt; is the numerical ID of the
11359     effect instance as returned by the
11360     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
11361     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11362     command, &lt;input-control&gt; is the index of the input
11363     control within the numerical bounds as returned by the
11364     "INPUT_CONTROLS" field of the
11365     <a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
11366     command and &lt;value&gt; is the new (optional dotted)
11367     floating point value for this effect parameter.
11368     </p>
11369     <p>Possible Answers:
11370     </p>
11371     <p>
11372     </p>
11373     <blockquote class="text">
11374     <p>"OK" -
11375     </p>
11376     <blockquote class="text">
11377     <p>in case the effect was altered successfully
11378     </p>
11379     </blockquote>
11380    
11381    
11382     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11383     </p>
11384     <blockquote class="text">
11385     <p>in case it failed, providing an appropriate error code and
11386     error message
11387     </p>
11388     </blockquote>
11389    
11390    
11391     </blockquote><p>
11392    
11393     </p>
11394     <p>Examples:
11395     </p>
11396     <p>
11397     </p>
11398     <blockquote class="text">
11399     <p>C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5"
11400     </p>
11401     <p>S: "OK"
11402     </p>
11403     </blockquote><p>
11404    
11405     </p>
11406     <a name="GET SEND_EFFECT_CHAINS"></a><br /><hr />
11407     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11408     <a name="rfc.section.6.11.12"></a><h3>6.11.12.&nbsp;
11409     Retrieve amount of send effect chains</h3>
11410    
11411     <p>The front-end can retrieve the current amount of send
11412     effect chains of an audio output device by sending the
11413     following command:
11414     </p>
11415     <p>
11416     </p>
11417     <blockquote class="text">
11418     <p>GET SEND_EFFECT_CHAINS &lt;audio-device&gt;
11419     </p>
11420     </blockquote><p>
11421    
11422     </p>
11423     <p>Where &lt;audio-device&gt; should be replaced by the
11424     numerical ID of the audio output device as given by the
11425     <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>
11426     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>
11427     command.
11428     </p>
11429     <p>Possible Answers:
11430     </p>
11431     <p>
11432     </p>
11433     <blockquote class="text">
11434     <p>The sampler will answer by returning the current
11435     number of send effect chains of the supplied audio
11436     output device.
11437     </p>
11438     </blockquote><p>
11439    
11440     </p>
11441     <p>Examples:
11442     </p>
11443     <p>
11444     </p>
11445     <blockquote class="text">
11446     <p>C: "GET SEND_EFFECT_CHAINS 0"
11447     </p>
11448     <p>S: "4"
11449     </p>
11450     </blockquote><p>
11451    
11452     </p>
11453     <a name="LIST SEND_EFFECT_CHAINS"></a><br /><hr />
11454     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11455     <a name="rfc.section.6.11.13"></a><h3>6.11.13.&nbsp;
11456     Retrieve list of send effect chains</h3>
11457    
11458     <p>The front-end can retrieve the current list of send
11459     effect chains of an audio output device by sending the
11460     following command:
11461     </p>
11462     <p>
11463     </p>
11464     <blockquote class="text">
11465     <p>LIST SEND_EFFECT_CHAINS &lt;audio-device&gt;
11466     </p>
11467     </blockquote><p>
11468    
11469     </p>
11470     <p>Where &lt;audio-device&gt; should be replaced by the
11471     numerical ID of the audio output device as given by the
11472     <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>
11473     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>
11474     command.
11475     </p>
11476     <p>Possible Answers:
11477     </p>
11478     <p>
11479     </p>
11480     <blockquote class="text">
11481     <p>The sampler will answer by returning a comma
11482     separated list with numerical IDs of send effect
11483     chains of the supplied audio output device.
11484    
11485     </p>
11486     </blockquote><p>
11487    
11488     </p>
11489     <p>Examples:
11490     </p>
11491     <p>
11492     </p>
11493     <blockquote class="text">
11494     <p>C: "LIST SEND_EFFECT_CHAINS 0"
11495     </p>
11496     <p>S: "3,4,7"
11497     </p>
11498     </blockquote><p>
11499    
11500     </p>
11501     <a name="ADD SEND_EFFECT_CHAIN"></a><br /><hr />
11502     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11503     <a name="rfc.section.6.11.14"></a><h3>6.11.14.&nbsp;
11504     Add send effect chain</h3>
11505    
11506     <p>The front-end can add a send effect chain by sending the
11507     following command:
11508     </p>
11509     <p>
11510     </p>
11511     <blockquote class="text">
11512     <p>ADD SEND_EFFECT_CHAIN &lt;audio-device&gt;
11513     </p>
11514     </blockquote><p>
11515    
11516     </p>
11517     <p>Where &lt;audio-device&gt; should be replaced by the
11518     numerical ID of the audio output device as given by the
11519     <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>
11520     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>
11521     command.
11522     </p>
11523     <p>Possible Answers:
11524     </p>
11525     <p>
11526     </p>
11527     <blockquote class="text">
11528     <p>"OK[&lt;effect-chain&gt;]" -
11529     </p>
11530     <blockquote class="text">
11531     <p>in case the send effect chain was
11532     added successfully, where
11533     &lt;effect-chain&gt; is the numerical ID
11534     of the new send effect chain
11535     </p>
11536     </blockquote>
11537    
11538    
11539     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11540     </p>
11541     <blockquote class="text">
11542     <p>if the send effect chain could not be added
11543     </p>
11544     </blockquote>
11545    
11546    
11547     </blockquote><p>
11548    
11549     </p>
11550     <p>Examples:
11551     </p>
11552     <p>
11553     </p>
11554     <blockquote class="text">
11555     <p>C: "ADD SEND_EFFECT_CHAIN 0"
11556     </p>
11557     <p>S: "OK[2]"
11558     </p>
11559     </blockquote><p>
11560    
11561     </p>
11562     <a name="REMOVE SEND_EFFECT_CHAIN"></a><br /><hr />
11563     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11564     <a name="rfc.section.6.11.15"></a><h3>6.11.15.&nbsp;
11565     Remove send effect chain</h3>
11566    
11567     <p>The front-end can remove a send effect chain by sending
11568     the following command:
11569     </p>
11570     <p>
11571     </p>
11572     <blockquote class="text">
11573     <p>REMOVE SEND_EFFECT_CHAIN &lt;audio-device&gt; &lt;effect-chain&gt;
11574     </p>
11575     </blockquote><p>
11576    
11577     </p>
11578     <p>Where &lt;audio-device&gt; should be replaced by the
11579     numerical ID of the audio output device as given by the
11580     <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>
11581     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>
11582     command and &lt;effect-chain&gt; by the numerical ID as
11583     returned by the
11584     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11585     or
11586     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11587     command.
11588     </p>
11589     <p>Possible Answers:
11590     </p>
11591     <p>
11592     </p>
11593     <blockquote class="text">
11594     <p>"OK" -
11595     </p>
11596     <blockquote class="text">
11597     <p>in case the send effect chain was
11598     removed successfully
11599     </p>
11600     </blockquote>
11601    
11602    
11603     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11604     </p>
11605     <blockquote class="text">
11606     <p>if the send effect chain could not be removed
11607     </p>
11608     </blockquote>
11609    
11610    
11611     </blockquote><p>
11612    
11613     </p>
11614     <p>Examples:
11615     </p>
11616     <p>
11617     </p>
11618     <blockquote class="text">
11619     <p>C: "REMOVE SEND_EFFECT_CHAIN 0 2"
11620     </p>
11621     <p>S: "OK"
11622     </p>
11623     </blockquote><p>
11624    
11625     </p>
11626     <a name="GET SEND_EFFECT_CHAIN INFO"></a><br /><hr />
11627     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11628     <a name="rfc.section.6.11.16"></a><h3>6.11.16.&nbsp;
11629     Retrieving information about a send effect chain</h3>
11630    
11631     <p>The front-end can ask for informations of a send effect
11632     chain by sending the following command:
11633     </p>
11634     <p>
11635     </p>
11636     <blockquote class="text">
11637     <p>GET SEND_EFFECT_CHAIN INFO &lt;audio-device&gt; &lt;effect-chain&gt;
11638     </p>
11639     </blockquote><p>
11640    
11641     </p>
11642     <p>Where &lt;audio-device&gt; should be replaced by the
11643     numerical ID of the audio output device as given by the
11644     <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>
11645     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>
11646     command and &lt;effect-chain&gt; by the numerical ID as
11647     returned by the
11648     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11649     or
11650     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11651     command.
11652     </p>
11653     <p>Possible Answers:
11654     </p>
11655     <p>
11656     </p>
11657     <blockquote class="text">
11658     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11659     Each answer line begins with the information
11660     category name, followed by a colon and then a space
11661     character &lt;SP&gt; and finally the info character
11662     string to that information category.
11663     At the moment the following categories are defined:
11664     </p>
11665     <p>
11666     </p>
11667     <blockquote class="text">
11668     <p>EFFECT_COUNT -
11669     </p>
11670     <blockquote class="text">
11671     <p>amount of effects in this send
11672     effect chain
11673     </p>
11674     </blockquote>
11675    
11676    
11677     <p>EFFECT_SEQUENCE -
11678     </p>
11679     <blockquote class="text">
11680     <p>comma separated list of the
11681     numerical IDs of the effect
11682     instances in this send effect chain,
11683     in the order as they are procssed in
11684     the effect chain
11685     </p>
11686     </blockquote>
11687    
11688    
11689     </blockquote>
11690    
11691    
11692     </blockquote><p>
11693    
11694     </p>
11695     <p>The mentioned fields above don't have to be in particular order.
11696     </p>
11697     <p>Example:
11698     </p>
11699     <p>
11700     </p>
11701     <blockquote class="text">
11702     <p>C: "GET SEND_EFFECT_CHAIN INFO 0 2"
11703     </p>
11704     <p>S: "EFFECT_COUNT: 3"
11705     </p>
11706     <p>&nbsp;&nbsp;&nbsp;"EFFECT_SEQUENCE: 31,4,7"
11707     </p>
11708     <p>&nbsp;&nbsp;&nbsp;"."
11709     </p>
11710     </blockquote><p>
11711    
11712     </p>
11713     <a name="APPEND SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11714     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11715     <a name="rfc.section.6.11.17"></a><h3>6.11.17.&nbsp;
11716     Append effect instance to a send effect chain</h3>
11717    
11718     <p>The front-end can add an unused effect instance to the
11719     end of a send effect chain by sending the following command:
11720     </p>
11721     <p>
11722     </p>
11723     <blockquote class="text">
11724     <p>APPEND SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;effect-instance&gt;
11725     </p>
11726     </blockquote><p>
11727    
11728     </p>
11729     <p>Where &lt;audio-device&gt; should be replaced by the
11730     numerical ID of the audio output device as given by the
11731     <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>
11732     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>
11733     command and &lt;effect-chain&gt; by the numerical ID as
11734     returned by the
11735     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11736     or
11737     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11738     command and &lt;effect-instance&gt; as returned by the
11739     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
11740     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11741     command.
11742     </p>
11743     <p>Only unused effect instances can be added to the effect
11744     chain. Trying to add an effect instance which is already in
11745     use somewhere in the audio signal path of the sampler will
11746     result in an error.
11747     </p>
11748     <p>Possible Answers:
11749     </p>
11750     <p>
11751     </p>
11752     <blockquote class="text">
11753     <p>"OK" -
11754     </p>
11755     <blockquote class="text">
11756     <p>in case the effect instance was
11757     added successfully to the chain
11758     </p>
11759     </blockquote>
11760    
11761    
11762     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11763     </p>
11764     <blockquote class="text">
11765     <p>if the effect instance could not be added
11766     </p>
11767     </blockquote>
11768    
11769    
11770     </blockquote><p>
11771    
11772     </p>
11773     <p>Examples:
11774     </p>
11775     <p>
11776     </p>
11777     <blockquote class="text">
11778     <p>C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38"
11779     </p>
11780     <p>S: "OK"
11781     </p>
11782     </blockquote><p>
11783    
11784     </p>
11785     <a name="INSERT SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11786     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11787     <a name="rfc.section.6.11.18"></a><h3>6.11.18.&nbsp;
11788     Insert effect instance to a send effect chain</h3>
11789    
11790     <p>The front-end can add an unused effect instance to a
11791     certain position of a send effect chain by sending the
11792     following command:
11793     </p>
11794     <p>
11795     </p>
11796     <blockquote class="text">
11797     <p>INSERT SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt; &lt;effect-instance&gt;
11798     </p>
11799     </blockquote><p>
11800    
11801     </p>
11802     <p>Where &lt;audio-device&gt; should be replaced by the
11803     numerical ID of the audio output device as given by the
11804     <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>
11805     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>
11806     command, &lt;effect-chain&gt; by the numerical ID as
11807     returned by the
11808     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11809     or
11810     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11811     command, &lt;effect-instance&gt; as returned by the
11812     <a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a> or
11813     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11814     command and &lt;chain-pos&gt; the exact position of the
11815     effect chain where the supplied effect shall be inserted
11816     to.
11817     </p>
11818     <p>Only unused effect instances can be added to the effect
11819     chain. Trying to add an effect instance which is already in
11820     use somewhere in the audio signal path of the sampler will
11821     result in an error.
11822     </p>
11823     <p>Possible Answers:
11824     </p>
11825     <p>
11826     </p>
11827     <blockquote class="text">
11828     <p>"OK" -
11829     </p>
11830     <blockquote class="text">
11831     <p>in case the effect instance was
11832     added successfully to the chain
11833     </p>
11834     </blockquote>
11835    
11836    
11837     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11838     </p>
11839     <blockquote class="text">
11840     <p>if the effect instance could not be added
11841     </p>
11842     </blockquote>
11843    
11844    
11845     </blockquote><p>
11846    
11847     </p>
11848     <p>Examples:
11849     </p>
11850     <p>
11851     </p>
11852     <blockquote class="text">
11853     <p>C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38"
11854     </p>
11855     <p>S: "OK"
11856     </p>
11857     </blockquote><p>
11858    
11859     </p>
11860     <a name="REMOVE SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11861     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11862     <a name="rfc.section.6.11.19"></a><h3>6.11.19.&nbsp;
11863     Remove effect instance from send effect chain</h3>
11864    
11865     <p>The front-end can remove an effect instance from a
11866     certain position of a send effect chain by sending the
11867     following command:
11868     </p>
11869     <p>
11870     </p>
11871     <blockquote class="text">
11872     <p>REMOVE SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
11873     </p>
11874     </blockquote><p>
11875    
11876     </p>
11877     <p>Where &lt;audio-device&gt; should be replaced by the
11878     numerical ID of the audio output device as given by the
11879     <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>
11880     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>
11881     command, &lt;effect-chain&gt; by the numerical ID as
11882     returned by the
11883     <a class='info' href='#ADD SEND_EFFECT_CHAIN'>"ADD SEND_EFFECT_CHAIN"<span> (</span><span class='info'>Add send effect chain</span><span>)</span></a>
11884     or
11885     <a class='info' href='#LIST SEND_EFFECT_CHAINS'>"LIST SEND_EFFECT_CHAINS"<span> (</span><span class='info'>Retrieve list of send effect chains</span><span>)</span></a>
11886     command and &lt;chain-pos&gt; the exact position of the
11887     effect instance to be removed from the effect chain.
11888     </p>
11889     <p>Possible Answers:
11890     </p>
11891     <p>
11892     </p>
11893     <blockquote class="text">
11894     <p>"OK" -
11895     </p>
11896     <blockquote class="text">
11897     <p>in case the effect instance was
11898     removed successfully
11899     </p>
11900     </blockquote>
11901    
11902    
11903     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11904     </p>
11905     <blockquote class="text">
11906     <p>if the effect instance could not be removed
11907     </p>
11908     </blockquote>
11909    
11910    
11911     </blockquote><p>
11912    
11913     </p>
11914     <p>Examples:
11915     </p>
11916     <p>
11917     </p>
11918     <blockquote class="text">
11919     <p>C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4"
11920     </p>
11921     <p>S: "OK"
11922     </p>
11923     </blockquote><p>
11924    
11925     </p>
11926 senoner 542 <a name="command_syntax"></a><br /><hr />
11927 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>
11928     <a name="rfc.section.7"></a><h3>7.&nbsp;
11929     Command Syntax</h3>
11930 senoner 542
11931 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>
11932     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>)
11933 schoenebeck 575 where applicable.
11934 schoenebeck 940
11935 senoner 542 </p>
11936 schoenebeck 575 <p>input =
11937     </p>
11938     <blockquote class="text">
11939     <p>line LF
11940 schoenebeck 940
11941 schoenebeck 575 </p>
11942     <p>/ line CR LF
11943 schoenebeck 940
11944 schoenebeck 575 </p>
11945 schoenebeck 708 </blockquote><p>
11946 schoenebeck 575
11947 schoenebeck 708 </p>
11948 schoenebeck 575 <p>line =
11949     </p>
11950     <blockquote class="text">
11951     <p>/* epsilon (empty line ignored) */
11952 schoenebeck 940
11953 schoenebeck 575 </p>
11954     <p>/ comment
11955 schoenebeck 940
11956 schoenebeck 575 </p>
11957     <p>/ command
11958 schoenebeck 940
11959 schoenebeck 575 </p>
11960     <p>/ error
11961 schoenebeck 940
11962 schoenebeck 575 </p>
11963 schoenebeck 708 </blockquote><p>
11964 schoenebeck 575
11965 schoenebeck 708 </p>
11966 schoenebeck 575 <p>comment =
11967     </p>
11968     <blockquote class="text">
11969     <p>'#'
11970 schoenebeck 940
11971 schoenebeck 575 </p>
11972     <p>/ comment '#'
11973 schoenebeck 940
11974 schoenebeck 575 </p>
11975     <p>/ comment SP
11976 schoenebeck 940
11977 schoenebeck 575 </p>
11978     <p>/ comment number
11979 schoenebeck 940
11980 schoenebeck 575 </p>
11981     <p>/ comment string
11982 schoenebeck 940
11983 schoenebeck 575 </p>
11984 schoenebeck 708 </blockquote><p>
11985 schoenebeck 575
11986 schoenebeck 708 </p>
11987 schoenebeck 575 <p>command =
11988     </p>
11989     <blockquote class="text">
11990 schoenebeck 974 <p>ADD SP add_instruction
11991 schoenebeck 940
11992 schoenebeck 575 </p>
11993 schoenebeck 945 <p>/ MAP SP map_instruction
11994    
11995     </p>
11996     <p>/ UNMAP SP unmap_instruction
11997    
11998     </p>
11999 schoenebeck 575 <p>/ GET SP get_instruction
12000 schoenebeck 940
12001 schoenebeck 575 </p>
12002     <p>/ CREATE SP create_instruction
12003 schoenebeck 940
12004 schoenebeck 575 </p>
12005     <p>/ DESTROY SP destroy_instruction
12006 schoenebeck 940
12007 schoenebeck 575 </p>
12008     <p>/ LIST SP list_instruction
12009 schoenebeck 940
12010 schoenebeck 575 </p>
12011     <p>/ LOAD SP load_instruction
12012 schoenebeck 940
12013 schoenebeck 575 </p>
12014 schoenebeck 945 <p>/ REMOVE SP remove_instruction
12015 schoenebeck 940
12016 schoenebeck 575 </p>
12017     <p>/ SET SP set_instruction
12018 schoenebeck 940
12019 schoenebeck 575 </p>
12020     <p>/ SUBSCRIBE SP subscribe_event
12021 schoenebeck 940
12022 schoenebeck 575 </p>
12023     <p>/ UNSUBSCRIBE SP unsubscribe_event
12024 schoenebeck 940
12025 schoenebeck 575 </p>
12026 schoenebeck 945 <p>/ RESET SP reset_instruction
12027 schoenebeck 940
12028 schoenebeck 575 </p>
12029 schoenebeck 945 <p>/ CLEAR SP clear_instruction
12030    
12031     </p>
12032 iliev 1189 <p>/ FIND SP find_instruction
12033    
12034     </p>
12035 iliev 1162 <p>/ MOVE SP move_instruction
12036    
12037     </p>
12038 iliev 1189 <p>/ COPY SP copy_instruction
12039    
12040     </p>
12041 schoenebeck 1251 <p>/ EDIT SP edit_instruction
12042    
12043     </p>
12044 schoenebeck 1363 <p>/ FORMAT SP format_instruction
12045 schoenebeck 1801
12046 iliev 1773 </p>
12047 schoenebeck 1801 <p>/ SEND SP send_instruction
12048 schoenebeck 1363
12049     </p>
12050 schoenebeck 2139 <p>/ APPEND SP append_instruction
12051    
12052     </p>
12053     <p>/ INSERT SP insert_instruction
12054    
12055     </p>
12056 schoenebeck 575 <p>/ RESET
12057 schoenebeck 940
12058 schoenebeck 575 </p>
12059     <p>/ QUIT
12060 schoenebeck 940
12061 schoenebeck 575 </p>
12062 schoenebeck 708 </blockquote><p>
12063 schoenebeck 575
12064 schoenebeck 708 </p>
12065 schoenebeck 974 <p>add_instruction =
12066     </p>
12067     <blockquote class="text">
12068     <p>CHANNEL
12069    
12070     </p>
12071 schoenebeck 2498 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index
12072    
12073     </p>
12074     <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index
12075    
12076     </p>
12077 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
12078 iliev 1162
12079     </p>
12080 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
12081 iliev 1162
12082     </p>
12083 schoenebeck 1801 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
12084    
12085     </p>
12086 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
12087 iliev 1162
12088     </p>
12089 schoenebeck 1801 <p>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
12090    
12091     </p>
12092 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
12093 iliev 1201
12094     </p>
12095 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
12096 iliev 1201
12097     </p>
12098 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename
12099 iliev 1162
12100     </p>
12101 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
12102 iliev 1162
12103     </p>
12104 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP
12105    
12106     </p>
12107     <p>/ MIDI_INSTRUMENT_MAP SP map_name
12108    
12109     </p>
12110 schoenebeck 2139 <p>/ SEND_EFFECT_CHAIN SP device_index
12111    
12112     </p>
12113 schoenebeck 974 </blockquote><p>
12114    
12115     </p>
12116 schoenebeck 575 <p>subscribe_event =
12117     </p>
12118     <blockquote class="text">
12119 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
12120 schoenebeck 940
12121 schoenebeck 575 </p>
12122 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
12123    
12124     </p>
12125     <p>/ MIDI_INPUT_DEVICE_COUNT
12126    
12127     </p>
12128     <p>/ MIDI_INPUT_DEVICE_INFO
12129    
12130     </p>
12131     <p>/ CHANNEL_COUNT
12132    
12133     </p>
12134 schoenebeck 1685 <p>/ CHANNEL_MIDI
12135    
12136     </p>
12137 schoenebeck 1696 <p>/ DEVICE_MIDI
12138    
12139     </p>
12140 schoenebeck 575 <p>/ VOICE_COUNT
12141 schoenebeck 940
12142 schoenebeck 575 </p>
12143     <p>/ STREAM_COUNT
12144 schoenebeck 940
12145 schoenebeck 575 </p>
12146     <p>/ BUFFER_FILL
12147 schoenebeck 940
12148 schoenebeck 575 </p>
12149     <p>/ CHANNEL_INFO
12150 schoenebeck 940
12151 schoenebeck 575 </p>
12152 iliev 1110 <p>/ FX_SEND_COUNT
12153    
12154     </p>
12155     <p>/ FX_SEND_INFO
12156    
12157     </p>
12158 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
12159    
12160     </p>
12161     <p>/ MIDI_INSTRUMENT_MAP_INFO
12162    
12163     </p>
12164     <p>/ MIDI_INSTRUMENT_COUNT
12165    
12166     </p>
12167     <p>/ MIDI_INSTRUMENT_INFO
12168    
12169     </p>
12170 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
12171    
12172     </p>
12173     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
12174    
12175     </p>
12176     <p>/ DB_INSTRUMENT_COUNT
12177    
12178     </p>
12179     <p>/ DB_INSTRUMENT_INFO
12180    
12181     </p>
12182 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
12183    
12184     </p>
12185 schoenebeck 575 <p>/ MISCELLANEOUS
12186 schoenebeck 940
12187 schoenebeck 575 </p>
12188 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
12189    
12190     </p>
12191 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
12192    
12193     </p>
12194 iliev 1110 <p>/ GLOBAL_INFO
12195    
12196     </p>
12197 iliev 2189 <p>/ EFFECT_INSTANCE_COUNT
12198    
12199     </p>
12200     <p>/ EFFECT_INSTANCE_INFO
12201    
12202     </p>
12203     <p>/ SEND_EFFECT_CHAIN_COUNT
12204    
12205     </p>
12206     <p>/ SEND_EFFECT_CHAIN_INFO
12207    
12208     </p>
12209 schoenebeck 708 </blockquote><p>
12210 schoenebeck 575
12211 schoenebeck 708 </p>
12212 schoenebeck 575 <p>unsubscribe_event =
12213     </p>
12214     <blockquote class="text">
12215 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
12216 schoenebeck 940
12217 schoenebeck 575 </p>
12218 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
12219    
12220     </p>
12221     <p>/ MIDI_INPUT_DEVICE_COUNT
12222    
12223     </p>
12224     <p>/ MIDI_INPUT_DEVICE_INFO
12225    
12226     </p>
12227     <p>/ CHANNEL_COUNT
12228    
12229     </p>
12230 schoenebeck 1685 <p>/ CHANNEL_MIDI
12231    
12232     </p>
12233 schoenebeck 1696 <p>/ DEVICE_MIDI
12234    
12235     </p>
12236 schoenebeck 575 <p>/ VOICE_COUNT
12237 schoenebeck 940
12238 schoenebeck 575 </p>
12239     <p>/ STREAM_COUNT
12240 schoenebeck 940
12241 schoenebeck 575 </p>
12242     <p>/ BUFFER_FILL
12243 schoenebeck 940
12244 schoenebeck 575 </p>
12245     <p>/ CHANNEL_INFO
12246 schoenebeck 940
12247 schoenebeck 575 </p>
12248 iliev 1110 <p>/ FX_SEND_COUNT
12249    
12250     </p>
12251     <p>/ FX_SEND_INFO
12252    
12253     </p>
12254 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
12255    
12256     </p>
12257     <p>/ MIDI_INSTRUMENT_MAP_INFO
12258    
12259     </p>
12260     <p>/ MIDI_INSTRUMENT_COUNT
12261    
12262     </p>
12263     <p>/ MIDI_INSTRUMENT_INFO
12264    
12265     </p>
12266 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
12267    
12268     </p>
12269     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
12270    
12271     </p>
12272     <p>/ DB_INSTRUMENT_COUNT
12273    
12274     </p>
12275     <p>/ DB_INSTRUMENT_INFO
12276    
12277     </p>
12278 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
12279    
12280     </p>
12281 schoenebeck 575 <p>/ MISCELLANEOUS
12282 schoenebeck 940
12283 schoenebeck 575 </p>
12284 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
12285    
12286     </p>
12287 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
12288    
12289     </p>
12290 iliev 1110 <p>/ GLOBAL_INFO
12291    
12292     </p>
12293 iliev 2189 <p>/ EFFECT_INSTANCE_COUNT
12294    
12295     </p>
12296     <p>/ EFFECT_INSTANCE_INFO
12297    
12298     </p>
12299     <p>/ SEND_EFFECT_CHAIN_COUNT
12300    
12301     </p>
12302     <p>/ SEND_EFFECT_CHAIN_INFO
12303    
12304     </p>
12305 schoenebeck 708 </blockquote><p>
12306 schoenebeck 575
12307 schoenebeck 708 </p>
12308 schoenebeck 945 <p>map_instruction =
12309     </p>
12310     <blockquote class="text">
12311 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
12312 schoenebeck 945
12313     </p>
12314 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
12315 schoenebeck 945
12316     </p>
12317 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
12318 schoenebeck 945
12319     </p>
12320 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
12321 schoenebeck 945
12322     </p>
12323     </blockquote><p>
12324    
12325     </p>
12326     <p>unmap_instruction =
12327     </p>
12328     <blockquote class="text">
12329 schoenebeck 974 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
12330 schoenebeck 945
12331     </p>
12332     </blockquote><p>
12333    
12334     </p>
12335     <p>remove_instruction =
12336     </p>
12337     <blockquote class="text">
12338     <p>CHANNEL SP sampler_channel
12339    
12340     </p>
12341 schoenebeck 2498 <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel
12342    
12343     </p>
12344     <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index
12345    
12346     </p>
12347     <p>/ CHANNEL SP MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index
12348    
12349     </p>
12350 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
12351    
12352     </p>
12353     <p>/ MIDI_INSTRUMENT_MAP SP ALL
12354    
12355     </p>
12356 schoenebeck 2139 <p>/ SEND_EFFECT_CHAIN SP device_index SP effect_chain
12357    
12358     </p>
12359     <p>/ SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos
12360    
12361     </p>
12362 schoenebeck 2141 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id
12363 schoenebeck 2139
12364     </p>
12365 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
12366 iliev 1162
12367     </p>
12368 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
12369 iliev 1162
12370     </p>
12371 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path
12372 iliev 1162
12373     </p>
12374 schoenebeck 945 </blockquote><p>
12375    
12376     </p>
12377 schoenebeck 575 <p>get_instruction =
12378     </p>
12379     <blockquote class="text">
12380     <p>AVAILABLE_ENGINES
12381 schoenebeck 940
12382 schoenebeck 575 </p>
12383 schoenebeck 2139 <p>/ AVAILABLE_EFFECTS
12384    
12385     </p>
12386     <p>/ EFFECT_INSTANCES
12387    
12388     </p>
12389     <p>/ EFFECT SP INFO SP effect_index
12390    
12391     </p>
12392     <p>/ EFFECT_INSTANCE SP INFO SP effect_instance
12393    
12394     </p>
12395     <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP INFO SP effect_instance SP input_control
12396    
12397     </p>
12398     <p>/ SEND_EFFECT_CHAINS SP device_index
12399    
12400     </p>
12401     <p>/ SEND_EFFECT_CHAIN SP INFO SP device_index SP effect_chain
12402    
12403     </p>
12404 schoenebeck 575 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12405 schoenebeck 940
12406 schoenebeck 575 </p>
12407     <p>/ MIDI_INPUT_DRIVER SP INFO SP string
12408 schoenebeck 940
12409 schoenebeck 575 </p>
12410     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
12411 schoenebeck 940
12412 schoenebeck 575 </p>
12413     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12414 schoenebeck 940
12415 schoenebeck 575 </p>
12416     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12417 schoenebeck 940
12418 schoenebeck 575 </p>
12419     <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
12420 schoenebeck 940
12421 schoenebeck 575 </p>
12422     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
12423 schoenebeck 940
12424 schoenebeck 575 </p>
12425     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12426 schoenebeck 940
12427 schoenebeck 575 </p>
12428     <p>/ AUDIO_OUTPUT_DEVICES
12429 schoenebeck 940
12430 schoenebeck 575 </p>
12431     <p>/ MIDI_INPUT_DEVICES
12432 schoenebeck 940
12433 schoenebeck 575 </p>
12434     <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
12435 schoenebeck 940
12436 schoenebeck 575 </p>
12437     <p>/ MIDI_INPUT_DEVICE SP INFO SP number
12438 schoenebeck 940
12439 schoenebeck 575 </p>
12440     <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
12441 schoenebeck 940
12442 schoenebeck 575 </p>
12443     <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
12444 schoenebeck 940
12445 schoenebeck 575 </p>
12446     <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
12447 schoenebeck 940
12448 schoenebeck 575 </p>
12449     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
12450 schoenebeck 940
12451 schoenebeck 575 </p>
12452     <p>/ CHANNELS
12453 schoenebeck 940
12454 schoenebeck 575 </p>
12455     <p>/ CHANNEL SP INFO SP sampler_channel
12456 schoenebeck 940
12457 schoenebeck 575 </p>
12458     <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
12459 schoenebeck 940
12460 schoenebeck 575 </p>
12461     <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
12462 schoenebeck 940
12463 schoenebeck 575 </p>
12464     <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
12465 schoenebeck 940
12466 schoenebeck 575 </p>
12467     <p>/ ENGINE SP INFO SP engine_name
12468 schoenebeck 940
12469 schoenebeck 575 </p>
12470     <p>/ SERVER SP INFO
12471 schoenebeck 940
12472 schoenebeck 575 </p>
12473 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
12474    
12475     </p>
12476 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
12477    
12478     </p>
12479     <p>/ TOTAL_VOICE_COUNT_MAX
12480    
12481     </p>
12482 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
12483 schoenebeck 945
12484     </p>
12485 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
12486 schoenebeck 945
12487     </p>
12488 schoenebeck 974 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
12489    
12490     </p>
12491     <p>/ MIDI_INSTRUMENT_MAPS
12492    
12493     </p>
12494     <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
12495    
12496     </p>
12497 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
12498    
12499     </p>
12500     <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
12501    
12502     </p>
12503 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12504 iliev 1189
12505     </p>
12506 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12507 iliev 1162
12508     </p>
12509 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
12510 iliev 1162
12511     </p>
12512 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12513 iliev 1189
12514     </p>
12515 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
12516 iliev 1162
12517     </p>
12518 schoenebeck 1363 <p>/ DB_INSTRUMENT SP INFO SP db_path
12519 iliev 1162
12520     </p>
12521 iliev 1201 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
12522    
12523     </p>
12524 schoenebeck 1006 <p>/ VOLUME
12525    
12526     </p>
12527 schoenebeck 1801 <p>/ VOICES
12528    
12529     </p>
12530     <p>/ STREAMS
12531    
12532     </p>
12533 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
12534    
12535     </p>
12536     <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
12537    
12538     </p>
12539 schoenebeck 708 </blockquote><p>
12540 schoenebeck 575
12541 schoenebeck 708 </p>
12542 schoenebeck 575 <p>set_instruction =
12543     </p>
12544     <blockquote class="text">
12545     <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12546 schoenebeck 940
12547 schoenebeck 575 </p>
12548     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
12549 schoenebeck 940
12550 schoenebeck 575 </p>
12551     <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12552 schoenebeck 940
12553 schoenebeck 575 </p>
12554 schoenebeck 1363 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
12555    
12556     </p>
12557 schoenebeck 575 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
12558 schoenebeck 940
12559 schoenebeck 575 </p>
12560 schoenebeck 2139 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP VALUE SP effect_instance SP input_control SP control_value
12561    
12562     </p>
12563 schoenebeck 575 <p>/ CHANNEL SP set_chan_instruction
12564 schoenebeck 940
12565 schoenebeck 575 </p>
12566 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
12567    
12568     </p>
12569 iliev 1137 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
12570    
12571     </p>
12572 schoenebeck 1002 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
12573    
12574     </p>
12575 schoenebeck 1028 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
12576    
12577     </p>
12578     <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
12579    
12580     </p>
12581 schoenebeck 2141 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id SP effect_chain SP chain_pos
12582 schoenebeck 2139
12583     </p>
12584 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
12585 iliev 1162
12586     </p>
12587 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
12588 iliev 1162
12589     </p>
12590 schoenebeck 1363 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
12591 iliev 1162
12592     </p>
12593 schoenebeck 1363 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
12594 iliev 1162
12595     </p>
12596 iliev 1731 <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
12597    
12598     </p>
12599 schoenebeck 575 <p>/ ECHO SP boolean
12600 schoenebeck 940
12601 schoenebeck 575 </p>
12602 schoenebeck 1006 <p>/ VOLUME SP volume_value
12603    
12604     </p>
12605 schoenebeck 1801 <p>/ VOICES SP number
12606    
12607     </p>
12608     <p>/ STREAMS SP number
12609    
12610     </p>
12611 schoenebeck 708 </blockquote><p>
12612 schoenebeck 575
12613 schoenebeck 708 </p>
12614 schoenebeck 575 <p>create_instruction =
12615     </p>
12616     <blockquote class="text">
12617     <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
12618 schoenebeck 940
12619 schoenebeck 575 </p>
12620     <p>/ AUDIO_OUTPUT_DEVICE SP string
12621 schoenebeck 940
12622 schoenebeck 575 </p>
12623     <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
12624 schoenebeck 940
12625 schoenebeck 575 </p>
12626     <p>/ MIDI_INPUT_DEVICE SP string
12627 schoenebeck 940
12628 schoenebeck 575 </p>
12629 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
12630    
12631     </p>
12632     <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
12633    
12634     </p>
12635 schoenebeck 2139 <p>/ EFFECT_INSTANCE SP effect_index
12636    
12637     </p>
12638     <p>/ EFFECT_INSTANCE SP effect_system SP module SP effect_name
12639    
12640     </p>
12641 schoenebeck 708 </blockquote><p>
12642 schoenebeck 575
12643 schoenebeck 708 </p>
12644 schoenebeck 945 <p>reset_instruction =
12645     </p>
12646     <blockquote class="text">
12647     <p>CHANNEL SP sampler_channel
12648    
12649     </p>
12650     </blockquote><p>
12651    
12652     </p>
12653     <p>clear_instruction =
12654     </p>
12655     <blockquote class="text">
12656 schoenebeck 974 <p>MIDI_INSTRUMENTS SP midi_map
12657 schoenebeck 945
12658     </p>
12659 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
12660    
12661     </p>
12662 schoenebeck 945 </blockquote><p>
12663    
12664     </p>
12665 iliev 1189 <p>find_instruction =
12666     </p>
12667     <blockquote class="text">
12668 schoenebeck 1363 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
12669 iliev 1189
12670     </p>
12671 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
12672 iliev 1189
12673     </p>
12674 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
12675 iliev 1189
12676     </p>
12677 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
12678 iliev 1189
12679     </p>
12680 iliev 1731 <p>/ LOST SP DB_INSTRUMENT_FILES
12681    
12682     </p>
12683 iliev 1189 </blockquote><p>
12684    
12685     </p>
12686 iliev 1162 <p>move_instruction =
12687     </p>
12688     <blockquote class="text">
12689 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12690 iliev 1162
12691     </p>
12692 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
12693 iliev 1162
12694     </p>
12695     </blockquote><p>
12696    
12697     </p>
12698 iliev 1189 <p>copy_instruction =
12699     </p>
12700     <blockquote class="text">
12701 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12702 iliev 1189
12703     </p>
12704 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
12705 iliev 1189
12706     </p>
12707     </blockquote><p>
12708    
12709     </p>
12710 schoenebeck 575 <p>destroy_instruction =
12711     </p>
12712     <blockquote class="text">
12713     <p>AUDIO_OUTPUT_DEVICE SP number
12714 schoenebeck 940
12715 schoenebeck 575 </p>
12716     <p>/ MIDI_INPUT_DEVICE SP number
12717 schoenebeck 940
12718 schoenebeck 575 </p>
12719 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP fx_send_id
12720    
12721     </p>
12722 schoenebeck 2139 <p>/ EFFECT_INSTANCE SP number
12723    
12724     </p>
12725 schoenebeck 708 </blockquote><p>
12726 schoenebeck 575
12727 schoenebeck 708 </p>
12728 schoenebeck 575 <p>load_instruction =
12729     </p>
12730     <blockquote class="text">
12731     <p>INSTRUMENT SP load_instr_args
12732 schoenebeck 940
12733 schoenebeck 575 </p>
12734     <p>/ ENGINE SP load_engine_args
12735 schoenebeck 940
12736 schoenebeck 575 </p>
12737 schoenebeck 708 </blockquote><p>
12738 schoenebeck 575
12739 schoenebeck 708 </p>
12740 schoenebeck 2139 <p>append_instruction =
12741     </p>
12742     <blockquote class="text">
12743     <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP effect_instance
12744    
12745     </p>
12746     </blockquote><p>
12747    
12748     </p>
12749     <p>insert_instruction =
12750     </p>
12751     <blockquote class="text">
12752     <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos SP effect_instance
12753    
12754     </p>
12755     </blockquote><p>
12756    
12757     </p>
12758 schoenebeck 575 <p>set_chan_instruction =
12759     </p>
12760     <blockquote class="text">
12761     <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
12762 schoenebeck 940
12763 schoenebeck 575 </p>
12764     <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
12765 schoenebeck 940
12766 schoenebeck 575 </p>
12767     <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
12768 schoenebeck 940
12769 schoenebeck 575 </p>
12770     <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
12771 schoenebeck 940
12772 schoenebeck 575 </p>
12773     <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
12774 schoenebeck 940
12775 schoenebeck 575 </p>
12776     <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
12777 schoenebeck 940
12778 schoenebeck 575 </p>
12779     <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
12780 schoenebeck 940
12781 schoenebeck 575 </p>
12782     <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
12783 schoenebeck 940
12784 schoenebeck 575 </p>
12785     <p>/ VOLUME SP sampler_channel SP volume_value
12786 schoenebeck 940
12787 schoenebeck 575 </p>
12788 schoenebeck 708 <p>/ MUTE SP sampler_channel SP boolean
12789 schoenebeck 940
12790 schoenebeck 708 </p>
12791     <p>/ SOLO SP sampler_channel SP boolean
12792 schoenebeck 940
12793 schoenebeck 708 </p>
12794 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
12795    
12796     </p>
12797     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
12798    
12799     </p>
12800     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
12801    
12802     </p>
12803 schoenebeck 708 </blockquote><p>
12804    
12805     </p>
12806 schoenebeck 1251 <p>edit_instruction =
12807     </p>
12808     <blockquote class="text">
12809 schoenebeck 1430 <p>CHANNEL SP INSTRUMENT SP sampler_channel
12810 schoenebeck 1251
12811     </p>
12812     </blockquote><p>
12813    
12814     </p>
12815 schoenebeck 1363 <p>format_instruction =
12816     </p>
12817     <blockquote class="text">
12818     <p>INSTRUMENTS_DB
12819    
12820     </p>
12821     </blockquote><p>
12822    
12823     </p>
12824 schoenebeck 1048 <p>modal_arg =
12825     </p>
12826     <blockquote class="text">
12827     <p>/* epsilon (empty argument) */
12828    
12829     </p>
12830     <p>/ NON_MODAL SP
12831    
12832     </p>
12833     </blockquote><p>
12834    
12835     </p>
12836 schoenebeck 575 <p>key_val_list =
12837     </p>
12838     <blockquote class="text">
12839     <p>string '=' param_val_list
12840 schoenebeck 940
12841 schoenebeck 575 </p>
12842     <p>/ key_val_list SP string '=' param_val_list
12843 schoenebeck 940
12844 schoenebeck 575 </p>
12845 schoenebeck 708 </blockquote><p>
12846 schoenebeck 575
12847 schoenebeck 708 </p>
12848 schoenebeck 575 <p>buffer_size_type =
12849     </p>
12850     <blockquote class="text">
12851     <p>BYTES
12852 schoenebeck 940
12853 schoenebeck 575 </p>
12854     <p>/ PERCENTAGE
12855 schoenebeck 940
12856 schoenebeck 575 </p>
12857 schoenebeck 708 </blockquote><p>
12858 schoenebeck 575
12859 schoenebeck 708 </p>
12860 schoenebeck 575 <p>list_instruction =
12861     </p>
12862     <blockquote class="text">
12863     <p>AUDIO_OUTPUT_DEVICES
12864 schoenebeck 940
12865 schoenebeck 575 </p>
12866     <p>/ MIDI_INPUT_DEVICES
12867 schoenebeck 940
12868 schoenebeck 575 </p>
12869     <p>/ CHANNELS
12870 schoenebeck 940
12871 schoenebeck 575 </p>
12872 schoenebeck 2498 <p>/ CHANNEL SP MIDI_INPUTS SP sampler_channel
12873    
12874     </p>
12875 schoenebeck 575 <p>/ AVAILABLE_ENGINES
12876 schoenebeck 940
12877 schoenebeck 575 </p>
12878 schoenebeck 2139 <p>/ AVAILABLE_EFFECTS
12879    
12880     </p>
12881     <p>/ EFFECT_INSTANCES
12882    
12883     </p>
12884     <p>/ SEND_EFFECT_CHAINS SP number
12885    
12886     </p>
12887 schoenebeck 575 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12888 schoenebeck 940
12889 schoenebeck 575 </p>
12890     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12891 schoenebeck 940
12892 schoenebeck 575 </p>
12893 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
12894 schoenebeck 945
12895     </p>
12896 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
12897    
12898     </p>
12899     <p>/ MIDI_INSTRUMENT_MAPS
12900    
12901     </p>
12902 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
12903    
12904     </p>
12905 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12906 iliev 1189
12907     </p>
12908 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12909 iliev 1162
12910     </p>
12911 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12912 iliev 1189
12913     </p>
12914 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
12915 iliev 1162
12916     </p>
12917 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
12918    
12919     </p>
12920 schoenebeck 708 </blockquote><p>
12921 schoenebeck 575
12922 schoenebeck 708 </p>
12923 iliev 1773 <p>send_instruction =
12924     </p>
12925     <blockquote class="text">
12926     <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
12927    
12928     </p>
12929     </blockquote><p>
12930    
12931     </p>
12932 schoenebeck 575 <p>load_instr_args =
12933     </p>
12934     <blockquote class="text">
12935     <p>filename SP instrument_index SP sampler_channel
12936 schoenebeck 940
12937 schoenebeck 575 </p>
12938     <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
12939 schoenebeck 940
12940 schoenebeck 575 </p>
12941 schoenebeck 708 </blockquote><p>
12942 schoenebeck 575
12943 schoenebeck 708 </p>
12944 schoenebeck 575 <p>load_engine_args =
12945     </p>
12946     <blockquote class="text">
12947     <p>engine_name SP sampler_channel
12948 schoenebeck 940
12949 schoenebeck 575 </p>
12950 schoenebeck 708 </blockquote><p>
12951 schoenebeck 575
12952 schoenebeck 708 </p>
12953 schoenebeck 945 <p>instr_load_mode =
12954     </p>
12955     <blockquote class="text">
12956     <p>ON_DEMAND
12957    
12958     </p>
12959     <p>/ ON_DEMAND_HOLD
12960    
12961     </p>
12962     <p>/ PERSISTENT
12963    
12964     </p>
12965     </blockquote><p>
12966    
12967     </p>
12968 schoenebeck 2139 <p>effect_instance =
12969     </p>
12970     <blockquote class="text">
12971     <p>number
12972    
12973     </p>
12974     </blockquote><p>
12975    
12976     </p>
12977 schoenebeck 575 <p>device_index =
12978     </p>
12979     <blockquote class="text">
12980     <p>number
12981 schoenebeck 940
12982 schoenebeck 575 </p>
12983 schoenebeck 708 </blockquote><p>
12984 schoenebeck 575
12985 schoenebeck 708 </p>
12986 schoenebeck 575 <p>audio_channel_index =
12987     </p>
12988     <blockquote class="text">
12989     <p>number
12990 schoenebeck 940
12991 schoenebeck 575 </p>
12992 schoenebeck 708 </blockquote><p>
12993 schoenebeck 575
12994 schoenebeck 708 </p>
12995 schoenebeck 575 <p>audio_output_type_name =
12996     </p>
12997     <blockquote class="text">
12998     <p>string
12999 schoenebeck 940
13000 schoenebeck 575 </p>
13001 schoenebeck 708 </blockquote><p>
13002 schoenebeck 575
13003 schoenebeck 708 </p>
13004 schoenebeck 575 <p>midi_input_port_index =
13005     </p>
13006     <blockquote class="text">
13007     <p>number
13008 schoenebeck 940
13009 schoenebeck 575 </p>
13010 schoenebeck 708 </blockquote><p>
13011 schoenebeck 575
13012 schoenebeck 708 </p>
13013 schoenebeck 575 <p>midi_input_channel_index =
13014     </p>
13015     <blockquote class="text">
13016     <p>number
13017 schoenebeck 940
13018 schoenebeck 575 </p>
13019     <p>/ ALL
13020 schoenebeck 940
13021 schoenebeck 575 </p>
13022 schoenebeck 708 </blockquote><p>
13023 schoenebeck 575
13024 schoenebeck 708 </p>
13025 schoenebeck 575 <p>midi_input_type_name =
13026     </p>
13027     <blockquote class="text">
13028     <p>string
13029 schoenebeck 940
13030 schoenebeck 575 </p>
13031 schoenebeck 708 </blockquote><p>
13032 schoenebeck 575
13033 schoenebeck 708 </p>
13034 schoenebeck 974 <p>midi_map =
13035 schoenebeck 945 </p>
13036     <blockquote class="text">
13037     <p>number
13038    
13039     </p>
13040     </blockquote><p>
13041    
13042     </p>
13043 schoenebeck 974 <p>midi_bank =
13044 schoenebeck 945 </p>
13045     <blockquote class="text">
13046     <p>number
13047    
13048     </p>
13049     </blockquote><p>
13050    
13051     </p>
13052     <p>midi_prog =
13053     </p>
13054     <blockquote class="text">
13055     <p>number
13056    
13057     </p>
13058     </blockquote><p>
13059    
13060     </p>
13061 schoenebeck 1002 <p>midi_ctrl =
13062     </p>
13063     <blockquote class="text">
13064     <p>number
13065    
13066     </p>
13067     </blockquote><p>
13068    
13069     </p>
13070 schoenebeck 575 <p>volume_value =
13071     </p>
13072     <blockquote class="text">
13073     <p>dotnum
13074 schoenebeck 940
13075 schoenebeck 575 </p>
13076     <p>/ number
13077 schoenebeck 940
13078 schoenebeck 575 </p>
13079 schoenebeck 708 </blockquote><p>
13080 schoenebeck 575
13081 schoenebeck 708 </p>
13082 schoenebeck 2139 <p>control_value =
13083     </p>
13084     <blockquote class="text">
13085     <p>real
13086    
13087     </p>
13088     </blockquote><p>
13089    
13090     </p>
13091 schoenebeck 575 <p>sampler_channel =
13092     </p>
13093     <blockquote class="text">
13094     <p>number
13095 schoenebeck 940
13096 schoenebeck 575 </p>
13097 schoenebeck 708 </blockquote><p>
13098 schoenebeck 575
13099 schoenebeck 708 </p>
13100 schoenebeck 575 <p>instrument_index =
13101     </p>
13102     <blockquote class="text">
13103     <p>number
13104 schoenebeck 940
13105 schoenebeck 575 </p>
13106 schoenebeck 708 </blockquote><p>
13107 schoenebeck 575
13108 schoenebeck 708 </p>
13109 schoenebeck 1002 <p>fx_send_id =
13110     </p>
13111     <blockquote class="text">
13112     <p>number
13113    
13114     </p>
13115     </blockquote><p>
13116    
13117     </p>
13118 schoenebeck 575 <p>engine_name =
13119     </p>
13120     <blockquote class="text">
13121     <p>string
13122 schoenebeck 940
13123 schoenebeck 575 </p>
13124 schoenebeck 708 </blockquote><p>
13125 schoenebeck 575
13126 schoenebeck 708 </p>
13127 schoenebeck 1363 <p>filename =
13128 iliev 1162 </p>
13129     <blockquote class="text">
13130 schoenebeck 1363 <p>path
13131 iliev 1162
13132     </p>
13133     </blockquote><p>
13134    
13135     </p>
13136 schoenebeck 1363 <p>db_path =
13137 iliev 1162 </p>
13138     <blockquote class="text">
13139 schoenebeck 1363 <p>path
13140 iliev 1162
13141     </p>
13142     </blockquote><p>
13143    
13144     </p>
13145 schoenebeck 974 <p>map_name =
13146     </p>
13147     <blockquote class="text">
13148 schoenebeck 1390 <p>stringval_escaped
13149 schoenebeck 974
13150     </p>
13151     </blockquote><p>
13152    
13153     </p>
13154 schoenebeck 945 <p>entry_name =
13155     </p>
13156     <blockquote class="text">
13157 schoenebeck 1390 <p>stringval_escaped
13158 schoenebeck 945
13159     </p>
13160     </blockquote><p>
13161    
13162     </p>
13163 schoenebeck 1002 <p>fx_send_name =
13164     </p>
13165     <blockquote class="text">
13166 schoenebeck 1390 <p>stringval_escaped
13167 schoenebeck 1002
13168     </p>
13169     </blockquote><p>
13170    
13171     </p>
13172 schoenebeck 2139 <p>effect_name =
13173     </p>
13174     <blockquote class="text">
13175     <p>stringval_escaped
13176    
13177     </p>
13178     </blockquote><p>
13179    
13180     </p>
13181     <p>effect_index =
13182     </p>
13183     <blockquote class="text">
13184     <p>number
13185    
13186     </p>
13187     </blockquote><p>
13188    
13189     </p>
13190     <p>effect_chain =
13191     </p>
13192     <blockquote class="text">
13193     <p>number
13194    
13195     </p>
13196     </blockquote><p>
13197    
13198     </p>
13199     <p>chain_pos =
13200     </p>
13201     <blockquote class="text">
13202     <p>number
13203    
13204     </p>
13205     </blockquote><p>
13206    
13207     </p>
13208     <p>input_control =
13209     </p>
13210     <blockquote class="text">
13211     <p>number
13212    
13213     </p>
13214     </blockquote><p>
13215    
13216     </p>
13217 schoenebeck 575 <p>param_val_list =
13218     </p>
13219     <blockquote class="text">
13220     <p>param_val
13221 schoenebeck 940
13222 schoenebeck 575 </p>
13223     <p>/ param_val_list','param_val
13224 schoenebeck 940
13225 schoenebeck 575 </p>
13226 schoenebeck 708 </blockquote><p>
13227 schoenebeck 575
13228 schoenebeck 708 </p>
13229 schoenebeck 575 <p>param_val =
13230     </p>
13231     <blockquote class="text">
13232     <p>string
13233 schoenebeck 940
13234 schoenebeck 575 </p>
13235 schoenebeck 940 <p>/ stringval
13236    
13237 schoenebeck 575 </p>
13238     <p>/ number
13239 schoenebeck 940
13240 schoenebeck 575 </p>
13241     <p>/ dotnum
13242 schoenebeck 940
13243 schoenebeck 575 </p>
13244 schoenebeck 708 </blockquote><p>
13245 schoenebeck 575
13246 schoenebeck 708 </p>
13247 iliev 1189 <p>query_val_list =
13248     </p>
13249     <blockquote class="text">
13250     <p>string '=' query_val
13251    
13252     </p>
13253     <p>/ query_val_list SP string '=' query_val
13254    
13255     </p>
13256     </blockquote><p>
13257    
13258     </p>
13259     <p>query_val =
13260     </p>
13261     <blockquote class="text">
13262 schoenebeck 1390 <p>text_escaped
13263 iliev 1189
13264     </p>
13265 schoenebeck 1363 <p>/ stringval_escaped
13266 iliev 1189
13267     </p>
13268     </blockquote><p>
13269    
13270     </p>
13271 iliev 1201 <p>scan_mode =
13272     </p>
13273     <blockquote class="text">
13274     <p>RECURSIVE
13275    
13276     </p>
13277     <p>/ NON_RECURSIVE
13278    
13279     </p>
13280     <p>/ FLAT
13281    
13282     </p>
13283     </blockquote><p>
13284    
13285     </p>
13286 schoenebeck 2139 <p>effect_system =
13287     </p>
13288     <blockquote class="text">
13289     <p>string
13290    
13291     </p>
13292     </blockquote><p>
13293    
13294     </p>
13295     <p>module =
13296     </p>
13297     <blockquote class="text">
13298     <p>filename
13299    
13300     </p>
13301     </blockquote><p>
13302    
13303     </p>
13304 schoenebeck 1251 <a name="character_set"></a><br /><hr />
13305     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13306     <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
13307     Character Set and Escape Sequences</h3>
13308    
13309     <p>Older versions of this protocol up to and including v1.1 only
13310     supported the standard ASCII character set (ASCII code 0 - 127)
13311     <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
13312     however support the Extended ASCII character set (ASCII code
13313     0 - 255). The same group of younger protocols also support
13314     escape sequences, but only for certain, explicitly declared
13315     parts of the protocol. The supported escape sequences are
13316     defined as follows:
13317     </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
13318     <col align="left"><col align="left">
13319     <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
13320     <tr>
13321     <td align="left">\n</td>
13322     <td align="left">new line</td>
13323     </tr>
13324     <tr>
13325     <td align="left">\r</td>
13326     <td align="left">carriage return</td>
13327     </tr>
13328     <tr>
13329     <td align="left">\f</td>
13330     <td align="left">form feed</td>
13331     </tr>
13332     <tr>
13333     <td align="left">\t</td>
13334     <td align="left">horizontal tab</td>
13335     </tr>
13336     <tr>
13337     <td align="left">\v</td>
13338     <td align="left">vertical tab</td>
13339     </tr>
13340     <tr>
13341     <td align="left">\'</td>
13342     <td align="left">apostrophe</td>
13343     </tr>
13344     <tr>
13345     <td align="left">\"</td>
13346     <td align="left">quotation mark</td>
13347     </tr>
13348     <tr>
13349     <td align="left">\\</td>
13350     <td align="left">backslash</td>
13351     </tr>
13352     <tr>
13353     <td align="left">\OOO</td>
13354     <td align="left">three digit octal ASCII code of the character</td>
13355     </tr>
13356     <tr>
13357     <td align="left">\xHH</td>
13358     <td align="left">two digit hex ASCII code of the character</td>
13359     </tr>
13360     </table>
13361 schoenebeck 1801 <br clear="all" />
13362 schoenebeck 1251
13363     <p>Notice: due to the transition of certain parts of the
13364     protocol which now support escape sequences, a slight backward
13365     incompatibility to protocols version v1.1 and younger has been
13366     introduced. The only difference is that in parts of the protocol
13367     where escape characters are now supported, a backslash characters
13368     MUST be escaped as well (that is as double backslash), whereas
13369     in the old versions a single backslash was sufficient.
13370     </p>
13371 schoenebeck 1390 <p>The following LSCP commands support escape sequences as part
13372 schoenebeck 1400 of their filename / path based arguments and / or may contain
13373     a filename / path with escape sequences in their response:
13374 schoenebeck 1390 </p>
13375     <blockquote class="text">
13376     <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
13377     </p>
13378 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>
13379     </p>
13380 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>
13381     </p>
13382 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>
13383     </p>
13384 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>
13385     </p>
13386     <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>
13387     </p>
13388     <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>
13389     </p>
13390     <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
13391     </p>
13392     <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>
13393     </p>
13394     <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>
13395     </p>
13396     <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>
13397     </p>
13398     <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
13399     </p>
13400     <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>
13401     </p>
13402     <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>
13403     </p>
13404     <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>
13405     </p>
13406     <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>
13407     </p>
13408     <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>
13409     </p>
13410     <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>
13411     </p>
13412     <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13413     </p>
13414     <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13415     </p>
13416     <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
13417     </p>
13418     <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>
13419     </p>
13420     <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
13421     </p>
13422     <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>
13423     </p>
13424 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>
13425     </p>
13426     <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>
13427     </p>
13428 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>
13429     </p>
13430     <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>
13431     </p>
13432     <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>
13433     </p>
13434 schoenebeck 2139 <p><a class='info' href='#GET EFFECT INFO'>"GET EFFECT INFO"<span> (</span><span class='info'>Retrieving general information about an effect</span><span>)</span></a>
13435     </p>
13436     <p><a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
13437     </p>
13438     <p><a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
13439     </p>
13440 schoenebeck 1390 </blockquote><p>
13441     Note that the forward slash character ('/') has a special meaning in
13442     filename / path based arguments: it acts as separator of the nodes in
13443     the path, thus if a directory- or filename includes a forward slash
13444     (not intended as path node separator), you MUST escape that slash
13445     either with the respective hex escape sequence ("\x2f") or with the
13446     respective octal escape sequence ("\057").
13447    
13448     </p>
13449     <p>
13450 schoenebeck 1572 Note for Windows: file path arguments in LSCP are expected
13451     to use forward slashes as directory node separator similar
13452     to Unix based operating systems. In contrast to Unix however
13453     a Windows typical drive character is expected to be
13454     prefixed to the path. That is an original Windows file path
13455     like "D:\Sounds\My.gig" would become in LSCP:
13456     "D:/Sounds/My.gig".
13457    
13458     </p>
13459     <p>
13460 schoenebeck 1390 The following LSCP commands even support escape sequences as
13461     part of at least one of their text-based arguments (i.e. entity name,
13462 schoenebeck 1400 description) and / or may contain escape sequences in at least one of
13463     their text-based fields in their response:
13464 schoenebeck 1390 </p>
13465     <blockquote class="text">
13466 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>
13467     </p>
13468     <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>
13469     </p>
13470     <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13471     </p>
13472     <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>
13473     </p>
13474     <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>
13475     </p>
13476     <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>
13477     </p>
13478     <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>
13479     </p>
13480     <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>
13481     </p>
13482 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>
13483     </p>
13484     <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>
13485     </p>
13486     <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>
13487     </p>
13488 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>
13489     </p>
13490 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>
13491     </p>
13492     <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>
13493     </p>
13494 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>
13495     </p>
13496 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>
13497     </p>
13498 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>
13499     </p>
13500     <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>
13501     </p>
13502 schoenebeck 1400 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13503 schoenebeck 1390 </p>
13504 schoenebeck 2139 <p><a class='info' href='#GET EFFECT INFO'>"GET EFFECT INFO"<span> (</span><span class='info'>Retrieving general information about an effect</span><span>)</span></a>
13505     </p>
13506     <p><a class='info' href='#GET EFFECT_INSTANCE INFO'>"GET EFFECT_INSTANCE INFO"<span> (</span><span class='info'>Retrieving current information about an effect instance</span><span>)</span></a>
13507     </p>
13508     <p><a class='info' href='#CREATE EFFECT_INSTANCE'>"CREATE EFFECT_INSTANCE"<span> (</span><span class='info'>Creating an instance of an effect by its portable ID</span><span>)</span></a>
13509     </p>
13510 schoenebeck 1390 </blockquote><p>
13511     Please note that these lists are manually maintained. If you
13512     find a command that also supports escape sequences we forgot to
13513     mention here, please report it!
13514    
13515     </p>
13516 senoner 542 <a name="events"></a><br /><hr />
13517 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>
13518     <a name="rfc.section.8"></a><h3>8.&nbsp;
13519     Events</h3>
13520 senoner 542
13521     <p>This chapter will describe all currently defined events supported by LinuxSampler.
13522     </p>
13523 iliev 992 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
13524 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>
13525     <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
13526 iliev 992 Number of audio output devices changed</h3>
13527    
13528     <p>Client may want to be notified when the total number of audio output devices on the
13529     back-end changes by issuing the following command:
13530     </p>
13531     <p>
13532     </p>
13533     <blockquote class="text">
13534     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
13535     </p>
13536     </blockquote><p>
13537    
13538     </p>
13539     <p>Server will start sending the following notification messages:
13540     </p>
13541     <p>
13542     </p>
13543     <blockquote class="text">
13544     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
13545     </p>
13546     </blockquote><p>
13547    
13548     </p>
13549     <p>where &lt;devices&gt; will be replaced by the new number
13550     of audio output devices.
13551     </p>
13552     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
13553     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13554     <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
13555     Audio output device's settings changed</h3>
13556    
13557     <p>Client may want to be notified when changes were made to audio output devices on the
13558     back-end by issuing the following command:
13559     </p>
13560     <p>
13561     </p>
13562     <blockquote class="text">
13563     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
13564     </p>
13565     </blockquote><p>
13566    
13567     </p>
13568     <p>Server will start sending the following notification messages:
13569     </p>
13570     <p>
13571     </p>
13572     <blockquote class="text">
13573     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
13574     </p>
13575     </blockquote><p>
13576    
13577     </p>
13578     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
13579     which settings has been changed. The front-end will have to send
13580     the respective command to actually get the audio output device info. Because these messages
13581     will be triggered by LSCP commands issued by other clients rather than real
13582     time events happening on the server, it is believed that an empty notification
13583     message is sufficient here.
13584     </p>
13585     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
13586     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13587     <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
13588     Number of MIDI input devices changed</h3>
13589    
13590     <p>Client may want to be notified when the total number of MIDI input devices on the
13591     back-end changes by issuing the following command:
13592     </p>
13593     <p>
13594     </p>
13595     <blockquote class="text">
13596     <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
13597     </p>
13598     </blockquote><p>
13599    
13600     </p>
13601     <p>Server will start sending the following notification messages:
13602     </p>
13603     <p>
13604     </p>
13605     <blockquote class="text">
13606     <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
13607     </p>
13608     </blockquote><p>
13609    
13610     </p>
13611     <p>where &lt;devices&gt; will be replaced by the new number
13612     of MIDI input devices.
13613     </p>
13614     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
13615     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13616     <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
13617     MIDI input device's settings changed</h3>
13618    
13619     <p>Client may want to be notified when changes were made to MIDI input devices on the
13620     back-end by issuing the following command:
13621     </p>
13622     <p>
13623     </p>
13624     <blockquote class="text">
13625     <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
13626     </p>
13627     </blockquote><p>
13628    
13629     </p>
13630     <p>Server will start sending the following notification messages:
13631     </p>
13632     <p>
13633     </p>
13634     <blockquote class="text">
13635     <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
13636     </p>
13637     </blockquote><p>
13638    
13639     </p>
13640     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
13641     which settings has been changed. The front-end will have to send
13642     the respective command to actually get the MIDI input device info. Because these messages
13643     will be triggered by LSCP commands issued by other clients rather than real
13644     time events happening on the server, it is believed that an empty notification
13645     message is sufficient here.
13646     </p>
13647     <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
13648     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13649     <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
13650 schoenebeck 974 Number of sampler channels changed</h3>
13651 senoner 542
13652     <p>Client may want to be notified when the total number of channels on the
13653     back-end changes by issuing the following command:
13654     </p>
13655 schoenebeck 708 <p>
13656     </p>
13657 senoner 542 <blockquote class="text">
13658 schoenebeck 558 <p>SUBSCRIBE CHANNEL_COUNT
13659 senoner 542 </p>
13660 schoenebeck 708 </blockquote><p>
13661 schoenebeck 940
13662 schoenebeck 708 </p>
13663 senoner 542 <p>Server will start sending the following notification messages:
13664     </p>
13665 schoenebeck 708 <p>
13666     </p>
13667 senoner 542 <blockquote class="text">
13668 schoenebeck 558 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
13669 senoner 542 </p>
13670 schoenebeck 708 </blockquote><p>
13671 schoenebeck 940
13672 schoenebeck 708 </p>
13673 senoner 542 <p>where &lt;channels&gt; will be replaced by the new number
13674     of sampler channels.
13675     </p>
13676 schoenebeck 1685 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
13677     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13678     <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
13679     MIDI data on a sampler channel arrived</h3>
13680    
13681     <p>Client may want to be notified when MIDI data arrive on sampler channels on
13682     back-end side, by issuing the following command:
13683     </p>
13684     <p>
13685     </p>
13686     <blockquote class="text">
13687     <p>SUBSCRIBE CHANNEL_MIDI
13688     </p>
13689     </blockquote><p>
13690    
13691     </p>
13692     <p>Server will start sending one of the the following notification messages:
13693     </p>
13694     <p>
13695     </p>
13696     <blockquote class="text">
13697     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13698     </p>
13699     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13700     </p>
13701     </blockquote><p>
13702    
13703     </p>
13704     <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
13705     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13706     0 .. 127, reflecting the analog meaning of the MIDI specification.
13707    
13708     </p>
13709     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13710     delivered by this mechanism! With other words: events could be lost at any time!
13711     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13712     thread unaffected by this feature.
13713     </p>
13714 schoenebeck 1696 <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
13715     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13716     <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
13717     MIDI data on a MIDI input device arrived</h3>
13718    
13719     <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
13720     </p>
13721     <p>
13722     </p>
13723     <blockquote class="text">
13724     <p>SUBSCRIBE DEVICE_MIDI
13725     </p>
13726     </blockquote><p>
13727    
13728     </p>
13729     <p>Server will start sending one of the the following notification messages:
13730     </p>
13731     <p>
13732     </p>
13733     <blockquote class="text">
13734 iliev 1731 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13735 schoenebeck 1696 </p>
13736 iliev 1731 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13737 schoenebeck 1696 </p>
13738     </blockquote><p>
13739    
13740     </p>
13741     <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
13742     by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
13743     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13744     0 .. 127, reflecting the analog meaning of the MIDI specification.
13745    
13746     </p>
13747     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13748     delivered by this mechanism! With other words: events could be lost at any time!
13749     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13750     thread unaffected by this feature.
13751     </p>
13752 schoenebeck 940 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
13753 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>
13754 schoenebeck 1696 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
13755 schoenebeck 974 Number of active voices changed</h3>
13756 senoner 542
13757     <p>Client may want to be notified when the number of voices on the
13758     back-end changes by issuing the following command:
13759     </p>
13760 schoenebeck 708 <p>
13761     </p>
13762 senoner 542 <blockquote class="text">
13763     <p>SUBSCRIBE VOICE_COUNT
13764     </p>
13765 schoenebeck 708 </blockquote><p>
13766 schoenebeck 940
13767 schoenebeck 708 </p>
13768 senoner 542 <p>Server will start sending the following notification messages:
13769     </p>
13770 schoenebeck 708 <p>
13771     </p>
13772 senoner 542 <blockquote class="text">
13773 iliev 1110 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
13774 senoner 542 </p>
13775 schoenebeck 708 </blockquote><p>
13776 schoenebeck 940
13777 schoenebeck 708 </p>
13778 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13779     voice count change occurred and &lt;voices&gt; by the new number of
13780     active voices on that channel.
13781     </p>
13782 schoenebeck 940 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
13783 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>
13784 schoenebeck 1696 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
13785 schoenebeck 974 Number of active disk streams changed</h3>
13786 senoner 542
13787     <p>Client may want to be notified when the number of streams on the back-end
13788     changes by issuing the following command: SUBSCRIBE STREAM_COUNT
13789     </p>
13790 schoenebeck 708 <p>
13791     </p>
13792 senoner 542 <blockquote class="text">
13793     <p>SUBSCRIBE STREAM_COUNT
13794     </p>
13795 schoenebeck 708 </blockquote><p>
13796 schoenebeck 940
13797 schoenebeck 708 </p>
13798 senoner 542 <p>Server will start sending the following notification messages:
13799     </p>
13800 schoenebeck 708 <p>
13801     </p>
13802 senoner 542 <blockquote class="text">
13803     <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
13804     </p>
13805 schoenebeck 708 </blockquote><p>
13806 schoenebeck 940
13807 schoenebeck 708 </p>
13808 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13809     stream count change occurred and &lt;streams&gt; by the new number of
13810     active disk streams on that channel.
13811     </p>
13812 schoenebeck 940 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
13813 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>
13814 schoenebeck 1696 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
13815 schoenebeck 974 Disk stream buffer fill state changed</h3>
13816 senoner 542
13817     <p>Client may want to be notified when the buffer fill state of a disk stream
13818     on the back-end changes by issuing the following command:
13819     </p>
13820 schoenebeck 708 <p>
13821     </p>
13822 senoner 542 <blockquote class="text">
13823     <p>SUBSCRIBE BUFFER_FILL
13824     </p>
13825 schoenebeck 708 </blockquote><p>
13826 schoenebeck 940
13827 schoenebeck 708 </p>
13828 senoner 542 <p>Server will start sending the following notification messages:
13829     </p>
13830 schoenebeck 708 <p>
13831     </p>
13832 senoner 542 <blockquote class="text">
13833     <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
13834     </p>
13835 schoenebeck 708 </blockquote><p>
13836 schoenebeck 940
13837 schoenebeck 708 </p>
13838 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13839     buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
13840 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>
13841     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.
13842 senoner 542 </p>
13843 iliev 992 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
13844 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>
13845 schoenebeck 1696 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
13846 schoenebeck 974 Channel information changed</h3>
13847 senoner 542
13848     <p>Client may want to be notified when changes were made to sampler channels on the
13849 schoenebeck 561 back-end by issuing the following command:
13850 senoner 542 </p>
13851 schoenebeck 708 <p>
13852     </p>
13853 senoner 542 <blockquote class="text">
13854 schoenebeck 558 <p>SUBSCRIBE CHANNEL_INFO
13855 senoner 542 </p>
13856 schoenebeck 708 </blockquote><p>
13857 schoenebeck 940
13858 schoenebeck 708 </p>
13859 senoner 542 <p>Server will start sending the following notification messages:
13860     </p>
13861 schoenebeck 708 <p>
13862     </p>
13863 senoner 542 <blockquote class="text">
13864 schoenebeck 558 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
13865 senoner 542 </p>
13866 schoenebeck 708 </blockquote><p>
13867 schoenebeck 940
13868 schoenebeck 708 </p>
13869 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13870     channel info change occurred. The front-end will have to send
13871     the respective command to actually get the channel info. Because these messages
13872     will be triggered by LSCP commands issued by other clients rather than real
13873     time events happening on the server, it is believed that an empty notification
13874     message is sufficient here.
13875     </p>
13876 iliev 1110 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
13877     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13878 schoenebeck 1696 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
13879 iliev 1110 Number of effect sends changed</h3>
13880    
13881 schoenebeck 1251 <p>Client may want to be notified when the number of effect sends on
13882 iliev 1110 a particular sampler channel is changed by issuing the following command:
13883     </p>
13884     <p>
13885     </p>
13886     <blockquote class="text">
13887     <p>SUBSCRIBE FX_SEND_COUNT
13888     </p>
13889     </blockquote><p>
13890    
13891     </p>
13892     <p>Server will start sending the following notification messages:
13893     </p>
13894     <p>
13895     </p>
13896     <blockquote class="text">
13897     <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
13898     </p>
13899     </blockquote><p>
13900    
13901     </p>
13902     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13903     channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
13904     be replaced by the new number of effect sends on that channel.
13905     </p>
13906     <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
13907     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13908 schoenebeck 1696 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
13909 iliev 1110 Effect send information changed</h3>
13910    
13911     <p>Client may want to be notified when changes were made to effect sends on a
13912     a particular sampler channel by issuing the following command:
13913     </p>
13914     <p>
13915     </p>
13916     <blockquote class="text">
13917     <p>SUBSCRIBE FX_SEND_INFO
13918     </p>
13919     </blockquote><p>
13920    
13921     </p>
13922     <p>Server will start sending the following notification messages:
13923     </p>
13924     <p>
13925     </p>
13926     <blockquote class="text">
13927     <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
13928     </p>
13929     </blockquote><p>
13930    
13931     </p>
13932     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13933     channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
13934     be replaced by the numerical ID of the changed effect send.
13935     </p>
13936 schoenebeck 940 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
13937 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>
13938 schoenebeck 1696 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
13939 schoenebeck 974 Total number of active voices changed</h3>
13940 senoner 542
13941 schoenebeck 940 <p>Client may want to be notified when the total number of voices on the
13942     back-end changes by issuing the following command:
13943     </p>
13944     <p>
13945     </p>
13946     <blockquote class="text">
13947     <p>SUBSCRIBE TOTAL_VOICE_COUNT
13948     </p>
13949     </blockquote><p>
13950    
13951     </p>
13952     <p>Server will start sending the following notification messages:
13953     </p>
13954     <p>
13955     </p>
13956     <blockquote class="text">
13957 iliev 1110 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
13958 schoenebeck 940 </p>
13959     </blockquote><p>
13960    
13961     </p>
13962     <p>where &lt;voices&gt; will be replaced by the new number of
13963     all currently active voices.
13964     </p>
13965 schoenebeck 1572 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
13966     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13967 schoenebeck 1696 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
13968 schoenebeck 1572 Total number of active disk streams changed</h3>
13969    
13970     <p>Client may want to be notified when the total number of disk streams on the
13971     back-end changes by issuing the following command:
13972     </p>
13973     <p>
13974     </p>
13975     <blockquote class="text">
13976     <p>SUBSCRIBE TOTAL_STREAM_COUNT
13977     </p>
13978     </blockquote><p>
13979    
13980     </p>
13981     <p>Server will start sending the following notification messages:
13982     </p>
13983     <p>
13984     </p>
13985     <blockquote class="text">
13986     <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
13987     </p>
13988     </blockquote><p>
13989    
13990     </p>
13991     <p>where &lt;streams&gt; will be replaced by the new number of
13992     all currently active disk streams.
13993     </p>
13994 iliev 992 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
13995     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13996 schoenebeck 1696 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
13997 iliev 992 Number of MIDI instrument maps changed</h3>
13998    
13999     <p>Client may want to be notified when the number of MIDI instrument maps on the
14000     back-end changes by issuing the following command:
14001     </p>
14002     <p>
14003     </p>
14004     <blockquote class="text">
14005     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
14006     </p>
14007     </blockquote><p>
14008    
14009     </p>
14010     <p>Server will start sending the following notification messages:
14011     </p>
14012     <p>
14013     </p>
14014     <blockquote class="text">
14015     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
14016     </p>
14017     </blockquote><p>
14018    
14019     </p>
14020     <p>where &lt;maps&gt; will be replaced by the new number
14021     of MIDI instrument maps.
14022     </p>
14023     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
14024     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14025 schoenebeck 1696 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
14026 iliev 992 MIDI instrument map information changed</h3>
14027    
14028     <p>Client may want to be notified when changes were made to MIDI instrument maps on the
14029     back-end by issuing the following command:
14030     </p>
14031     <p>
14032     </p>
14033     <blockquote class="text">
14034     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
14035     </p>
14036     </blockquote><p>
14037    
14038     </p>
14039     <p>Server will start sending the following notification messages:
14040     </p>
14041     <p>
14042     </p>
14043     <blockquote class="text">
14044     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
14045     </p>
14046     </blockquote><p>
14047    
14048     </p>
14049     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
14050     for which information changes occurred. The front-end will have to send
14051     the respective command to actually get the MIDI instrument map info. Because these messages
14052     will be triggered by LSCP commands issued by other clients rather than real
14053     time events happening on the server, it is believed that an empty notification
14054     message is sufficient here.
14055     </p>
14056     <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
14057     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14058 schoenebeck 1696 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
14059 iliev 992 Number of MIDI instruments changed</h3>
14060    
14061     <p>Client may want to be notified when the number of MIDI instrument maps on the
14062     back-end changes by issuing the following command:
14063     </p>
14064     <p>
14065     </p>
14066     <blockquote class="text">
14067     <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
14068     </p>
14069     </blockquote><p>
14070    
14071     </p>
14072     <p>Server will start sending the following notification messages:
14073     </p>
14074     <p>
14075     </p>
14076     <blockquote class="text">
14077     <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
14078     </p>
14079     </blockquote><p>
14080    
14081     </p>
14082     <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
14083     the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
14084     the new number of MIDI instruments in the specified map.
14085     </p>
14086     <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
14087     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14088 schoenebeck 1696 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
14089 iliev 992 MIDI instrument information changed</h3>
14090    
14091     <p>Client may want to be notified when changes were made to MIDI instruments on the
14092     back-end by issuing the following command:
14093     </p>
14094     <p>
14095     </p>
14096     <blockquote class="text">
14097     <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
14098     </p>
14099     </blockquote><p>
14100    
14101     </p>
14102     <p>Server will start sending the following notification messages:
14103     </p>
14104     <p>
14105     </p>
14106     <blockquote class="text">
14107     <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
14108     </p>
14109     </blockquote><p>
14110    
14111     </p>
14112     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
14113     in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
14114     the location of the changed MIDI instrument in the map. The front-end will have to send
14115     the respective command to actually get the MIDI instrument info. Because these messages
14116     will be triggered by LSCP commands issued by other clients rather than real
14117     time events happening on the server, it is believed that an empty notification
14118     message is sufficient here.
14119     </p>
14120 iliev 1110 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
14121     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14122 schoenebeck 1696 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
14123 iliev 1110 Global settings changed</h3>
14124    
14125     <p>Client may want to be notified when changes to the global settings
14126     of the sampler were made by issuing the following command:
14127     </p>
14128     <p>
14129     </p>
14130     <blockquote class="text">
14131     <p>SUBSCRIBE GLOBAL_INFO
14132     </p>
14133     </blockquote><p>
14134    
14135     </p>
14136     <p>Server will start sending the following types of notification messages:
14137     </p>
14138     <p>
14139     </p>
14140     <blockquote class="text">
14141     <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
14142     golbal volume of the sampler is changed, where &lt;volume&gt; will be
14143     replaced by the optional dotted floating point value, reflecting the
14144     new global volume parameter.
14145     </p>
14146     </blockquote><p>
14147 schoenebeck 1801 </p>
14148     <blockquote class="text">
14149     <p>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
14150     golbal limit of the sampler for maximum voices is changed, where
14151     &lt;max-voices&gt; will be an integer value, reflecting the
14152     new global voice limit parameter.
14153     </p>
14154     </blockquote><p>
14155     </p>
14156     <blockquote class="text">
14157     <p>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
14158     golbal limit of the sampler for maximum disk streams is changed, where
14159     &lt;max-streams&gt; will be an integer value, reflecting the
14160     new global disk streams limit parameter.
14161     </p>
14162     </blockquote><p>
14163 iliev 1110
14164     </p>
14165 iliev 1162 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
14166     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14167 schoenebeck 1696 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
14168 iliev 1162 Number of database instrument directories changed</h3>
14169    
14170     <p>Client may want to be notified when the number of instrument
14171     directories in a particular directory in the instruments database
14172     is changed by issuing the following command:
14173     </p>
14174     <p>
14175     </p>
14176     <blockquote class="text">
14177     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
14178     </p>
14179     </blockquote><p>
14180    
14181     </p>
14182     <p>Server will start sending the following notification messages:
14183     </p>
14184     <p>
14185     </p>
14186     <blockquote class="text">
14187     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
14188     </p>
14189     </blockquote><p>
14190    
14191     </p>
14192     <p>where &lt;dir-path&gt; will be replaced by the absolute path
14193     name of the directory in the instruments database,
14194     in which the number of directories is changed.
14195     </p>
14196     <p>Note that when a non-empty directory is removed, this event
14197     is not sent for the subdirectories in that directory.
14198     </p>
14199     <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
14200     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14201 schoenebeck 1696 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
14202 iliev 1162 Database instrument directory information changed</h3>
14203    
14204     <p>Client may want to be notified when changes were made to directories
14205     in the instruments database by issuing the following command:
14206     </p>
14207     <p>
14208     </p>
14209     <blockquote class="text">
14210     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
14211     </p>
14212     </blockquote><p>
14213    
14214     </p>
14215     <p>Server will start sending the following notification messages:
14216     </p>
14217     <p>
14218     </p>
14219     <blockquote class="text">
14220     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
14221     </p>
14222     </blockquote><p>
14223    
14224     </p>
14225     <p>where &lt;dir-path&gt; will be replaced by the absolute path name
14226     of the directory, for which information changes occurred. The front-end will have to send
14227     the respective command to actually get the updated directory info. Because these messages
14228     will be triggered by LSCP commands issued by other clients rather than real
14229     time events happening on the server, it is believed that an empty notification
14230     message is sufficient here.
14231     </p>
14232     <p>
14233     </p>
14234     <blockquote class="text">
14235     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
14236     </p>
14237     </blockquote><p>
14238    
14239     </p>
14240     <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
14241     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
14242     the new name of the directory, encapsulated into apostrophes.
14243     </p>
14244     <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
14245     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14246 schoenebeck 1696 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
14247 iliev 1162 Number of database instruments changed</h3>
14248    
14249     <p>Client may want to be notified when the number of instruments
14250     in a particular directory in the instruments database
14251     is changed by issuing the following command:
14252     </p>
14253     <p>
14254     </p>
14255     <blockquote class="text">
14256     <p>SUBSCRIBE DB_INSTRUMENT_COUNT
14257     </p>
14258     </blockquote><p>
14259    
14260     </p>
14261     <p>Server will start sending the following notification messages:
14262     </p>
14263     <p>
14264     </p>
14265     <blockquote class="text">
14266     <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
14267     </p>
14268     </blockquote><p>
14269    
14270     </p>
14271     <p>where &lt;dir-path&gt; will be replaced by the absolute path
14272     name of the directory in the instruments database,
14273     in which the number of instruments is changed.
14274     </p>
14275     <p>Note that when a non-empty directory is removed, this event
14276     is not sent for the instruments in that directory.
14277     </p>
14278     <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
14279     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14280 schoenebeck 1696 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
14281 iliev 1162 Database instrument information changed</h3>
14282    
14283     <p>Client may want to be notified when changes were made to instruments
14284     in the instruments database by issuing the following command:
14285     </p>
14286     <p>
14287     </p>
14288     <blockquote class="text">
14289     <p>SUBSCRIBE DB_INSTRUMENT_INFO
14290     </p>
14291     </blockquote><p>
14292    
14293     </p>
14294     <p>Server will start sending the following notification messages:
14295     </p>
14296     <p>
14297     </p>
14298     <blockquote class="text">
14299     <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
14300     </p>
14301     </blockquote><p>
14302    
14303     </p>
14304     <p>where &lt;instr-path&gt; will be replaced by the absolute path name
14305     of the instrument, which settings are changed. The front-end will have to send
14306     the respective command to actually get the updated directory info. Because these messages
14307     will be triggered by LSCP commands issued by other clients rather than real
14308     time events happening on the server, it is believed that an empty notification
14309     message is sufficient here.
14310     </p>
14311     <p>
14312     </p>
14313     <blockquote class="text">
14314     <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
14315     </p>
14316     </blockquote><p>
14317    
14318     </p>
14319     <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
14320     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
14321     the new name of the instrument, encapsulated into apostrophes.
14322     </p>
14323 iliev 1201 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
14324     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14325 schoenebeck 1696 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
14326 iliev 1201 Database job status information changed</h3>
14327    
14328     <p>Client may want to be notified when the status of particular database
14329     instruments job is changed by issuing the following command:
14330     </p>
14331     <p>
14332     </p>
14333     <blockquote class="text">
14334     <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
14335     </p>
14336     </blockquote><p>
14337    
14338     </p>
14339     <p>Server will start sending the following notification messages:
14340     </p>
14341     <p>
14342     </p>
14343     <blockquote class="text">
14344     <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
14345     </p>
14346     </blockquote><p>
14347    
14348     </p>
14349     <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
14350     which status is changed. The front-end will have to send the respective
14351     command to actually get the status info. Because these messages
14352     will be triggered by LSCP commands issued by other clients rather than real
14353     time events happening on the server, it is believed that an empty notification
14354     message is sufficient here.
14355     </p>
14356 iliev 2189 <a name="SUBSCRIBE EFFECT_INSTANCE_COUNT"></a><br /><hr />
14357     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14358     <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
14359     Number of effect instances changed</h3>
14360    
14361     <p>Client may want to be notified when the number of effect instances
14362     is changed by issuing the following command:
14363     </p>
14364     <p>
14365     </p>
14366     <blockquote class="text">
14367     <p>SUBSCRIBE EFFECT_INSTANCE_COUNT
14368     </p>
14369     </blockquote><p>
14370    
14371     </p>
14372     <p>Server will start sending the following notification messages:
14373     </p>
14374     <p>
14375     </p>
14376     <blockquote class="text">
14377     <p>"EFFECT_INSTANCE_COUNT:&lt;instances&gt;"
14378     </p>
14379     </blockquote><p>
14380    
14381     </p>
14382     <p>where &lt;instances&gt; will be replaced by the new number
14383     of effect instances.
14384     </p>
14385     <a name="SUBSCRIBE EFFECT_INSTANCE_INFO"></a><br /><hr />
14386     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14387     <a name="rfc.section.8.27"></a><h3>8.27.&nbsp;
14388     Effect instance information changed</h3>
14389    
14390     <p>Client may want to be notified when changes were made to effect instances
14391     on the back-end by issuing the following command:
14392     </p>
14393     <p>
14394     </p>
14395     <blockquote class="text">
14396     <p>SUBSCRIBE EFFECT_INSTANCE_INFO
14397     </p>
14398     </blockquote><p>
14399    
14400     </p>
14401     <p>Server will start sending the following notification messages:
14402     </p>
14403     <p>
14404     </p>
14405     <blockquote class="text">
14406     <p>"EFFECT_INSTANCE_INFO:&lt;instance-id&gt;"
14407     </p>
14408     </blockquote><p>
14409    
14410     </p>
14411     <p>where &lt;instance-id&gt; will be replaced by the numerical ID
14412     of the effect instance.
14413     </p>
14414     <a name="SUBSCRIBE SEND_EFFECT_CHAIN_COUNT"></a><br /><hr />
14415     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14416     <a name="rfc.section.8.28"></a><h3>8.28.&nbsp;
14417     Number of send effect chains changed</h3>
14418    
14419     <p>Client may want to be notified when the number of send effect chains
14420     is changed by issuing the following command:
14421     </p>
14422     <p>
14423     </p>
14424     <blockquote class="text">
14425     <p>SUBSCRIBE SEND_EFFECT_CHAIN_COUNT
14426     </p>
14427     </blockquote><p>
14428    
14429     </p>
14430     <p>Server will start sending the following notification messages:
14431     </p>
14432     <p>
14433     </p>
14434     <blockquote class="text">
14435     <p>"NOTIFY:SEND_EFFECT_CHAIN_COUNT:&lt;device-id&gt; &lt;chains&gt;"
14436     </p>
14437     </blockquote><p>
14438    
14439     </p>
14440     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14441     output device, in which the number of send effect chains is changed and
14442     &lt;chains&gt; will be replaced by the new number of send effect chains.
14443     </p>
14444     <a name="SUBSCRIBE SEND_EFFECT_CHAIN_INFO"></a><br /><hr />
14445     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14446     <a name="rfc.section.8.29"></a><h3>8.29.&nbsp;
14447     Send effect chain information changed</h3>
14448    
14449     <p>Client may want to be notified when changes were made to send effect chains
14450     on the back-end by issuing the following command:
14451     </p>
14452     <p>
14453     </p>
14454     <blockquote class="text">
14455     <p>SUBSCRIBE SEND_EFFECT_CHAIN_INFO
14456     </p>
14457     </blockquote><p>
14458    
14459     </p>
14460     <p>Server will start sending the following notification messages:
14461     </p>
14462     <p>
14463     </p>
14464     <blockquote class="text">
14465     <p>"SEND_EFFECT_CHAIN_INFO:&lt;device-id&gt; &lt;chain-id&gt; &lt;instances&gt;" -
14466     Notifies that the number of effect instances in a particular send effect chain
14467     is changed, where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14468     output device the send effect chain belongs to, &lt;chain-id&gt; will be replaced
14469     by the numerical ID of the send effect chain in which the number of effect instances
14470     has changed and &lt;instances&gt; will be replaced by the new number
14471     of effect instances in the specified send effect chain.
14472     </p>
14473     </blockquote><p>
14474    
14475     </p>
14476 schoenebeck 940 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
14477 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>
14478 iliev 2189 <a name="rfc.section.8.30"></a><h3>8.30.&nbsp;
14479 schoenebeck 974 Miscellaneous and debugging events</h3>
14480 schoenebeck 940
14481 senoner 542 <p>Client may want to be notified of miscellaneous and debugging events occurring at
14482     the server by issuing the following command:
14483     </p>
14484 schoenebeck 708 <p>
14485     </p>
14486 senoner 542 <blockquote class="text">
14487     <p>SUBSCRIBE MISCELLANEOUS
14488     </p>
14489 schoenebeck 708 </blockquote><p>
14490 schoenebeck 940
14491 schoenebeck 708 </p>
14492 senoner 542 <p>Server will start sending the following notification messages:
14493     </p>
14494 schoenebeck 708 <p>
14495     </p>
14496 senoner 542 <blockquote class="text">
14497     <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
14498     </p>
14499 schoenebeck 708 </blockquote><p>
14500 schoenebeck 940
14501 schoenebeck 708 </p>
14502 senoner 542 <p>where &lt;string&gt; will be replaced by whatever data server
14503     wants to send to the client. Client MAY display this data to the
14504     user AS IS to facilitate debugging.
14505     </p>
14506 schoenebeck 974 <a name="anchor14"></a><br /><hr />
14507     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14508     <a name="rfc.section.9"></a><h3>9.&nbsp;
14509     Security Considerations</h3>
14510 senoner 542
14511     <p>As there is so far no method of authentication and authorization
14512     defined and so not required for a client applications to succeed to
14513     connect, running LinuxSampler might be a security risk for the host
14514     system the LinuxSampler instance is running on.
14515     </p>
14516 schoenebeck 974 <a name="anchor15"></a><br /><hr />
14517     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14518     <a name="rfc.section.10"></a><h3>10.&nbsp;
14519     Acknowledgments</h3>
14520 senoner 542
14521     <p>This document has benefited greatly from the comments of the
14522     following people, discussed on the LinuxSampler developer's mailing
14523     list:
14524     </p>
14525 schoenebeck 708 <p>
14526     </p>
14527 senoner 542 <blockquote class="text">
14528     <p>Rui Nuno Capela
14529     </p>
14530     <p>Vladimir Senkov
14531     </p>
14532     <p>Mark Knecht
14533     </p>
14534 schoenebeck 561 <p>Grigor Iliev
14535     </p>
14536 schoenebeck 708 </blockquote><p>
14537 schoenebeck 940
14538 schoenebeck 708 </p>
14539 senoner 542 <a name="rfc.references1"></a><br /><hr />
14540 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>
14541 schoenebeck 708 <h3>11.&nbsp;References</h3>
14542 senoner 542 <table width="99%" border="0">
14543 schoenebeck 1251 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
14544 schoenebeck 1801 <td class="author-text">UCLA, &ldquo;<a href="http://tools.ietf.org/html/rfc20">ASCII format for Network Interchange</a>,&rdquo; RFC&nbsp;20, 1969.</td></tr>
14545 senoner 542 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
14546 schoenebeck 1801 <td class="author-text">Bradner, S., &ldquo;<a href="http://tools.ietf.org/html/rfc2119">Key words for use in RFCs to Indicate Requirement Levels</a>,&rdquo; RFC&nbsp;2119, 1997.</td></tr>
14547 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
14548 schoenebeck 1801 <td class="author-text">Crocker, D. and P. Overell, &ldquo;<a href="http://tools.ietf.org/html/rfc2234">Augmented BNF for Syntax Specifications</a>,&rdquo; RFC&nbsp;2234, 1997.</td></tr>
14549 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
14550 schoenebeck 1801 <td class="author-text">Defense Advanced Research Projects Agency, &ldquo;<a href="http://tools.ietf.org/html/rfc793">TRANSMISSION CONTROL PROTOCOL</a>,&rdquo; RFC&nbsp;793, 1981.</td></tr>
14551 senoner 542 </table>
14552    
14553     <a name="rfc.authors"></a><br /><hr />
14554 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>
14555 senoner 542 <h3>Author's Address</h3>
14556     <table width="99%" border="0" cellpadding="0" cellspacing="0">
14557     <tr><td class="author-text">&nbsp;</td>
14558     <td class="author-text">C.
14559     Schoenebeck</td></tr>
14560     <tr><td class="author-text">&nbsp;</td>
14561 schoenebeck 2498 <td class="author-text">LinuxSampler.org</td></tr>
14562 senoner 542 <tr><td class="author-text">&nbsp;</td>
14563 schoenebeck 2498 <td class="author-text">Crudebyte Engineering</td></tr>
14564 senoner 542 <tr><td class="author-text">&nbsp;</td>
14565 schoenebeck 2498 <td class="author-text">Hofgartenstr. 3</td></tr>
14566 senoner 542 <tr><td class="author-text">&nbsp;</td>
14567 schoenebeck 2498 <td class="author-text">74189 Weinsberg</td></tr>
14568     <tr><td class="author-text">&nbsp;</td>
14569 senoner 542 <td class="author-text">Germany</td></tr>
14570 schoenebeck 2498 <tr><td class="author" align="right">Phone:&nbsp;</td>
14571     <td class="author-text">+49 7134 911614</td></tr>
14572 schoenebeck 708 <tr><td class="author" align="right">Email:&nbsp;</td>
14573 schoenebeck 2498 <td class="author-text"><a href="mailto:cuse@users.sf.net">cuse@users.sf.net</a></td></tr>
14574 senoner 542 </table>
14575     <a name="rfc.copyright"></a><br /><hr />
14576 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>
14577     <h3>Full Copyright Statement</h3>
14578 senoner 542 <p class='copyright'>
14579 schoenebeck 2498 Copyright &copy; The IETF Trust (2014).</p>
14580 senoner 542 <p class='copyright'>
14581 schoenebeck 974 This document is subject to the rights,
14582     licenses and restrictions contained in BCP&nbsp;78,
14583     and except as set forth therein,
14584     the authors retain all their rights.</p>
14585 senoner 542 <p class='copyright'>
14586 schoenebeck 974 This document and the information contained herein are provided
14587     on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
14588 iliev 1110 THE ORGANIZATION HE/SHE REPRESENTS
14589     OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
14590     AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
14591     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
14592     THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
14593     IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
14594     PURPOSE.</p>
14595 schoenebeck 974 <h3>Intellectual Property</h3>
14596 senoner 542 <p class='copyright'>
14597 schoenebeck 974 The IETF takes no position regarding the validity or scope of any
14598     Intellectual Property Rights or other rights that might be claimed
14599     to pertain to the implementation or use of the technology
14600     described in this document or the extent to which any license
14601     under such rights might or might not be available; nor does it
14602     represent that it has made any independent effort to identify any
14603     such rights.
14604     Information on the procedures with respect to
14605     rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
14606 senoner 542 <p class='copyright'>
14607 schoenebeck 974 Copies of IPR disclosures made to the IETF Secretariat and any
14608     assurances of licenses to be made available,
14609     or the result of an attempt made to obtain a general license or
14610     permission for the use of such proprietary rights by implementers or
14611     users of this specification can be obtained from the IETF on-line IPR
14612     repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
14613 senoner 542 <p class='copyright'>
14614 schoenebeck 974 The IETF invites any interested party to bring to its attention
14615     any copyrights,
14616     patents or patent applications,
14617     or other
14618     proprietary rights that may cover technology that may be required
14619     to implement this standard.
14620     Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
14621 senoner 542 </body></html>

  ViewVC Help
Powered by ViewVC