/[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 2499 - (hide annotations) (download) (as text)
Fri Jan 10 00:57:00 2014 UTC (10 years, 4 months ago) by schoenebeck
File MIME type: text/html
File size: 521730 byte(s)
* Updated LSCP 1.6 specs.

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

  ViewVC Help
Powered by ViewVC