/[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 2189 - (hide annotations) (download) (as text)
Fri Jun 24 19:57:07 2011 UTC (12 years, 10 months ago) by iliev
File MIME type: text/html
File size: 505133 byte(s)
* updated LSCP 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 iliev 2189 <meta name="generator" content="xml2rfc v1.34 (http://xml.resource.org/)">
7 schoenebeck 974 <style type='text/css'><!--
8 iliev 1110 body {
9     font-family: verdana, charcoal, helvetica, arial, sans-serif;
10     font-size: small; color: #000; background-color: #FFF;
11     margin: 2em;
12     }
13 schoenebeck 974 h1, h2, h3, h4, h5, h6 {
14 iliev 1110 font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15     font-weight: bold; font-style: normal;
16     }
17     h1 { color: #900; background-color: transparent; text-align: right; }
18     h3 { color: #333; background-color: transparent; }
19 senoner 542
20 iliev 1110 td.RFCbug {
21     font-size: x-small; text-decoration: none;
22     width: 30px; height: 30px; padding-top: 2px;
23     text-align: justify; vertical-align: middle;
24     background-color: #000;
25     }
26     td.RFCbug span.RFC {
27     font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28     font-weight: bold; color: #666;
29     }
30     td.RFCbug span.hotText {
31     font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32     font-weight: normal; text-align: center; color: #FFF;
33     }
34 senoner 542
35 iliev 1110 table.TOCbug { width: 30px; height: 15px; }
36     td.TOCbug {
37     text-align: center; width: 30px; height: 15px;
38     color: #FFF; background-color: #900;
39     }
40     td.TOCbug a {
41     font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42     font-weight: bold; font-size: x-small; text-decoration: none;
43     color: #FFF; background-color: transparent;
44     }
45 senoner 542
46 iliev 1110 td.header {
47     font-family: arial, helvetica, sans-serif; font-size: x-small;
48     vertical-align: top; width: 33%;
49     color: #FFF; background-color: #666;
50     }
51     td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52     td.author-text { font-size: x-small; }
53 senoner 542
54 iliev 1110 /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55     a.info {
56     /* This is the key. */
57     position: relative;
58     z-index: 24;
59     text-decoration: none;
60     }
61     a.info:hover {
62     z-index: 25;
63     color: #FFF; background-color: #900;
64     }
65     a.info span { display: none; }
66     a.info:hover span.info {
67     /* The span will display just on :hover state. */
68     display: block;
69     position: absolute;
70     font-size: smaller;
71     top: 2em; left: -5em; width: 15em;
72     padding: 2px; border: 1px solid #333;
73     color: #900; background-color: #EEE;
74     text-align: left;
75     }
76 senoner 542
77 iliev 1110 a { font-weight: bold; }
78     a:link { color: #900; background-color: transparent; }
79     a:visited { color: #633; background-color: transparent; }
80     a:active { color: #633; background-color: transparent; }
81 senoner 542
82 iliev 1110 p { margin-left: 2em; margin-right: 2em; }
83     p.copyright { font-size: x-small; }
84     p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85     table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86     td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87 senoner 542
88 iliev 1110 ol.text { margin-left: 2em; margin-right: 2em; }
89     ul.text { margin-left: 2em; margin-right: 2em; }
90     li { margin-left: 3em; }
91 senoner 542
92 iliev 1110 /* RFC-2629 <spanx>s and <artwork>s. */
93     em { font-style: italic; }
94     strong { font-weight: bold; }
95     dfn { font-weight: bold; font-style: normal; }
96     cite { font-weight: normal; font-style: normal; }
97     tt { color: #036; }
98 schoenebeck 974 tt, pre, pre dfn, pre em, pre cite, pre span {
99 iliev 1110 font-family: "Courier New", Courier, monospace; font-size: small;
100     }
101     pre {
102     text-align: left; padding: 4px;
103     color: #000; background-color: #CCC;
104     }
105     pre dfn { color: #900; }
106     pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107     pre .key { color: #33C; font-weight: bold; }
108     pre .id { color: #900; }
109     pre .str { color: #000; background-color: #CFF; }
110     pre .val { color: #066; }
111     pre .rep { color: #909; }
112     pre .oth { color: #000; background-color: #FCF; }
113     pre .err { background-color: #FCC; }
114 schoenebeck 708
115 iliev 1110 /* RFC-2629 <texttable>s. */
116     table.all, table.full, table.headers, table.none {
117     font-size: small; text-align: center; border-width: 2px;
118     vertical-align: top; border-collapse: collapse;
119     }
120     table.all, table.full { border-style: solid; border-color: black; }
121     table.headers, table.none { border-style: none; }
122     th {
123     font-weight: bold; border-color: black;
124     border-width: 2px 2px 3px 2px;
125     }
126     table.all th, table.full th { border-style: solid; }
127     table.headers th { border-style: none none solid none; }
128     table.none th { border-style: none; }
129     table.all td {
130     border-style: solid; border-color: #333;
131     border-width: 1px 2px;
132     }
133     table.full td, table.headers td, table.none td { border-style: none; }
134 senoner 542
135 iliev 1110 hr { height: 1px; }
136     hr.insert {
137     width: 80%; border-style: none; border-width: 0;
138     color: #CCC; background-color: #CCC;
139     }
140 schoenebeck 974 --></style>
141 senoner 542 </head>
142     <body>
143 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144 senoner 542 <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145     <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146     <tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr>
147 schoenebeck 974 <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148 iliev 2189 <tr><td class="header">Expires: December 26, 2011</td><td class="header">June 24, 2011</td></tr>
149 senoner 542 </table></td></tr></table>
150 schoenebeck 2023 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.5</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 iliev 2189 Task Force (IETF), its areas, and its working groups.
171     Note that other groups may also distribute working documents as
172     Internet-Drafts.</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 iliev 2189 The list of current Internet-Drafts can be accessed at
180     <a href='http://www.ietf.org/ietf/1id-abstracts.txt'>http://www.ietf.org/ietf/1id-abstracts.txt</a>.</p>
181     <p>
182     The list of Internet-Draft Shadow Directories can be accessed at
183     <a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>
184     <p>
185     This Internet-Draft will expire on December 26, 2011.</p>
186 schoenebeck 2023 <a name="toc"></a><br /><hr />
187 senoner 542 <h3>Table of Contents</h3>
188     <p class="toc">
189     <a href="#anchor1">1.</a>&nbsp;
190     Requirements notation<br />
191 schoenebeck 575 <a href="#LSCP versioning">2.</a>&nbsp;
192     Versioning of this specification<br />
193     <a href="#anchor2">3.</a>&nbsp;
194 senoner 542 Introduction<br />
195 schoenebeck 575 <a href="#anchor3">4.</a>&nbsp;
196 senoner 542 Focus of this protocol<br />
197 schoenebeck 575 <a href="#anchor4">5.</a>&nbsp;
198 senoner 542 Communication Overview<br />
199 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
200 senoner 542 Request/response communication method<br />
201 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
202 senoner 542 Result format<br />
203 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
204 senoner 542 Subscribe/notify communication method<br />
205 schoenebeck 575 <a href="#control_commands">6.</a>&nbsp;
206 senoner 542 Description for control commands<br />
207 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
208 senoner 542 Ignored lines and comments<br />
209 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
210 senoner 542 Configuring audio drivers<br />
211 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
212 senoner 542 Getting amount of available audio output drivers<br />
213 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
214 senoner 542 Getting all available audio output drivers<br />
215 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
216 senoner 542 Getting information about a specific audio
217     output driver<br />
218 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
219 senoner 542 Getting information about specific audio
220     output driver parameter<br />
221 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
222 senoner 542 Creating an audio output device<br />
223 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
224 senoner 542 Destroying an audio output device<br />
225 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
226 senoner 542 Getting all created audio output device count<br />
227 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
228 senoner 542 Getting all created audio output device list<br />
229 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
230 senoner 542 Getting current settings of an audio output device<br />
231 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
232 senoner 542 Changing settings of audio output devices<br />
233 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
234 senoner 542 Getting information about an audio channel<br />
235 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
236 senoner 542 Getting information about specific audio channel parameter<br />
237 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
238 senoner 542 Changing settings of audio output channels<br />
239 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
240 senoner 542 Configuring MIDI input drivers<br />
241 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
242 senoner 542 Getting amount of available MIDI input drivers<br />
243 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
244 senoner 542 Getting all available MIDI input drivers<br />
245 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
246 senoner 542 Getting information about a specific MIDI input driver<br />
247 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
248 senoner 542 Getting information about specific MIDI input driver parameter<br />
249 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
250 senoner 542 Creating a MIDI input device<br />
251 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
252 senoner 542 Destroying a MIDI input device<br />
253 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
254 senoner 542 Getting all created MIDI input device count<br />
255 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
256 senoner 542 Getting all created MIDI input device list<br />
257 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
258 senoner 542 Getting current settings of a MIDI input device<br />
259 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
260 senoner 542 Changing settings of MIDI input devices<br />
261 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
262 senoner 542 Getting information about a MIDI port<br />
263 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
264 senoner 542 Getting information about specific MIDI port parameter<br />
265 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
266 senoner 542 Changing settings of MIDI input ports<br />
267 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
268 senoner 542 Configuring sampler channels<br />
269 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
270 senoner 542 Loading an instrument<br />
271 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
272 senoner 542 Loading a sampler engine<br />
273 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
274 senoner 542 Getting all created sampler channel count<br />
275 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
276 senoner 542 Getting all created sampler channel list<br />
277 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
278 senoner 542 Adding a new sampler channel<br />
279 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
280 senoner 542 Removing a sampler channel<br />
281 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
282 senoner 542 Getting amount of available engines<br />
283 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
284 senoner 542 Getting all available engines<br />
285 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
286 senoner 542 Getting information about an engine<br />
287 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
288 senoner 542 Getting sampler channel information<br />
289 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
290 senoner 542 Current number of active voices<br />
291 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
292 senoner 542 Current number of active disk streams<br />
293 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
294 senoner 542 Current fill state of disk stream buffers<br />
295 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
296 senoner 542 Setting audio output device<br />
297 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
298 senoner 542 Setting audio output type<br />
299 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
300 senoner 542 Setting audio output channel<br />
301 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
302 senoner 542 Setting MIDI input device<br />
303 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
304 senoner 542 Setting MIDI input type<br />
305 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
306 senoner 542 Setting MIDI input port<br />
307 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
308 senoner 542 Setting MIDI input channel<br />
309 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
310 senoner 542 Setting channel volume<br />
311 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
312 schoenebeck 708 Muting a sampler channel<br />
313 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
314 schoenebeck 708 Soloing a sampler channel<br />
315 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
316     Assigning a MIDI instrument map to a sampler channel<br />
317 schoenebeck 1002 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
318     Adding an effect send to a sampler channel<br />
319     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
320     Removing an effect send from a sampler channel<br />
321     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
322     Getting amount of effect sends on a sampler channel<br />
323     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
324     Listing all effect sends on a sampler channel<br />
325     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
326     Getting effect send information<br />
327 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
328     Changing effect send's name<br />
329     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
330 schoenebeck 1002 Altering effect send's audio routing<br />
331 schoenebeck 2141 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND EFFECT">6.4.32.</a>&nbsp;
332 schoenebeck 2139 Assigning destination effect to an effect send<br />
333 schoenebeck 2141 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE FX_SEND EFFECT">6.4.33.</a>&nbsp;
334 schoenebeck 2139 Removing destination effect from an effect send<br />
335     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.34.</a>&nbsp;
336 schoenebeck 1028 Altering effect send's MIDI controller<br />
337 schoenebeck 2139 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.35.</a>&nbsp;
338 schoenebeck 1028 Altering effect send's send level<br />
339 schoenebeck 2139 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SEND CHANNEL MIDI_DATA">6.4.36.</a>&nbsp;
340 iliev 1773 Sending MIDI messages to sampler channel<br />
341 schoenebeck 2139 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.37.</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 945 Getting ammount 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 561 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
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     <p>Example:
3987     </p>
3988 schoenebeck 708 <p>
3989     </p>
3990 senoner 542 <blockquote class="text">
3991     <p>C: "GET ENGINE INFO JoesCustomEngine"
3992     </p>
3993     <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3994     </p>
3995     <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3996     </p>
3997     <p>&nbsp;&nbsp;&nbsp;"."
3998     </p>
3999 schoenebeck 708 </blockquote><p>
4000 schoenebeck 940
4001 schoenebeck 708 </p>
4002 schoenebeck 940 <a name="GET CHANNEL INFO"></a><br /><hr />
4003 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4004     <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
4005     Getting sampler channel information</h3>
4006 senoner 542
4007     <p>The front-end can ask for the current settings of a sampler channel
4008     by sending the following command:
4009     </p>
4010 schoenebeck 708 <p>
4011     </p>
4012 senoner 542 <blockquote class="text">
4013     <p>GET CHANNEL INFO &lt;sampler-channel&gt;
4014     </p>
4015 schoenebeck 708 </blockquote><p>
4016 schoenebeck 940
4017 schoenebeck 708 </p>
4018 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4019 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>
4020     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.
4021 senoner 542 </p>
4022     <p>Possible Answers:
4023     </p>
4024 schoenebeck 708 <p>
4025     </p>
4026 senoner 542 <blockquote class="text">
4027     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4028     Each answer line begins with the settings category name
4029     followed by a colon and then a space character &lt;SP&gt; and finally
4030     the info character string to that setting category. At the
4031     moment the following categories are defined:
4032     </p>
4033 schoenebeck 708 <p>
4034     </p>
4035 senoner 542 <blockquote class="text">
4036     <p>ENGINE_NAME -
4037     </p>
4038     <blockquote class="text">
4039 schoenebeck 575 <p>name of the engine that is associated with the sampler
4040     channel, "NONE" if there's no engine associated yet for
4041 senoner 542 this sampler channel
4042     </p>
4043 schoenebeck 940 </blockquote>
4044    
4045 senoner 542
4046     <p>AUDIO_OUTPUT_DEVICE -
4047     </p>
4048     <blockquote class="text">
4049     <p>numerical ID of the audio output device which is
4050     currently connected to this sampler channel to output
4051 schoenebeck 1805 the audio signal, "-1" if there's no device
4052 senoner 542 connected to this sampler channel
4053     </p>
4054 schoenebeck 940 </blockquote>
4055    
4056 senoner 542
4057     <p>AUDIO_OUTPUT_CHANNELS -
4058     </p>
4059     <blockquote class="text">
4060     <p>number of output channels the sampler channel offers
4061     (dependent to used sampler engine and loaded instrument)
4062     </p>
4063 schoenebeck 940 </blockquote>
4064    
4065 senoner 542
4066     <p>AUDIO_OUTPUT_ROUTING -
4067     </p>
4068     <blockquote class="text">
4069     <p>comma separated list which reflects to which audio
4070     channel of the selected audio output device each
4071     sampler output channel is routed to, e.g. "0,3" would
4072     mean the engine's output channel 0 is routed to channel
4073     0 of the audio output device and the engine's output
4074     channel 1 is routed to the channel 3 of the audio
4075     output device
4076     </p>
4077 schoenebeck 940 </blockquote>
4078    
4079 senoner 542
4080     <p>INSTRUMENT_FILE -
4081     </p>
4082     <blockquote class="text">
4083     <p>the file name of the loaded instrument, "NONE" if
4084     there's no instrument yet loaded for this sampler
4085 schoenebeck 1400 channel (note: since LSCP 1.2 this path may contain
4086     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4087 senoner 542 </p>
4088 schoenebeck 940 </blockquote>
4089    
4090 senoner 542
4091     <p>INSTRUMENT_NR -
4092     </p>
4093     <blockquote class="text">
4094 schoenebeck 1805 <p>the instrument index number of the loaded instrument,
4095     "-1" if there's no instrument loaded for this sampler
4096     channel
4097 senoner 542 </p>
4098 schoenebeck 940 </blockquote>
4099    
4100 senoner 542
4101     <p>INSTRUMENT_NAME -
4102     </p>
4103     <blockquote class="text">
4104     <p>the instrument name of the loaded instrument
4105 schoenebeck 1400 (note: since LSCP 1.2 this character string may contain
4106     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4107 senoner 542 </p>
4108 schoenebeck 940 </blockquote>
4109    
4110 senoner 542
4111     <p>INSTRUMENT_STATUS -
4112     </p>
4113     <blockquote class="text">
4114 schoenebeck 1805 <p>Integer values 0 to 100 indicating loading progress
4115     percentage for the instrument. Negative
4116     value indicates a loading exception (also returns "-1" in case no
4117     instrument was yet to be loaded on the sampler channel).
4118     Value of 100 indicates that the instrument is fully
4119 senoner 542 loaded.
4120     </p>
4121 schoenebeck 940 </blockquote>
4122    
4123 senoner 542
4124     <p>MIDI_INPUT_DEVICE -
4125     </p>
4126     <blockquote class="text">
4127     <p>numerical ID of the MIDI input device which is
4128     currently connected to this sampler channel to deliver
4129 schoenebeck 1805 MIDI input commands, "-1" if there's no device
4130 senoner 542 connected to this sampler channel
4131     </p>
4132 schoenebeck 940 </blockquote>
4133    
4134 senoner 542
4135     <p>MIDI_INPUT_PORT -
4136     </p>
4137     <blockquote class="text">
4138 schoenebeck 1805 <p>port number of the MIDI input device (in case a
4139     MIDI device was already assigned to the sampler
4140     channel)
4141 senoner 542 </p>
4142 schoenebeck 940 </blockquote>
4143    
4144 senoner 542
4145     <p>MIDI_INPUT_CHANNEL -
4146     </p>
4147     <blockquote class="text">
4148     <p>the MIDI input channel number this sampler channel
4149     should listen to or "ALL" to listen on all MIDI channels
4150     </p>
4151 schoenebeck 940 </blockquote>
4152    
4153 senoner 542
4154     <p>VOLUME -
4155     </p>
4156     <blockquote class="text">
4157     <p>optionally dotted number for the channel volume factor
4158 schoenebeck 1028 (where a value &lt; 1.0 means attenuation and a value >
4159 senoner 542 1.0 means amplification)
4160     </p>
4161 schoenebeck 940 </blockquote>
4162    
4163 senoner 542
4164 schoenebeck 708 <p>MUTE -
4165     </p>
4166     <blockquote class="text">
4167     <p>Determines whether the channel is muted, "true" if the
4168     channel is muted, "false" if the channel is not muted, and
4169     "MUTED_BY_SOLO" if the channel is muted because of the
4170     presence of a solo channel and will be unmuted when
4171     there are no solo channels left
4172     </p>
4173 schoenebeck 940 </blockquote>
4174    
4175 senoner 542
4176 schoenebeck 708 <p>SOLO -
4177     </p>
4178     <blockquote class="text">
4179     <p>Determines whether this is a solo channel, "true" if
4180     the channel is a solo channel; "false" otherwise
4181     </p>
4182 schoenebeck 940 </blockquote>
4183    
4184 senoner 542
4185 schoenebeck 974 <p>MIDI_INSTRUMENT_MAP -
4186     </p>
4187     <blockquote class="text">
4188     <p>Determines to which MIDI instrument map this sampler
4189     channel is assigned to. Read chapter
4190     <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>
4191     for a list of possible values.
4192     </p>
4193 schoenebeck 940 </blockquote>
4194 schoenebeck 974
4195    
4196     </blockquote>
4197 schoenebeck 940
4198 schoenebeck 708
4199     </blockquote><p>
4200 schoenebeck 940
4201 schoenebeck 708 </p>
4202 senoner 542 <p>The mentioned fields above don't have to be in particular order.
4203     </p>
4204     <p>Example:
4205     </p>
4206 schoenebeck 708 <p>
4207     </p>
4208 senoner 542 <blockquote class="text">
4209     <p>C: "GET CHANNEL INFO 34"
4210     </p>
4211     <p>S: "ENGINE_NAME: GigEngine"
4212     </p>
4213     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4214     </p>
4215     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4216     </p>
4217     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4218     </p>
4219     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4220     </p>
4221     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4222     </p>
4223     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4224     </p>
4225     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4226     </p>
4227     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4228     </p>
4229     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4230     </p>
4231     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4232     </p>
4233     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4234     </p>
4235 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4236     </p>
4237     <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4238     </p>
4239     <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4240     </p>
4241     <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4242     </p>
4243 senoner 542 <p>&nbsp;&nbsp;&nbsp;"."
4244     </p>
4245 schoenebeck 708 </blockquote><p>
4246 schoenebeck 940
4247 schoenebeck 708 </p>
4248 schoenebeck 940 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4249 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4250     <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4251     Current number of active voices</h3>
4252 senoner 542
4253     <p>The front-end can ask for the current number of active voices on a
4254     sampler channel by sending the following command:
4255     </p>
4256 schoenebeck 708 <p>
4257     </p>
4258 senoner 542 <blockquote class="text">
4259     <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4260     </p>
4261 schoenebeck 708 </blockquote><p>
4262 schoenebeck 940
4263 schoenebeck 708 </p>
4264 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4265 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>
4266     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.
4267 senoner 542 </p>
4268     <p>Possible Answers:
4269     </p>
4270 schoenebeck 708 <p>
4271     </p>
4272 senoner 542 <blockquote class="text">
4273     <p>LinuxSampler will answer by returning the number of active
4274     voices on that channel.
4275     </p>
4276 schoenebeck 708 </blockquote><p>
4277 schoenebeck 940
4278 schoenebeck 708 </p>
4279 senoner 542 <p>Example:
4280     </p>
4281 schoenebeck 708 <p>
4282     </p>
4283 senoner 542 <blockquote class="text">
4284     <p>
4285     </p>
4286 schoenebeck 708 </blockquote><p>
4287 schoenebeck 940
4288 schoenebeck 708 </p>
4289 schoenebeck 940 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4290 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4291     <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4292     Current number of active disk streams</h3>
4293 senoner 542
4294     <p>The front-end can ask for the current number of active disk streams
4295     on a sampler channel by sending the following command:
4296     </p>
4297 schoenebeck 708 <p>
4298     </p>
4299 senoner 542 <blockquote class="text">
4300     <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4301     </p>
4302 schoenebeck 708 </blockquote><p>
4303 schoenebeck 940
4304 schoenebeck 708 </p>
4305 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4306 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>
4307     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.
4308 senoner 542 </p>
4309     <p>Possible Answers:
4310     </p>
4311 schoenebeck 708 <p>
4312     </p>
4313 senoner 542 <blockquote class="text">
4314     <p>LinuxSampler will answer by returning the number of active
4315     disk streams on that channel in case the engine supports disk
4316     streaming, if the engine doesn't support disk streaming it will
4317     return "NA" for not available.
4318     </p>
4319 schoenebeck 708 </blockquote><p>
4320 schoenebeck 940
4321 schoenebeck 708 </p>
4322 senoner 542 <p>Example:
4323     </p>
4324 schoenebeck 708 <p>
4325     </p>
4326 senoner 542 <blockquote class="text">
4327     <p>
4328     </p>
4329 schoenebeck 708 </blockquote><p>
4330 schoenebeck 940
4331 schoenebeck 708 </p>
4332 schoenebeck 940 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4333 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4334     <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4335     Current fill state of disk stream buffers</h3>
4336 senoner 542
4337     <p>The front-end can ask for the current fill state of all disk streams
4338     on a sampler channel by sending the following command:
4339     </p>
4340 schoenebeck 708 <p>
4341     </p>
4342 senoner 542 <blockquote class="text">
4343     <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4344     </p>
4345 schoenebeck 708 </blockquote><p>
4346 schoenebeck 940
4347 schoenebeck 708 </p>
4348 senoner 542 <p>to get the fill state in bytes or
4349     </p>
4350 schoenebeck 708 <p>
4351     </p>
4352 senoner 542 <blockquote class="text">
4353     <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4354     </p>
4355 schoenebeck 708 </blockquote><p>
4356 schoenebeck 940
4357 schoenebeck 708 </p>
4358 senoner 542 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4359 schoenebeck 575 sampler channel number the front-end is interested in
4360 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>
4361     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.
4362 senoner 542 </p>
4363     <p>Possible Answers:
4364     </p>
4365 schoenebeck 708 <p>
4366     </p>
4367 senoner 542 <blockquote class="text">
4368     <p>LinuxSampler will either answer by returning a comma separated
4369     string with the fill state of all disk stream buffers on that
4370     channel or an empty line if there are no active disk streams or
4371     "NA" for *not available* in case the engine which is deployed
4372     doesn't support disk streaming. Each entry in the answer list
4373     will begin with the stream's ID in brackets followed by the
4374     numerical representation of the fill size (either in bytes or
4375     percentage). Note: due to efficiency reasons the fill states in
4376     the response are not in particular order, thus the front-end has
4377     to sort them by itself if necessary.
4378     </p>
4379 schoenebeck 708 </blockquote><p>
4380 schoenebeck 940
4381 schoenebeck 708 </p>
4382 senoner 542 <p>Examples:
4383     </p>
4384 schoenebeck 708 <p>
4385     </p>
4386 senoner 542 <blockquote class="text">
4387     <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4388     </p>
4389     <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4390     </p>
4391 schoenebeck 708 </blockquote><p>
4392    
4393     </p>
4394 senoner 542 <blockquote class="text">
4395 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4396 senoner 542 </p>
4397     <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4398     </p>
4399 schoenebeck 708 </blockquote><p>
4400    
4401     </p>
4402 senoner 542 <blockquote class="text">
4403 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4404 senoner 542 </p>
4405     <p>S: ""
4406     </p>
4407 schoenebeck 708 </blockquote><p>
4408 schoenebeck 940
4409 schoenebeck 708 </p>
4410 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4411 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4412     <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4413     Setting audio output device</h3>
4414 senoner 542
4415     <p>The front-end can set the audio output device on a specific sampler
4416     channel by sending the following command:
4417     </p>
4418 schoenebeck 708 <p>
4419     </p>
4420 senoner 542 <blockquote class="text">
4421     <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4422     </p>
4423 schoenebeck 708 </blockquote><p>
4424 schoenebeck 940
4425 schoenebeck 708 </p>
4426 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4427 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>
4428     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
4429 schoenebeck 575 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4430 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>
4431     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>
4432 schoenebeck 575 command.
4433 senoner 542 </p>
4434     <p>Possible Answers:
4435     </p>
4436 schoenebeck 708 <p>
4437     </p>
4438 senoner 542 <blockquote class="text">
4439     <p>"OK" -
4440     </p>
4441     <blockquote class="text">
4442     <p>on success
4443     </p>
4444 schoenebeck 940 </blockquote>
4445    
4446 senoner 542
4447     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4448     </p>
4449     <blockquote class="text">
4450     <p>if audio output device was set, but there are noteworthy
4451     issue(s) related, providing an appropriate warning code and
4452     warning message
4453     </p>
4454 schoenebeck 940 </blockquote>
4455    
4456 senoner 542
4457     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4458     </p>
4459     <blockquote class="text">
4460     <p>in case it failed, providing an appropriate error code and error message
4461     </p>
4462 schoenebeck 940 </blockquote>
4463    
4464 senoner 542
4465 schoenebeck 708 </blockquote><p>
4466 schoenebeck 940
4467 schoenebeck 708 </p>
4468 senoner 542 <p>Examples:
4469     </p>
4470 schoenebeck 708 <p>
4471     </p>
4472 senoner 542 <blockquote class="text">
4473     <p>
4474     </p>
4475 schoenebeck 708 </blockquote><p>
4476 schoenebeck 940
4477 schoenebeck 708 </p>
4478 schoenebeck 974 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4479     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4480     <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4481     Setting audio output type</h3>
4482 senoner 542
4483     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4484     </p>
4485     <p>The front-end can alter the audio output type on a specific sampler
4486     channel by sending the following command:
4487     </p>
4488 schoenebeck 708 <p>
4489     </p>
4490 senoner 542 <blockquote class="text">
4491     <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4492     </p>
4493 schoenebeck 708 </blockquote><p>
4494 schoenebeck 940
4495 schoenebeck 708 </p>
4496 senoner 542 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4497     &lt;sampler-channel&gt; is the respective sampler channel number.
4498     </p>
4499     <p>Possible Answers:
4500     </p>
4501 schoenebeck 708 <p>
4502     </p>
4503 senoner 542 <blockquote class="text">
4504     <p>"OK" -
4505     </p>
4506     <blockquote class="text">
4507     <p>on success
4508     </p>
4509 schoenebeck 940 </blockquote>
4510    
4511 senoner 542
4512     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4513     </p>
4514     <blockquote class="text">
4515     <p>if audio output type was set, but there are noteworthy
4516     issue(s) related, providing an appropriate warning code and
4517     warning message
4518     </p>
4519 schoenebeck 940 </blockquote>
4520    
4521 senoner 542
4522     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4523     </p>
4524     <blockquote class="text">
4525     <p>in case it failed, providing an appropriate error code and error message
4526     </p>
4527 schoenebeck 940 </blockquote>
4528    
4529 senoner 542
4530 schoenebeck 708 </blockquote><p>
4531 schoenebeck 940
4532 schoenebeck 708 </p>
4533 senoner 542 <p>Examples:
4534     </p>
4535 schoenebeck 708 <p>
4536     </p>
4537 senoner 542 <blockquote class="text">
4538     <p>
4539     </p>
4540 schoenebeck 708 </blockquote><p>
4541 schoenebeck 940
4542 schoenebeck 708 </p>
4543 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4544 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4545     <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4546     Setting audio output channel</h3>
4547 senoner 542
4548     <p>The front-end can alter the audio output channel on a specific
4549     sampler channel by sending the following command:
4550     </p>
4551 schoenebeck 708 <p>
4552     </p>
4553 senoner 542 <blockquote class="text">
4554     <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4555     </p>
4556 schoenebeck 708 </blockquote><p>
4557 schoenebeck 940
4558 schoenebeck 708 </p>
4559 schoenebeck 575 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4560 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>
4561     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
4562 senoner 542 numerical ID of the sampler channel's audio output channel which should be
4563     rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4564     output device where &lt;audio-out&gt; should be routed to.
4565     </p>
4566     <p>Possible Answers:
4567     </p>
4568 schoenebeck 708 <p>
4569     </p>
4570 senoner 542 <blockquote class="text">
4571     <p>"OK" -
4572     </p>
4573     <blockquote class="text">
4574     <p>on success
4575     </p>
4576 schoenebeck 940 </blockquote>
4577    
4578 senoner 542
4579     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4580     </p>
4581     <blockquote class="text">
4582     <p>if audio output channel was set, but there are noteworthy
4583     issue(s) related, providing an appropriate warning code and
4584     warning message
4585     </p>
4586 schoenebeck 940 </blockquote>
4587    
4588 senoner 542
4589     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4590     </p>
4591     <blockquote class="text">
4592     <p>in case it failed, providing an appropriate error code and error message
4593     </p>
4594 schoenebeck 940 </blockquote>
4595    
4596 senoner 542
4597 schoenebeck 708 </blockquote><p>
4598 schoenebeck 940
4599 schoenebeck 708 </p>
4600 senoner 542 <p>Examples:
4601     </p>
4602 schoenebeck 708 <p>
4603     </p>
4604 senoner 542 <blockquote class="text">
4605     <p>
4606     </p>
4607 schoenebeck 708 </blockquote><p>
4608 schoenebeck 940
4609 schoenebeck 708 </p>
4610 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4611 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4612     <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4613     Setting MIDI input device</h3>
4614 senoner 542
4615     <p>The front-end can set the MIDI input device on a specific sampler
4616     channel by sending the following command:
4617     </p>
4618 schoenebeck 708 <p>
4619     </p>
4620 senoner 542 <blockquote class="text">
4621     <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4622     </p>
4623 schoenebeck 708 </blockquote><p>
4624 schoenebeck 940
4625 schoenebeck 708 </p>
4626 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4627 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>
4628     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
4629 schoenebeck 575 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4630 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>
4631     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.
4632 senoner 542 </p>
4633     <p>Possible Answers:
4634     </p>
4635 schoenebeck 708 <p>
4636     </p>
4637 senoner 542 <blockquote class="text">
4638     <p>"OK" -
4639     </p>
4640     <blockquote class="text">
4641     <p>on success
4642     </p>
4643 schoenebeck 940 </blockquote>
4644    
4645 senoner 542
4646     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4647     </p>
4648     <blockquote class="text">
4649     <p>if MIDI input device was set, but there are noteworthy
4650     issue(s) related, providing an appropriate warning code and
4651     warning message
4652     </p>
4653 schoenebeck 940 </blockquote>
4654    
4655 senoner 542
4656     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4657     </p>
4658     <blockquote class="text">
4659     <p>in case it failed, providing an appropriate error code and error message
4660     </p>
4661 schoenebeck 940 </blockquote>
4662    
4663 senoner 542
4664 schoenebeck 708 </blockquote><p>
4665 schoenebeck 940
4666 schoenebeck 708 </p>
4667 senoner 542 <p>Examples:
4668     </p>
4669 schoenebeck 708 <p>
4670     </p>
4671 senoner 542 <blockquote class="text">
4672     <p>
4673     </p>
4674 schoenebeck 708 </blockquote><p>
4675 schoenebeck 940
4676 schoenebeck 708 </p>
4677 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4678 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4679     <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4680     Setting MIDI input type</h3>
4681 senoner 542
4682     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4683     </p>
4684     <p>The front-end can alter the MIDI input type on a specific sampler
4685     channel by sending the following command:
4686     </p>
4687 schoenebeck 708 <p>
4688     </p>
4689 senoner 542 <blockquote class="text">
4690     <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4691     </p>
4692 schoenebeck 708 </blockquote><p>
4693 schoenebeck 940
4694 schoenebeck 708 </p>
4695 senoner 542 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4696     &lt;sampler-channel&gt; is the respective sampler channel number.
4697     </p>
4698     <p>Possible Answers:
4699     </p>
4700 schoenebeck 708 <p>
4701     </p>
4702 senoner 542 <blockquote class="text">
4703     <p>"OK" -
4704     </p>
4705     <blockquote class="text">
4706     <p>on success
4707     </p>
4708 schoenebeck 940 </blockquote>
4709    
4710 senoner 542
4711     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4712     </p>
4713     <blockquote class="text">
4714     <p>if MIDI input type was set, but there are noteworthy
4715     issue(s) related, providing an appropriate warning code and
4716     warning message
4717     </p>
4718 schoenebeck 940 </blockquote>
4719    
4720 senoner 542
4721     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4722     </p>
4723     <blockquote class="text">
4724     <p>in case it failed, providing an appropriate error code and error message
4725     </p>
4726 schoenebeck 940 </blockquote>
4727    
4728 senoner 542
4729 schoenebeck 708 </blockquote><p>
4730 schoenebeck 940
4731 schoenebeck 708 </p>
4732 senoner 542 <p>Examples:
4733     </p>
4734 schoenebeck 708 <p>
4735     </p>
4736 senoner 542 <blockquote class="text">
4737     <p>
4738     </p>
4739 schoenebeck 708 </blockquote><p>
4740 schoenebeck 940
4741 schoenebeck 708 </p>
4742 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4743 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4744     <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4745     Setting MIDI input port</h3>
4746 senoner 542
4747     <p>The front-end can alter the MIDI input port on a specific sampler
4748     channel by sending the following command:
4749     </p>
4750 schoenebeck 708 <p>
4751     </p>
4752 senoner 542 <blockquote class="text">
4753     <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4754     </p>
4755 schoenebeck 708 </blockquote><p>
4756 schoenebeck 940
4757 schoenebeck 708 </p>
4758 senoner 542 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4759     MIDI input device connected to the sampler channel given by
4760     &lt;sampler-channel&gt;.
4761     </p>
4762     <p>Possible Answers:
4763     </p>
4764 schoenebeck 708 <p>
4765     </p>
4766 senoner 542 <blockquote class="text">
4767     <p>"OK" -
4768     </p>
4769     <blockquote class="text">
4770     <p>on success
4771     </p>
4772 schoenebeck 940 </blockquote>
4773    
4774 senoner 542
4775     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4776     </p>
4777     <blockquote class="text">
4778     <p>if MIDI input port was set, but there are noteworthy
4779     issue(s) related, providing an appropriate warning code and
4780     warning message
4781     </p>
4782 schoenebeck 940 </blockquote>
4783    
4784 senoner 542
4785     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4786     </p>
4787     <blockquote class="text">
4788 schoenebeck 561 <p>in case it failed, providing an appropriate error code and error message
4789 senoner 542 </p>
4790 schoenebeck 940 </blockquote>
4791    
4792 senoner 542
4793 schoenebeck 708 </blockquote><p>
4794 schoenebeck 940
4795 schoenebeck 708 </p>
4796 senoner 542 <p>Examples:
4797     </p>
4798 schoenebeck 708 <p>
4799     </p>
4800 senoner 542 <blockquote class="text">
4801     <p>
4802     </p>
4803 schoenebeck 708 </blockquote><p>
4804 schoenebeck 940
4805 schoenebeck 708 </p>
4806 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4807 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4808     <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4809     Setting MIDI input channel</h3>
4810 senoner 542
4811     <p>The front-end can alter the MIDI channel a sampler channel should
4812     listen to by sending the following command:
4813     </p>
4814 schoenebeck 708 <p>
4815     </p>
4816 senoner 542 <blockquote class="text">
4817     <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4818     </p>
4819 schoenebeck 708 </blockquote><p>
4820 schoenebeck 940
4821 schoenebeck 708 </p>
4822 senoner 542 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4823     &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4824     channels.
4825     </p>
4826     <p>Possible Answers:
4827     </p>
4828 schoenebeck 708 <p>
4829     </p>
4830 senoner 542 <blockquote class="text">
4831     <p>"OK" -
4832     </p>
4833     <blockquote class="text">
4834     <p>on success
4835     </p>
4836 schoenebeck 940 </blockquote>
4837    
4838 senoner 542
4839     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4840     </p>
4841     <blockquote class="text">
4842     <p>if MIDI input channel was set, but there are noteworthy
4843     issue(s) related, providing an appropriate warning code and
4844     warning message
4845     </p>
4846 schoenebeck 940 </blockquote>
4847    
4848 senoner 542
4849     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4850     </p>
4851     <blockquote class="text">
4852     <p>in case it failed, providing an appropriate error code and error message
4853     </p>
4854 schoenebeck 940 </blockquote>
4855    
4856 senoner 542
4857 schoenebeck 708 </blockquote><p>
4858 schoenebeck 940
4859 schoenebeck 708 </p>
4860 senoner 542 <p>Examples:
4861     </p>
4862 schoenebeck 708 <p>
4863     </p>
4864 senoner 542 <blockquote class="text">
4865     <p>
4866     </p>
4867 schoenebeck 708 </blockquote><p>
4868 schoenebeck 940
4869 schoenebeck 708 </p>
4870 schoenebeck 940 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4871 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4872     <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4873     Setting channel volume</h3>
4874 senoner 542
4875     <p>The front-end can alter the volume of a sampler channel by sending
4876     the following command:
4877     </p>
4878 schoenebeck 708 <p>
4879     </p>
4880 senoner 542 <blockquote class="text">
4881     <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4882     </p>
4883 schoenebeck 708 </blockquote><p>
4884 schoenebeck 940
4885 schoenebeck 708 </p>
4886 senoner 542 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4887     smaller than 1.0 means attenuation, whereas a value greater than
4888     1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4889     channel where this volume factor should be set.
4890     </p>
4891     <p>Possible Answers:
4892     </p>
4893 schoenebeck 708 <p>
4894     </p>
4895 senoner 542 <blockquote class="text">
4896     <p>"OK" -
4897     </p>
4898     <blockquote class="text">
4899     <p>on success
4900     </p>
4901 schoenebeck 940 </blockquote>
4902    
4903 senoner 542
4904     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4905     </p>
4906     <blockquote class="text">
4907     <p>if channel volume was set, but there are noteworthy
4908     issue(s) related, providing an appropriate warning code and
4909     warning message
4910     </p>
4911 schoenebeck 940 </blockquote>
4912    
4913 senoner 542
4914     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4915     </p>
4916     <blockquote class="text">
4917     <p>in case it failed, providing an appropriate error code and error message
4918     </p>
4919 schoenebeck 940 </blockquote>
4920    
4921 senoner 542
4922 schoenebeck 708 </blockquote><p>
4923 schoenebeck 940
4924 schoenebeck 708 </p>
4925 senoner 542 <p>Examples:
4926     </p>
4927 schoenebeck 708 <p>
4928     </p>
4929 senoner 542 <blockquote class="text">
4930     <p>
4931     </p>
4932 schoenebeck 708 </blockquote><p>
4933 schoenebeck 940
4934 schoenebeck 708 </p>
4935 schoenebeck 940 <a name="SET CHANNEL MUTE"></a><br /><hr />
4936 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4937     <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4938     Muting a sampler channel</h3>
4939 senoner 542
4940 schoenebeck 708 <p>The front-end can mute/unmute a specific sampler
4941     channel by sending the following command:
4942     </p>
4943     <p>
4944     </p>
4945     <blockquote class="text">
4946     <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4947     </p>
4948     </blockquote><p>
4949 schoenebeck 940
4950 schoenebeck 708 </p>
4951     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4952 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>
4953     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
4954 schoenebeck 708 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4955     to unmute the channel.
4956     </p>
4957     <p>Possible Answers:
4958     </p>
4959     <p>
4960     </p>
4961     <blockquote class="text">
4962     <p>"OK" -
4963     </p>
4964     <blockquote class="text">
4965     <p>on success
4966     </p>
4967 schoenebeck 940 </blockquote>
4968    
4969 schoenebeck 708
4970     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4971     </p>
4972     <blockquote class="text">
4973     <p>if the channel was muted/unmuted, but there are noteworthy
4974     issue(s) related, providing an appropriate warning code and
4975     warning message
4976     </p>
4977 schoenebeck 940 </blockquote>
4978    
4979 schoenebeck 708
4980     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4981     </p>
4982     <blockquote class="text">
4983     <p>in case it failed, providing an appropriate error code and error message
4984     </p>
4985 schoenebeck 940 </blockquote>
4986    
4987 schoenebeck 708
4988     </blockquote><p>
4989 schoenebeck 940
4990 schoenebeck 708 </p>
4991     <p>Examples:
4992     </p>
4993     <p>
4994     </p>
4995     <blockquote class="text">
4996     <p>
4997     </p>
4998     </blockquote><p>
4999 schoenebeck 940
5000 schoenebeck 708 </p>
5001 schoenebeck 940 <a name="SET CHANNEL SOLO"></a><br /><hr />
5002 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5003     <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
5004     Soloing a sampler channel</h3>
5005 schoenebeck 708
5006     <p>The front-end can solo/unsolo a specific sampler channel
5007     by sending the following command:
5008     </p>
5009     <p>
5010     </p>
5011     <blockquote class="text">
5012     <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
5013     </p>
5014     </blockquote><p>
5015 schoenebeck 940
5016 schoenebeck 708 </p>
5017     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5018 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>
5019     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
5020 schoenebeck 708 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
5021     to unsolo the channel.
5022     </p>
5023     <p>Possible Answers:
5024     </p>
5025     <p>
5026     </p>
5027     <blockquote class="text">
5028     <p>"OK" -
5029     </p>
5030     <blockquote class="text">
5031     <p>on success
5032     </p>
5033 schoenebeck 940 </blockquote>
5034    
5035 schoenebeck 708
5036     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5037     </p>
5038     <blockquote class="text">
5039     <p>if the channel was soloed/unsoloed, but there are noteworthy
5040     issue(s) related, providing an appropriate warning code and
5041     warning message
5042     </p>
5043 schoenebeck 940 </blockquote>
5044    
5045 schoenebeck 708
5046     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5047     </p>
5048     <blockquote class="text">
5049     <p>in case it failed, providing an appropriate error code and error message
5050     </p>
5051 schoenebeck 940 </blockquote>
5052    
5053 schoenebeck 708
5054     </blockquote><p>
5055 schoenebeck 940
5056 schoenebeck 708 </p>
5057     <p>Examples:
5058     </p>
5059     <p>
5060     </p>
5061     <blockquote class="text">
5062     <p>
5063     </p>
5064     </blockquote><p>
5065 schoenebeck 940
5066 schoenebeck 708 </p>
5067 schoenebeck 974 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5068     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5069     <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5070     Assigning a MIDI instrument map to a sampler channel</h3>
5071    
5072     <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5073     by sending the following command:
5074     </p>
5075     <p>
5076     </p>
5077     <blockquote class="text">
5078     <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5079     </p>
5080     </blockquote><p>
5081    
5082     </p>
5083     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5084     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>
5085     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
5086     &lt;map&gt; can have the following possibilites:
5087     </p>
5088     <p>
5089     </p>
5090     <blockquote class="text">
5091     <p>"NONE" -
5092     </p>
5093     <blockquote class="text">
5094     <p>This is the default setting. In this case
5095     the sampler channel is not assigned any MIDI
5096     instrument map and thus will ignore all MIDI
5097     program change messages.
5098     </p>
5099     </blockquote>
5100    
5101    
5102     <p>"DEFAULT" -
5103     </p>
5104     <blockquote class="text">
5105     <p>The sampler channel will always use the
5106     default MIDI instrument map to handle MIDI
5107     program change messages.
5108     </p>
5109     </blockquote>
5110    
5111    
5112     <p>numeric ID -
5113     </p>
5114     <blockquote class="text">
5115     <p>You can assign a specific MIDI instrument map
5116     by replacing &lt;map&gt; with the respective numeric
5117     ID of the MIDI instrument map as returned by the
5118     <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>
5119     command. Once that map will be deleted, the sampler
5120     channel would fall back to "NONE".
5121     </p>
5122     </blockquote>
5123    
5124    
5125     </blockquote><p>
5126    
5127     </p>
5128     <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>
5129     for details regarding MIDI instrument mapping.
5130     </p>
5131     <p>Possible Answers:
5132     </p>
5133     <p>
5134     </p>
5135     <blockquote class="text">
5136     <p>"OK" -
5137     </p>
5138     <blockquote class="text">
5139     <p>on success
5140     </p>
5141     </blockquote>
5142    
5143    
5144     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5145     </p>
5146     <blockquote class="text">
5147     <p>in case it failed, providing an appropriate error code and error message
5148     </p>
5149     </blockquote>
5150    
5151    
5152     </blockquote><p>
5153    
5154     </p>
5155     <p>Examples:
5156     </p>
5157     <p>
5158     </p>
5159     <blockquote class="text">
5160     <p>
5161     </p>
5162     </blockquote><p>
5163    
5164     </p>
5165 schoenebeck 1002 <a name="CREATE FX_SEND"></a><br /><hr />
5166     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5167     <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5168     Adding an effect send to a sampler channel</h3>
5169    
5170     <p>The front-end can create an additional effect send on a specific sampler channel
5171     by sending the following command:
5172     </p>
5173     <p>
5174     </p>
5175     <blockquote class="text">
5176     <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5177     </p>
5178     </blockquote><p>
5179    
5180     </p>
5181     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5182     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>
5183     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
5184     sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5185     is a number between 0..127 defining the MIDI controller which can alter the
5186     effect send level and &lt;name&gt; is an optional argument defining a name
5187 schoenebeck 1390 for the effect send entity. The name does not have to be unique, but MUST be
5188     encapsulated into apostrophes and supports escape sequences as described in chapter
5189     "<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>".
5190 schoenebeck 1002 </p>
5191     <p>By default, that is as initial routing, the effect send's audio channels
5192     are automatically routed to the last audio channels of the sampler channel's
5193     audio output device, that way you can i.e. first increase the amount of audio
5194     channels on the audio output device for having dedicated effect send output
5195     channels and when "CREATE FX_SEND" is called, those channels will automatically
5196     be picked. You can alter the destination channels however with
5197     <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>.
5198    
5199     </p>
5200     <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5201     sends on a sampler channel will decrease runtime performance, because for implementing channel
5202     effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5203     the voices and route the audio signal afterwards to the master outputs and effect send
5204     outputs (along with their respective effect send levels). A sampler channel without effect
5205     sends however can mix its voices directly into the audio output devices's audio buffers
5206     and is thus faster.
5207    
5208     </p>
5209     <p>Possible Answers:
5210     </p>
5211     <p>
5212     </p>
5213     <blockquote class="text">
5214     <p>"OK[&lt;fx-send-id&gt;]" -
5215     </p>
5216     <blockquote class="text">
5217     <p>in case a new effect send could be added to the
5218     sampler channel, where &lt;fx-send-id&gt; reflects the
5219     unique ID of the newly created effect send entity
5220     </p>
5221     </blockquote>
5222    
5223    
5224     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5225     </p>
5226     <blockquote class="text">
5227     <p>when a new effect send could not be added, i.e.
5228     due to invalid parameters
5229     </p>
5230     </blockquote>
5231    
5232    
5233     </blockquote><p>
5234    
5235     </p>
5236     <p>Examples:
5237     </p>
5238     <p>
5239     </p>
5240     <blockquote class="text">
5241     <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5242     </p>
5243     <p>S: "OK[0]"
5244     </p>
5245     </blockquote><p>
5246    
5247     </p>
5248     <p>
5249     </p>
5250     <blockquote class="text">
5251     <p>C: "CREATE FX_SEND 0 93"
5252     </p>
5253     <p>S: "OK[1]"
5254     </p>
5255     </blockquote><p>
5256    
5257     </p>
5258     <a name="DESTROY FX_SEND"></a><br /><hr />
5259     <table 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     <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5261     Removing an effect send from a sampler channel</h3>
5262    
5263     <p>The front-end can remove an existing effect send on a specific sampler channel
5264     by sending the following command:
5265     </p>
5266     <p>
5267     </p>
5268     <blockquote class="text">
5269     <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5270     </p>
5271     </blockquote><p>
5272    
5273     </p>
5274     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5275     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>
5276     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
5277     sampler channel from which the effect send should be removed from and
5278     &lt;fx-send-id&gt; is the respective effect send number as returned by the
5279     <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>
5280     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.
5281     </p>
5282     <p>Possible Answers:
5283     </p>
5284     <p>
5285     </p>
5286     <blockquote class="text">
5287     <p>"OK" -
5288     </p>
5289     <blockquote class="text">
5290     <p>on success
5291     </p>
5292     </blockquote>
5293    
5294    
5295     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5296     </p>
5297     <blockquote class="text">
5298     <p>in case it failed, providing an appropriate error code and
5299     error message
5300     </p>
5301     </blockquote>
5302    
5303    
5304     </blockquote><p>
5305    
5306     </p>
5307     <p>Example:
5308     </p>
5309     <p>
5310     </p>
5311     <blockquote class="text">
5312     <p>C: "DESTROY FX_SEND 0 0"
5313     </p>
5314     <p>S: "OK"
5315     </p>
5316     </blockquote><p>
5317    
5318     </p>
5319     <a name="GET FX_SENDS"></a><br /><hr />
5320     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5321     <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5322     Getting amount of effect sends on a sampler channel</h3>
5323    
5324     <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5325     by sending the following command:
5326     </p>
5327     <p>
5328     </p>
5329     <blockquote class="text">
5330     <p>GET FX_SENDS &lt;sampler-channel&gt;
5331     </p>
5332     </blockquote><p>
5333    
5334     </p>
5335     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5336     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>
5337     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.
5338     </p>
5339     <p>Possible Answers:
5340     </p>
5341     <p>
5342     </p>
5343     <blockquote class="text">
5344     <p>The sampler will answer by returning the number of effect
5345     sends on the given sampler channel.
5346     </p>
5347     </blockquote><p>
5348    
5349     </p>
5350     <p>Example:
5351     </p>
5352     <p>
5353     </p>
5354     <blockquote class="text">
5355     <p>C: "GET FX_SENDS 0"
5356     </p>
5357     <p>S: "2"
5358     </p>
5359     </blockquote><p>
5360    
5361     </p>
5362     <a name="LIST FX_SENDS"></a><br /><hr />
5363     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5364     <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5365     Listing all effect sends on a sampler channel</h3>
5366    
5367     <p>The front-end can ask for a list of effect sends on a specific sampler channel
5368     by sending the following command:
5369     </p>
5370     <p>
5371     </p>
5372     <blockquote class="text">
5373     <p>LIST FX_SENDS &lt;sampler-channel&gt;
5374     </p>
5375     </blockquote><p>
5376    
5377     </p>
5378     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5379     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>
5380     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.
5381     </p>
5382     <p>Possible Answers:
5383     </p>
5384     <p>
5385     </p>
5386     <blockquote class="text">
5387     <p>The sampler will answer by returning a comma separated list
5388     with all effect sends' numerical IDs on the given sampler
5389     channel.
5390     </p>
5391     </blockquote><p>
5392    
5393     </p>
5394     <p>Examples:
5395     </p>
5396     <p>
5397     </p>
5398     <blockquote class="text">
5399     <p>C: "LIST FX_SENDS 0"
5400     </p>
5401     <p>S: "0,1"
5402     </p>
5403     </blockquote><p>
5404    
5405     </p>
5406     <p>
5407     </p>
5408     <blockquote class="text">
5409     <p>C: "LIST FX_SENDS 1"
5410     </p>
5411     <p>S: ""
5412     </p>
5413     </blockquote><p>
5414    
5415     </p>
5416     <a name="GET FX_SEND INFO"></a><br /><hr />
5417     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5418     <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5419     Getting effect send information</h3>
5420    
5421     <p>The front-end can ask for the current settings of an effect send entity
5422     by sending the following command:
5423     </p>
5424     <p>
5425     </p>
5426     <blockquote class="text">
5427     <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5428     </p>
5429     </blockquote><p>
5430    
5431     </p>
5432     <p>Where &lt;sampler-channel&gt; is the sampler channel number
5433     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>
5434     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
5435     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5436     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>
5437     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.
5438    
5439     </p>
5440     <p>Possible Answers:
5441     </p>
5442     <p>
5443     </p>
5444     <blockquote class="text">
5445     <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5446     Each answer line begins with the settings category name
5447     followed by a colon and then a space character &lt;SP&gt; and finally
5448     the info character string to that setting category. At the
5449     moment the following categories are defined:
5450     </p>
5451     <p>
5452     </p>
5453     <blockquote class="text">
5454     <p>NAME -
5455     </p>
5456     <blockquote class="text">
5457     <p>name of the effect send entity
5458 schoenebeck 1400 (note that this character string may contain
5459     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5460 schoenebeck 1002 </p>
5461     </blockquote>
5462    
5463    
5464 schoenebeck 1028 <p>MIDI_CONTROLLER -
5465     </p>
5466     <blockquote class="text">
5467     <p>a value between 0 and 127 reflecting the MIDI controller
5468     which is able to modify the effect send's send level
5469     </p>
5470     </blockquote>
5471    
5472    
5473     <p>LEVEL -
5474     </p>
5475     <blockquote class="text">
5476     <p>optionally dotted number reflecting the effect send's
5477     current send level (where a value &lt; 1.0 means attenuation
5478     and a value > 1.0 means amplification)
5479     </p>
5480     </blockquote>
5481    
5482    
5483 schoenebeck 1002 <p>AUDIO_OUTPUT_ROUTING -
5484     </p>
5485     <blockquote class="text">
5486     <p>comma separated list which reflects to which audio
5487     channel of the selected audio output device each
5488     effect send output channel is routed to, e.g. "0,3" would
5489     mean the effect send's output channel 0 is routed to channel
5490     0 of the audio output device and the effect send's output
5491     channel 1 is routed to the channel 3 of the audio
5492     output device (see
5493     <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>
5494 schoenebeck 2139 for details), if an internal send
5495     effect is assigned to the effect
5496     send, then this setting defines the
5497     audio channel routing to that
5498     effect instance respectively
5499 schoenebeck 1002 </p>
5500     </blockquote>
5501    
5502    
5503 schoenebeck 2141 <p>EFFECT -
5504 schoenebeck 2139 </p>
5505     <blockquote class="text">
5506     <p>destination send effect chain ID
5507     and destination effect chain
5508     position, separated by comma in the
5509     form "&lt;effect-chain&gt;,&lt;chain-pos&gt;"
5510     or "NONE" if there is no send effect
5511     assigned to the effect send
5512     </p>
5513 schoenebeck 1002 </blockquote>
5514 schoenebeck 2139
5515    
5516     </blockquote>
5517 schoenebeck 1002
5518    
5519     </blockquote><p>
5520    
5521     </p>
5522     <p>The mentioned fields above don't have to be in particular order.
5523     </p>
5524     <p>Example:
5525     </p>
5526     <p>
5527     </p>
5528     <blockquote class="text">
5529     <p>C: "GET FX_SEND INFO 0 0"
5530     </p>
5531     <p>S: "NAME: Reverb Send"
5532     </p>
5533 schoenebeck 1028 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5534     </p>
5535     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5536     </p>
5537 schoenebeck 1002 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5538     </p>
5539 schoenebeck 2141 <p>&nbsp;&nbsp;&nbsp;"EFFECT: NONE"
5540     </p>
5541 schoenebeck 1002 <p>&nbsp;&nbsp;&nbsp;"."
5542     </p>
5543     </blockquote><p>
5544    
5545     </p>
5546 schoenebeck 2141 <p>
5547     </p>
5548     <blockquote class="text">
5549     <p>C: "GET FX_SEND INFO 0 1"
5550     </p>
5551     <p>S: "NAME: Delay Send (Internal)"
5552     </p>
5553     <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 93"
5554     </p>
5555     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.51"
5556     </p>
5557     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 1,2"
5558     </p>
5559     <p>&nbsp;&nbsp;&nbsp;"EFFECT: 2,0"
5560     </p>
5561     <p>&nbsp;&nbsp;&nbsp;"."
5562     </p>
5563     </blockquote><p>
5564    
5565     </p>
5566 iliev 1137 <a name="SET FX_SEND NAME"></a><br /><hr />
5567     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5568     <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5569     Changing effect send's name</h3>
5570    
5571     <p>The front-end can alter the current name of an effect
5572     send entity by sending the following command:
5573     </p>
5574     <p>
5575     </p>
5576     <blockquote class="text">
5577     <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5578     </p>
5579     </blockquote><p>
5580    
5581     </p>
5582     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5583     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>
5584     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,
5585     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5586     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>
5587     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
5588     &lt;name&gt; is the new name of the effect send entity, which
5589 schoenebeck 1390 does not have to be unique (name MUST be encapsulated into apostrophes
5590     and supports escape sequences as described in chapter
5591     "<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>").
5592    
5593 iliev 1137 </p>
5594     <p>Possible Answers:
5595     </p>
5596     <p>
5597     </p>
5598     <blockquote class="text">
5599     <p>"OK" -
5600     </p>
5601     <blockquote class="text">
5602     <p>on success
5603     </p>
5604     </blockquote>
5605    
5606    
5607     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5608     </p>
5609     <blockquote class="text">
5610     <p>in case it failed, providing an appropriate error code and error message
5611     </p>
5612     </blockquote>
5613    
5614    
5615     </blockquote><p>
5616    
5617     </p>
5618     <p>Example:
5619     </p>
5620     <p>
5621     </p>
5622     <blockquote class="text">
5623     <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5624     </p>
5625     <p>S: "OK"
5626     </p>
5627     </blockquote><p>
5628    
5629     </p>
5630 schoenebeck 1002 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5631     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5632 iliev 1137 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5633 schoenebeck 1002 Altering effect send's audio routing</h3>
5634    
5635     <p>The front-end can alter the destination of an effect send's audio channel on a specific
5636     sampler channel by sending the following command:
5637     </p>
5638     <p>
5639     </p>
5640     <blockquote class="text">
5641     <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5642     </p>
5643     </blockquote><p>
5644    
5645     </p>
5646     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5647     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>
5648     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,
5649     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5650     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>
5651     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,
5652     &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5653     which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5654     the audio channel of the selected audio output device where &lt;audio-src&gt;
5655 schoenebeck 2139 should be routed to. If an internal send effect is assigned
5656     to the effect send, then this setting defines the audio
5657     channel routing to that effect instance respectively.
5658 schoenebeck 1002 </p>
5659     <p>Note that effect sends can only route audio to the same audio output
5660     device as assigned to the effect send's sampler channel. Also note that an
5661     effect send entity does always have exactly as much audio channels as its
5662     sampler channel. So if the sampler channel is stereo, the effect send does
5663     have two audio channels as well. Also keep in mind that the amount of audio
5664     channels on a sampler channel might be dependant not only to the deployed
5665     sampler engine on the sampler channel, but also dependant to the instrument
5666     currently loaded. However you can (effectively) turn an i.e. stereo effect
5667     send into a mono one by simply altering its audio routing appropriately.
5668     </p>
5669     <p>Possible Answers:
5670     </p>
5671     <p>
5672     </p>
5673     <blockquote class="text">
5674     <p>"OK" -
5675     </p>
5676     <blockquote class="text">
5677     <p>on success
5678     </p>
5679     </blockquote>
5680    
5681    
5682     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5683     </p>
5684     <blockquote class="text">
5685     <p>if audio output channel was set, but there are noteworthy
5686     issue(s) related, providing an appropriate warning code and
5687     warning message
5688     </p>
5689     </blockquote>
5690    
5691    
5692     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5693     </p>
5694     <blockquote class="text">
5695     <p>in case it failed, providing an appropriate error code and error message
5696     </p>
5697     </blockquote>
5698    
5699    
5700     </blockquote><p>
5701    
5702     </p>
5703     <p>Example:
5704     </p>
5705     <p>
5706     </p>
5707     <blockquote class="text">
5708     <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5709     </p>
5710     <p>S: "OK"
5711     </p>
5712     </blockquote><p>
5713    
5714     </p>
5715 schoenebeck 2141 <a name="SET FX_SEND EFFECT"></a><br /><hr />
5716 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>
5717     <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5718     Assigning destination effect to an effect send</h3>
5719    
5720     <p>The front-end can (re-)assign a destination effect to an
5721     effect send by sending the following command:
5722     </p>
5723     <p>
5724     </p>
5725     <blockquote class="text">
5726 schoenebeck 2141 <p>SET FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
5727 schoenebeck 2139 </p>
5728     </blockquote><p>
5729    
5730     </p>
5731     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5732     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>
5733     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,
5734     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5735     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>
5736     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,
5737     &lt;effect-chain&gt; by the numerical ID of the destination
5738     effect chain as returned by the
5739     <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>
5740     or
5741     <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>
5742     command and &lt;chain-pos&gt; reflects the exact effect
5743     chain position in the effect chain which hosts the actual
5744     destination effect.
5745     </p>
5746     <p>Possible Answers:
5747     </p>
5748     <p>
5749     </p>
5750     <blockquote class="text">
5751     <p>"OK" -
5752     </p>
5753     <blockquote class="text">
5754     <p>on success
5755     </p>
5756     </blockquote>
5757    
5758    
5759     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5760     </p>
5761     <blockquote class="text">
5762     <p>in case it failed, providing an appropriate error code and error message
5763     </p>
5764     </blockquote>
5765    
5766    
5767     </blockquote><p>
5768    
5769     </p>
5770     <p>Example:
5771     </p>
5772     <p>
5773     </p>
5774     <blockquote class="text">
5775 schoenebeck 2141 <p>C: "SET FX_SEND EFFECT 0 0 2 5"
5776 schoenebeck 2139 </p>
5777     <p>S: "OK"
5778     </p>
5779     </blockquote><p>
5780    
5781     </p>
5782 schoenebeck 2141 <a name="REMOVE FX_SEND EFFECT"></a><br /><hr />
5783 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>
5784     <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5785     Removing destination effect from an effect send</h3>
5786    
5787     <p>The front-end can (re-)assign a destination effect to an
5788     effect send by sending the following command:
5789     </p>
5790     <p>
5791     </p>
5792     <blockquote class="text">
5793 schoenebeck 2141 <p>REMOVE FX_SEND EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt;
5794 schoenebeck 2139 </p>
5795     </blockquote><p>
5796    
5797     </p>
5798     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5799     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>
5800     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,
5801     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5802     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>
5803     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.
5804     </p>
5805     <p>After the destination effect has been removed from the
5806     effect send, the audio signal of the effect send will be
5807     routed directly to the audio output device, according to the
5808     audio channel routing setting of the effect send.
5809    
5810     </p>
5811     <p>Possible Answers:
5812     </p>
5813     <p>
5814     </p>
5815     <blockquote class="text">
5816     <p>"OK" -
5817     </p>
5818     <blockquote class="text">
5819     <p>on success
5820     </p>
5821     </blockquote>
5822    
5823    
5824     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5825     </p>
5826     <blockquote class="text">
5827     <p>in case it failed, providing an appropriate error code and error message
5828     </p>
5829     </blockquote>
5830    
5831    
5832     </blockquote><p>
5833    
5834     </p>
5835     <p>Example:
5836     </p>
5837     <p>
5838     </p>
5839     <blockquote class="text">
5840 schoenebeck 2141 <p>C: "REMOVE FX_SEND EFFECT 0 0"
5841 schoenebeck 2139 </p>
5842     <p>S: "OK"
5843     </p>
5844     </blockquote><p>
5845    
5846     </p>
5847 schoenebeck 1028 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5848     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5849 schoenebeck 2139 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5850 schoenebeck 1028 Altering effect send's MIDI controller</h3>
5851    
5852     <p>The front-end can alter the MIDI controller of an effect
5853     send entity by sending the following command:
5854     </p>
5855     <p>
5856     </p>
5857     <blockquote class="text">
5858     <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5859     </p>
5860     </blockquote><p>
5861    
5862     </p>
5863     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5864     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>
5865     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,
5866     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5867     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>
5868     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
5869     &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5870     able to modify the effect send's send level.
5871     </p>
5872     <p>Possible Answers:
5873     </p>
5874     <p>
5875     </p>
5876     <blockquote class="text">
5877     <p>"OK" -
5878     </p>
5879     <blockquote class="text">
5880     <p>on success
5881     </p>
5882     </blockquote>
5883    
5884    
5885     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5886     </p>
5887     <blockquote class="text">
5888     <p>if MIDI controller was set, but there are noteworthy
5889     issue(s) related, providing an appropriate warning code and
5890     warning message
5891     </p>
5892     </blockquote>
5893    
5894    
5895     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5896     </p>
5897     <blockquote class="text">
5898     <p>in case it failed, providing an appropriate error code and error message
5899     </p>
5900     </blockquote>
5901    
5902    
5903     </blockquote><p>
5904    
5905     </p>
5906     <p>Example:
5907     </p>
5908     <p>
5909     </p>
5910     <blockquote class="text">
5911     <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5912     </p>
5913     <p>S: "OK"
5914     </p>
5915     </blockquote><p>
5916    
5917     </p>
5918     <a name="SET FX_SEND LEVEL"></a><br /><hr />
5919     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5920 schoenebeck 2139 <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
5921 schoenebeck 1028 Altering effect send's send level</h3>
5922    
5923     <p>The front-end can alter the current send level of an effect
5924     send entity by sending the following command:
5925     </p>
5926     <p>
5927     </p>
5928     <blockquote class="text">
5929     <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5930     </p>
5931     </blockquote><p>
5932    
5933     </p>
5934     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5935     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>
5936     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,
5937     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5938     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>
5939     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
5940     &lt;volume&gt; is an optionally dotted positive number (a value
5941     smaller than 1.0 means attenuation, whereas a value greater than
5942     1.0 means amplification) reflecting the new send level.
5943     </p>
5944     <p>Possible Answers:
5945     </p>
5946     <p>
5947     </p>
5948     <blockquote class="text">
5949     <p>"OK" -
5950     </p>
5951     <blockquote class="text">
5952     <p>on success
5953     </p>
5954     </blockquote>
5955    
5956    
5957     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5958     </p>
5959     <blockquote class="text">
5960     <p>if new send level was set, but there are noteworthy
5961     issue(s) related, providing an appropriate warning code and
5962     warning message
5963     </p>
5964     </blockquote>
5965    
5966    
5967     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5968     </p>
5969     <blockquote class="text">
5970     <p>in case it failed, providing an appropriate error code and error message
5971     </p>
5972     </blockquote>
5973    
5974    
5975     </blockquote><p>
5976    
5977     </p>
5978     <p>Example:
5979     </p>
5980     <p>
5981     </p>
5982     <blockquote class="text">
5983     <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5984     </p>
5985     <p>S: "OK"
5986     </p>
5987     </blockquote><p>
5988    
5989     </p>
5990 iliev 1773 <a name="SEND CHANNEL MIDI_DATA"></a><br /><hr />
5991     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5992 schoenebeck 2139 <a name="rfc.section.6.4.36"></a><h3>6.4.36.&nbsp;
5993 iliev 1773 Sending MIDI messages to sampler channel</h3>
5994    
5995 schoenebeck 2023 <p>The front-end can send MIDI events to a specific sampler channel
5996 iliev 1773 by sending the following command:
5997     </p>
5998     <p>
5999     </p>
6000     <blockquote class="text">
6001     <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;
6002     </p>
6003     </blockquote><p>
6004    
6005     </p>
6006     <p>Where &lt;sampler-chan&gt; is the sampler channel number
6007     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>
6008     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,
6009     &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
6010     specifies the MIDI message type. Currently, the following MIDI messages are supported:
6011     </p>
6012     <p>
6013     </p>
6014     <blockquote class="text">
6015     <p>"NOTE_ON" -
6016     </p>
6017     <blockquote class="text">
6018     <p>For turning on MIDI notes, where &lt;arg1&gt;
6019     specifies the key number and &lt;arg2&gt; the velocity
6020     as described in the MIDI specification.
6021     </p>
6022     </blockquote>
6023    
6024    
6025     <p>"NOTE_OFF" -
6026     </p>
6027     <blockquote class="text">
6028     <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
6029     specifies the key number and &lt;arg2&gt; the velocity
6030     as described in the MIDI specification.
6031     </p>
6032     </blockquote>
6033    
6034    
6035 schoenebeck 2023 <p>"CC" -
6036     </p>
6037     <blockquote class="text">
6038     <p>For changing a MIDI controller, where &lt;arg1&gt;
6039     specifies the controller number and &lt;arg2&gt; the
6040     new value of the controller as described in the Control
6041     Change section of the MIDI specification.
6042     </p>
6043     </blockquote>
6044    
6045    
6046 iliev 1773 </blockquote><p>
6047    
6048     </p>
6049     <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
6050     and no realtime guarantee whatsoever will be made!
6051     </p>
6052     <p>Possible Answers:
6053     </p>
6054     <p>
6055     </p>
6056     <blockquote class="text">
6057     <p>"OK" -
6058     </p>
6059     <blockquote class="text">
6060     <p>on success
6061     </p>
6062     </blockquote>
6063    
6064    
6065     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6066     </p>
6067     <blockquote class="text">
6068     <p>in case it failed, providing an appropriate error code and error message
6069     </p>
6070     </blockquote>
6071    
6072    
6073     </blockquote><p>
6074    
6075     </p>
6076     <p>Example:
6077     </p>
6078     <p>
6079     </p>
6080     <blockquote class="text">
6081     <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
6082     </p>
6083     <p>S: "OK"
6084     </p>
6085     </blockquote><p>
6086    
6087     </p>
6088 schoenebeck 940 <a name="RESET CHANNEL"></a><br /><hr />
6089 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6090 schoenebeck 2139 <a name="rfc.section.6.4.37"></a><h3>6.4.37.&nbsp;
6091 schoenebeck 974 Resetting a sampler channel</h3>
6092 schoenebeck 708
6093 senoner 542 <p>The front-end can reset a particular sampler channel by sending the following command:
6094     </p>
6095 schoenebeck 708 <p>
6096     </p>
6097 senoner 542 <blockquote class="text">
6098     <p>RESET CHANNEL &lt;sampler-channel&gt;
6099     </p>
6100 schoenebeck 708 </blockquote><p>
6101 schoenebeck 940
6102 schoenebeck 708 </p>
6103 senoner 542 <p>
6104     Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
6105     This will cause the engine on that sampler channel, its voices and
6106     eventually disk streams and all control and status variables to be
6107     reset.
6108     </p>
6109     <p>Possible Answers:
6110     </p>
6111 schoenebeck 708 <p>
6112     </p>
6113 senoner 542 <blockquote class="text">
6114     <p>"OK" -
6115     </p>
6116     <blockquote class="text">
6117     <p>on success
6118     </p>
6119 schoenebeck 940 </blockquote>
6120    
6121 senoner 542
6122     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6123     </p>
6124     <blockquote class="text">
6125     <p>if channel was reset, but there are noteworthy issue(s)
6126     related, providing an appropriate warning code and warning
6127     message
6128     </p>
6129 schoenebeck 940 </blockquote>
6130    
6131 senoner 542
6132     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6133     </p>
6134     <blockquote class="text">
6135     <p>in case it failed, providing an appropriate error code and
6136     error message
6137     </p>
6138 schoenebeck 940 </blockquote>
6139    
6140 senoner 542
6141 schoenebeck 708 </blockquote><p>
6142 schoenebeck 940
6143 schoenebeck 708 </p>
6144 senoner 542 <p>Examples:
6145     </p>
6146 schoenebeck 708 <p>
6147     </p>
6148 senoner 542 <blockquote class="text">
6149     <p>
6150     </p>
6151 schoenebeck 708 </blockquote><p>
6152 schoenebeck 940
6153 schoenebeck 708 </p>
6154 schoenebeck 940 <a name="anchor12"></a><br /><hr />
6155 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6156     <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
6157     Controlling connection</h3>
6158 senoner 542
6159     <p>The following commands are used to control the connection to LinuxSampler.
6160     </p>
6161 schoenebeck 940 <a name="SUBSCRIBE"></a><br /><hr />
6162 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6163     <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
6164     Register front-end for receiving event messages</h3>
6165 senoner 542
6166     <p>The front-end can register itself to the LinuxSampler application to
6167     be informed about noteworthy events by sending this command:
6168     </p>
6169 schoenebeck 708 <p>
6170     </p>
6171 senoner 542 <blockquote class="text">
6172     <p>SUBSCRIBE &lt;event-id&gt;
6173     </p>
6174 schoenebeck 708 </blockquote><p>
6175 schoenebeck 940
6176 schoenebeck 708 </p>
6177 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective event that
6178     client wants to subscribe to.
6179     </p>
6180     <p>Possible Answers:
6181     </p>
6182 schoenebeck 708 <p>
6183     </p>
6184 senoner 542 <blockquote class="text">
6185     <p>"OK" -
6186     </p>
6187     <blockquote class="text">
6188     <p>on success
6189     </p>
6190 schoenebeck 940 </blockquote>
6191    
6192 senoner 542
6193     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6194     </p>
6195     <blockquote class="text">
6196     <p>if registration succeeded, but there are noteworthy
6197     issue(s) related, providing an appropriate warning code and
6198     warning message
6199     </p>
6200 schoenebeck 940 </blockquote>
6201    
6202 senoner 542
6203     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6204     </p>
6205     <blockquote class="text">
6206     <p>in case it failed, providing an appropriate error code and
6207     error message
6208     </p>
6209 schoenebeck 940 </blockquote>
6210    
6211 senoner 542
6212 schoenebeck 708 </blockquote><p>
6213 schoenebeck 940
6214 schoenebeck 708 </p>
6215 senoner 542 <p>Examples:
6216     </p>
6217 schoenebeck 708 <p>
6218     </p>
6219 senoner 542 <blockquote class="text">
6220     <p>
6221     </p>
6222 schoenebeck 708 </blockquote><p>
6223 schoenebeck 940
6224 schoenebeck 708 </p>
6225 schoenebeck 940 <a name="UNSUBSCRIBE"></a><br /><hr />
6226 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6227     <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
6228     Unregister front-end for not receiving event messages</h3>
6229 senoner 542
6230     <p>The front-end can unregister itself if it doesn't want to receive event
6231     messages anymore by sending the following command:
6232     </p>
6233 schoenebeck 708 <p>
6234     </p>
6235 senoner 542 <blockquote class="text">
6236     <p>UNSUBSCRIBE &lt;event-id&gt;
6237     </p>
6238 schoenebeck 708 </blockquote><p>
6239 schoenebeck 940
6240 schoenebeck 708 </p>
6241 senoner 542 <p>Where &lt;event-id&gt; will be replaced by the respective event that
6242     client doesn't want to receive anymore.
6243     </p>
6244     <p>Possible Answers:
6245     </p>
6246 schoenebeck 708 <p>
6247     </p>
6248 senoner 542 <blockquote class="text">
6249     <p>"OK" -
6250     </p>
6251     <blockquote class="text">
6252     <p>on success
6253     </p>
6254 schoenebeck 940 </blockquote>
6255    
6256 senoner 542
6257     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6258     </p>
6259     <blockquote class="text">
6260     <p>if unregistration succeeded, but there are noteworthy
6261     issue(s) related, providing an appropriate warning code and
6262     warning message
6263     </p>
6264 schoenebeck 940 </blockquote>
6265    
6266 senoner 542
6267     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6268     </p>
6269     <blockquote class="text">
6270     <p>in case it failed, providing an appropriate error code and
6271     error message
6272     </p>
6273 schoenebeck 940 </blockquote>
6274    
6275 senoner 542
6276 schoenebeck 708 </blockquote><p>
6277 schoenebeck 940
6278 schoenebeck 708 </p>
6279 senoner 542 <p>Examples:
6280     </p>
6281 schoenebeck 708 <p>
6282     </p>
6283 senoner 542 <blockquote class="text">
6284     <p>
6285     </p>
6286 schoenebeck 708 </blockquote><p>
6287 schoenebeck 940
6288 schoenebeck 708 </p>
6289 schoenebeck 940 <a name="SET ECHO"></a><br /><hr />
6290 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6291     <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6292     Enable or disable echo of commands</h3>
6293 senoner 542
6294     <p>To enable or disable back sending of commands to the client the following command can be used:
6295     </p>
6296 schoenebeck 708 <p>
6297     </p>
6298 senoner 542 <blockquote class="text">
6299     <p>SET ECHO &lt;value&gt;
6300     </p>
6301 schoenebeck 708 </blockquote><p>
6302 schoenebeck 940
6303 schoenebeck 708 </p>
6304 senoner 542 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6305     or "0" to disable echo mode. When echo mode is enabled, all
6306     commands send to LinuxSampler will be immediately send back and
6307     after this echo the actual response to the command will be
6308     returned. Echo mode will only be altered for the client connection
6309     that issued the "SET ECHO" command, not globally for all client
6310     connections.
6311     </p>
6312     <p>Possible Answers:
6313     </p>
6314 schoenebeck 708 <p>
6315     </p>
6316 senoner 542 <blockquote class="text">
6317     <p>"OK" -
6318     </p>
6319     <blockquote class="text">
6320     <p>usually
6321     </p>
6322 schoenebeck 940 </blockquote>
6323    
6324 senoner 542
6325     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6326     </p>
6327     <blockquote class="text">
6328     <p>on syntax error, e.g. non boolean value
6329     </p>
6330 schoenebeck 940 </blockquote>
6331    
6332 senoner 542
6333 schoenebeck 708 </blockquote><p>
6334 schoenebeck 940
6335 schoenebeck 708 </p>
6336 senoner 542 <p>Examples:
6337     </p>
6338 schoenebeck 708 <p>
6339     </p>
6340 senoner 542 <blockquote class="text">
6341     <p>
6342     </p>
6343 schoenebeck 708 </blockquote><p>
6344 schoenebeck 940
6345 schoenebeck 708 </p>
6346 schoenebeck 940 <a name="QUIT"></a><br /><hr />
6347 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6348     <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6349     Close client connection</h3>
6350 senoner 542
6351     <p>The client can close its network connection to LinuxSampler by sending the following command:
6352     </p>
6353 schoenebeck 708 <p>
6354     </p>
6355 senoner 542 <blockquote class="text">
6356     <p>QUIT
6357     </p>
6358 schoenebeck 708 </blockquote><p>
6359 schoenebeck 940
6360 schoenebeck 708 </p>
6361 senoner 542 <p>This is probably more interesting for manual telnet connections to
6362     LinuxSampler than really useful for a front-end implementation.
6363     </p>
6364 schoenebeck 940 <a name="anchor13"></a><br /><hr />
6365 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6366     <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6367     Global commands</h3>
6368 senoner 542
6369     <p>The following commands have global impact on the sampler.
6370     </p>
6371 schoenebeck 940 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6372 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6373     <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6374     Current number of active voices</h3>
6375 senoner 542
6376 schoenebeck 940 <p>The front-end can ask for the current number of active voices on
6377     the sampler by sending the following command:
6378     </p>
6379     <p>
6380     </p>
6381     <blockquote class="text">
6382     <p>GET TOTAL_VOICE_COUNT
6383     </p>
6384     </blockquote><p>
6385    
6386     </p>
6387     <p>Possible Answers:
6388     </p>
6389     <p>
6390     </p>
6391     <blockquote class="text">
6392     <p>LinuxSampler will answer by returning the number of all active
6393     voices on the sampler.
6394     </p>
6395     </blockquote><p>
6396    
6397     </p>
6398     <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6399 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6400     <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6401     Maximum amount of active voices</h3>
6402 schoenebeck 940
6403     <p>The front-end can ask for the maximum number of active voices
6404     by sending the following command:
6405     </p>
6406     <p>
6407     </p>
6408     <blockquote class="text">
6409     <p>GET TOTAL_VOICE_COUNT_MAX
6410     </p>
6411     </blockquote><p>
6412    
6413     </p>
6414     <p>Possible Answers:
6415     </p>
6416     <p>
6417     </p>
6418     <blockquote class="text">
6419     <p>LinuxSampler will answer by returning the maximum number
6420     of active voices.
6421     </p>
6422     </blockquote><p>
6423    
6424     </p>
6425 schoenebeck 1572 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6426     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6427     <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6428     Current number of active disk streams</h3>
6429    
6430     <p>The front-end can ask for the current number of active disk streams on
6431     the sampler by sending the following command:
6432     </p>
6433     <p>
6434     </p>
6435     <blockquote class="text">
6436     <p>GET TOTAL_STREAM_COUNT
6437     </p>
6438     </blockquote><p>
6439    
6440     </p>
6441     <p>Possible Answers:
6442     </p>
6443     <p>
6444     </p>
6445     <blockquote class="text">
6446     <p>LinuxSampler will answer by returning the number of all active
6447     disk streams on the sampler.
6448     </p>
6449     </blockquote><p>
6450    
6451     </p>
6452 schoenebeck 940 <a name="RESET"></a><br /><hr />
6453 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6454 schoenebeck 1572 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6455 schoenebeck 974 Reset sampler</h3>
6456 schoenebeck 940
6457 senoner 542 <p>The front-end can reset the whole sampler by sending the following command:
6458     </p>
6459 schoenebeck 708 <p>
6460     </p>
6461 senoner 542 <blockquote class="text">
6462     <p>RESET
6463     </p>
6464 schoenebeck 708 </blockquote><p>
6465 schoenebeck 940
6466 schoenebeck 708 </p>
6467 senoner 542 <p>Possible Answers:
6468     </p>
6469 schoenebeck 708 <p>
6470     </p>
6471 senoner 542 <blockquote class="text">
6472     <p>"OK" -
6473     </p>
6474     <blockquote class="text">
6475     <p>always
6476     </p>
6477 schoenebeck 940 </blockquote>
6478    
6479 senoner 542
6480 schoenebeck 708 </blockquote><p>
6481 schoenebeck 940
6482 schoenebeck 708 </p>
6483 senoner 542 <p>Examples:
6484     </p>
6485 schoenebeck 708 <p>
6486     </p>
6487 senoner 542 <blockquote class="text">
6488     <p>
6489     </p>
6490 schoenebeck 708 </blockquote><p>
6491 schoenebeck 940
6492 schoenebeck 708 </p>
6493 schoenebeck 940 <a name="GET SERVER INFO"></a><br /><hr />
6494 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6495 schoenebeck 1572 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6496 schoenebeck 974 General sampler informations</h3>
6497 schoenebeck 575
6498     <p>The client can ask for general informations about the LinuxSampler
6499     instance by sending the following command:
6500     </p>
6501 schoenebeck 708 <p>
6502     </p>
6503 schoenebeck 575 <blockquote class="text">
6504     <p>GET SERVER INFO
6505     </p>
6506 schoenebeck 708 </blockquote><p>
6507 schoenebeck 940
6508 schoenebeck 708 </p>
6509 schoenebeck 575 <p>Possible Answers:
6510     </p>
6511 schoenebeck 708 <p>
6512     </p>
6513 schoenebeck 575 <blockquote class="text">
6514     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6515     Each answer line begins with the information category name
6516     followed by a colon and then a space character &lt;SP&gt; and finally
6517     the info character string to that information category. At the
6518     moment the following categories are defined:
6519 schoenebeck 940
6520 schoenebeck 575 </p>
6521 schoenebeck 708 <p>
6522     </p>
6523 schoenebeck 575 <blockquote class="text">
6524     <p>DESCRIPTION -
6525     </p>
6526     <blockquote class="text">
6527     <p>arbitrary textual description about the sampler
6528 schoenebeck 1390 (note that the character string may contain
6529     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6530 schoenebeck 575 </p>
6531 schoenebeck 940 </blockquote>
6532    
6533 schoenebeck 575
6534     <p>VERSION -
6535     </p>
6536     <blockquote class="text">
6537     <p>version of the sampler
6538     </p>
6539 schoenebeck 940 </blockquote>
6540    
6541 schoenebeck 575
6542     <p>PROTOCOL_VERSION -
6543     </p>
6544     <blockquote class="text">
6545     <p>version of the LSCP specification the sampler
6546 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)
6547 schoenebeck 575 </p>
6548 schoenebeck 940 </blockquote>
6549    
6550 schoenebeck 575
6551 iliev 1162 <p>INSTRUMENTS_DB_SUPPORT -
6552     </p>
6553     <blockquote class="text">
6554     <p>either yes or no, specifies whether the
6555     sampler is build with instruments database support.
6556     </p>
6557 schoenebeck 940 </blockquote>
6558 iliev 1162
6559    
6560     </blockquote>
6561 schoenebeck 940
6562 schoenebeck 575
6563 schoenebeck 708 </blockquote><p>
6564 schoenebeck 940
6565 schoenebeck 708 </p>
6566 schoenebeck 575 <p>The mentioned fields above don't have to be in particular order.
6567     Other fields might be added in future.
6568     </p>
6569 schoenebeck 1006 <a name="GET VOLUME"></a><br /><hr />
6570     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6571 schoenebeck 1572 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6572 schoenebeck 1006 Getting global volume attenuation</h3>
6573    
6574     <p>The client can ask for the current global sampler-wide volume
6575     attenuation by sending the following command:
6576     </p>
6577     <p>
6578     </p>
6579     <blockquote class="text">
6580     <p>GET VOLUME
6581     </p>
6582     </blockquote><p>
6583    
6584     </p>
6585     <p>Possible Answers:
6586     </p>
6587     <p>
6588     </p>
6589     <blockquote class="text">
6590     <p>The sampler will always answer by returning the optional
6591     dotted floating point coefficient, reflecting the current
6592     global volume attenuation.
6593    
6594     </p>
6595     </blockquote><p>
6596    
6597     </p>
6598     <p>Note: it is up to the respective sampler engine whether to obey
6599     that global volume parameter or not, but in general all engines SHOULD
6600     use this parameter.
6601     </p>
6602     <a name="SET VOLUME"></a><br /><hr />
6603     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6604 schoenebeck 1572 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6605 schoenebeck 1006 Setting global volume attenuation</h3>
6606    
6607     <p>The client can alter the current global sampler-wide volume
6608     attenuation by sending the following command:
6609     </p>
6610     <p>
6611     </p>
6612     <blockquote class="text">
6613     <p>SET VOLUME &lt;volume&gt;
6614     </p>
6615     </blockquote><p>
6616    
6617     </p>
6618     <p>Where &lt;volume&gt; should be replaced by the optional dotted
6619     floating point value, reflecting the new global volume parameter.
6620     This value might usually be in the range between 0.0 and 1.0, that
6621     is for attenuating the overall volume.
6622     </p>
6623     <p>Possible Answers:
6624     </p>
6625     <p>
6626     </p>
6627     <blockquote class="text">
6628     <p>"OK" -
6629     </p>
6630     <blockquote class="text">
6631     <p>on success
6632     </p>
6633     </blockquote>
6634    
6635    
6636     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6637     </p>
6638     <blockquote class="text">
6639     <p>if the global volume was set, but there are noteworthy
6640     issue(s) related, providing an appropriate warning code and
6641     warning message
6642     </p>
6643     </blockquote>
6644    
6645    
6646     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6647     </p>
6648     <blockquote class="text">
6649     <p>in case it failed, providing an appropriate error code and error message
6650     </p>
6651     </blockquote>
6652    
6653    
6654     </blockquote><p>
6655    
6656     </p>
6657 schoenebeck 1801 <a name="GET VOICES"></a><br /><hr />
6658     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6659     <a name="rfc.section.6.6.8"></a><h3>6.6.8.&nbsp;
6660     Getting global voice limit</h3>
6661    
6662     <p>The client can ask for the current global sampler-wide limit
6663     for maximum voices by sending the following command:
6664     </p>
6665     <p>
6666     </p>
6667     <blockquote class="text">
6668     <p>GET VOICES
6669     </p>
6670     </blockquote><p>
6671    
6672     </p>
6673     <p>Possible Answers:
6674     </p>
6675     <p>
6676     </p>
6677     <blockquote class="text">
6678     <p>LinuxSampler will answer by returning the number for
6679     the current limit of maximum voices.
6680     </p>
6681     </blockquote><p>
6682    
6683     </p>
6684     <p>The voice limit setting defines how many voices should maximum
6685     be processed by the sampler at the same time. If the user
6686     triggers new notes which would exceed that voice limit, the
6687     sampler engine will react by stealing old voices for those
6688     newly triggered notes. Note that the amount of voices triggered
6689     by a new note can be larger than one and is dependent to the
6690     respective instrument and probably further criterias.
6691     </p>
6692     <a name="SET VOICES"></a><br /><hr />
6693     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6694     <a name="rfc.section.6.6.9"></a><h3>6.6.9.&nbsp;
6695     Setting global voice limit</h3>
6696    
6697     <p>The client can alter the current global sampler-wide limit
6698     for maximum voices by sending the following command:
6699     </p>
6700     <p>
6701     </p>
6702     <blockquote class="text">
6703     <p>SET VOICES &lt;max-voices&gt;
6704     </p>
6705     </blockquote><p>
6706    
6707     </p>
6708     <p>Where &lt;max-voices&gt; should be replaced by the integer
6709     value, reflecting the new global amount limit of maximum voices.
6710     This value has to be larger than 0.
6711     </p>
6712     <p>Possible Answers:
6713     </p>
6714     <p>
6715     </p>
6716     <blockquote class="text">
6717     <p>"OK" -
6718     </p>
6719     <blockquote class="text">
6720     <p>on success
6721     </p>
6722     </blockquote>
6723    
6724    
6725     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6726     </p>
6727     <blockquote class="text">
6728     <p>if the voice limit was set, but there are noteworthy
6729     issue(s) related, providing an appropriate warning code and
6730     warning message
6731     </p>
6732     </blockquote>
6733    
6734    
6735     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6736     </p>
6737     <blockquote class="text">
6738     <p>in case it failed, providing an appropriate error code and error message
6739     </p>
6740     </blockquote>
6741    
6742    
6743     </blockquote><p>
6744    
6745     </p>
6746     <p>Note: the given value will be passed to all sampler engine instances.
6747     The total amount of maximum voices on the running system might thus
6748     be as big as the given value multiplied by the current amount of engine
6749     instances.
6750     </p>
6751     <p>Caution: when adjusting the voice limit, you SHOULD also
6752     adjust the disk stream limit respectively and vice versa.
6753     </p>
6754     <a name="GET STREAMS"></a><br /><hr />
6755     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6756     <a name="rfc.section.6.6.10"></a><h3>6.6.10.&nbsp;
6757     Getting global disk stream limit</h3>
6758    
6759     <p>The client can ask for the current global sampler-wide limit
6760     for maximum disk streams by sending the following command:
6761     </p>
6762     <p>
6763     </p>
6764     <blockquote class="text">
6765     <p>GET STREAMS
6766     </p>
6767     </blockquote><p>
6768    
6769     </p>
6770     <p>Possible Answers:
6771     </p>
6772     <p>
6773     </p>
6774     <blockquote class="text">
6775     <p>LinuxSampler will answer by returning the number for
6776     the current limit of maximum disk streams.
6777     </p>
6778     </blockquote><p>
6779    
6780     </p>
6781     <p>The disk stream limit setting defines how many disk streams should
6782     maximum be processed by a sampler engine at the same time. The
6783     higher this value, the more memory (RAM) will be occupied, since
6784     every disk streams allocates a certain buffer size for being able
6785     to perform its streaming operations.
6786     </p>
6787     <a name="SET STREAMS"></a><br /><hr />
6788     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6789     <a name="rfc.section.6.6.11"></a><h3>6.6.11.&nbsp;
6790     Setting global disk stream limit</h3>
6791    
6792     <p>The client can alter the current global sampler-wide limit
6793     for maximum disk streams by sending the following command:
6794     </p>
6795     <p>
6796     </p>
6797     <blockquote class="text">
6798     <p>SET STREAMS &lt;max-streams&gt;
6799     </p>
6800     </blockquote><p>
6801    
6802     </p>
6803     <p>Where &lt;max-streams&gt; should be replaced by the integer
6804     value, reflecting the new global amount limit of maximum disk streams.
6805     This value has to be positive.
6806     </p>
6807     <p>Possible Answers:
6808     </p>
6809     <p>
6810     </p>
6811     <blockquote class="text">
6812     <p>"OK" -
6813     </p>
6814     <blockquote class="text">
6815     <p>on success
6816     </p>
6817     </blockquote>
6818    
6819    
6820     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6821     </p>
6822     <blockquote class="text">
6823     <p>if the disk stream limit was set, but there are noteworthy
6824     issue(s) related, providing an appropriate warning code and
6825     warning message
6826     </p>
6827     </blockquote>
6828    
6829    
6830     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6831     </p>
6832     <blockquote class="text">
6833     <p>in case it failed, providing an appropriate error code and error message
6834     </p>
6835     </blockquote>
6836    
6837    
6838     </blockquote><p>
6839    
6840     </p>
6841     <p>Note: the given value will be passed to all sampler engine instances.
6842     The total amount of maximum disk streams on the running system might
6843     thus be as big as the given value multiplied by the current amount of
6844     engine instances.
6845     </p>
6846     <p>Caution: when adjusting the disk stream limit, you SHOULD also
6847     adjust the voice limit respectively and vice versa.
6848     </p>
6849 schoenebeck 974 <a name="MIDI Instrument Mapping"></a><br /><hr />
6850     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6851     <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6852     MIDI Instrument Mapping</h3>
6853 schoenebeck 945
6854     <p>The MIDI protocol provides a way to switch between instruments
6855     by sending so called MIDI bank select and MIDI program change
6856     messages which are essentially just numbers. The following commands
6857     allow to actually map arbitrary MIDI bank select / program change
6858     numbers with real instruments.
6859     </p>
6860 schoenebeck 974 <p>The sampler allows to manage an arbitrary amount of MIDI
6861     instrument maps which define which instrument to load on
6862     which MIDI program change message.
6863 schoenebeck 945 </p>
6864 schoenebeck 974 <p>By default, that is when the sampler is launched, there is no
6865     map, thus the sampler will simply ignore all program change
6866     messages. The front-end has to explicitly create at least one
6867     map, add entries to the map and tell the respective sampler
6868     channel(s) which MIDI instrument map to use, so the sampler
6869     knows how to react on a given program change message on the
6870     respective sampler channel, that is by switching to the
6871     respectively defined engine type and loading the respective
6872     instrument. See command
6873     <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>
6874     for how to assign a MIDI instrument map to a sampler channel.
6875     </p>
6876 schoenebeck 945 <p>Also note per MIDI specification a bank select message does not
6877     cause to switch to another instrument. Instead when receiving a
6878     bank select message the bank value will be stored and a subsequent
6879     program change message (which may occur at any time) will finally
6880     cause the sampler to switch to the respective instrument as
6881     reflected by the current MIDI instrument map.
6882     </p>
6883 schoenebeck 1390 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6884 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6885     <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6886     Create a new MIDI instrument map</h3>
6887    
6888     <p>The front-end can add a new MIDI instrument map by sending
6889     the following command:
6890     </p>
6891     <p>
6892     </p>
6893     <blockquote class="text">
6894     <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6895     </p>
6896     </blockquote><p>
6897    
6898     </p>
6899     <p>Where &lt;name&gt; is an optional argument allowing to
6900     assign a custom name to the new map. MIDI instrument Map
6901 schoenebeck 1390 names do not have to be unique, but MUST be encapsulated
6902     into apostrophes and support escape sequences as described
6903     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>".
6904    
6905 schoenebeck 974 </p>
6906     <p>Possible Answers:
6907     </p>
6908     <p>
6909     </p>
6910     <blockquote class="text">
6911     <p>"OK[&lt;map&gt;]" -
6912     </p>
6913     <blockquote class="text">
6914     <p>in case a new MIDI instrument map could
6915     be added, where &lt;map&gt; reflects the
6916     unique ID of the newly created MIDI
6917     instrument map
6918     </p>
6919     </blockquote>
6920    
6921    
6922     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6923     </p>
6924     <blockquote class="text">
6925     <p>when a new map could not be created, which
6926     might never occur in practice
6927     </p>
6928     </blockquote>
6929    
6930    
6931     </blockquote><p>
6932    
6933     </p>
6934     <p>Examples:
6935     </p>
6936     <p>
6937     </p>
6938     <blockquote class="text">
6939     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6940     </p>
6941     <p>S: "OK[0]"
6942     </p>
6943     </blockquote><p>
6944    
6945     </p>
6946     <p>
6947     </p>
6948     <blockquote class="text">
6949     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6950     </p>
6951     <p>S: "OK[1]"
6952     </p>
6953     </blockquote><p>
6954    
6955     </p>
6956     <p>
6957     </p>
6958     <blockquote class="text">
6959     <p>C: "ADD MIDI_INSTRUMENT_MAP"
6960     </p>
6961     <p>S: "OK[5]"
6962     </p>
6963     </blockquote><p>
6964    
6965     </p>
6966     <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6967     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6968     <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6969     Delete one particular or all MIDI instrument maps</h3>
6970    
6971     <p>The front-end can delete a particular MIDI instrument map
6972     by sending the following command:
6973     </p>
6974     <p>
6975     </p>
6976     <blockquote class="text">
6977     <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6978     </p>
6979     </blockquote><p>
6980    
6981     </p>
6982     <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6983     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>
6984     command.
6985     </p>
6986     <p>The front-end can delete all MIDI instrument maps by
6987     sending the following command:
6988     </p>
6989     <p>
6990     </p>
6991     <blockquote class="text">
6992     <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6993     </p>
6994     </blockquote><p>
6995    
6996     </p>
6997     <p>Possible Answers:
6998     </p>
6999     <p>
7000     </p>
7001     <blockquote class="text">
7002     <p>"OK" -
7003     </p>
7004     <blockquote class="text">
7005     <p>in case the map(s) could be deleted
7006     </p>
7007     </blockquote>
7008    
7009    
7010     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7011     </p>
7012     <blockquote class="text">
7013     <p>when the given map does not exist
7014     </p>
7015     </blockquote>
7016    
7017    
7018     </blockquote><p>
7019    
7020     </p>
7021     <p>Examples:
7022     </p>
7023     <p>
7024     </p>
7025     <blockquote class="text">
7026     <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
7027     </p>
7028     <p>S: "OK"
7029     </p>
7030     </blockquote><p>
7031    
7032     </p>
7033     <p>
7034     </p>
7035     <blockquote class="text">
7036     <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
7037     </p>
7038     <p>S: "OK"
7039     </p>
7040     </blockquote><p>
7041    
7042     </p>
7043     <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7044     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7045     <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
7046     Get amount of existing MIDI instrument maps</h3>
7047    
7048     <p>The front-end can retrieve the current amount of MIDI
7049     instrument maps by sending the following command:
7050     </p>
7051     <p>
7052     </p>
7053     <blockquote class="text">
7054     <p>GET MIDI_INSTRUMENT_MAPS
7055     </p>
7056     </blockquote><p>
7057    
7058     </p>
7059     <p>Possible Answers:
7060     </p>
7061     <p>
7062     </p>
7063     <blockquote class="text">
7064     <p>The sampler will answer by returning the current
7065     number of MIDI instrument maps.
7066     </p>
7067     </blockquote><p>
7068    
7069     </p>
7070     <p>Example:
7071     </p>
7072     <p>
7073     </p>
7074     <blockquote class="text">
7075     <p>C: "GET MIDI_INSTRUMENT_MAPS"
7076     </p>
7077     <p>S: "2"
7078     </p>
7079     </blockquote><p>
7080    
7081     </p>
7082     <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7083     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7084     <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
7085     Getting all created MIDI instrument maps</h3>
7086    
7087     <p>The number of MIDI instrument maps can change on runtime. To get the
7088     current list of MIDI instrument maps, the front-end can send the
7089     following command:
7090     </p>
7091     <p>
7092     </p>
7093     <blockquote class="text">
7094     <p>LIST MIDI_INSTRUMENT_MAPS
7095     </p>
7096     </blockquote><p>
7097    
7098     </p>
7099     <p>Possible Answers:
7100     </p>
7101     <p>
7102     </p>
7103     <blockquote class="text">
7104     <p>The sampler will answer by returning a comma separated list
7105     with all MIDI instrument maps' numerical IDs.
7106     </p>
7107     </blockquote><p>
7108    
7109     </p>
7110     <p>Example:
7111     </p>
7112     <p>
7113     </p>
7114     <blockquote class="text">
7115     <p>C: "LIST MIDI_INSTRUMENT_MAPS"
7116     </p>
7117     <p>S: "0,1,5,12"
7118     </p>
7119     </blockquote><p>
7120    
7121     </p>
7122     <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
7123     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7124     <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
7125     Getting MIDI instrument map information</h3>
7126    
7127     <p>The front-end can ask for the current settings of a MIDI
7128     instrument map by sending the following command:
7129     </p>
7130     <p>
7131     </p>
7132     <blockquote class="text">
7133     <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
7134     </p>
7135     </blockquote><p>
7136    
7137     </p>
7138     <p>Where &lt;map&gt; is the numerical ID of the map the
7139     front-end is interested in as returned by the
7140     <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>
7141     command.
7142     </p>
7143     <p>Possible Answers:
7144     </p>
7145     <p>
7146     </p>
7147     <blockquote class="text">
7148     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7149     Each answer line begins with the settings category name
7150     followed by a colon and then a space character &lt;SP&gt; and finally
7151     the info character string to that setting category. At the
7152     moment the following categories are defined:
7153     </p>
7154     <p>
7155     </p>
7156     <blockquote class="text">
7157     <p>NAME -
7158     </p>
7159     <blockquote class="text">
7160     <p>custom name of the given map,
7161     which does not have to be unique
7162 schoenebeck 1400 (note that this character string may contain
7163     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7164 schoenebeck 974 </p>
7165     </blockquote>
7166    
7167    
7168 iliev 1137 <p>DEFAULT -
7169     </p>
7170     <blockquote class="text">
7171     <p>either true or false,
7172     defines whether this map is the default map
7173     </p>
7174 schoenebeck 974 </blockquote>
7175 iliev 1137
7176    
7177     </blockquote>
7178 schoenebeck 974
7179    
7180     </blockquote><p>
7181    
7182     </p>
7183     <p>The mentioned fields above don't have to be in particular order.
7184     </p>
7185     <p>Example:
7186     </p>
7187     <p>
7188     </p>
7189     <blockquote class="text">
7190     <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
7191     </p>
7192     <p>S: "NAME: Standard Map"
7193     </p>
7194 iliev 1137 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
7195     </p>
7196 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"."
7197     </p>
7198     </blockquote><p>
7199    
7200     </p>
7201     <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
7202     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7203     <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
7204     Renaming a MIDI instrument map</h3>
7205    
7206     <p>The front-end can alter the custom name of a MIDI
7207     instrument map by sending the following command:
7208     </p>
7209     <p>
7210     </p>
7211     <blockquote class="text">
7212     <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
7213     </p>
7214     </blockquote><p>
7215    
7216     </p>
7217     <p>Where &lt;map&gt; is the numerical ID of the map and
7218     &lt;name&gt; the new custom name of the map, which does not
7219 schoenebeck 1390 have to be unique (name MUST be encapsulated into apostrophes
7220     and supports escape sequences as described in chapter
7221     "<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>").
7222    
7223 schoenebeck 974 </p>
7224     <p>Possible Answers:
7225     </p>
7226     <p>
7227     </p>
7228     <blockquote class="text">
7229     <p>"OK" -
7230     </p>
7231     <blockquote class="text">
7232     <p>on success
7233     </p>
7234     </blockquote>
7235    
7236    
7237     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7238     </p>
7239     <blockquote class="text">
7240     <p>in case the given map does not exist
7241     </p>
7242     </blockquote>
7243    
7244    
7245     </blockquote><p>
7246    
7247     </p>
7248     <p>Example:
7249     </p>
7250     <p>
7251     </p>
7252     <blockquote class="text">
7253     <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
7254     </p>
7255     <p>S: "OK"
7256     </p>
7257     </blockquote><p>
7258    
7259     </p>
7260 schoenebeck 945 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
7261 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7262     <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
7263     Create or replace a MIDI instrument map entry</h3>
7264 schoenebeck 945
7265     <p>The front-end can create a new or replace an existing entry
7266 schoenebeck 974 in a sampler's MIDI instrument map by sending the following
7267 schoenebeck 945 command:
7268     </p>
7269     <p>
7270     </p>
7271     <blockquote class="text">
7272 schoenebeck 1048 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
7273 schoenebeck 974 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
7274 schoenebeck 945 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
7275     [&lt;instr_load_mode&gt;] [&lt;name&gt;]
7276     </p>
7277     </blockquote><p>
7278    
7279     </p>
7280 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
7281     &lt;midi_bank&gt; is an integer value between
7282     0..16383 reflecting the MIDI bank select index,
7283     &lt;midi_prog&gt; an
7284 schoenebeck 945 integer value between 0..127 reflecting the MIDI program change
7285     index, &lt;engine_name&gt; a sampler engine name as returned by
7286 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>
7287 schoenebeck 945 command (not encapsulated into apostrophes), &lt;filename&gt; the name
7288 schoenebeck 1251 of the instrument's file to be deployed (encapsulated into apostrophes,
7289     supporting escape sequences as described in chapter
7290     "<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>"),
7291 schoenebeck 974 &lt;instrument_index&gt; the index (integer value) of the instrument
7292 schoenebeck 945 within the given file, &lt;volume_value&gt; reflects the master
7293     volume of the instrument as optionally dotted number (where a
7294 schoenebeck 1028 value &lt; 1.0 means attenuation and a value > 1.0 means
7295 schoenebeck 945 amplification). This parameter easily allows to adjust the
7296     volume of all intruments within a custom instrument map
7297     without having to adjust their instrument files. The
7298     OPTIONAL &lt;instr_load_mode&gt; argument defines the life
7299     time of the instrument, that is when the instrument should
7300     be loaded, when freed and has exactly the following
7301     possibilities:
7302     </p>
7303     <p>
7304     </p>
7305     <blockquote class="text">
7306     <p>"ON_DEMAND" -
7307     </p>
7308     <blockquote class="text">
7309     <p>The instrument will be loaded when needed,
7310     that is when demanded by at least one sampler
7311     channel. It will immediately be freed from memory
7312     when not needed by any sampler channel anymore.
7313     </p>
7314     </blockquote>
7315    
7316    
7317     <p>"ON_DEMAND_HOLD" -
7318     </p>
7319     <blockquote class="text">
7320     <p>The instrument will be loaded when needed,
7321     that is when demanded by at least one sampler
7322     channel. It will be kept in memory even when
7323     not needed by any sampler channel anymore.
7324     Instruments with this mode are only freed
7325     when the sampler is reset or all mapping
7326     entries with this mode (and respective
7327     instrument) are explicitly changed to
7328     "ON_DEMAND" and no sampler channel is using
7329     the instrument anymore.
7330     </p>
7331     </blockquote>
7332    
7333    
7334     <p>"PERSISTENT" -
7335     </p>
7336     <blockquote class="text">
7337     <p>The instrument will immediately be loaded
7338 schoenebeck 1048 into memory when this mapping
7339 schoenebeck 945 command is sent and the instrument is kept all
7340     the time. Instruments with this mode are
7341     only freed when the sampler is reset or all
7342     mapping entries with this mode (and
7343     respective instrument) are explicitly
7344     changed to "ON_DEMAND" and no sampler
7345     channel is using the instrument anymore.
7346     </p>
7347     </blockquote>
7348    
7349    
7350     <p>not supplied -
7351     </p>
7352     <blockquote class="text">
7353     <p>In case there is no &lt;instr_load_mode&gt;
7354     argument given, it will be up to the
7355     InstrumentManager to decide which mode to use.
7356     Usually it will use "ON_DEMAND" if an entry
7357     for the given instrument does not exist in
7358     the InstrumentManager's list yet, otherwise
7359     if an entry already exists, it will simply
7360     stick with the mode currently reflected by
7361     the already existing entry, that is it will
7362     not change the mode.
7363     </p>
7364     </blockquote>
7365    
7366    
7367     </blockquote><p>
7368    
7369     </p>
7370     <p>
7371     The &lt;instr_load_mode&gt; argument thus allows to define an
7372     appropriate strategy (low memory consumption vs. fast
7373     instrument switching) for each instrument individually. Note, the
7374     following restrictions apply to this argument: "ON_DEMAND_HOLD" and
7375     "PERSISTENT" have to be supported by the respective sampler engine
7376     (which is technically the case when the engine provides an
7377     InstrumentManager for its format). If this is not the case the
7378     argument will automatically fall back to the default value
7379     "ON_DEMAND". Also the load mode of one instrument may
7380     automatically change the laod mode of other instrument(s), i.e.
7381     because the instruments are part of the same file and the
7382     engine does not allow a way to manage load modes for them
7383     individually. Due to this, in case the frontend shows the
7384     load modes of entries, the frontend should retrieve the actual
7385     mode by i.e. sending
7386 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>
7387 schoenebeck 1390 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
7388     (encapsulated into apostrophes, supporting escape sequences as described in chapter
7389     "<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
7390     mapping entry, useful for frontends for displaying an appropriate name for
7391 schoenebeck 945 mapped instruments (using
7392 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>).
7393 schoenebeck 945
7394     </p>
7395     <p>
7396 schoenebeck 1048 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
7397     completely established in the sampler. The OPTIONAL "NON_MODAL" argument
7398     however causes the respective "MAP MIDI_INSTRUMENT" command to return
7399     immediately, that is to let the sampler establish the mapping in the
7400     background. So this argument might be especially useful for mappings with
7401     a "PERSISTENT" type, because these have to load the respective instruments
7402     immediately and might thus block for a very long time. It is recommended
7403     however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
7404     because it has the following drawbacks: as "NON_MODAL" instructions return
7405     immediately, they may not necessarily return an error i.e. when the given
7406     instrument file turns out to be corrupt, beside that subsequent commands
7407     in a LSCP instruction sequence might fail, because mandatory mappings are
7408     not yet completed.
7409 schoenebeck 945
7410     </p>
7411     <p>Possible Answers:
7412     </p>
7413     <p>
7414     </p>
7415     <blockquote class="text">
7416     <p>"OK" -
7417     </p>
7418     <blockquote class="text">
7419     <p>usually
7420     </p>
7421     </blockquote>
7422    
7423    
7424     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7425     </p>
7426     <blockquote class="text">
7427 schoenebeck 974 <p>when the given map or engine does not exist or a value
7428 schoenebeck 945 is out of range
7429     </p>
7430     </blockquote>
7431    
7432    
7433     </blockquote><p>
7434    
7435     </p>
7436     <p>Examples:
7437     </p>
7438     <p>
7439     </p>
7440     <blockquote class="text">
7441 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7442 schoenebeck 945 </p>
7443     <p>S: "OK"
7444     </p>
7445     </blockquote><p>
7446    
7447     </p>
7448     <p>
7449     </p>
7450     <blockquote class="text">
7451 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7452 schoenebeck 945 </p>
7453     <p>S: "OK"
7454     </p>
7455     </blockquote><p>
7456    
7457     </p>
7458     <p>
7459     </p>
7460     <blockquote class="text">
7461     <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7462     </p>
7463     <p>S: "OK"
7464     </p>
7465 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7466 schoenebeck 945 </p>
7467     <p>S: "OK"
7468     </p>
7469     </blockquote><p>
7470    
7471     </p>
7472     <p>
7473     </p>
7474     <blockquote class="text">
7475 schoenebeck 1048 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7476 schoenebeck 945 </p>
7477     <p>S: "OK"
7478     </p>
7479     </blockquote><p>
7480    
7481     </p>
7482     <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7483 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7484     <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7485     Getting ammount of MIDI instrument map entries</h3>
7486 schoenebeck 945
7487 schoenebeck 974 <p>The front-end can query the amount of currently existing
7488     entries in a MIDI instrument map by sending the following
7489 schoenebeck 945 command:
7490     </p>
7491     <p>
7492     </p>
7493     <blockquote class="text">
7494 schoenebeck 974 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7495 schoenebeck 945 </p>
7496     </blockquote><p>
7497    
7498     </p>
7499 schoenebeck 974 <p>The front-end can query the amount of currently existing
7500     entries in all MIDI instrument maps by sending the following
7501     command:
7502     </p>
7503     <p>
7504     </p>
7505     <blockquote class="text">
7506     <p>GET MIDI_INSTRUMENTS ALL
7507     </p>
7508     </blockquote><p>
7509    
7510     </p>
7511 schoenebeck 945 <p>Possible Answers:
7512     </p>
7513     <p>
7514     </p>
7515     <blockquote class="text">
7516 schoenebeck 974 <p>The sampler will answer by sending the current number of
7517     entries in the MIDI instrument map(s).
7518 schoenebeck 945 </p>
7519     </blockquote><p>
7520    
7521     </p>
7522     <p>Example:
7523     </p>
7524     <p>
7525     </p>
7526     <blockquote class="text">
7527 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENTS 0"
7528 schoenebeck 945 </p>
7529 schoenebeck 974 <p>S: "234"
7530 schoenebeck 945 </p>
7531     </blockquote><p>
7532    
7533     </p>
7534 schoenebeck 974 <p>
7535     </p>
7536     <blockquote class="text">
7537     <p>C: "GET MIDI_INSTRUMENTS ALL"
7538     </p>
7539     <p>S: "954"
7540     </p>
7541     </blockquote><p>
7542    
7543     </p>
7544 schoenebeck 945 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7545 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7546     <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7547     Getting indeces of all entries of a MIDI instrument map</h3>
7548 schoenebeck 945
7549 schoenebeck 974 <p>The front-end can query a list of all currently existing
7550     entries in a certain MIDI instrument map by sending the following
7551     command:
7552 schoenebeck 945 </p>
7553     <p>
7554     </p>
7555     <blockquote class="text">
7556 schoenebeck 974 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7557 schoenebeck 945 </p>
7558     </blockquote><p>
7559    
7560     </p>
7561 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7562     </p>
7563     <p>The front-end can query a list of all currently existing
7564     entries of all MIDI instrument maps by sending the following
7565     command:
7566     </p>
7567     <p>
7568     </p>
7569     <blockquote class="text">
7570     <p>LIST MIDI_INSTRUMENTS ALL
7571     </p>
7572     </blockquote><p>
7573    
7574     </p>
7575 schoenebeck 945 <p>Possible Answers:
7576     </p>
7577     <p>
7578     </p>
7579     <blockquote class="text">
7580 schoenebeck 974 <p>The sampler will answer by sending a comma separated
7581     list of map ID - MIDI bank - MIDI program triples, where
7582     each triple is encapsulated into curly braces. The
7583     list is returned in one single line. Each triple
7584     just reflects the key of the respective map entry,
7585     thus subsequent
7586     <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>
7587 schoenebeck 945 command(s) are necessary to retrieve detailed informations
7588     about each entry.
7589     </p>
7590     </blockquote><p>
7591    
7592     </p>
7593     <p>Example:
7594     </p>
7595     <p>
7596     </p>
7597     <blockquote class="text">
7598 schoenebeck 974 <p>C: "LIST MIDI_INSTRUMENTS 0"
7599 schoenebeck 945 </p>
7600 schoenebeck 974 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7601 schoenebeck 945 </p>
7602     </blockquote><p>
7603    
7604     </p>
7605     <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7606 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7607     <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7608     Remove an entry from the MIDI instrument map</h3>
7609 schoenebeck 945
7610 schoenebeck 974 <p>The front-end can delete an entry from a MIDI instrument
7611 schoenebeck 945 map by sending the following command:
7612     </p>
7613     <p>
7614     </p>
7615     <blockquote class="text">
7616 schoenebeck 974 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7617 schoenebeck 945 </p>
7618     </blockquote><p>
7619    
7620     </p>
7621     <p>
7622 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7623     &lt;midi_bank&gt; is an integer value between 0..16383
7624     reflecting the MIDI bank value and
7625     &lt;midi_prog&gt; an integer value between
7626     0..127 reflecting the MIDI program value of the map's entrie's key
7627 schoenebeck 945 index triple.
7628    
7629     </p>
7630     <p>Possible Answers:
7631     </p>
7632     <p>
7633     </p>
7634     <blockquote class="text">
7635     <p>"OK" -
7636     </p>
7637     <blockquote class="text">
7638     <p>usually
7639     </p>
7640     </blockquote>
7641    
7642    
7643     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7644     </p>
7645     <blockquote class="text">
7646     <p>when index out of bounds
7647     </p>
7648     </blockquote>
7649    
7650    
7651     </blockquote><p>
7652    
7653     </p>
7654     <p>Example:
7655     </p>
7656     <p>
7657     </p>
7658     <blockquote class="text">
7659 schoenebeck 974 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7660 schoenebeck 945 </p>
7661     <p>S: "OK"
7662     </p>
7663     </blockquote><p>
7664    
7665     </p>
7666     <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7667 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7668     <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7669     Get current settings of MIDI instrument map entry</h3>
7670 schoenebeck 945
7671     <p>The front-end can retrieve the current settings of a certain
7672     instrument map entry by sending the following command:
7673     </p>
7674     <p>
7675     </p>
7676     <blockquote class="text">
7677 schoenebeck 974 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7678 schoenebeck 945 </p>
7679     </blockquote><p>
7680    
7681     </p>
7682     <p>
7683 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7684     &lt;midi_bank&gt; is an integer value between 0..16383
7685     reflecting the MIDI bank value, &lt;midi_bank&gt;
7686     and &lt;midi_prog&gt; an integer value between
7687     0..127 reflecting the MIDI program value of the map's entrie's key
7688 schoenebeck 945 index triple.
7689    
7690     </p>
7691     <p>Possible Answers:
7692     </p>
7693     <p>
7694     </p>
7695     <blockquote class="text">
7696     <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7697     separated list. Each answer line begins with the
7698     information category name followed by a colon and then
7699     a space character &lt;SP&gt; and finally the info
7700     character string to that info category. At the moment
7701     the following categories are defined:
7702     </p>
7703     <p>"NAME" -
7704     </p>
7705     <blockquote class="text">
7706     <p>Name for this MIDI instrument map entry (if defined).
7707     This name shall be used by frontends for displaying a
7708     name for this mapped instrument. It can be set and
7709     changed with the
7710 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>
7711 schoenebeck 945 command and does not have to be unique.
7712 schoenebeck 1400 (note that this character string may contain
7713     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7714 schoenebeck 945 </p>
7715     </blockquote>
7716    
7717    
7718     <p>"ENGINE_NAME" -
7719     </p>
7720     <blockquote class="text">
7721     <p>Name of the engine to be deployed for this
7722     instrument.
7723     </p>
7724     </blockquote>
7725    
7726    
7727     <p>"INSTRUMENT_FILE" -
7728     </p>
7729     <blockquote class="text">
7730 schoenebeck 1400 <p>File name of the instrument
7731     (note that this path may contain
7732     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7733 schoenebeck 945 </p>
7734     </blockquote>
7735    
7736    
7737     <p>"INSTRUMENT_NR" -
7738     </p>
7739     <blockquote class="text">
7740     <p>Index of the instrument within the file.
7741     </p>
7742     </blockquote>
7743    
7744    
7745     <p>"INSTRUMENT_NAME" -
7746     </p>
7747     <blockquote class="text">
7748     <p>Name of the loaded instrument as reflected by its file.
7749     In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7750 schoenebeck 1400 cannot be changed (note that this character string may contain
7751     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7752 schoenebeck 945 </p>
7753     </blockquote>
7754    
7755    
7756     <p>"LOAD_MODE" -
7757     </p>
7758     <blockquote class="text">
7759     <p>Life time of instrument
7760 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).
7761 schoenebeck 945 </p>
7762     </blockquote>
7763    
7764    
7765     <p>"VOLUME" -
7766     </p>
7767     <blockquote class="text">
7768     <p>master volume of the instrument as optionally
7769 schoenebeck 1028 dotted number (where a value &lt; 1.0 means attenuation
7770 schoenebeck 945 and a value > 1.0 means amplification)
7771     </p>
7772     </blockquote>
7773    
7774    
7775     <p>The mentioned fields above don't have to be in particular order.
7776     </p>
7777     </blockquote><p>
7778    
7779     </p>
7780     <p>Example:
7781     </p>
7782     <p>
7783     </p>
7784     <blockquote class="text">
7785 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7786 schoenebeck 945 </p>
7787     <p>S: "NAME: Drums for Foo Song"
7788     </p>
7789     <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7790     </p>
7791     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7792     </p>
7793     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7794     </p>
7795     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7796     </p>
7797     <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7798     </p>
7799     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7800     </p>
7801     <p>&nbsp;&nbsp;&nbsp;"."
7802     </p>
7803     </blockquote><p>
7804    
7805     </p>
7806     <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7807 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7808     <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7809     Clear MIDI instrument map</h3>
7810 schoenebeck 945
7811 schoenebeck 974 <p>The front-end can clear a whole MIDI instrument map, that
7812     is delete all its entries by sending the following command:
7813 schoenebeck 945 </p>
7814     <p>
7815     </p>
7816     <blockquote class="text">
7817 schoenebeck 974 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7818 schoenebeck 945 </p>
7819     </blockquote><p>
7820    
7821     </p>
7822 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7823     </p>
7824     <p>The front-end can clear all MIDI instrument maps, that
7825     is delete all entries of all maps by sending the following
7826     command:
7827     </p>
7828     <p>
7829     </p>
7830     <blockquote class="text">
7831     <p>CLEAR MIDI_INSTRUMENTS ALL
7832     </p>
7833     </blockquote><p>
7834    
7835     </p>
7836     <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7837     maps, only their entries, thus the map's settings like
7838     custom name will be preservevd.
7839     </p>
7840 schoenebeck 945 <p>Possible Answers:
7841     </p>
7842     <p>
7843     </p>
7844     <blockquote class="text">
7845     <p>"OK" -
7846     </p>
7847     <blockquote class="text">
7848     <p>always
7849     </p>
7850     </blockquote>
7851    
7852    
7853     </blockquote><p>
7854    
7855     </p>
7856 schoenebeck 974 <p>Examples:
7857 schoenebeck 945 </p>
7858     <p>
7859     </p>
7860     <blockquote class="text">
7861 schoenebeck 974 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7862 schoenebeck 945 </p>
7863     <p>S: "OK"
7864     </p>
7865     </blockquote><p>
7866    
7867     </p>
7868 schoenebeck 974 <p>
7869     </p>
7870     <blockquote class="text">
7871     <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7872     </p>
7873     <p>S: "OK"
7874     </p>
7875     </blockquote><p>
7876    
7877     </p>
7878 iliev 1162 <a name="Managing Instruments Database"></a><br /><hr />
7879     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7880     <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7881     Managing Instruments Database</h3>
7882    
7883     <p>The following commands describe how to use and manage
7884     the instruments database.
7885     </p>
7886 schoenebeck 1363 <p>Notice:
7887     </p>
7888     <p>
7889     </p>
7890     <blockquote class="text">
7891     <p>All command arguments representing a path or
7892     instrument/directory name support escape sequences as described in chapter
7893     "<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>".
7894    
7895     </p>
7896     <p>All occurrences of a forward slash in instrument and directory
7897     names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7898    
7899     </p>
7900     </blockquote><p>
7901    
7902     </p>
7903 iliev 1162 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7904     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7905     <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7906     Creating a new instrument directory</h3>
7907    
7908     <p>The front-end can add a new instrument directory to the
7909     instruments database by sending the following command:
7910     </p>
7911     <p>
7912     </p>
7913     <blockquote class="text">
7914     <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7915     </p>
7916     </blockquote><p>
7917    
7918     </p>
7919     <p>Where &lt;dir&gt; is the absolute path name of the directory
7920     to be created (encapsulated into apostrophes).
7921     </p>
7922     <p>Possible Answers:
7923     </p>
7924     <p>
7925     </p>
7926     <blockquote class="text">
7927     <p>"OK" -
7928     </p>
7929     <blockquote class="text">
7930     <p>on success
7931     </p>
7932     </blockquote>
7933    
7934    
7935     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7936     </p>
7937     <blockquote class="text">
7938     <p>when the directory could not be created, which
7939     can happen if the directory already exists or the
7940     name contains not allowed symbols
7941     </p>
7942     </blockquote>
7943    
7944    
7945     </blockquote><p>
7946    
7947     </p>
7948     <p>Examples:
7949     </p>
7950     <p>
7951     </p>
7952     <blockquote class="text">
7953     <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7954     </p>
7955     <p>S: "OK"
7956     </p>
7957     </blockquote><p>
7958    
7959     </p>
7960     <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7961     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7962     <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7963     Deleting an instrument directory</h3>
7964    
7965     <p>The front-end can delete a particular instrument directory
7966     from the instruments database by sending the following command:
7967     </p>
7968     <p>
7969     </p>
7970     <blockquote class="text">
7971     <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7972     </p>
7973     </blockquote><p>
7974    
7975     </p>
7976     <p>Where &lt;dir&gt; is the absolute path name of the directory
7977     to delete. The optional FORCE argument can be used to
7978     force the deletion of a non-empty directory and all its content.
7979     </p>
7980     <p>Possible Answers:
7981     </p>
7982     <p>
7983     </p>
7984     <blockquote class="text">
7985     <p>"OK" -
7986     </p>
7987     <blockquote class="text">
7988     <p>if the directory is deleted successfully
7989     </p>
7990     </blockquote>
7991    
7992    
7993     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7994     </p>
7995     <blockquote class="text">
7996     <p>if the given directory does not exist, or
7997     if trying to delete a non-empty directory,
7998     without using the FORCE argument.
7999     </p>
8000     </blockquote>
8001    
8002    
8003     </blockquote><p>
8004    
8005     </p>
8006     <p>Examples:
8007     </p>
8008     <p>
8009     </p>
8010     <blockquote class="text">
8011     <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
8012     </p>
8013     <p>S: "OK"
8014     </p>
8015     </blockquote><p>
8016    
8017     </p>
8018     <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8019     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8020     <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
8021     Getting amount of instrument directories</h3>
8022    
8023     <p>The front-end can retrieve the current amount of
8024     directories in a specific directory by sending the following command:
8025     </p>
8026     <p>
8027     </p>
8028     <blockquote class="text">
8029 iliev 1189 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8030 iliev 1162 </p>
8031     </blockquote><p>
8032    
8033     </p>
8034     <p>Where &lt;dir&gt; should be replaced by the absolute path
8035 iliev 1189 name of the directory. If RECURSIVE is specified, the number of
8036     all directories, including those located in subdirectories of the
8037     specified directory, will be returned.
8038 iliev 1162 </p>
8039     <p>Possible Answers:
8040     </p>
8041     <p>
8042     </p>
8043     <blockquote class="text">
8044     <p>The current number of instrument directories
8045     in the specified directory.
8046     </p>
8047     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8048     </p>
8049     <blockquote class="text">
8050     <p>if the given directory does not exist.
8051     </p>
8052     </blockquote>
8053    
8054    
8055     </blockquote><p>
8056    
8057     </p>
8058     <p>Example:
8059     </p>
8060     <p>
8061     </p>
8062     <blockquote class="text">
8063     <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
8064     </p>
8065     <p>S: "2"
8066     </p>
8067     </blockquote><p>
8068    
8069     </p>
8070     <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8071     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8072     <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
8073     Listing all directories in specific directory</h3>
8074    
8075     <p>The front-end can retrieve the current list of directories
8076     in specific directory by sending the following command:
8077     </p>
8078     <p>
8079     </p>
8080     <blockquote class="text">
8081 iliev 1189 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8082 iliev 1162 </p>
8083     </blockquote><p>
8084    
8085     </p>
8086     <p>Where &lt;dir&gt; should be replaced by the absolute path
8087 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path names
8088     of all directories, including those located in subdirectories of the
8089     specified directory, will be returned.
8090 iliev 1162 </p>
8091     <p>Possible Answers:
8092     </p>
8093     <p>
8094     </p>
8095     <blockquote class="text">
8096     <p>A comma separated list of all instrument directories
8097     (encapsulated into apostrophes) in the specified directory.
8098     </p>
8099     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8100     </p>
8101     <blockquote class="text">
8102     <p>if the given directory does not exist.
8103     </p>
8104     </blockquote>
8105    
8106    
8107     </blockquote><p>
8108    
8109     </p>
8110     <p>Example:
8111     </p>
8112     <p>
8113     </p>
8114     <blockquote class="text">
8115     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
8116     </p>
8117     <p>S: "'Piano Collection','Percussion Collection'"
8118     </p>
8119     </blockquote><p>
8120    
8121     </p>
8122 iliev 1189 <p>
8123     </p>
8124     <blockquote class="text">
8125     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
8126     </p>
8127     <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
8128     </p>
8129     </blockquote><p>
8130    
8131     </p>
8132 iliev 1162 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
8133     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8134     <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
8135     Getting instrument directory information</h3>
8136    
8137     <p>The front-end can ask for the current settings of an
8138     instrument directory by sending the following command:
8139     </p>
8140     <p>
8141     </p>
8142     <blockquote class="text">
8143     <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
8144     </p>
8145     </blockquote><p>
8146    
8147     </p>
8148     <p>Where &lt;dir&gt; should be replaced by the absolute path
8149     name of the directory the front-end is interested in.
8150     </p>
8151     <p>Possible Answers:
8152     </p>
8153     <p>
8154     </p>
8155     <blockquote class="text">
8156     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8157     Each answer line begins with the settings category name
8158     followed by a colon and then a space character &lt;SP&gt; and finally
8159     the info character string to that setting category. At the
8160     moment the following categories are defined:
8161     </p>
8162     <p>
8163     </p>
8164     <blockquote class="text">
8165     <p>DESCRIPTION -
8166     </p>
8167     <blockquote class="text">
8168 schoenebeck 1363 <p>A brief description of the directory content.
8169     Note that the character string may contain
8170     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8171 iliev 1162 </p>
8172     </blockquote>
8173    
8174    
8175     <p>CREATED -
8176     </p>
8177     <blockquote class="text">
8178     <p>The creation date and time of the directory,
8179     represented in "YYYY-MM-DD HH:MM:SS" format
8180     </p>
8181     </blockquote>
8182    
8183    
8184     <p>MODIFIED -
8185     </p>
8186     <blockquote class="text">
8187     <p>The date and time of the last modification of the
8188     directory, represented in "YYYY-MM-DD HH:MM:SS" format
8189     </p>
8190     </blockquote>
8191    
8192    
8193     </blockquote>
8194    
8195    
8196     </blockquote><p>
8197    
8198     </p>
8199     <p>The mentioned fields above don't have to be in particular order.
8200     </p>
8201     <p>Example:
8202     </p>
8203     <p>
8204     </p>
8205     <blockquote class="text">
8206     <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
8207     </p>
8208     <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
8209     </p>
8210     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8211     </p>
8212     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8213     </p>
8214     <p>&nbsp;&nbsp;&nbsp;"."
8215     </p>
8216     </blockquote><p>
8217    
8218     </p>
8219     <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
8220     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8221     <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
8222     Renaming an instrument directory</h3>
8223    
8224     <p>The front-end can alter the name of a specific
8225     instrument directory by sending the following command:
8226     </p>
8227     <p>
8228     </p>
8229     <blockquote class="text">
8230     <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
8231     </p>
8232     </blockquote><p>
8233    
8234     </p>
8235     <p>Where &lt;dir&gt; is the absolute path name of the directory and
8236     &lt;name&gt; is the new name for that directory.
8237     </p>
8238     <p>Possible Answers:
8239     </p>
8240     <p>
8241     </p>
8242     <blockquote class="text">
8243     <p>"OK" -
8244     </p>
8245     <blockquote class="text">
8246     <p>on success
8247     </p>
8248     </blockquote>
8249    
8250    
8251     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8252     </p>
8253     <blockquote class="text">
8254     <p>in case the given directory does not exists,
8255     or if a directory with name equal to the new
8256     name already exists.
8257     </p>
8258     </blockquote>
8259    
8260    
8261     </blockquote><p>
8262    
8263     </p>
8264     <p>Example:
8265     </p>
8266     <p>
8267     </p>
8268     <blockquote class="text">
8269     <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
8270     </p>
8271     <p>S: "OK"
8272     </p>
8273     </blockquote><p>
8274    
8275     </p>
8276     <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8277     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8278     <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
8279     Moving an instrument directory</h3>
8280    
8281     <p>The front-end can move a specific
8282     instrument directory by sending the following command:
8283     </p>
8284     <p>
8285     </p>
8286     <blockquote class="text">
8287     <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8288     </p>
8289     </blockquote><p>
8290    
8291     </p>
8292     <p>Where &lt;dir&gt; is the absolute path name of the directory
8293     to move and &lt;dst&gt; is the location where the directory will
8294     be moved to.
8295     </p>
8296     <p>Possible Answers:
8297     </p>
8298     <p>
8299     </p>
8300     <blockquote class="text">
8301     <p>"OK" -
8302     </p>
8303     <blockquote class="text">
8304     <p>on success
8305     </p>
8306     </blockquote>
8307    
8308    
8309     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8310     </p>
8311     <blockquote class="text">
8312     <p>in case a given directory does not exists,
8313     or if a directory with name equal to the name
8314     of the specified directory already exists in
8315     the destination directory. Error is also thrown
8316     when trying to move a directory to a subdirectory
8317     of itself.
8318     </p>
8319     </blockquote>
8320    
8321    
8322     </blockquote><p>
8323    
8324     </p>
8325     <p>Example:
8326     </p>
8327     <p>
8328     </p>
8329     <blockquote class="text">
8330     <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
8331     </p>
8332     <p>S: "OK"
8333     </p>
8334     </blockquote><p>
8335    
8336     </p>
8337 iliev 1189 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8338     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8339     <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
8340     Copying instrument directories</h3>
8341    
8342     <p>The front-end can copy a specific
8343     instrument directory by sending the following command:
8344     </p>
8345     <p>
8346     </p>
8347     <blockquote class="text">
8348     <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8349     </p>
8350     </blockquote><p>
8351    
8352     </p>
8353     <p>Where &lt;dir&gt; is the absolute path name of the directory
8354     to copy and &lt;dst&gt; is the location where the directory will
8355     be copied to.
8356     </p>
8357     <p>Possible Answers:
8358     </p>
8359     <p>
8360     </p>
8361     <blockquote class="text">
8362     <p>"OK" -
8363     </p>
8364     <blockquote class="text">
8365     <p>on success
8366     </p>
8367     </blockquote>
8368    
8369    
8370     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8371     </p>
8372     <blockquote class="text">
8373     <p>in case a given directory does not exists,
8374     or if a directory with name equal to the name
8375     of the specified directory already exists in
8376     the destination directory. Error is also thrown
8377     when trying to copy a directory to a subdirectory
8378     of itself.
8379     </p>
8380     </blockquote>
8381    
8382    
8383     </blockquote><p>
8384    
8385     </p>
8386     <p>Example:
8387     </p>
8388     <p>
8389     </p>
8390     <blockquote class="text">
8391     <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
8392     </p>
8393     <p>S: "OK"
8394     </p>
8395     </blockquote><p>
8396    
8397     </p>
8398 iliev 1162 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
8399     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8400 iliev 1189 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
8401 iliev 1162 Changing the description of directory</h3>
8402    
8403     <p>The front-end can alter the description of a specific
8404     instrument directory by sending the following command:
8405     </p>
8406     <p>
8407     </p>
8408     <blockquote class="text">
8409     <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
8410     </p>
8411     </blockquote><p>
8412    
8413     </p>
8414     <p>Where &lt;dir&gt; is the absolute path name of the directory and
8415 schoenebeck 1363 &lt;desc&gt; is the new description for the directory
8416     (encapsulated into apostrophes, supporting escape sequences as described in chapter
8417     "<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>").
8418 iliev 1162 </p>
8419     <p>Possible Answers:
8420     </p>
8421     <p>
8422     </p>
8423     <blockquote class="text">
8424     <p>"OK" -
8425     </p>
8426     <blockquote class="text">
8427     <p>on success
8428     </p>
8429     </blockquote>
8430    
8431    
8432     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8433     </p>
8434     <blockquote class="text">
8435     <p>in case the given directory does not exists.
8436     </p>
8437     </blockquote>
8438    
8439    
8440     </blockquote><p>
8441    
8442     </p>
8443     <p>Example:
8444     </p>
8445     <p>
8446     </p>
8447     <blockquote class="text">
8448     <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8449     </p>
8450     <p>S: "OK"
8451     </p>
8452     </blockquote><p>
8453    
8454     </p>
8455 iliev 1189 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8456     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8457     <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8458     Finding directories</h3>
8459    
8460     <p>The front-end can search for directories
8461     in specific directory by sending the following command:
8462     </p>
8463     <p>
8464     </p>
8465     <blockquote class="text">
8466     <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8467     </p>
8468     </blockquote><p>
8469    
8470     </p>
8471     <p>Where &lt;dir&gt; should be replaced by the absolute path
8472     name of the directory to search in. If NON_RECURSIVE is specified, the
8473     directories located in subdirectories of the specified directory will not
8474     be searched. &lt;criteria-list&gt; is a list of search criterias
8475     in form of "key1=val1 key2=val2 ...". The following criterias are
8476     allowed:
8477     </p>
8478     <p>
8479    
8480     <p>NAME='&lt;search-string&gt;'
8481     </p>
8482     <blockquote class="text">
8483     <p>Restricts the search to directories, which names
8484 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
8485     supporting escape sequences as described in chapter
8486     "<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>").
8487 iliev 1189 </p>
8488     </blockquote><p>
8489    
8490     </p>
8491    
8492    
8493     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8494     </p>
8495     <blockquote class="text">
8496     <p>Restricts the search to directories, which creation
8497     date satisfies the specified period, where &lt;date-after&gt;
8498     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8499     If &lt;date-after&gt; is omitted the search is restricted to
8500     directories created before &lt;date-before&gt;. If
8501     &lt;date-before&gt; is omitted, the search is restricted
8502     to directories created after &lt;date-after&gt;.
8503     </p>
8504     </blockquote><p>
8505    
8506     </p>
8507    
8508    
8509     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8510     </p>
8511     <blockquote class="text">
8512     <p>Restricts the search to directories, which
8513     date of last modification satisfies the specified period, where
8514     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8515     format. If &lt;date-after&gt; is omitted the search is restricted to
8516     directories, which are last modified before &lt;date-before&gt;. If
8517     &lt;date-before&gt; is omitted, the search is restricted to directories,
8518     which are last modified after &lt;date-after&gt;.
8519     </p>
8520     </blockquote><p>
8521    
8522     </p>
8523    
8524    
8525     <p>DESCRIPTION='&lt;search-string&gt;'
8526     </p>
8527     <blockquote class="text">
8528     <p>Restricts the search to directories with description
8529 schoenebeck 1363 that satisfies the supplied search string
8530     (encapsulated into apostrophes, supporting escape
8531     sequences as described in chapter
8532     "<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>").
8533 iliev 1189 </p>
8534     </blockquote><p>
8535    
8536     </p>
8537    
8538    
8539     <p>Where &lt;search-string&gt; is either a regular expression, or a
8540     word list separated with spaces for OR search and with '+' for AND search.
8541     </p>
8542     <p>Possible Answers:
8543     </p>
8544     <p>
8545     </p>
8546     <blockquote class="text">
8547     <p>A comma separated list with the absolute path names (encapsulated into
8548     apostrophes) of all directories in the specified directory that satisfy
8549     the supplied search criterias.
8550     </p>
8551     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8552     </p>
8553     <blockquote class="text">
8554     <p>if the given directory does not exist.
8555     </p>
8556     </blockquote>
8557    
8558    
8559     </blockquote><p>
8560    
8561     </p>
8562     <p>Example:
8563     </p>
8564     <p>
8565     </p>
8566     <blockquote class="text">
8567     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8568     </p>
8569     <p>S: "'/Piano Collection'"
8570     </p>
8571     </blockquote><p>
8572    
8573     </p>
8574     <p>
8575     </p>
8576     <blockquote class="text">
8577     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8578     </p>
8579     <p>S: "'/Piano Collection','/Percussions'"
8580     </p>
8581     </blockquote><p>
8582    
8583     </p>
8584 iliev 1162 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8585     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8586 iliev 1189 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8587 iliev 1162 Adding instruments to the instruments database</h3>
8588    
8589     <p>The front-end can add one or more instruments
8590     to the instruments database by sending the following command:
8591     </p>
8592     <p>
8593     </p>
8594     <blockquote class="text">
8595 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;]
8596 iliev 1162 </p>
8597     </blockquote><p>
8598    
8599     </p>
8600     <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8601     (encapsulated into apostrophes) in the instruments database in which
8602     only the new instruments (that are not already in the database) will
8603     be added, &lt;file_path&gt; is the absolute path name of a file or
8604     directory in the file system (encapsulated into apostrophes). In case
8605     an instrument file is supplied, only the instruments in the specified
8606     file will be added to the instruments database. If the optional
8607     &lt;instr_index&gt; (the index of the instrument within the given file)
8608     is supplied too, then only the specified instrument will be added.
8609     In case a directory is supplied, the instruments in that directory
8610     will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8611     when a directory is provided as &lt;file_path&gt; and specifies how the
8612     scanning will be done and has exactly the following possibilities:
8613     </p>
8614     <p>
8615     </p>
8616     <blockquote class="text">
8617 iliev 1201 <p>"RECURSIVE" -
8618     </p>
8619     <blockquote class="text">
8620     <p>All instruments will be processed, including those
8621     in the subdirectories, and the respective subdirectory
8622     tree structure will be recreated in the instruments
8623     database
8624     </p>
8625     </blockquote>
8626    
8627    
8628 iliev 1162 <p>"NON_RECURSIVE" -
8629     </p>
8630     <blockquote class="text">
8631     <p>Only the instruments in the specified directory
8632     will be added, the instruments in the subdirectories
8633     will not be processed.
8634     </p>
8635     </blockquote>
8636    
8637    
8638     <p>"FLAT" -
8639     </p>
8640     <blockquote class="text">
8641     <p>All instruments will be processed, including those
8642     in the subdirectories, but the respective subdirectory
8643     structure will not be recreated in the instruments
8644     database. All instruments will be added directly in
8645     the specified database directory.
8646     </p>
8647     </blockquote>
8648    
8649    
8650     </blockquote><p>
8651    
8652     </p>
8653 schoenebeck 1801 <p> If FILE_AS_DIR argument is supplied, all instruments in an instrument
8654     file will be added to a separate directory in the instruments database, which
8655     name will be the name of the instrument file with the file extension stripped off.
8656    
8657     </p>
8658 iliev 1201 <p>The difference between regular and NON_MODAL versions of the command
8659     is that the regular command returns when the scanning is finished
8660     while NON_MODAL version returns immediately and a background process is launched.
8661     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>
8662     command can be used to monitor the scanning progress.
8663     </p>
8664 iliev 1162 <p>Possible Answers:
8665     </p>
8666     <p>
8667     </p>
8668     <blockquote class="text">
8669     <p>"OK" -
8670     </p>
8671     <blockquote class="text">
8672 iliev 1201 <p>on success when NON_MODAL is not supplied
8673 iliev 1162 </p>
8674     </blockquote>
8675    
8676    
8677 iliev 1201 <p>"OK[&lt;job-id&gt;]" -
8678     </p>
8679     <blockquote class="text">
8680     <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8681     is a numerical ID used to obtain status information about the job progress.
8682     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>
8683    
8684     </p>
8685     </blockquote>
8686    
8687    
8688 iliev 1162 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8689     </p>
8690     <blockquote class="text">
8691     <p>if an invalid path is specified.
8692     </p>
8693     </blockquote>
8694    
8695    
8696     </blockquote><p>
8697    
8698     </p>
8699     <p>Examples:
8700     </p>
8701     <p>
8702     </p>
8703     <blockquote class="text">
8704     <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8705     </p>
8706     <p>S: "OK"
8707     </p>
8708     </blockquote><p>
8709    
8710     </p>
8711     <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8712     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8713 iliev 1189 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8714 iliev 1162 Removing an instrument</h3>
8715    
8716     <p>The front-end can remove a particular instrument
8717     from the instruments database by sending the following command:
8718     </p>
8719     <p>
8720     </p>
8721     <blockquote class="text">
8722     <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8723     </p>
8724     </blockquote><p>
8725    
8726     </p>
8727     <p>Where &lt;instr_path&gt; is the absolute path name
8728     (in the instruments database) of the instrument to remove.
8729     </p>
8730     <p>Possible Answers:
8731     </p>
8732     <p>
8733     </p>
8734     <blockquote class="text">
8735     <p>"OK" -
8736     </p>
8737     <blockquote class="text">
8738     <p>if the instrument is removed successfully
8739     </p>
8740     </blockquote>
8741    
8742    
8743     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8744     </p>
8745     <blockquote class="text">
8746     <p>if the given path does not exist or
8747     is a directory.
8748     </p>
8749     </blockquote>
8750    
8751    
8752     </blockquote><p>
8753    
8754     </p>
8755     <p>Examples:
8756     </p>
8757     <p>
8758     </p>
8759     <blockquote class="text">
8760     <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8761     </p>
8762     <p>S: "OK"
8763     </p>
8764     </blockquote><p>
8765    
8766     </p>
8767     <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8768     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8769 iliev 1189 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8770 iliev 1162 Getting amount of instruments</h3>
8771    
8772     <p>The front-end can retrieve the current amount of
8773     instruments in a specific directory by sending the following command:
8774     </p>
8775     <p>
8776     </p>
8777     <blockquote class="text">
8778 iliev 1189 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8779 iliev 1162 </p>
8780     </blockquote><p>
8781    
8782     </p>
8783     <p>Where &lt;dir&gt; should be replaced by the absolute path name
8784 iliev 1189 of the directory. If RECURSIVE is specified, the number of all
8785     instruments, including those located in subdirectories of the
8786     specified directory, will be returned.
8787 iliev 1162 </p>
8788     <p>Possible Answers:
8789     </p>
8790     <p>
8791     </p>
8792     <blockquote class="text">
8793     <p>The current number of instruments
8794     in the specified directory.
8795     </p>
8796     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8797     </p>
8798     <blockquote class="text">
8799     <p>if the given directory does not exist.
8800     </p>
8801     </blockquote>
8802    
8803    
8804     </blockquote><p>
8805    
8806     </p>
8807     <p>Example:
8808     </p>
8809     <p>
8810     </p>
8811     <blockquote class="text">
8812     <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8813     </p>
8814     <p>S: "2"
8815     </p>
8816     </blockquote><p>
8817    
8818     </p>
8819     <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8820     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8821 iliev 1189 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8822 iliev 1162 Listing all instruments in specific directory</h3>
8823    
8824     <p>The front-end can retrieve the current list of instruments
8825     in specific directory by sending the following command:
8826     </p>
8827     <p>
8828     </p>
8829     <blockquote class="text">
8830 iliev 1189 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8831 iliev 1162 </p>
8832     </blockquote><p>
8833    
8834     </p>
8835     <p>Where &lt;dir&gt; should be replaced by the absolute path
8836 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path
8837     names of all instruments, including those located in subdirectories
8838     of the specified directory, will be returned.
8839 iliev 1162 </p>
8840     <p>Possible Answers:
8841     </p>
8842     <p>
8843     </p>
8844     <blockquote class="text">
8845     <p>A comma separated list of all instruments
8846     (encapsulated into apostrophes) in the specified directory.
8847     </p>
8848     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8849     </p>
8850     <blockquote class="text">
8851     <p>if the given directory does not exist.
8852     </p>
8853     </blockquote>
8854    
8855    
8856     </blockquote><p>
8857    
8858     </p>
8859     <p>Example:
8860     </p>
8861     <p>
8862     </p>
8863     <blockquote class="text">
8864     <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8865     </p>
8866     <p>S: "'Bosendorfer 290','Steinway D'"
8867     </p>
8868     </blockquote><p>
8869    
8870     </p>
8871 iliev 1189 <p>
8872     </p>
8873     <blockquote class="text">
8874     <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8875     </p>
8876     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8877     </p>
8878     </blockquote><p>
8879    
8880     </p>
8881 iliev 1162 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8882     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8883 iliev 1189 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8884 iliev 1162 Getting instrument information</h3>
8885    
8886     <p>The front-end can ask for the current settings of an
8887     instrument by sending the following command:
8888     </p>
8889     <p>
8890     </p>
8891     <blockquote class="text">
8892     <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8893     </p>
8894     </blockquote><p>
8895    
8896     </p>
8897     <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8898     name of the instrument the front-end is interested in.
8899     </p>
8900     <p>Possible Answers:
8901     </p>
8902     <p>
8903     </p>
8904     <blockquote class="text">
8905     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8906     Each answer line begins with the settings category name
8907     followed by a colon and then a space character &lt;SP&gt; and finally
8908     the info character string to that setting category. At the
8909     moment the following categories are defined:
8910     </p>
8911     <p>
8912     </p>
8913     <blockquote class="text">
8914     <p>INSTRUMENT_FILE -
8915     </p>
8916     <blockquote class="text">
8917     <p>File name of the instrument.
8918 schoenebeck 1363 Note that the character string may contain
8919     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8920 iliev 1162 </p>
8921     </blockquote>
8922    
8923    
8924     <p>INSTRUMENT_NR -
8925     </p>
8926     <blockquote class="text">
8927     <p>Index of the instrument within the file.
8928     </p>
8929     </blockquote>
8930    
8931    
8932     <p>FORMAT_FAMILY -
8933     </p>
8934     <blockquote class="text">
8935     <p>The format family of the instrument.
8936     </p>
8937     </blockquote>
8938    
8939    
8940     <p>FORMAT_VERSION -
8941     </p>
8942     <blockquote class="text">
8943     <p>The format version of the instrument.
8944     </p>
8945     </blockquote>
8946    
8947    
8948     <p>SIZE -
8949     </p>
8950     <blockquote class="text">
8951     <p>The size of the instrument in bytes.
8952     </p>
8953     </blockquote>
8954    
8955    
8956     <p>CREATED -
8957     </p>
8958     <blockquote class="text">
8959     <p>The date and time when the instrument is added
8960     in the instruments database, represented in
8961     "YYYY-MM-DD HH:MM:SS" format
8962     </p>
8963     </blockquote>
8964    
8965    
8966     <p>MODIFIED -
8967     </p>
8968     <blockquote class="text">
8969     <p>The date and time of the last modification of the
8970     instrument's database settings, represented in
8971     "YYYY-MM-DD HH:MM:SS" format
8972     </p>
8973     </blockquote>
8974    
8975    
8976     <p>DESCRIPTION -
8977     </p>
8978     <blockquote class="text">
8979 schoenebeck 1363 <p>A brief description of the instrument.
8980     Note that the character string may contain
8981     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8982 iliev 1162 </p>
8983     </blockquote>
8984    
8985    
8986     <p>IS_DRUM -
8987     </p>
8988     <blockquote class="text">
8989     <p>either true or false, determines whether the
8990     instrument is a drumkit or a chromatic instrument
8991     </p>
8992     </blockquote>
8993    
8994    
8995     <p>PRODUCT -
8996     </p>
8997     <blockquote class="text">
8998 schoenebeck 1363 <p>The product title of the instrument.
8999     Note that the character string may contain
9000     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9001 iliev 1162 </p>
9002     </blockquote>
9003    
9004    
9005     <p>ARTISTS -
9006     </p>
9007     <blockquote class="text">
9008 schoenebeck 1363 <p>Lists the artist names.
9009     Note that the character string may contain
9010     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9011 iliev 1162 </p>
9012     </blockquote>
9013    
9014    
9015     <p>KEYWORDS -
9016     </p>
9017     <blockquote class="text">
9018     <p>Provides a list of keywords that refer to the instrument.
9019     Keywords are separated with semicolon and blank.
9020 schoenebeck 1363 Note that the character string may contain
9021     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
9022 iliev 1162 </p>
9023     </blockquote>
9024    
9025    
9026     </blockquote>
9027    
9028    
9029     </blockquote><p>
9030    
9031     </p>
9032     <p>The mentioned fields above don't have to be in particular order.
9033     </p>
9034     <p>Example:
9035     </p>
9036     <p>
9037     </p>
9038     <blockquote class="text">
9039     <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
9040     </p>
9041     <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
9042     </p>
9043     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
9044     </p>
9045     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9046     </p>
9047     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
9048     </p>
9049     <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
9050     </p>
9051     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
9052     </p>
9053     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
9054     </p>
9055     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
9056     </p>
9057     <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
9058     </p>
9059     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
9060     </p>
9061     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
9062     </p>
9063     <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
9064     </p>
9065     <p>&nbsp;&nbsp;&nbsp;"."
9066     </p>
9067     </blockquote><p>
9068    
9069     </p>
9070     <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
9071     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9072 iliev 1189 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
9073 iliev 1162 Renaming an instrument</h3>
9074    
9075     <p>The front-end can alter the name of a specific
9076     instrument by sending the following command:
9077     </p>
9078     <p>
9079     </p>
9080     <blockquote class="text">
9081     <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
9082     </p>
9083     </blockquote><p>
9084    
9085     </p>
9086     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9087     &lt;name&gt; is the new name for that instrument.
9088     </p>
9089     <p>Possible Answers:
9090     </p>
9091     <p>
9092     </p>
9093     <blockquote class="text">
9094     <p>"OK" -
9095     </p>
9096     <blockquote class="text">
9097     <p>on success
9098     </p>
9099     </blockquote>
9100    
9101    
9102     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9103     </p>
9104     <blockquote class="text">
9105     <p>in case the given instrument does not exists,
9106     or if an instrument with name equal to the new
9107     name already exists.
9108     </p>
9109     </blockquote>
9110    
9111    
9112     </blockquote><p>
9113    
9114     </p>
9115     <p>Example:
9116     </p>
9117     <p>
9118     </p>
9119     <blockquote class="text">
9120     <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
9121     </p>
9122     <p>S: "OK"
9123     </p>
9124     </blockquote><p>
9125    
9126     </p>
9127     <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
9128     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9129 iliev 1189 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
9130 iliev 1162 Moving an instrument</h3>
9131    
9132     <p>The front-end can move a specific instrument to another directory by
9133     sending the following command:
9134     </p>
9135     <p>
9136     </p>
9137     <blockquote class="text">
9138     <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9139     </p>
9140     </blockquote><p>
9141    
9142     </p>
9143     <p>Where &lt;instr&gt; is the absolute path name of the instrument
9144     to move and &lt;dst&gt; is the directory where the instrument will
9145     be moved to.
9146     </p>
9147     <p>Possible Answers:
9148     </p>
9149     <p>
9150     </p>
9151     <blockquote class="text">
9152     <p>"OK" -
9153     </p>
9154     <blockquote class="text">
9155     <p>on success
9156     </p>
9157     </blockquote>
9158    
9159    
9160     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9161     </p>
9162     <blockquote class="text">
9163     <p>in case the given instrument does not exists,
9164     or if an instrument with name equal to the name of the
9165     specified instrument already exists in the destination
9166     directory.
9167     </p>
9168     </blockquote>
9169    
9170    
9171     </blockquote><p>
9172    
9173     </p>
9174     <p>Example:
9175     </p>
9176     <p>
9177     </p>
9178     <blockquote class="text">
9179     <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
9180     </p>
9181     <p>S: "OK"
9182     </p>
9183     </blockquote><p>
9184    
9185     </p>
9186 iliev 1189 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
9187     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9188     <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
9189     Copying instruments</h3>
9190    
9191     <p>The front-end can copy a specific instrument to another directory by
9192     sending the following command:
9193     </p>
9194     <p>
9195     </p>
9196     <blockquote class="text">
9197     <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9198     </p>
9199     </blockquote><p>
9200    
9201     </p>
9202     <p>Where &lt;instr&gt; is the absolute path name of the instrument
9203     to copy and &lt;dst&gt; is the directory where the instrument will
9204     be copied to.
9205     </p>
9206     <p>Possible Answers:
9207     </p>
9208     <p>
9209     </p>
9210     <blockquote class="text">
9211     <p>"OK" -
9212     </p>
9213     <blockquote class="text">
9214     <p>on success
9215     </p>
9216     </blockquote>
9217    
9218    
9219     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9220     </p>
9221     <blockquote class="text">
9222     <p>in case the given instrument does not exists,
9223     or if an instrument with name equal to the name of the
9224     specified instrument already exists in the destination
9225     directory.
9226     </p>
9227     </blockquote>
9228    
9229    
9230     </blockquote><p>
9231    
9232     </p>
9233     <p>Example:
9234     </p>
9235     <p>
9236     </p>
9237     <blockquote class="text">
9238     <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
9239     </p>
9240     <p>S: "OK"
9241     </p>
9242     </blockquote><p>
9243    
9244     </p>
9245 iliev 1162 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
9246     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9247 iliev 1189 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
9248 iliev 1162 Changing the description of instrument</h3>
9249    
9250     <p>The front-end can alter the description of a specific
9251     instrument by sending the following command:
9252     </p>
9253     <p>
9254     </p>
9255     <blockquote class="text">
9256     <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
9257     </p>
9258     </blockquote><p>
9259    
9260     </p>
9261     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9262 schoenebeck 1572 &lt;desc&gt; is the new description for the instrument
9263 schoenebeck 1363 (encapsulated into apostrophes, supporting escape sequences as described in chapter
9264     "<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>").
9265 iliev 1162 </p>
9266     <p>Possible Answers:
9267     </p>
9268     <p>
9269     </p>
9270     <blockquote class="text">
9271     <p>"OK" -
9272     </p>
9273     <blockquote class="text">
9274     <p>on success
9275     </p>
9276     </blockquote>
9277    
9278    
9279     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9280     </p>
9281     <blockquote class="text">
9282     <p>in case the given instrument does not exists.
9283     </p>
9284     </blockquote>
9285    
9286    
9287     </blockquote><p>
9288    
9289     </p>
9290     <p>Example:
9291     </p>
9292     <p>
9293     </p>
9294     <blockquote class="text">
9295     <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
9296     </p>
9297     <p>S: "OK"
9298     </p>
9299     </blockquote><p>
9300    
9301     </p>
9302 iliev 1189 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
9303     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9304     <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
9305     Finding instruments</h3>
9306    
9307     <p>The front-end can search for instruments
9308     in specific directory by sending the following command:
9309     </p>
9310     <p>
9311     </p>
9312     <blockquote class="text">
9313     <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
9314     </p>
9315     </blockquote><p>
9316    
9317     </p>
9318     <p>Where &lt;dir&gt; should be replaced by the absolute path
9319     name of the directory to search in. If NON_RECURSIVE is specified, the
9320     directories located in subdirectories of the specified directory will not
9321     be searched. &lt;criteria-list&gt; is a list of search criterias
9322     in form of "key1=val1 key2=val2 ...". The following criterias are
9323     allowed:
9324     </p>
9325     <p>
9326    
9327     <p>NAME='&lt;search-string&gt;'
9328     </p>
9329     <blockquote class="text">
9330     <p>Restricts the search to instruments, which names
9331 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
9332     supporting escape sequences as described in chapter
9333     "<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>").
9334 iliev 1189 </p>
9335     </blockquote><p>
9336    
9337     </p>
9338    
9339    
9340     <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
9341     </p>
9342     <blockquote class="text">
9343 schoenebeck 1251 <p>Restricts the search to instruments, which
9344 iliev 1189 size is in the specified range. If &lt;min&gt; is omitted,
9345     the search results are restricted to instruments with size less then
9346     or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
9347     search is restricted to instruments with size greater then
9348     or equal to &lt;min&gt;.
9349     </p>
9350     </blockquote><p>
9351    
9352     </p>
9353    
9354    
9355     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9356     </p>
9357     <blockquote class="text">
9358     <p>Restricts the search to instruments, which creation
9359     date satisfies the specified period, where &lt;date-after&gt;
9360     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
9361     If &lt;date-after&gt; is omitted the search is restricted to
9362     instruments created before &lt;date-before&gt;. If
9363     &lt;date-before&gt; is omitted, the search is restricted
9364     to instruments created after &lt;date-after&gt;.
9365     </p>
9366     </blockquote><p>
9367    
9368     </p>
9369    
9370    
9371     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9372     </p>
9373     <blockquote class="text">
9374     <p>Restricts the search to instruments, which
9375     date of last modification satisfies the specified period, where
9376     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
9377     format. If &lt;date-after&gt; is omitted the search is restricted to
9378     instruments, which are last modified before &lt;date-before&gt;. If
9379     &lt;date-before&gt; is omitted, the search is restricted to instruments,
9380     which are last modified after &lt;date-after&gt;.
9381     </p>
9382     </blockquote><p>
9383    
9384     </p>
9385    
9386    
9387     <p>DESCRIPTION='&lt;search-string&gt;'
9388     </p>
9389     <blockquote class="text">
9390     <p>Restricts the search to instruments with description
9391 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9392     supporting escape sequences as described in chapter
9393     "<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>").
9394 iliev 1189 </p>
9395     </blockquote><p>
9396    
9397     </p>
9398    
9399    
9400     <p>PRODUCT='&lt;search-string&gt;'
9401     </p>
9402     <blockquote class="text">
9403     <p>Restricts the search to instruments with product info
9404 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9405     supporting escape sequences as described in chapter
9406     "<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>").
9407 iliev 1189 </p>
9408     </blockquote><p>
9409    
9410     </p>
9411    
9412    
9413     <p>ARTISTS='&lt;search-string&gt;'
9414     </p>
9415     <blockquote class="text">
9416     <p>Restricts the search to instruments with artists info
9417 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9418     supporting escape sequences as described in chapter
9419     "<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>").
9420 iliev 1189 </p>
9421     </blockquote><p>
9422    
9423     </p>
9424    
9425    
9426     <p>KEYWORDS='&lt;search-string&gt;'
9427     </p>
9428     <blockquote class="text">
9429     <p>Restricts the search to instruments with keyword list
9430 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9431     supporting escape sequences as described in chapter
9432     "<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>").
9433 iliev 1189 </p>
9434     </blockquote><p>
9435    
9436     </p>
9437    
9438    
9439     <p>IS_DRUM=true | false
9440     </p>
9441     <blockquote class="text">
9442 schoenebeck 1251 <p>Either true or false. Restricts the search to
9443 iliev 1189 drum kits or chromatic instruments.
9444     </p>
9445     </blockquote><p>
9446    
9447     </p>
9448    
9449    
9450     <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9451     </p>
9452     <blockquote class="text">
9453     <p>Restricts the search to instruments of the supplied format families,
9454     where &lt;format-list&gt; is a comma separated list of format families.
9455     </p>
9456     </blockquote><p>
9457    
9458     </p>
9459    
9460    
9461     <p>Where &lt;search-string&gt; is either a regular expression, or a
9462     word list separated with spaces for OR search and with '+' for AND search.
9463     </p>
9464     <p>Possible Answers:
9465     </p>
9466     <p>
9467     </p>
9468     <blockquote class="text">
9469     <p>A comma separated list with the absolute path names (encapsulated into
9470     apostrophes) of all instruments in the specified directory that satisfy
9471     the supplied search criterias.
9472     </p>
9473     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9474     </p>
9475     <blockquote class="text">
9476     <p>if the given directory does not exist.
9477     </p>
9478     </blockquote>
9479    
9480    
9481     </blockquote><p>
9482    
9483     </p>
9484     <p>Example:
9485     </p>
9486     <p>
9487     </p>
9488     <blockquote class="text">
9489     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9490     </p>
9491     <p>S: "'/Piano Collection/Bosendorfer 290'"
9492     </p>
9493     </blockquote><p>
9494    
9495     </p>
9496     <p>
9497     </p>
9498     <blockquote class="text">
9499     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9500     </p>
9501     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9502     </p>
9503     </blockquote><p>
9504    
9505     </p>
9506 iliev 1201 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9507     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9508     <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9509     Getting job status information</h3>
9510    
9511     <p>The front-end can ask for the current status of a
9512     particular database instruments job by sending the following command:
9513     </p>
9514     <p>
9515     </p>
9516     <blockquote class="text">
9517     <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9518     </p>
9519     </blockquote><p>
9520    
9521     </p>
9522     <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9523     of the job the front-end is interested in.
9524     </p>
9525     <p>Possible Answers:
9526     </p>
9527     <p>
9528     </p>
9529     <blockquote class="text">
9530     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9531     Each answer line begins with the settings category name
9532     followed by a colon and then a space character &lt;SP&gt; and finally
9533     the info character string to that setting category. At the
9534     moment the following categories are defined:
9535     </p>
9536     <p>
9537     </p>
9538     <blockquote class="text">
9539     <p>FILES_TOTAL -
9540     </p>
9541     <blockquote class="text">
9542     <p>The total number of files scheduled for scanning
9543     </p>
9544     </blockquote>
9545    
9546    
9547     <p>FILES_SCANNED -
9548     </p>
9549     <blockquote class="text">
9550     <p>The current number of scanned files
9551     </p>
9552     </blockquote>
9553    
9554    
9555     <p>SCANNING -
9556     </p>
9557     <blockquote class="text">
9558     <p>The absolute path name of the file which is currently
9559     being scanned
9560     </p>
9561     </blockquote>
9562    
9563    
9564     <p>STATUS -
9565     </p>
9566     <blockquote class="text">
9567     <p>An integer value between 0 and 100 indicating the
9568     scanning progress percentage of the file which is
9569     currently being scanned
9570     </p>
9571     </blockquote>
9572    
9573    
9574     </blockquote>
9575    
9576    
9577     </blockquote><p>
9578    
9579     </p>
9580     <p>The mentioned fields above don't have to be in particular order.
9581     </p>
9582     <p>Example:
9583     </p>
9584     <p>
9585     </p>
9586     <blockquote class="text">
9587     <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9588     </p>
9589     <p>S: "FILES_TOTAL: 12"
9590     </p>
9591     <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9592     </p>
9593     <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9594     </p>
9595     <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9596     </p>
9597     <p>&nbsp;&nbsp;&nbsp;"."
9598     </p>
9599     </blockquote><p>
9600    
9601     </p>
9602 schoenebeck 1363 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9603     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9604     <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9605     Formatting the instruments database</h3>
9606    
9607     <p>The front-end can remove all instruments and directories and re-create
9608     the instruments database structure (e.g., in case of a database corruption)
9609     by sending the following command:
9610     </p>
9611     <p>
9612     </p>
9613     <blockquote class="text">
9614     <p>FORMAT INSTRUMENTS_DB
9615     </p>
9616     </blockquote><p>
9617    
9618     </p>
9619     <p>Possible Answers:
9620     </p>
9621     <p>
9622     </p>
9623     <blockquote class="text">
9624     <p>"OK" -
9625     </p>
9626     <blockquote class="text">
9627     <p>on success
9628     </p>
9629     </blockquote>
9630    
9631    
9632     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9633     </p>
9634     <blockquote class="text">
9635     <p>If the formatting of the instruments database
9636     failed.
9637     </p>
9638     </blockquote>
9639    
9640    
9641     </blockquote><p>
9642    
9643     </p>
9644 iliev 1731 <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
9645     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9646     <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
9647     Checking for lost instrument files</h3>
9648    
9649     <p>The front-end can retrieve the list of all instrument files in the instruments database
9650     that don't exist in the filesystem by sending the following command:
9651     </p>
9652     <p>
9653     </p>
9654     <blockquote class="text">
9655     <p>FIND LOST DB_INSTRUMENT_FILES
9656     </p>
9657     </blockquote><p>
9658    
9659     </p>
9660     <p>Possible Answers:
9661     </p>
9662     <p>
9663     </p>
9664     <blockquote class="text">
9665     <p>A comma separated list with the absolute path names
9666     (encapsulated into apostrophes) of all lost instrument files.
9667     </p>
9668     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9669     </p>
9670     <blockquote class="text">
9671     <p>in case it failed, providing an appropriate error code and error message.
9672     </p>
9673     </blockquote>
9674    
9675    
9676     </blockquote><p>
9677    
9678     </p>
9679     <p>Example:
9680     </p>
9681     <p>
9682     </p>
9683     <blockquote class="text">
9684     <p>C: "FIND LOST DB_INSTRUMENT_FILES"
9685     </p>
9686     <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
9687     </p>
9688     </blockquote><p>
9689    
9690     </p>
9691     <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
9692     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9693     <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
9694     Replacing an instrument file</h3>
9695    
9696     <p>The front-end can substitute all occurrences of an instrument file
9697     in the instruments database with a new one by sending the following command:
9698     </p>
9699     <p>
9700     </p>
9701     <blockquote class="text">
9702     <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
9703     </p>
9704     </blockquote><p>
9705    
9706     </p>
9707     <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
9708     to substitute with &lt;new_path&gt;.
9709     </p>
9710     <p>Possible Answers:
9711     </p>
9712     <p>
9713     </p>
9714     <blockquote class="text">
9715     <p>"OK" -
9716     </p>
9717     <blockquote class="text">
9718     <p>on success
9719     </p>
9720     </blockquote>
9721    
9722    
9723     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9724     </p>
9725     <blockquote class="text">
9726     <p>in case it failed, providing an appropriate error code and error message.
9727     </p>
9728     </blockquote>
9729    
9730    
9731     </blockquote><p>
9732    
9733     </p>
9734     <p>Example:
9735     </p>
9736     <p>
9737     </p>
9738     <blockquote class="text">
9739     <p>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
9740     </p>
9741     <p>S: "OK"
9742     </p>
9743     </blockquote><p>
9744    
9745     </p>
9746 schoenebeck 1363 <a name="editing_instruments"></a><br /><hr />
9747     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9748     <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9749     Editing Instruments</h3>
9750    
9751     <p>The sampler allows to edit instruments while playing with the
9752     sampler by spawning an external (3rd party) instrument editor
9753     application for a given instrument. The 3rd party instrument
9754     editor applications have to place a respective plugin DLL file
9755     into the sampler's plugins directory. The sampler will
9756     automatically try to load all plugin DLLs in that directory on
9757     startup and only on startup!
9758     </p>
9759     <p>At the moment there is only one command for this feature set,
9760     but this will most probably change in future.
9761     </p>
9762     <a name="EDIT INSTRUMENT"></a><br /><hr />
9763     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9764     <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9765     Opening an appropriate instrument editor application</h3>
9766    
9767     <p>The front-end can request to open an appropriate instrument
9768     editor application by sending the following command:
9769     </p>
9770     <p>
9771     </p>
9772     <blockquote class="text">
9773 schoenebeck 1430 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9774 schoenebeck 1363 </p>
9775     </blockquote><p>
9776    
9777     </p>
9778     <p>Where &lt;sampler-channel&gt; should be replaced by the
9779     number of the sampler channel as given by the
9780     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9781     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9782     command.
9783     </p>
9784     <p>The sampler will try to ask all registered instrument
9785     editors (or to be more specific: their sampler plugins)
9786     whether they are capable to handle the instrument on the
9787     given sampler channel. The sampler will simply use the first
9788     instrument editor application which replied with a positive
9789     answer and spawn that instrument editor application within
9790     the sampler's process and provide that application access
9791     to the instrument's data structures, so both applications
9792     can share and access the same instruments data at the same
9793     time, thus allowing to immediately hear changes with the
9794     sampler made by the instrument editor.
9795     </p>
9796     <p>Note: consequently instrument editors are always spawned
9797     locally on the same machine where the sampler is running
9798     on!
9799     </p>
9800     <p>Possible Answers:
9801     </p>
9802     <p>
9803     </p>
9804     <blockquote class="text">
9805     <p>"OK" -
9806     </p>
9807     <blockquote class="text">
9808     <p>when an appropriate instrument editor was
9809     launched
9810     </p>
9811     </blockquote>
9812    
9813    
9814     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9815     </p>
9816     <blockquote class="text">
9817     <p>when an appropriate instrument editor was
9818     launched, but there are noteworthy issues
9819     </p>
9820     </blockquote>
9821    
9822    
9823     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9824     </p>
9825     <blockquote class="text">
9826     <p>when an appropriate instrument editor
9827     could not be launched
9828     </p>
9829     </blockquote>
9830    
9831    
9832     </blockquote><p>
9833    
9834     </p>
9835     <p>Examples:
9836     </p>
9837     <p>
9838     </p>
9839     <blockquote class="text">
9840 schoenebeck 1430 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9841 schoenebeck 1363 </p>
9842     <p>S: "OK"
9843     </p>
9844     </blockquote><p>
9845    
9846     </p>
9847 schoenebeck 1572 <a name="file_management"></a><br /><hr />
9848     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9849     <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9850     Managing Files</h3>
9851    
9852     <p>You can query detailed informations about files located
9853     at the same system where the sampler instance is running on.
9854     Using this command set allows to retrieve file informations
9855     even remotely from another machine.
9856     </p>
9857     <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9858     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9859     <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9860     Retrieving amount of instruments of a file</h3>
9861    
9862     <p>The front-end can retrieve the amount of instruments
9863     within a given instrument file by sending the
9864     following command:
9865     </p>
9866     <p>
9867     </p>
9868     <blockquote class="text">
9869     <p>GET FILE INSTRUMENTS &lt;filename&gt;
9870     </p>
9871     </blockquote><p>
9872    
9873     </p>
9874     <p>Where &lt;filename&gt; is the name of the instrument
9875     file (encapsulated into apostrophes, supporting escape
9876     sequences as described in chapter
9877     "<a class='info' href='#character_set'>Character Set and Escape
9878     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9879     </p>
9880     <p>The sampler will try to ask all sampler engines,
9881     whether they support the given file and ask the first
9882     engine with a positive answer for the amount of
9883     instruments.
9884     </p>
9885     <p>Possible Answers:
9886     </p>
9887     <p>
9888     </p>
9889     <blockquote class="text">
9890     <p>On success, the sampler will answer by
9891     returning the amount of instruments.
9892    
9893     </p>
9894     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9895     </p>
9896     <blockquote class="text">
9897     <p>if the file could not be handled
9898     </p>
9899     </blockquote>
9900    
9901    
9902     </blockquote><p>
9903    
9904     </p>
9905     <p>Examples:
9906     </p>
9907     <p>
9908     </p>
9909     <blockquote class="text">
9910     <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9911     </p>
9912     <p>S: "10"
9913     </p>
9914     </blockquote><p>
9915    
9916     </p>
9917     <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9918     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9919     <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9920     Retrieving all instruments of a file</h3>
9921    
9922     <p>The front-end can retrieve a list of all instruments
9923     within a given instrument file by sending the
9924     following command:
9925     </p>
9926     <p>
9927     </p>
9928     <blockquote class="text">
9929     <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9930     </p>
9931     </blockquote><p>
9932    
9933     </p>
9934     <p>Where &lt;filename&gt; is the name of the instrument
9935     file (encapsulated into apostrophes, supporting escape
9936     sequences as described in chapter
9937     "<a class='info' href='#character_set'>Character Set and Escape
9938     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9939     </p>
9940     <p>The sampler will try to ask all sampler engines,
9941     whether they support the given file and ask the first
9942     engine with a positive answer for a list of IDs for the
9943     instruments in the given file.
9944     </p>
9945     <p>Possible Answers:
9946     </p>
9947     <p>
9948     </p>
9949     <blockquote class="text">
9950     <p>On success, the sampler will answer by
9951     returning a comma separated list of
9952     instrument IDs.
9953    
9954     </p>
9955     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9956     </p>
9957     <blockquote class="text">
9958     <p>if the file could not be handled
9959     </p>
9960     </blockquote>
9961    
9962    
9963     </blockquote><p>
9964    
9965     </p>
9966     <p>Examples:
9967     </p>
9968     <p>
9969     </p>
9970     <blockquote class="text">
9971     <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9972     </p>
9973     <p>S: "0,1,2,3,4,5,6,7,8,9"
9974     </p>
9975     </blockquote><p>
9976    
9977     </p>
9978     <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9979     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9980     <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9981     Retrieving informations about one instrument in a file</h3>
9982    
9983     <p>The front-end can retrieve detailed informations
9984     about a specific instrument within a given instrument
9985     file by sending the following command:
9986     </p>
9987     <p>
9988     </p>
9989     <blockquote class="text">
9990     <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9991     &lt;instr-id&gt;
9992     </p>
9993     </blockquote><p>
9994    
9995     </p>
9996     <p>Where &lt;filename&gt; is the name of the instrument
9997     file (encapsulated into apostrophes, supporting escape
9998     sequences as described in chapter
9999     "<a class='info' href='#character_set'>Character Set and Escape
10000     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
10001     instrument ID as returned by the
10002     <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.
10003     </p>
10004     <p>The sampler will try to ask all sampler engines,
10005     whether they support the given file and ask the first
10006     engine with a positive answer for informations about the
10007     specific instrument in the given file.
10008     </p>
10009     <p>Possible Answers:
10010     </p>
10011     <p>
10012     </p>
10013     <blockquote class="text">
10014     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10015     Each answer line begins with the settings category name
10016     followed by a colon and then a space character &lt;SP&gt; and finally
10017     the info character string to that setting category. At the
10018     moment the following categories are defined:
10019     </p>
10020     <p>
10021     </p>
10022     <blockquote class="text">
10023     <p>NAME -
10024     </p>
10025     <blockquote class="text">
10026     <p>name of the instrument as
10027     stored in the instrument file
10028     </p>
10029     </blockquote>
10030    
10031    
10032     <p>FORMAT_FAMILY -
10033     </p>
10034     <blockquote class="text">
10035     <p>name of the sampler format
10036     of the given instrument
10037     </p>
10038     </blockquote>
10039    
10040    
10041     <p>FORMAT_VERSION -
10042     </p>
10043     <blockquote class="text">
10044     <p>version of the sampler format
10045     the instrumen is stored as
10046     </p>
10047     </blockquote>
10048    
10049    
10050     <p>PRODUCT -
10051     </p>
10052     <blockquote class="text">
10053     <p>official product name of the
10054     instrument as stored in the file
10055    
10056     </p>
10057     </blockquote>
10058    
10059    
10060     <p>ARTISTS -
10061     </p>
10062     <blockquote class="text">
10063     <p>artists / sample library
10064     vendor of the instrument
10065     </p>
10066     </blockquote>
10067    
10068    
10069 iliev 1773 <p>KEY_BINDINGS -
10070     </p>
10071     <blockquote class="text">
10072     <p>comma separated list of integer values representing
10073     the instrument's key mapping in the range between 0 .. 127,
10074     reflecting the analog meaning of the MIDI specification.
10075     </p>
10076 schoenebeck 1572 </blockquote>
10077 iliev 1773
10078    
10079     <p>KEYSWITCH_BINDINGS -
10080     </p>
10081     <blockquote class="text">
10082     <p>comma separated list of integer values representing
10083     the instrument's keyswitch mapping in the range between 0 .. 127,
10084     reflecting the analog meaning of the MIDI specification.
10085     </p>
10086     </blockquote>
10087    
10088    
10089     </blockquote>
10090 schoenebeck 1572
10091    
10092     </blockquote><p>
10093    
10094     </p>
10095     <p>The mentioned fields above don't have to be in particular order.
10096     </p>
10097     <p>Example:
10098     </p>
10099     <p>
10100     </p>
10101     <blockquote class="text">
10102     <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
10103     </p>
10104     <p>S: "NAME: Lunatic Loops"
10105     </p>
10106     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
10107     </p>
10108     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
10109     </p>
10110     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
10111     </p>
10112     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
10113     </p>
10114     <p>&nbsp;&nbsp;&nbsp;"."
10115     </p>
10116     </blockquote><p>
10117    
10118     </p>
10119 schoenebeck 2139 <a name="effects"></a><br /><hr />
10120     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10121     <a name="rfc.section.6.11"></a><h3>6.11.&nbsp;
10122     Managing Effects</h3>
10123    
10124     <p>Audio effects (e.g. reverb, delay, compression) can be
10125     applied to the audio signals generated by the sampler. The
10126     sampler usually provides a set of internal audio effects for
10127     this task. The exact set of effects depends on the availability
10128     of third party effect plugins installed on the system where the
10129     sampler runs on.
10130     </p>
10131     <p>At the moment only "send effects" are supported. Support for
10132     "insert effects" and "master effects" is planned to be added at
10133     a later point.
10134     </p>
10135     <p>The following commands allow to retrieve the set of internal
10136     effects available to the sampler, detailed informations about
10137     those effects and to create and destroy instances of such
10138     effects. After an instance of an effect is created, the effect
10139     instance can be inserted into the audio signal path of the
10140     sampler, e.g. as send effect.
10141     </p>
10142     <p>The sampler allows to create an arbitrary amount of so called
10143     send effect chains. Each effect chain can host an arbitrary
10144     amount of effect instances. The output of the first effect
10145     instance in an effect chain is fed to the input of the second
10146     effect instance of the chain and so on. So effects in one chain
10147     are processed sequentially. Send effect chains however are
10148     processed in parallel to other send effect chains. Audio signals
10149     of sampler channels are fed to send effects by creating FX sends
10150     to the respective sampler channel and assigning a destination
10151     send effect to that FX by using the
10152 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>
10153 schoenebeck 2139 command. The latter allows to route the FX send to the beginning
10154     of a send effect chain, as well as directly to any other
10155     position of the send effect chain.
10156     </p>
10157     <a name="GET AVAILABLE_EFFECTS"></a><br /><hr />
10158     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10159     <a name="rfc.section.6.11.1"></a><h3>6.11.1.&nbsp;
10160     Retrieve amount of available effects</h3>
10161    
10162     <p>The front-end can retrieve the amount of internal
10163     effects, available to the sampler by sending
10164     the following command:
10165     </p>
10166     <p>
10167     </p>
10168     <blockquote class="text">
10169     <p>GET AVAILABLE_EFFECTS
10170     </p>
10171     </blockquote><p>
10172    
10173     </p>
10174     <p>Possible Answers:
10175     </p>
10176     <p>
10177     </p>
10178     <blockquote class="text">
10179     <p>The sampler will answer by returning the current
10180     number of effects available to the sampler.
10181     </p>
10182     </blockquote><p>
10183    
10184     </p>
10185     <p>Examples:
10186     </p>
10187     <p>
10188     </p>
10189     <blockquote class="text">
10190     <p>C: "GET AVAILABLE_EFFECTS"
10191     </p>
10192     <p>S: "129"
10193     </p>
10194     </blockquote><p>
10195    
10196     </p>
10197     <a name="LIST AVAILABLE_EFFECTS"></a><br /><hr />
10198     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10199     <a name="rfc.section.6.11.2"></a><h3>6.11.2.&nbsp;
10200     Get list of available effects</h3>
10201    
10202     <p>The set of available internal effects can change at
10203     runtime. The front-end can retrieve the list of internal
10204     effects, available to the sampler by sending the following
10205     command:
10206     </p>
10207     <p>
10208     </p>
10209     <blockquote class="text">
10210     <p>LIST AVAILABLE_EFFECTS
10211     </p>
10212     </blockquote><p>
10213    
10214     </p>
10215     <p>Possible Answers:
10216     </p>
10217     <p>
10218     </p>
10219     <blockquote class="text">
10220     <p>The sampler will answer by returning a comma
10221     separated list with numerical IDs of effects. Note:
10222     the numercial ID of an effect is generated by the
10223     sampler for the current moment. The numerical ID of
10224     the same effect can change at runtime, e.g. when the
10225     user requests a rescan of available effect plugins.
10226    
10227     </p>
10228     </blockquote><p>
10229    
10230     </p>
10231     <p>Example:
10232     </p>
10233     <p>
10234     </p>
10235     <blockquote class="text">
10236     <p>C: "LIST AVAILABLE_EFFECTS"
10237     </p>
10238     <p>S: "5,6,7,120,121,122,123,124"
10239     </p>
10240     </blockquote><p>
10241    
10242     </p>
10243     <a name="GET EFFECT INFO"></a><br /><hr />
10244     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10245     <a name="rfc.section.6.11.3"></a><h3>6.11.3.&nbsp;
10246     Retrieving general information about an effect</h3>
10247    
10248     <p>The front-end can ask for general informations about an
10249     effect by sending the following command:
10250     </p>
10251     <p>
10252     </p>
10253     <blockquote class="text">
10254     <p>GET EFFECT INFO &lt;effect-index&gt;
10255     </p>
10256     </blockquote><p>
10257    
10258     </p>
10259     <p>Where &lt;effect-index&gt; is the numerical ID of an
10260     effect as returned by the
10261     <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10262     command.
10263     </p>
10264     <p>Possible Answers:
10265     </p>
10266     <p>
10267     </p>
10268     <blockquote class="text">
10269     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10270     Each answer line begins with the effect information
10271     category name, followed by a colon and then a space
10272     character &lt;SP&gt; and finally the info character
10273     string to that effect information category. At the
10274     moment the following categories are defined:
10275     </p>
10276     <p>
10277     </p>
10278     <blockquote class="text">
10279     <p>SYSTEM -
10280     </p>
10281     <blockquote class="text">
10282     <p>name of the effect plugin system
10283     the effect is based on
10284     (e.g. "LADSPA")
10285     </p>
10286     </blockquote>
10287    
10288    
10289     <p>MODULE -
10290     </p>
10291     <blockquote class="text">
10292     <p>module of the effect plugin
10293     system that contains this effect,
10294     the module is usually the
10295     dynamic-linked library (DLL)
10296     filename of the effect plugin,
10297     including full path (note that this
10298     filename may contain
10299     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10300     </p>
10301     </blockquote>
10302    
10303    
10304     <p>NAME -
10305     </p>
10306     <blockquote class="text">
10307     <p>character string defining the
10308     unique name of the effect within its
10309     module (note that the character
10310     string may contain
10311     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10312     </p>
10313     </blockquote>
10314    
10315    
10316     <p>DESCRIPTION -
10317     </p>
10318     <blockquote class="text">
10319     <p>human readable name of the
10320     effect, intended to be displayed in
10321     user interfaces (note that the
10322     character string may contain
10323     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10324     </p>
10325     </blockquote>
10326    
10327    
10328     </blockquote>
10329    
10330    
10331     </blockquote><p>
10332    
10333     </p>
10334     <p>The mentioned fields above don't have to be in particular order.
10335     </p>
10336     <p>Example:
10337     </p>
10338     <p>
10339     </p>
10340     <blockquote class="text">
10341     <p>C: "GET EFFECT INFO 121"
10342     </p>
10343     <p>S: "SYSTEM: LADSPA"
10344     </p>
10345     <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/lowpass_iir_1891.so"
10346     </p>
10347     <p>&nbsp;&nbsp;&nbsp;"NAME: lowpass_iir"
10348     </p>
10349     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Glame Lowpass Filter"
10350     </p>
10351     <p>&nbsp;&nbsp;&nbsp;"."
10352     </p>
10353     </blockquote><p>
10354    
10355     </p>
10356     <a name="CREATE EFFECT_INSTANCE"></a><br /><hr />
10357     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10358     <a name="rfc.section.6.11.4"></a><h3>6.11.4.&nbsp;
10359     Creating an instance of an effect by its portable ID</h3>
10360    
10361     <p>The front-end can spawn an instance of the desired
10362     effect by sending the following command:
10363     </p>
10364     <p>
10365     </p>
10366     <blockquote class="text">
10367     <p>CREATE EFFECT_INSTANCE &lt;effect-system&gt; &lt;module&gt; &lt;effect-name&gt;
10368     </p>
10369     </blockquote><p>
10370    
10371     </p>
10372     <p>Where &lt;effect-system&gt; is the "SYSTEM" field,
10373     &lt;module&gt; the "MODULE" field and &lt;effect-name&gt;
10374     the "NAME" field as returned by the
10375     <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>
10376     command. The filename of argument &lt;module&gt; and the
10377     character string of argument &lt;effect-name&gt; may contain
10378     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
10379     </p>
10380     <p>The sampler will try to load the requested effect and to
10381     create an instance of it. To allow loading the same effect
10382     on a different machine, probably even running a completely
10383     different operating system (e.g. Linux vs. Windows), the
10384     sampler tries to match &lt;module&gt; "softly". That means
10385     it first tries to find an effect that exactly matches the
10386     given &lt;module&gt; argument. If there is no exact match,
10387     the sampler will try to lower the restrictions on matching
10388     the &lt;module&gt; argument more and more, e.g. by ignoring
10389     upper / lower case differences and by ignoring the path of
10390     the DLL filename and file extension. If there is still no
10391     match at the end, the sampler will try to ignore the
10392     &lt;module&gt; argument completely and as a last resort
10393     search for an effect that only matches the given
10394     &lt;effect-system&gt; and &lt;effect-name&gt; arguments.
10395     </p>
10396     <p>Possible Answers:
10397     </p>
10398     <p>
10399     </p>
10400     <blockquote class="text">
10401     <p>"OK[&lt;effect-instance&gt;]" -
10402     </p>
10403     <blockquote class="text">
10404     <p>in case the effect instance was
10405     successfully created, where
10406     &lt;effect-instance&gt; is the numerical ID
10407     of the new effect instance
10408     </p>
10409     </blockquote>
10410    
10411    
10412     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10413     </p>
10414     <blockquote class="text">
10415     <p>in case the effect instance was spawned
10416     successfully, but there are noteworthy
10417     issue(s) related, providing an appropriate
10418     warning code and warning message
10419     </p>
10420     </blockquote>
10421    
10422    
10423     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10424     </p>
10425     <blockquote class="text">
10426     <p>if the effect could not be instantiated
10427     </p>
10428     </blockquote>
10429    
10430    
10431     </blockquote><p>
10432    
10433     </p>
10434     <p>Examples:
10435     </p>
10436     <p>
10437     </p>
10438     <blockquote class="text">
10439     <p>C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'"
10440     </p>
10441     <p>S: "OK[0]"
10442     </p>
10443     </blockquote><p>
10444    
10445     </p>
10446     <a name="CREATE EFFECT_INSTANCE (non-portable)"></a><br /><hr />
10447     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10448     <a name="rfc.section.6.11.5"></a><h3>6.11.5.&nbsp;
10449     Creating an instance of an effect by its numerical ID</h3>
10450    
10451     <p>The front-end can spawn an instance of the desired
10452     effect by sending the following command:
10453     </p>
10454     <p>
10455     </p>
10456     <blockquote class="text">
10457     <p>CREATE EFFECT_INSTANCE &lt;effect-index&gt;
10458     </p>
10459     </blockquote><p>
10460    
10461     </p>
10462     <p>Where &lt;effect-index&gt; is the numerical ID of the
10463     effect as returned by the
10464     <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10465     command.
10466     </p>
10467     <p>The sampler will try to load the requested effect and to
10468     create an instance of it.
10469     </p>
10470     <p>Note: Since the numerical ID of a certain effect can
10471     change at any time, you should not use this command in
10472     LSCP files to restore a certain effect at a later time! To
10473     store a sampler session including all its effects, use the
10474     <a class='info' href='#CREATE EFFECT_INSTANCE'>portable text-based
10475     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
10476     allows to restore a sampler session with all its effects
10477     also on other machines, possibly even running a completely
10478     different operating system (e.g. Linux vs. Windows), with
10479     different plugin directories or plugin DLL names.
10480     </p>
10481     <p>Possible Answers:
10482     </p>
10483     <p>
10484     </p>
10485     <blockquote class="text">
10486     <p>"OK[&lt;effect-instance&gt;]" -
10487     </p>
10488     <blockquote class="text">
10489     <p>in case the effect instance was
10490     successfully created, where
10491     &lt;effect-instance&gt; is the numerical ID
10492     of the new effect instance
10493     </p>
10494     </blockquote>
10495    
10496    
10497     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10498     </p>
10499     <blockquote class="text">
10500     <p>in case the effect instance was spawned
10501     successfully, but there are noteworthy
10502     issue(s) related, providing an appropriate
10503     warning code and warning message
10504     </p>
10505     </blockquote>
10506    
10507    
10508     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10509     </p>
10510     <blockquote class="text">
10511     <p>if the effect could not be instantiated
10512     </p>
10513     </blockquote>
10514    
10515    
10516     </blockquote><p>
10517    
10518     </p>
10519     <p>Examples:
10520     </p>
10521     <p>
10522     </p>
10523     <blockquote class="text">
10524     <p>C: "CREATE EFFECT_INSTANCE 72"
10525     </p>
10526     <p>S: "OK[5]"
10527     </p>
10528     </blockquote><p>
10529    
10530     </p>
10531     <a name="DESTROY EFFECT_INSTANCE"></a><br /><hr />
10532     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10533     <a name="rfc.section.6.11.6"></a><h3>6.11.6.&nbsp;
10534     Destroy an effect instance</h3>
10535    
10536     <p>The front-end can destroy an unusued effect instance and
10537     thus freeing it from memory by sending the following command:
10538     </p>
10539     <p>
10540     </p>
10541     <blockquote class="text">
10542     <p>DESTROY EFFECT_INSTANCE &lt;effect-instance&gt;
10543     </p>
10544     </blockquote><p>
10545    
10546     </p>
10547     <p>Where &lt;effect-instance&gt; is the numerical ID of the
10548     effect instance as returned by the
10549     <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
10550     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10551     command.
10552     </p>
10553     <p>The effect instance can only be destroyed if it's not
10554     used in any part of the sampler's audio signal path anymore.
10555     If the effect instance is still in use somewhere, trying to
10556     destroy the effect instance will result in an error
10557     message.
10558     </p>
10559     <p>Possible Answers:
10560     </p>
10561     <p>
10562     </p>
10563     <blockquote class="text">
10564     <p>"OK" -
10565     </p>
10566     <blockquote class="text">
10567     <p>in case the effect instance was successfully destroyed
10568     </p>
10569     </blockquote>
10570    
10571    
10572     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10573     </p>
10574     <blockquote class="text">
10575     <p>in case it failed, providing an appropriate error code and
10576     error message
10577     </p>
10578     </blockquote>
10579    
10580    
10581     </blockquote><p>
10582    
10583     </p>
10584     <p>Examples:
10585     </p>
10586     <p>
10587     </p>
10588     <blockquote class="text">
10589     <p>C: "DESTROY EFFECT_INSTANCE 5"
10590     </p>
10591     <p>S: "OK"
10592     </p>
10593     </blockquote><p>
10594    
10595     </p>
10596     <a name="GET EFFECT_INSTANCES"></a><br /><hr />
10597     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10598     <a name="rfc.section.6.11.7"></a><h3>6.11.7.&nbsp;
10599     Retrieve amount of effect instances</h3>
10600    
10601     <p>The front-end can retrieve the current amount of effect
10602     instances by sending the following command:
10603     </p>
10604     <p>
10605     </p>
10606     <blockquote class="text">
10607     <p>GET EFFECT_INSTANCES
10608     </p>
10609     </blockquote><p>
10610    
10611     </p>
10612     <p>Possible Answers:
10613     </p>
10614     <p>
10615     </p>
10616     <blockquote class="text">
10617     <p>The sampler will answer by returning the current
10618     number of effect instances created and not yet
10619     destroyed in the current sampler session.
10620     </p>
10621     </blockquote><p>
10622    
10623     </p>
10624     <p>Examples:
10625     </p>
10626     <p>
10627     </p>
10628     <blockquote class="text">
10629     <p>C: "GET EFFECT_INSTANCES"
10630     </p>
10631     <p>S: "14"
10632     </p>
10633     </blockquote><p>
10634    
10635     </p>
10636     <a name="LIST EFFECT_INSTANCES"></a><br /><hr />
10637     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10638     <a name="rfc.section.6.11.8"></a><h3>6.11.8.&nbsp;
10639     Get list of effect instances</h3>
10640    
10641     <p>The front-end can retrieve the current list of effect
10642     instances by sending the following command:
10643     </p>
10644     <p>
10645     </p>
10646     <blockquote class="text">
10647     <p>LIST EFFECT_INSTANCES
10648     </p>
10649     </blockquote><p>
10650    
10651     </p>
10652     <p>Possible Answers:
10653     </p>
10654     <p>
10655     </p>
10656     <blockquote class="text">
10657     <p>The sampler will answer by returning a comma
10658     separated list with numerical IDs of effects
10659     instances.
10660    
10661     </p>
10662     </blockquote><p>
10663    
10664     </p>
10665     <p>Example:
10666     </p>
10667     <p>
10668     </p>
10669     <blockquote class="text">
10670     <p>C: "LIST EFFECT_INSTANCES"
10671     </p>
10672     <p>S: "9,11,14,15,16,17,25"
10673     </p>
10674     </blockquote><p>
10675    
10676     </p>
10677     <a name="GET EFFECT_INSTANCE INFO"></a><br /><hr />
10678     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10679     <a name="rfc.section.6.11.9"></a><h3>6.11.9.&nbsp;
10680     Retrieving current information about an effect instance</h3>
10681    
10682     <p>The front-end can ask for the current informations about
10683     a particular effect instance by sending the following command:
10684     </p>
10685     <p>
10686     </p>
10687     <blockquote class="text">
10688     <p>GET EFFECT_INSTANCE INFO &lt;effect-instance&gt;
10689     </p>
10690     </blockquote><p>
10691    
10692     </p>
10693     <p>Where &lt;effect-instance&gt; is the numerical ID of an
10694     effect instance as returned by the
10695     <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>
10696     or
10697     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10698     command.
10699     </p>
10700     <p>Possible Answers:
10701     </p>
10702     <p>
10703     </p>
10704     <blockquote class="text">
10705     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10706     Each answer line begins with the information
10707     category name, followed by a colon and then a space
10708     character &lt;SP&gt; and finally the info character
10709     string to that information category. At the
10710     moment the following categories are defined:
10711     </p>
10712     <p>
10713     </p>
10714     <blockquote class="text">
10715     <p>SYSTEM -
10716     </p>
10717     <blockquote class="text">
10718     <p>name of the effect plugin system
10719     the effect is based on
10720     (e.g. "LADSPA")
10721     </p>
10722     </blockquote>
10723    
10724    
10725     <p>MODULE -
10726     </p>
10727     <blockquote class="text">
10728     <p>module of the effect plugin
10729     system that contains this effect,
10730     the module is usually the
10731     dynamic-linked library (DLL)
10732     filename of the effect plugin,
10733     including full path (note that this
10734     filename may contain
10735     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10736     </p>
10737     </blockquote>
10738    
10739    
10740     <p>NAME -
10741     </p>
10742     <blockquote class="text">
10743     <p>character string defining the
10744     unique name of the effect within its
10745     module (note that the character
10746     string may contain
10747     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10748     </p>
10749     </blockquote>
10750    
10751    
10752     <p>DESCRIPTION -
10753     </p>
10754     <blockquote class="text">
10755     <p>human readable name of the
10756     effect, intended to be displayed in
10757     user interfaces (note that the
10758     character string may contain
10759     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10760     </p>
10761     </blockquote>
10762    
10763    
10764     <p>INPUT_CONTROLS -
10765     </p>
10766     <blockquote class="text">
10767     <p>amount of input controls the
10768     effect instance provides, to allow
10769     controlling the effect parameters in
10770     realtime
10771     </p>
10772     </blockquote>
10773    
10774    
10775     </blockquote>
10776    
10777    
10778     </blockquote><p>
10779    
10780     </p>
10781     <p>The mentioned fields above don't have to be in particular order.
10782     </p>
10783     <p>Example:
10784     </p>
10785     <p>
10786     </p>
10787     <blockquote class="text">
10788     <p>C: "GET EFFECT_INSTANCE INFO 3"
10789     </p>
10790     <p>S: "SYSTEM: LADSPA"
10791     </p>
10792     <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/mod_delay_1419.so"
10793     </p>
10794     <p>&nbsp;&nbsp;&nbsp;"NAME: modDelay"
10795     </p>
10796     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Modulatable delay"
10797     </p>
10798     <p>&nbsp;&nbsp;&nbsp;"INPUT_CONTROLS: 1"
10799     </p>
10800     <p>&nbsp;&nbsp;&nbsp;"."
10801     </p>
10802     </blockquote><p>
10803    
10804     </p>
10805     <a name="GET EFFECT_INSTANCE_INPUT_CONTROL INFO"></a><br /><hr />
10806     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10807     <a name="rfc.section.6.11.10"></a><h3>6.11.10.&nbsp;
10808     Retrieving information about an effect parameter</h3>
10809    
10810     <p>Effects typically provide a certain set of effect
10811     parameters which can be altered by the user in realtime
10812     (e.g. depth of a reverb effect, duration of a delay effect,
10813     dry / wet signal ratio). Those controllable effect parameters
10814     are called "input controls". The front-end can ask for the
10815     current informations of an effect instance's input control
10816     by sending the following command:
10817     </p>
10818     <p>
10819     </p>
10820     <blockquote class="text">
10821     <p>GET EFFECT_INSTANCE_INPUT_CONTROL INFO &lt;effect-instance&gt; &lt;input-control&gt;
10822     </p>
10823     </blockquote><p>
10824    
10825     </p>
10826     <p>Where &lt;effect-instance&gt; is the numerical ID of an
10827     effect instance as returned by the
10828     <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>
10829     or
10830     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10831     command and &lt;input-control&gt; is the index of the input
10832     control within the numerical bounds as returned by the
10833     "INPUT_CONTROLS" field of the
10834     <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>
10835     command.
10836     </p>
10837     <p>Possible Answers:
10838     </p>
10839     <p>
10840     </p>
10841     <blockquote class="text">
10842     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10843     Each answer line begins with the information
10844     category name, followed by a colon and then a space
10845     character &lt;SP&gt; and finally the info character
10846     string to that information category. There are
10847     information categories which are always returned,
10848     independent of the respective effect parameter and
10849     there are optional information categories
10850     which are only shown for certain effect parameters.
10851     At the moment the following categories are defined:
10852     </p>
10853     <p>
10854     </p>
10855     <blockquote class="text">
10856     <p>DESCRIPTION -
10857     </p>
10858     <blockquote class="text">
10859     <p>(always returned)
10860     human readable name of the
10861     effect parameter, intended to be
10862     displayed in user interfaces (note
10863     that the character string may
10864     contain <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10865     </p>
10866     </blockquote>
10867    
10868    
10869     <p>VALUE -
10870     </p>
10871     <blockquote class="text">
10872     <p>
10873     (always returned)
10874     current (optional dotted)
10875     floating point value of this effect
10876     parameter
10877     </p>
10878     </blockquote>
10879    
10880    
10881     <p>RANGE_MIN -
10882     </p>
10883     <blockquote class="text">
10884     <p>
10885     (optionally returned)
10886     minimum allowed value for this
10887     effect parameter
10888     </p>
10889     </blockquote>
10890    
10891    
10892     <p>RANGE_MAX -
10893     </p>
10894     <blockquote class="text">
10895     <p>
10896     (optionally returned)
10897     maximum allowed value for this
10898     effect parameter
10899     </p>
10900     </blockquote>
10901    
10902    
10903     <p>POSSIBILITIES -
10904     </p>
10905     <blockquote class="text">
10906     <p>
10907     (optionally returned)
10908     comma separated list of
10909     (optional dotted) floating point
10910     numbers, reflecting the exact set of
10911     possible values for this effect
10912     parameter
10913     </p>
10914     </blockquote>
10915    
10916    
10917     <p>DEFAULT -
10918     </p>
10919     <blockquote class="text">
10920     <p>
10921     (optionally returned)
10922     default value of this effect
10923     parameter
10924     </p>
10925     </blockquote>
10926    
10927    
10928     </blockquote>
10929    
10930    
10931     </blockquote><p>
10932    
10933     </p>
10934     <p>The mentioned fields above don't have to be in particular order.
10935     </p>
10936     <p>Example:
10937     </p>
10938     <p>
10939     </p>
10940     <blockquote class="text">
10941     <p>C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0"
10942     </p>
10943 schoenebeck 2143 <p>S: "DESCRIPTION: Base delay (s)"
10944 schoenebeck 2139 </p>
10945     <p>&nbsp;&nbsp;&nbsp;"VALUE: 0.500"
10946     </p>
10947     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 0.000"
10948     </p>
10949     <p>&nbsp;&nbsp;&nbsp;"."
10950     </p>
10951     </blockquote><p>
10952    
10953     </p>
10954     <a name="SET EFFECT_INSTANCE_INPUT_CONTROL VALUE"></a><br /><hr />
10955     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10956     <a name="rfc.section.6.11.11"></a><h3>6.11.11.&nbsp;
10957     Altering an effect parameter</h3>
10958    
10959     <p>The front-end can alter the current value of an effect
10960     parameter by sending the following command:
10961     </p>
10962     <p>
10963     </p>
10964     <blockquote class="text">
10965     <p>SET EFFECT_INSTANCE_INPUT_CONTROL VALUE &lt;effect-instance&gt; &lt;input-control&gt; &lt;value&gt;
10966     </p>
10967     </blockquote><p>
10968    
10969     </p>
10970     <p>Where &lt;effect-instance&gt; is the numerical ID of the
10971     effect instance as returned by the
10972     <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
10973     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10974     command, &lt;input-control&gt; is the index of the input
10975     control within the numerical bounds as returned by the
10976     "INPUT_CONTROLS" field of the
10977     <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>
10978     command and &lt;value&gt; is the new (optional dotted)
10979     floating point value for this effect parameter.
10980     </p>
10981     <p>Possible Answers:
10982     </p>
10983     <p>
10984     </p>
10985     <blockquote class="text">
10986     <p>"OK" -
10987     </p>
10988     <blockquote class="text">
10989     <p>in case the effect was altered successfully
10990     </p>
10991     </blockquote>
10992    
10993    
10994     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10995     </p>
10996     <blockquote class="text">
10997     <p>in case it failed, providing an appropriate error code and
10998     error message
10999     </p>
11000     </blockquote>
11001    
11002    
11003     </blockquote><p>
11004    
11005     </p>
11006     <p>Examples:
11007     </p>
11008     <p>
11009     </p>
11010     <blockquote class="text">
11011     <p>C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5"
11012     </p>
11013     <p>S: "OK"
11014     </p>
11015     </blockquote><p>
11016    
11017     </p>
11018     <a name="GET SEND_EFFECT_CHAINS"></a><br /><hr />
11019     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11020     <a name="rfc.section.6.11.12"></a><h3>6.11.12.&nbsp;
11021     Retrieve amount of send effect chains</h3>
11022    
11023     <p>The front-end can retrieve the current amount of send
11024     effect chains of an audio output device by sending the
11025     following command:
11026     </p>
11027     <p>
11028     </p>
11029     <blockquote class="text">
11030     <p>GET SEND_EFFECT_CHAINS &lt;audio-device&gt;
11031     </p>
11032     </blockquote><p>
11033    
11034     </p>
11035     <p>Where &lt;audio-device&gt; should be replaced by the
11036     numerical ID of the audio output device as given by the
11037     <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>
11038     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>
11039     command.
11040     </p>
11041     <p>Possible Answers:
11042     </p>
11043     <p>
11044     </p>
11045     <blockquote class="text">
11046     <p>The sampler will answer by returning the current
11047     number of send effect chains of the supplied audio
11048     output device.
11049     </p>
11050     </blockquote><p>
11051    
11052     </p>
11053     <p>Examples:
11054     </p>
11055     <p>
11056     </p>
11057     <blockquote class="text">
11058     <p>C: "GET SEND_EFFECT_CHAINS 0"
11059     </p>
11060     <p>S: "4"
11061     </p>
11062     </blockquote><p>
11063    
11064     </p>
11065     <a name="LIST SEND_EFFECT_CHAINS"></a><br /><hr />
11066     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11067     <a name="rfc.section.6.11.13"></a><h3>6.11.13.&nbsp;
11068     Retrieve list of send effect chains</h3>
11069    
11070     <p>The front-end can retrieve the current list of send
11071     effect chains of an audio output device by sending the
11072     following command:
11073     </p>
11074     <p>
11075     </p>
11076     <blockquote class="text">
11077     <p>LIST SEND_EFFECT_CHAINS &lt;audio-device&gt;
11078     </p>
11079     </blockquote><p>
11080    
11081     </p>
11082     <p>Where &lt;audio-device&gt; should be replaced by the
11083     numerical ID of the audio output device as given by the
11084     <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>
11085     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>
11086     command.
11087     </p>
11088     <p>Possible Answers:
11089     </p>
11090     <p>
11091     </p>
11092     <blockquote class="text">
11093     <p>The sampler will answer by returning a comma
11094     separated list with numerical IDs of send effect
11095     chains of the supplied audio output device.
11096    
11097     </p>
11098     </blockquote><p>
11099    
11100     </p>
11101     <p>Examples:
11102     </p>
11103     <p>
11104     </p>
11105     <blockquote class="text">
11106     <p>C: "LIST SEND_EFFECT_CHAINS 0"
11107     </p>
11108     <p>S: "3,4,7"
11109     </p>
11110     </blockquote><p>
11111    
11112     </p>
11113     <a name="ADD SEND_EFFECT_CHAIN"></a><br /><hr />
11114     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11115     <a name="rfc.section.6.11.14"></a><h3>6.11.14.&nbsp;
11116     Add send effect chain</h3>
11117    
11118     <p>The front-end can add a send effect chain by sending the
11119     following command:
11120     </p>
11121     <p>
11122     </p>
11123     <blockquote class="text">
11124     <p>ADD SEND_EFFECT_CHAIN &lt;audio-device&gt;
11125     </p>
11126     </blockquote><p>
11127    
11128     </p>
11129     <p>Where &lt;audio-device&gt; should be replaced by the
11130     numerical ID of the audio output device as given by the
11131     <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>
11132     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>
11133     command.
11134     </p>
11135     <p>Possible Answers:
11136     </p>
11137     <p>
11138     </p>
11139     <blockquote class="text">
11140     <p>"OK[&lt;effect-chain&gt;]" -
11141     </p>
11142     <blockquote class="text">
11143     <p>in case the send effect chain was
11144     added successfully, where
11145     &lt;effect-chain&gt; is the numerical ID
11146     of the new send effect chain
11147     </p>
11148     </blockquote>
11149    
11150    
11151     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11152     </p>
11153     <blockquote class="text">
11154     <p>if the send effect chain could not be added
11155     </p>
11156     </blockquote>
11157    
11158    
11159     </blockquote><p>
11160    
11161     </p>
11162     <p>Examples:
11163     </p>
11164     <p>
11165     </p>
11166     <blockquote class="text">
11167     <p>C: "ADD SEND_EFFECT_CHAIN 0"
11168     </p>
11169     <p>S: "OK[2]"
11170     </p>
11171     </blockquote><p>
11172    
11173     </p>
11174     <a name="REMOVE SEND_EFFECT_CHAIN"></a><br /><hr />
11175     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11176     <a name="rfc.section.6.11.15"></a><h3>6.11.15.&nbsp;
11177     Remove send effect chain</h3>
11178    
11179     <p>The front-end can remove a send effect chain by sending
11180     the following command:
11181     </p>
11182     <p>
11183     </p>
11184     <blockquote class="text">
11185     <p>REMOVE SEND_EFFECT_CHAIN &lt;audio-device&gt; &lt;effect-chain&gt;
11186     </p>
11187     </blockquote><p>
11188    
11189     </p>
11190     <p>Where &lt;audio-device&gt; should be replaced by the
11191     numerical ID of the audio output device as given by the
11192     <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>
11193     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>
11194     command and &lt;effect-chain&gt; by the numerical ID as
11195     returned by the
11196     <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>
11197     or
11198     <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>
11199     command.
11200     </p>
11201     <p>Possible Answers:
11202     </p>
11203     <p>
11204     </p>
11205     <blockquote class="text">
11206     <p>"OK" -
11207     </p>
11208     <blockquote class="text">
11209     <p>in case the send effect chain was
11210     removed successfully
11211     </p>
11212     </blockquote>
11213    
11214    
11215     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11216     </p>
11217     <blockquote class="text">
11218     <p>if the send effect chain could not be removed
11219     </p>
11220     </blockquote>
11221    
11222    
11223     </blockquote><p>
11224    
11225     </p>
11226     <p>Examples:
11227     </p>
11228     <p>
11229     </p>
11230     <blockquote class="text">
11231     <p>C: "REMOVE SEND_EFFECT_CHAIN 0 2"
11232     </p>
11233     <p>S: "OK"
11234     </p>
11235     </blockquote><p>
11236    
11237     </p>
11238     <a name="GET SEND_EFFECT_CHAIN INFO"></a><br /><hr />
11239     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11240     <a name="rfc.section.6.11.16"></a><h3>6.11.16.&nbsp;
11241     Retrieving information about a send effect chain</h3>
11242    
11243     <p>The front-end can ask for informations of a send effect
11244     chain by sending the following command:
11245     </p>
11246     <p>
11247     </p>
11248     <blockquote class="text">
11249     <p>GET SEND_EFFECT_CHAIN INFO &lt;audio-device&gt; &lt;effect-chain&gt;
11250     </p>
11251     </blockquote><p>
11252    
11253     </p>
11254     <p>Where &lt;audio-device&gt; should be replaced by the
11255     numerical ID of the audio output device as given by the
11256     <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>
11257     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>
11258     command and &lt;effect-chain&gt; by the numerical ID as
11259     returned by the
11260     <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>
11261     or
11262     <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>
11263     command.
11264     </p>
11265     <p>Possible Answers:
11266     </p>
11267     <p>
11268     </p>
11269     <blockquote class="text">
11270     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11271     Each answer line begins with the information
11272     category name, followed by a colon and then a space
11273     character &lt;SP&gt; and finally the info character
11274     string to that information category.
11275     At the moment the following categories are defined:
11276     </p>
11277     <p>
11278     </p>
11279     <blockquote class="text">
11280     <p>EFFECT_COUNT -
11281     </p>
11282     <blockquote class="text">
11283     <p>amount of effects in this send
11284     effect chain
11285     </p>
11286     </blockquote>
11287    
11288    
11289     <p>EFFECT_SEQUENCE -
11290     </p>
11291     <blockquote class="text">
11292     <p>comma separated list of the
11293     numerical IDs of the effect
11294     instances in this send effect chain,
11295     in the order as they are procssed in
11296     the effect chain
11297     </p>
11298     </blockquote>
11299    
11300    
11301     </blockquote>
11302    
11303    
11304     </blockquote><p>
11305    
11306     </p>
11307     <p>The mentioned fields above don't have to be in particular order.
11308     </p>
11309     <p>Example:
11310     </p>
11311     <p>
11312     </p>
11313     <blockquote class="text">
11314     <p>C: "GET SEND_EFFECT_CHAIN INFO 0 2"
11315     </p>
11316     <p>S: "EFFECT_COUNT: 3"
11317     </p>
11318     <p>&nbsp;&nbsp;&nbsp;"EFFECT_SEQUENCE: 31,4,7"
11319     </p>
11320     <p>&nbsp;&nbsp;&nbsp;"."
11321     </p>
11322     </blockquote><p>
11323    
11324     </p>
11325     <a name="APPEND SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11326     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11327     <a name="rfc.section.6.11.17"></a><h3>6.11.17.&nbsp;
11328     Append effect instance to a send effect chain</h3>
11329    
11330     <p>The front-end can add an unused effect instance to the
11331     end of a send effect chain by sending the following command:
11332     </p>
11333     <p>
11334     </p>
11335     <blockquote class="text">
11336     <p>APPEND SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;effect-instance&gt;
11337     </p>
11338     </blockquote><p>
11339    
11340     </p>
11341     <p>Where &lt;audio-device&gt; should be replaced by the
11342     numerical ID of the audio output device as given by the
11343     <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>
11344     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>
11345     command and &lt;effect-chain&gt; by the numerical ID as
11346     returned by the
11347     <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>
11348     or
11349     <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>
11350     command and &lt;effect-instance&gt; as returned by the
11351     <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
11352     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11353     command.
11354     </p>
11355     <p>Only unused effect instances can be added to the effect
11356     chain. Trying to add an effect instance which is already in
11357     use somewhere in the audio signal path of the sampler will
11358     result in an error.
11359     </p>
11360     <p>Possible Answers:
11361     </p>
11362     <p>
11363     </p>
11364     <blockquote class="text">
11365     <p>"OK" -
11366     </p>
11367     <blockquote class="text">
11368     <p>in case the effect instance was
11369     added successfully to the chain
11370     </p>
11371     </blockquote>
11372    
11373    
11374     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11375     </p>
11376     <blockquote class="text">
11377     <p>if the effect instance could not be added
11378     </p>
11379     </blockquote>
11380    
11381    
11382     </blockquote><p>
11383    
11384     </p>
11385     <p>Examples:
11386     </p>
11387     <p>
11388     </p>
11389     <blockquote class="text">
11390     <p>C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38"
11391     </p>
11392     <p>S: "OK"
11393     </p>
11394     </blockquote><p>
11395    
11396     </p>
11397     <a name="INSERT SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11398     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11399     <a name="rfc.section.6.11.18"></a><h3>6.11.18.&nbsp;
11400     Insert effect instance to a send effect chain</h3>
11401    
11402     <p>The front-end can add an unused effect instance to a
11403     certain position of a send effect chain by sending the
11404     following command:
11405     </p>
11406     <p>
11407     </p>
11408     <blockquote class="text">
11409     <p>INSERT SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt; &lt;effect-instance&gt;
11410     </p>
11411     </blockquote><p>
11412    
11413     </p>
11414     <p>Where &lt;audio-device&gt; should be replaced by the
11415     numerical ID of the audio output device as given by the
11416     <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>
11417     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>
11418     command, &lt;effect-chain&gt; by the numerical ID as
11419     returned by the
11420     <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>
11421     or
11422     <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>
11423     command, &lt;effect-instance&gt; as returned by the
11424     <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
11425     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11426     command and &lt;chain-pos&gt; the exact position of the
11427     effect chain where the supplied effect shall be inserted
11428     to.
11429     </p>
11430     <p>Only unused effect instances can be added to the effect
11431     chain. Trying to add an effect instance which is already in
11432     use somewhere in the audio signal path of the sampler will
11433     result in an error.
11434     </p>
11435     <p>Possible Answers:
11436     </p>
11437     <p>
11438     </p>
11439     <blockquote class="text">
11440     <p>"OK" -
11441     </p>
11442     <blockquote class="text">
11443     <p>in case the effect instance was
11444     added successfully to the chain
11445     </p>
11446     </blockquote>
11447    
11448    
11449     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11450     </p>
11451     <blockquote class="text">
11452     <p>if the effect instance could not be added
11453     </p>
11454     </blockquote>
11455    
11456    
11457     </blockquote><p>
11458    
11459     </p>
11460     <p>Examples:
11461     </p>
11462     <p>
11463     </p>
11464     <blockquote class="text">
11465     <p>C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38"
11466     </p>
11467     <p>S: "OK"
11468     </p>
11469     </blockquote><p>
11470    
11471     </p>
11472     <a name="REMOVE SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11473     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11474     <a name="rfc.section.6.11.19"></a><h3>6.11.19.&nbsp;
11475     Remove effect instance from send effect chain</h3>
11476    
11477     <p>The front-end can remove an effect instance from a
11478     certain position of a send effect chain by sending the
11479     following command:
11480     </p>
11481     <p>
11482     </p>
11483     <blockquote class="text">
11484     <p>REMOVE SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
11485     </p>
11486     </blockquote><p>
11487    
11488     </p>
11489     <p>Where &lt;audio-device&gt; should be replaced by the
11490     numerical ID of the audio output device as given by the
11491     <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>
11492     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>
11493     command, &lt;effect-chain&gt; by the numerical ID as
11494     returned by the
11495     <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>
11496     or
11497     <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>
11498     command and &lt;chain-pos&gt; the exact position of the
11499     effect instance to be removed from the effect chain.
11500     </p>
11501     <p>Possible Answers:
11502     </p>
11503     <p>
11504     </p>
11505     <blockquote class="text">
11506     <p>"OK" -
11507     </p>
11508     <blockquote class="text">
11509     <p>in case the effect instance was
11510     removed successfully
11511     </p>
11512     </blockquote>
11513    
11514    
11515     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11516     </p>
11517     <blockquote class="text">
11518     <p>if the effect instance could not be removed
11519     </p>
11520     </blockquote>
11521    
11522    
11523     </blockquote><p>
11524    
11525     </p>
11526     <p>Examples:
11527     </p>
11528     <p>
11529     </p>
11530     <blockquote class="text">
11531     <p>C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4"
11532     </p>
11533     <p>S: "OK"
11534     </p>
11535     </blockquote><p>
11536    
11537     </p>
11538 senoner 542 <a name="command_syntax"></a><br /><hr />
11539 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11540     <a name="rfc.section.7"></a><h3>7.&nbsp;
11541     Command Syntax</h3>
11542 senoner 542
11543 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>
11544     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>)
11545 schoenebeck 575 where applicable.
11546 schoenebeck 940
11547 senoner 542 </p>
11548 schoenebeck 575 <p>input =
11549     </p>
11550     <blockquote class="text">
11551     <p>line LF
11552 schoenebeck 940
11553 schoenebeck 575 </p>
11554     <p>/ line CR LF
11555 schoenebeck 940
11556 schoenebeck 575 </p>
11557 schoenebeck 708 </blockquote><p>
11558 schoenebeck 575
11559 schoenebeck 708 </p>
11560 schoenebeck 575 <p>line =
11561     </p>
11562     <blockquote class="text">
11563     <p>/* epsilon (empty line ignored) */
11564 schoenebeck 940
11565 schoenebeck 575 </p>
11566     <p>/ comment
11567 schoenebeck 940
11568 schoenebeck 575 </p>
11569     <p>/ command
11570 schoenebeck 940
11571 schoenebeck 575 </p>
11572     <p>/ error
11573 schoenebeck 940
11574 schoenebeck 575 </p>
11575 schoenebeck 708 </blockquote><p>
11576 schoenebeck 575
11577 schoenebeck 708 </p>
11578 schoenebeck 575 <p>comment =
11579     </p>
11580     <blockquote class="text">
11581     <p>'#'
11582 schoenebeck 940
11583 schoenebeck 575 </p>
11584     <p>/ comment '#'
11585 schoenebeck 940
11586 schoenebeck 575 </p>
11587     <p>/ comment SP
11588 schoenebeck 940
11589 schoenebeck 575 </p>
11590     <p>/ comment number
11591 schoenebeck 940
11592 schoenebeck 575 </p>
11593     <p>/ comment string
11594 schoenebeck 940
11595 schoenebeck 575 </p>
11596 schoenebeck 708 </blockquote><p>
11597 schoenebeck 575
11598 schoenebeck 708 </p>
11599 schoenebeck 575 <p>command =
11600     </p>
11601     <blockquote class="text">
11602 schoenebeck 974 <p>ADD SP add_instruction
11603 schoenebeck 940
11604 schoenebeck 575 </p>
11605 schoenebeck 945 <p>/ MAP SP map_instruction
11606    
11607     </p>
11608     <p>/ UNMAP SP unmap_instruction
11609    
11610     </p>
11611 schoenebeck 575 <p>/ GET SP get_instruction
11612 schoenebeck 940
11613 schoenebeck 575 </p>
11614     <p>/ CREATE SP create_instruction
11615 schoenebeck 940
11616 schoenebeck 575 </p>
11617     <p>/ DESTROY SP destroy_instruction
11618 schoenebeck 940
11619 schoenebeck 575 </p>
11620     <p>/ LIST SP list_instruction
11621 schoenebeck 940
11622 schoenebeck 575 </p>
11623     <p>/ LOAD SP load_instruction
11624 schoenebeck 940
11625 schoenebeck 575 </p>
11626 schoenebeck 945 <p>/ REMOVE SP remove_instruction
11627 schoenebeck 940
11628 schoenebeck 575 </p>
11629     <p>/ SET SP set_instruction
11630 schoenebeck 940
11631 schoenebeck 575 </p>
11632     <p>/ SUBSCRIBE SP subscribe_event
11633 schoenebeck 940
11634 schoenebeck 575 </p>
11635     <p>/ UNSUBSCRIBE SP unsubscribe_event
11636 schoenebeck 940
11637 schoenebeck 575 </p>
11638 schoenebeck 945 <p>/ RESET SP reset_instruction
11639 schoenebeck 940
11640 schoenebeck 575 </p>
11641 schoenebeck 945 <p>/ CLEAR SP clear_instruction
11642    
11643     </p>
11644 iliev 1189 <p>/ FIND SP find_instruction
11645    
11646     </p>
11647 iliev 1162 <p>/ MOVE SP move_instruction
11648    
11649     </p>
11650 iliev 1189 <p>/ COPY SP copy_instruction
11651    
11652     </p>
11653 schoenebeck 1251 <p>/ EDIT SP edit_instruction
11654    
11655     </p>
11656 schoenebeck 1363 <p>/ FORMAT SP format_instruction
11657 schoenebeck 1801
11658 iliev 1773 </p>
11659 schoenebeck 1801 <p>/ SEND SP send_instruction
11660 schoenebeck 1363
11661     </p>
11662 schoenebeck 2139 <p>/ APPEND SP append_instruction
11663    
11664     </p>
11665     <p>/ INSERT SP insert_instruction
11666    
11667     </p>
11668 schoenebeck 575 <p>/ RESET
11669 schoenebeck 940
11670 schoenebeck 575 </p>
11671     <p>/ QUIT
11672 schoenebeck 940
11673 schoenebeck 575 </p>
11674 schoenebeck 708 </blockquote><p>
11675 schoenebeck 575
11676 schoenebeck 708 </p>
11677 schoenebeck 974 <p>add_instruction =
11678     </p>
11679     <blockquote class="text">
11680     <p>CHANNEL
11681    
11682     </p>
11683 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11684 iliev 1162
11685     </p>
11686 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
11687 iliev 1162
11688     </p>
11689 schoenebeck 1801 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11690    
11691     </p>
11692 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
11693 iliev 1162
11694     </p>
11695 schoenebeck 1801 <p>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11696    
11697     </p>
11698 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
11699 iliev 1201
11700     </p>
11701 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
11702 iliev 1201
11703     </p>
11704 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename
11705 iliev 1162
11706     </p>
11707 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
11708 iliev 1162
11709     </p>
11710 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP
11711    
11712     </p>
11713     <p>/ MIDI_INSTRUMENT_MAP SP map_name
11714    
11715     </p>
11716 schoenebeck 2139 <p>/ SEND_EFFECT_CHAIN SP device_index
11717    
11718     </p>
11719 schoenebeck 974 </blockquote><p>
11720    
11721     </p>
11722 schoenebeck 575 <p>subscribe_event =
11723     </p>
11724     <blockquote class="text">
11725 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
11726 schoenebeck 940
11727 schoenebeck 575 </p>
11728 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
11729    
11730     </p>
11731     <p>/ MIDI_INPUT_DEVICE_COUNT
11732    
11733     </p>
11734     <p>/ MIDI_INPUT_DEVICE_INFO
11735    
11736     </p>
11737     <p>/ CHANNEL_COUNT
11738    
11739     </p>
11740 schoenebeck 1685 <p>/ CHANNEL_MIDI
11741    
11742     </p>
11743 schoenebeck 1696 <p>/ DEVICE_MIDI
11744    
11745     </p>
11746 schoenebeck 575 <p>/ VOICE_COUNT
11747 schoenebeck 940
11748 schoenebeck 575 </p>
11749     <p>/ STREAM_COUNT
11750 schoenebeck 940
11751 schoenebeck 575 </p>
11752     <p>/ BUFFER_FILL
11753 schoenebeck 940
11754 schoenebeck 575 </p>
11755     <p>/ CHANNEL_INFO
11756 schoenebeck 940
11757 schoenebeck 575 </p>
11758 iliev 1110 <p>/ FX_SEND_COUNT
11759    
11760     </p>
11761     <p>/ FX_SEND_INFO
11762    
11763     </p>
11764 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
11765    
11766     </p>
11767     <p>/ MIDI_INSTRUMENT_MAP_INFO
11768    
11769     </p>
11770     <p>/ MIDI_INSTRUMENT_COUNT
11771    
11772     </p>
11773     <p>/ MIDI_INSTRUMENT_INFO
11774    
11775     </p>
11776 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11777    
11778     </p>
11779     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11780    
11781     </p>
11782     <p>/ DB_INSTRUMENT_COUNT
11783    
11784     </p>
11785     <p>/ DB_INSTRUMENT_INFO
11786    
11787     </p>
11788 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
11789    
11790     </p>
11791 schoenebeck 575 <p>/ MISCELLANEOUS
11792 schoenebeck 940
11793 schoenebeck 575 </p>
11794 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
11795    
11796     </p>
11797 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
11798    
11799     </p>
11800 iliev 1110 <p>/ GLOBAL_INFO
11801    
11802     </p>
11803 iliev 2189 <p>/ EFFECT_INSTANCE_COUNT
11804    
11805     </p>
11806     <p>/ EFFECT_INSTANCE_INFO
11807    
11808     </p>
11809     <p>/ SEND_EFFECT_CHAIN_COUNT
11810    
11811     </p>
11812     <p>/ SEND_EFFECT_CHAIN_INFO
11813    
11814     </p>
11815 schoenebeck 708 </blockquote><p>
11816 schoenebeck 575
11817 schoenebeck 708 </p>
11818 schoenebeck 575 <p>unsubscribe_event =
11819     </p>
11820     <blockquote class="text">
11821 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
11822 schoenebeck 940
11823 schoenebeck 575 </p>
11824 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
11825    
11826     </p>
11827     <p>/ MIDI_INPUT_DEVICE_COUNT
11828    
11829     </p>
11830     <p>/ MIDI_INPUT_DEVICE_INFO
11831    
11832     </p>
11833     <p>/ CHANNEL_COUNT
11834    
11835     </p>
11836 schoenebeck 1685 <p>/ CHANNEL_MIDI
11837    
11838     </p>
11839 schoenebeck 1696 <p>/ DEVICE_MIDI
11840    
11841     </p>
11842 schoenebeck 575 <p>/ VOICE_COUNT
11843 schoenebeck 940
11844 schoenebeck 575 </p>
11845     <p>/ STREAM_COUNT
11846 schoenebeck 940
11847 schoenebeck 575 </p>
11848     <p>/ BUFFER_FILL
11849 schoenebeck 940
11850 schoenebeck 575 </p>
11851     <p>/ CHANNEL_INFO
11852 schoenebeck 940
11853 schoenebeck 575 </p>
11854 iliev 1110 <p>/ FX_SEND_COUNT
11855    
11856     </p>
11857     <p>/ FX_SEND_INFO
11858    
11859     </p>
11860 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
11861    
11862     </p>
11863     <p>/ MIDI_INSTRUMENT_MAP_INFO
11864    
11865     </p>
11866     <p>/ MIDI_INSTRUMENT_COUNT
11867    
11868     </p>
11869     <p>/ MIDI_INSTRUMENT_INFO
11870    
11871     </p>
11872 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11873    
11874     </p>
11875     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11876    
11877     </p>
11878     <p>/ DB_INSTRUMENT_COUNT
11879    
11880     </p>
11881     <p>/ DB_INSTRUMENT_INFO
11882    
11883     </p>
11884 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
11885    
11886     </p>
11887 schoenebeck 575 <p>/ MISCELLANEOUS
11888 schoenebeck 940
11889 schoenebeck 575 </p>
11890 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
11891    
11892     </p>
11893 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
11894    
11895     </p>
11896 iliev 1110 <p>/ GLOBAL_INFO
11897    
11898     </p>
11899 iliev 2189 <p>/ EFFECT_INSTANCE_COUNT
11900    
11901     </p>
11902     <p>/ EFFECT_INSTANCE_INFO
11903    
11904     </p>
11905     <p>/ SEND_EFFECT_CHAIN_COUNT
11906    
11907     </p>
11908     <p>/ SEND_EFFECT_CHAIN_INFO
11909    
11910     </p>
11911 schoenebeck 708 </blockquote><p>
11912 schoenebeck 575
11913 schoenebeck 708 </p>
11914 schoenebeck 945 <p>map_instruction =
11915     </p>
11916     <blockquote class="text">
11917 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
11918 schoenebeck 945
11919     </p>
11920 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
11921 schoenebeck 945
11922     </p>
11923 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
11924 schoenebeck 945
11925     </p>
11926 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
11927 schoenebeck 945
11928     </p>
11929     </blockquote><p>
11930    
11931     </p>
11932     <p>unmap_instruction =
11933     </p>
11934     <blockquote class="text">
11935 schoenebeck 974 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
11936 schoenebeck 945
11937     </p>
11938     </blockquote><p>
11939    
11940     </p>
11941     <p>remove_instruction =
11942     </p>
11943     <blockquote class="text">
11944     <p>CHANNEL SP sampler_channel
11945    
11946     </p>
11947 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
11948    
11949     </p>
11950     <p>/ MIDI_INSTRUMENT_MAP SP ALL
11951    
11952     </p>
11953 schoenebeck 2139 <p>/ SEND_EFFECT_CHAIN SP device_index SP effect_chain
11954    
11955     </p>
11956     <p>/ SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos
11957    
11958     </p>
11959 schoenebeck 2141 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id
11960 schoenebeck 2139
11961     </p>
11962 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
11963 iliev 1162
11964     </p>
11965 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11966 iliev 1162
11967     </p>
11968 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path
11969 iliev 1162
11970     </p>
11971 schoenebeck 945 </blockquote><p>
11972    
11973     </p>
11974 schoenebeck 575 <p>get_instruction =
11975     </p>
11976     <blockquote class="text">
11977     <p>AVAILABLE_ENGINES
11978 schoenebeck 940
11979 schoenebeck 575 </p>
11980 schoenebeck 2139 <p>/ AVAILABLE_EFFECTS
11981    
11982     </p>
11983     <p>/ EFFECT_INSTANCES
11984    
11985     </p>
11986     <p>/ EFFECT SP INFO SP effect_index
11987    
11988     </p>
11989     <p>/ EFFECT_INSTANCE SP INFO SP effect_instance
11990    
11991     </p>
11992     <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP INFO SP effect_instance SP input_control
11993    
11994     </p>
11995     <p>/ SEND_EFFECT_CHAINS SP device_index
11996    
11997     </p>
11998     <p>/ SEND_EFFECT_CHAIN SP INFO SP device_index SP effect_chain
11999    
12000     </p>
12001 schoenebeck 575 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12002 schoenebeck 940
12003 schoenebeck 575 </p>
12004     <p>/ MIDI_INPUT_DRIVER SP INFO SP string
12005 schoenebeck 940
12006 schoenebeck 575 </p>
12007     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
12008 schoenebeck 940
12009 schoenebeck 575 </p>
12010     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12011 schoenebeck 940
12012 schoenebeck 575 </p>
12013     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12014 schoenebeck 940
12015 schoenebeck 575 </p>
12016     <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
12017 schoenebeck 940
12018 schoenebeck 575 </p>
12019     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
12020 schoenebeck 940
12021 schoenebeck 575 </p>
12022     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
12023 schoenebeck 940
12024 schoenebeck 575 </p>
12025     <p>/ AUDIO_OUTPUT_DEVICES
12026 schoenebeck 940
12027 schoenebeck 575 </p>
12028     <p>/ MIDI_INPUT_DEVICES
12029 schoenebeck 940
12030 schoenebeck 575 </p>
12031     <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
12032 schoenebeck 940
12033 schoenebeck 575 </p>
12034     <p>/ MIDI_INPUT_DEVICE SP INFO SP number
12035 schoenebeck 940
12036 schoenebeck 575 </p>
12037     <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
12038 schoenebeck 940
12039 schoenebeck 575 </p>
12040     <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
12041 schoenebeck 940
12042 schoenebeck 575 </p>
12043     <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
12044 schoenebeck 940
12045 schoenebeck 575 </p>
12046     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
12047 schoenebeck 940
12048 schoenebeck 575 </p>
12049     <p>/ CHANNELS
12050 schoenebeck 940
12051 schoenebeck 575 </p>
12052     <p>/ CHANNEL SP INFO SP sampler_channel
12053 schoenebeck 940
12054 schoenebeck 575 </p>
12055     <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
12056 schoenebeck 940
12057 schoenebeck 575 </p>
12058     <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
12059 schoenebeck 940
12060 schoenebeck 575 </p>
12061     <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
12062 schoenebeck 940
12063 schoenebeck 575 </p>
12064     <p>/ ENGINE SP INFO SP engine_name
12065 schoenebeck 940
12066 schoenebeck 575 </p>
12067     <p>/ SERVER SP INFO
12068 schoenebeck 940
12069 schoenebeck 575 </p>
12070 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
12071    
12072     </p>
12073 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
12074    
12075     </p>
12076     <p>/ TOTAL_VOICE_COUNT_MAX
12077    
12078     </p>
12079 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
12080 schoenebeck 945
12081     </p>
12082 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
12083 schoenebeck 945
12084     </p>
12085 schoenebeck 974 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
12086    
12087     </p>
12088     <p>/ MIDI_INSTRUMENT_MAPS
12089    
12090     </p>
12091     <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
12092    
12093     </p>
12094 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
12095    
12096     </p>
12097     <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
12098    
12099     </p>
12100 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12101 iliev 1189
12102     </p>
12103 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12104 iliev 1162
12105     </p>
12106 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
12107 iliev 1162
12108     </p>
12109 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12110 iliev 1189
12111     </p>
12112 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
12113 iliev 1162
12114     </p>
12115 schoenebeck 1363 <p>/ DB_INSTRUMENT SP INFO SP db_path
12116 iliev 1162
12117     </p>
12118 iliev 1201 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
12119    
12120     </p>
12121 schoenebeck 1006 <p>/ VOLUME
12122    
12123     </p>
12124 schoenebeck 1801 <p>/ VOICES
12125    
12126     </p>
12127     <p>/ STREAMS
12128    
12129     </p>
12130 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
12131    
12132     </p>
12133     <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
12134    
12135     </p>
12136 schoenebeck 708 </blockquote><p>
12137 schoenebeck 575
12138 schoenebeck 708 </p>
12139 schoenebeck 575 <p>set_instruction =
12140     </p>
12141     <blockquote class="text">
12142     <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12143 schoenebeck 940
12144 schoenebeck 575 </p>
12145     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
12146 schoenebeck 940
12147 schoenebeck 575 </p>
12148     <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12149 schoenebeck 940
12150 schoenebeck 575 </p>
12151 schoenebeck 1363 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
12152    
12153     </p>
12154 schoenebeck 575 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
12155 schoenebeck 940
12156 schoenebeck 575 </p>
12157 schoenebeck 2139 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP VALUE SP effect_instance SP input_control SP control_value
12158    
12159     </p>
12160 schoenebeck 575 <p>/ CHANNEL SP set_chan_instruction
12161 schoenebeck 940
12162 schoenebeck 575 </p>
12163 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
12164    
12165     </p>
12166 iliev 1137 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
12167    
12168     </p>
12169 schoenebeck 1002 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
12170    
12171     </p>
12172 schoenebeck 1028 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
12173    
12174     </p>
12175     <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
12176    
12177     </p>
12178 schoenebeck 2141 <p>/ FX_SEND SP EFFECT SP sampler_channel SP fx_send_id SP effect_chain SP chain_pos
12179 schoenebeck 2139
12180     </p>
12181 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
12182 iliev 1162
12183     </p>
12184 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
12185 iliev 1162
12186     </p>
12187 schoenebeck 1363 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
12188 iliev 1162
12189     </p>
12190 schoenebeck 1363 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
12191 iliev 1162
12192     </p>
12193 iliev 1731 <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
12194    
12195     </p>
12196 schoenebeck 575 <p>/ ECHO SP boolean
12197 schoenebeck 940
12198 schoenebeck 575 </p>
12199 schoenebeck 1006 <p>/ VOLUME SP volume_value
12200    
12201     </p>
12202 schoenebeck 1801 <p>/ VOICES SP number
12203    
12204     </p>
12205     <p>/ STREAMS SP number
12206    
12207     </p>
12208 schoenebeck 708 </blockquote><p>
12209 schoenebeck 575
12210 schoenebeck 708 </p>
12211 schoenebeck 575 <p>create_instruction =
12212     </p>
12213     <blockquote class="text">
12214     <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
12215 schoenebeck 940
12216 schoenebeck 575 </p>
12217     <p>/ AUDIO_OUTPUT_DEVICE SP string
12218 schoenebeck 940
12219 schoenebeck 575 </p>
12220     <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
12221 schoenebeck 940
12222 schoenebeck 575 </p>
12223     <p>/ MIDI_INPUT_DEVICE SP string
12224 schoenebeck 940
12225 schoenebeck 575 </p>
12226 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
12227    
12228     </p>
12229     <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
12230    
12231     </p>
12232 schoenebeck 2139 <p>/ EFFECT_INSTANCE SP effect_index
12233    
12234     </p>
12235     <p>/ EFFECT_INSTANCE SP effect_system SP module SP effect_name
12236    
12237     </p>
12238 schoenebeck 708 </blockquote><p>
12239 schoenebeck 575
12240 schoenebeck 708 </p>
12241 schoenebeck 945 <p>reset_instruction =
12242     </p>
12243     <blockquote class="text">
12244     <p>CHANNEL SP sampler_channel
12245    
12246     </p>
12247     </blockquote><p>
12248    
12249     </p>
12250     <p>clear_instruction =
12251     </p>
12252     <blockquote class="text">
12253 schoenebeck 974 <p>MIDI_INSTRUMENTS SP midi_map
12254 schoenebeck 945
12255     </p>
12256 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
12257    
12258     </p>
12259 schoenebeck 945 </blockquote><p>
12260    
12261     </p>
12262 iliev 1189 <p>find_instruction =
12263     </p>
12264     <blockquote class="text">
12265 schoenebeck 1363 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
12266 iliev 1189
12267     </p>
12268 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
12269 iliev 1189
12270     </p>
12271 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
12272 iliev 1189
12273     </p>
12274 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
12275 iliev 1189
12276     </p>
12277 iliev 1731 <p>/ LOST SP DB_INSTRUMENT_FILES
12278    
12279     </p>
12280 iliev 1189 </blockquote><p>
12281    
12282     </p>
12283 iliev 1162 <p>move_instruction =
12284     </p>
12285     <blockquote class="text">
12286 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12287 iliev 1162
12288     </p>
12289 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
12290 iliev 1162
12291     </p>
12292     </blockquote><p>
12293    
12294     </p>
12295 iliev 1189 <p>copy_instruction =
12296     </p>
12297     <blockquote class="text">
12298 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12299 iliev 1189
12300     </p>
12301 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
12302 iliev 1189
12303     </p>
12304     </blockquote><p>
12305    
12306     </p>
12307 schoenebeck 575 <p>destroy_instruction =
12308     </p>
12309     <blockquote class="text">
12310     <p>AUDIO_OUTPUT_DEVICE SP number
12311 schoenebeck 940
12312 schoenebeck 575 </p>
12313     <p>/ MIDI_INPUT_DEVICE SP number
12314 schoenebeck 940
12315 schoenebeck 575 </p>
12316 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP fx_send_id
12317    
12318     </p>
12319 schoenebeck 2139 <p>/ EFFECT_INSTANCE SP number
12320    
12321     </p>
12322 schoenebeck 708 </blockquote><p>
12323 schoenebeck 575
12324 schoenebeck 708 </p>
12325 schoenebeck 575 <p>load_instruction =
12326     </p>
12327     <blockquote class="text">
12328     <p>INSTRUMENT SP load_instr_args
12329 schoenebeck 940
12330 schoenebeck 575 </p>
12331     <p>/ ENGINE SP load_engine_args
12332 schoenebeck 940
12333 schoenebeck 575 </p>
12334 schoenebeck 708 </blockquote><p>
12335 schoenebeck 575
12336 schoenebeck 708 </p>
12337 schoenebeck 2139 <p>append_instruction =
12338     </p>
12339     <blockquote class="text">
12340     <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP effect_instance
12341    
12342     </p>
12343     </blockquote><p>
12344    
12345     </p>
12346     <p>insert_instruction =
12347     </p>
12348     <blockquote class="text">
12349     <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos SP effect_instance
12350    
12351     </p>
12352     </blockquote><p>
12353    
12354     </p>
12355 schoenebeck 575 <p>set_chan_instruction =
12356     </p>
12357     <blockquote class="text">
12358     <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
12359 schoenebeck 940
12360 schoenebeck 575 </p>
12361     <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
12362 schoenebeck 940
12363 schoenebeck 575 </p>
12364     <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
12365 schoenebeck 940
12366 schoenebeck 575 </p>
12367     <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
12368 schoenebeck 940
12369 schoenebeck 575 </p>
12370     <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
12371 schoenebeck 940
12372 schoenebeck 575 </p>
12373     <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
12374 schoenebeck 940
12375 schoenebeck 575 </p>
12376     <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
12377 schoenebeck 940
12378 schoenebeck 575 </p>
12379     <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
12380 schoenebeck 940
12381 schoenebeck 575 </p>
12382     <p>/ VOLUME SP sampler_channel SP volume_value
12383 schoenebeck 940
12384 schoenebeck 575 </p>
12385 schoenebeck 708 <p>/ MUTE SP sampler_channel SP boolean
12386 schoenebeck 940
12387 schoenebeck 708 </p>
12388     <p>/ SOLO SP sampler_channel SP boolean
12389 schoenebeck 940
12390 schoenebeck 708 </p>
12391 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
12392    
12393     </p>
12394     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
12395    
12396     </p>
12397     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
12398    
12399     </p>
12400 schoenebeck 708 </blockquote><p>
12401    
12402     </p>
12403 schoenebeck 1251 <p>edit_instruction =
12404     </p>
12405     <blockquote class="text">
12406 schoenebeck 1430 <p>CHANNEL SP INSTRUMENT SP sampler_channel
12407 schoenebeck 1251
12408     </p>
12409     </blockquote><p>
12410    
12411     </p>
12412 schoenebeck 1363 <p>format_instruction =
12413     </p>
12414     <blockquote class="text">
12415     <p>INSTRUMENTS_DB
12416    
12417     </p>
12418     </blockquote><p>
12419    
12420     </p>
12421 schoenebeck 1048 <p>modal_arg =
12422     </p>
12423     <blockquote class="text">
12424     <p>/* epsilon (empty argument) */
12425    
12426     </p>
12427     <p>/ NON_MODAL SP
12428    
12429     </p>
12430     </blockquote><p>
12431    
12432     </p>
12433 schoenebeck 575 <p>key_val_list =
12434     </p>
12435     <blockquote class="text">
12436     <p>string '=' param_val_list
12437 schoenebeck 940
12438 schoenebeck 575 </p>
12439     <p>/ key_val_list SP string '=' param_val_list
12440 schoenebeck 940
12441 schoenebeck 575 </p>
12442 schoenebeck 708 </blockquote><p>
12443 schoenebeck 575
12444 schoenebeck 708 </p>
12445 schoenebeck 575 <p>buffer_size_type =
12446     </p>
12447     <blockquote class="text">
12448     <p>BYTES
12449 schoenebeck 940
12450 schoenebeck 575 </p>
12451     <p>/ PERCENTAGE
12452 schoenebeck 940
12453 schoenebeck 575 </p>
12454 schoenebeck 708 </blockquote><p>
12455 schoenebeck 575
12456 schoenebeck 708 </p>
12457 schoenebeck 575 <p>list_instruction =
12458     </p>
12459     <blockquote class="text">
12460     <p>AUDIO_OUTPUT_DEVICES
12461 schoenebeck 940
12462 schoenebeck 575 </p>
12463     <p>/ MIDI_INPUT_DEVICES
12464 schoenebeck 940
12465 schoenebeck 575 </p>
12466     <p>/ CHANNELS
12467 schoenebeck 940
12468 schoenebeck 575 </p>
12469     <p>/ AVAILABLE_ENGINES
12470 schoenebeck 940
12471 schoenebeck 575 </p>
12472 schoenebeck 2139 <p>/ AVAILABLE_EFFECTS
12473    
12474     </p>
12475     <p>/ EFFECT_INSTANCES
12476    
12477     </p>
12478     <p>/ SEND_EFFECT_CHAINS SP number
12479    
12480     </p>
12481 schoenebeck 575 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12482 schoenebeck 940
12483 schoenebeck 575 </p>
12484     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12485 schoenebeck 940
12486 schoenebeck 575 </p>
12487 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
12488 schoenebeck 945
12489     </p>
12490 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
12491    
12492     </p>
12493     <p>/ MIDI_INSTRUMENT_MAPS
12494    
12495     </p>
12496 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
12497    
12498     </p>
12499 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12500 iliev 1189
12501     </p>
12502 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12503 iliev 1162
12504     </p>
12505 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12506 iliev 1189
12507     </p>
12508 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
12509 iliev 1162
12510     </p>
12511 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
12512    
12513     </p>
12514 schoenebeck 708 </blockquote><p>
12515 schoenebeck 575
12516 schoenebeck 708 </p>
12517 iliev 1773 <p>send_instruction =
12518     </p>
12519     <blockquote class="text">
12520     <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
12521    
12522     </p>
12523     </blockquote><p>
12524    
12525     </p>
12526 schoenebeck 575 <p>load_instr_args =
12527     </p>
12528     <blockquote class="text">
12529     <p>filename SP instrument_index SP sampler_channel
12530 schoenebeck 940
12531 schoenebeck 575 </p>
12532     <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
12533 schoenebeck 940
12534 schoenebeck 575 </p>
12535 schoenebeck 708 </blockquote><p>
12536 schoenebeck 575
12537 schoenebeck 708 </p>
12538 schoenebeck 575 <p>load_engine_args =
12539     </p>
12540     <blockquote class="text">
12541     <p>engine_name SP sampler_channel
12542 schoenebeck 940
12543 schoenebeck 575 </p>
12544 schoenebeck 708 </blockquote><p>
12545 schoenebeck 575
12546 schoenebeck 708 </p>
12547 schoenebeck 945 <p>instr_load_mode =
12548     </p>
12549     <blockquote class="text">
12550     <p>ON_DEMAND
12551    
12552     </p>
12553     <p>/ ON_DEMAND_HOLD
12554    
12555     </p>
12556     <p>/ PERSISTENT
12557    
12558     </p>
12559     </blockquote><p>
12560    
12561     </p>
12562 schoenebeck 2139 <p>effect_instance =
12563     </p>
12564     <blockquote class="text">
12565     <p>number
12566    
12567     </p>
12568     </blockquote><p>
12569    
12570     </p>
12571 schoenebeck 575 <p>device_index =
12572     </p>
12573     <blockquote class="text">
12574     <p>number
12575 schoenebeck 940
12576 schoenebeck 575 </p>
12577 schoenebeck 708 </blockquote><p>
12578 schoenebeck 575
12579 schoenebeck 708 </p>
12580 schoenebeck 575 <p>audio_channel_index =
12581     </p>
12582     <blockquote class="text">
12583     <p>number
12584 schoenebeck 940
12585 schoenebeck 575 </p>
12586 schoenebeck 708 </blockquote><p>
12587 schoenebeck 575
12588 schoenebeck 708 </p>
12589 schoenebeck 575 <p>audio_output_type_name =
12590     </p>
12591     <blockquote class="text">
12592     <p>string
12593 schoenebeck 940
12594 schoenebeck 575 </p>
12595 schoenebeck 708 </blockquote><p>
12596 schoenebeck 575
12597 schoenebeck 708 </p>
12598 schoenebeck 575 <p>midi_input_port_index =
12599     </p>
12600     <blockquote class="text">
12601     <p>number
12602 schoenebeck 940
12603 schoenebeck 575 </p>
12604 schoenebeck 708 </blockquote><p>
12605 schoenebeck 575
12606 schoenebeck 708 </p>
12607 schoenebeck 575 <p>midi_input_channel_index =
12608     </p>
12609     <blockquote class="text">
12610     <p>number
12611 schoenebeck 940
12612 schoenebeck 575 </p>
12613     <p>/ ALL
12614 schoenebeck 940
12615 schoenebeck 575 </p>
12616 schoenebeck 708 </blockquote><p>
12617 schoenebeck 575
12618 schoenebeck 708 </p>
12619 schoenebeck 575 <p>midi_input_type_name =
12620     </p>
12621     <blockquote class="text">
12622     <p>string
12623 schoenebeck 940
12624 schoenebeck 575 </p>
12625 schoenebeck 708 </blockquote><p>
12626 schoenebeck 575
12627 schoenebeck 708 </p>
12628 schoenebeck 974 <p>midi_map =
12629 schoenebeck 945 </p>
12630     <blockquote class="text">
12631     <p>number
12632    
12633     </p>
12634     </blockquote><p>
12635    
12636     </p>
12637 schoenebeck 974 <p>midi_bank =
12638 schoenebeck 945 </p>
12639     <blockquote class="text">
12640     <p>number
12641    
12642     </p>
12643     </blockquote><p>
12644    
12645     </p>
12646     <p>midi_prog =
12647     </p>
12648     <blockquote class="text">
12649     <p>number
12650    
12651     </p>
12652     </blockquote><p>
12653    
12654     </p>
12655 schoenebeck 1002 <p>midi_ctrl =
12656     </p>
12657     <blockquote class="text">
12658     <p>number
12659    
12660     </p>
12661     </blockquote><p>
12662    
12663     </p>
12664 schoenebeck 575 <p>volume_value =
12665     </p>
12666     <blockquote class="text">
12667     <p>dotnum
12668 schoenebeck 940
12669 schoenebeck 575 </p>
12670     <p>/ number
12671 schoenebeck 940
12672 schoenebeck 575 </p>
12673 schoenebeck 708 </blockquote><p>
12674 schoenebeck 575
12675 schoenebeck 708 </p>
12676 schoenebeck 2139 <p>control_value =
12677     </p>
12678     <blockquote class="text">
12679     <p>real
12680    
12681     </p>
12682     </blockquote><p>
12683    
12684     </p>
12685 schoenebeck 575 <p>sampler_channel =
12686     </p>
12687     <blockquote class="text">
12688     <p>number
12689 schoenebeck 940
12690 schoenebeck 575 </p>
12691 schoenebeck 708 </blockquote><p>
12692 schoenebeck 575
12693 schoenebeck 708 </p>
12694 schoenebeck 575 <p>instrument_index =
12695     </p>
12696     <blockquote class="text">
12697     <p>number
12698 schoenebeck 940
12699 schoenebeck 575 </p>
12700 schoenebeck 708 </blockquote><p>
12701 schoenebeck 575
12702 schoenebeck 708 </p>
12703 schoenebeck 1002 <p>fx_send_id =
12704     </p>
12705     <blockquote class="text">
12706     <p>number
12707    
12708     </p>
12709     </blockquote><p>
12710    
12711     </p>
12712 schoenebeck 575 <p>engine_name =
12713     </p>
12714     <blockquote class="text">
12715     <p>string
12716 schoenebeck 940
12717 schoenebeck 575 </p>
12718 schoenebeck 708 </blockquote><p>
12719 schoenebeck 575
12720 schoenebeck 708 </p>
12721 schoenebeck 1363 <p>filename =
12722 iliev 1162 </p>
12723     <blockquote class="text">
12724 schoenebeck 1363 <p>path
12725 iliev 1162
12726     </p>
12727     </blockquote><p>
12728    
12729     </p>
12730 schoenebeck 1363 <p>db_path =
12731 iliev 1162 </p>
12732     <blockquote class="text">
12733 schoenebeck 1363 <p>path
12734 iliev 1162
12735     </p>
12736     </blockquote><p>
12737    
12738     </p>
12739 schoenebeck 974 <p>map_name =
12740     </p>
12741     <blockquote class="text">
12742 schoenebeck 1390 <p>stringval_escaped
12743 schoenebeck 974
12744     </p>
12745     </blockquote><p>
12746    
12747     </p>
12748 schoenebeck 945 <p>entry_name =
12749     </p>
12750     <blockquote class="text">
12751 schoenebeck 1390 <p>stringval_escaped
12752 schoenebeck 945
12753     </p>
12754     </blockquote><p>
12755    
12756     </p>
12757 schoenebeck 1002 <p>fx_send_name =
12758     </p>
12759     <blockquote class="text">
12760 schoenebeck 1390 <p>stringval_escaped
12761 schoenebeck 1002
12762     </p>
12763     </blockquote><p>
12764    
12765     </p>
12766 schoenebeck 2139 <p>effect_name =
12767     </p>
12768     <blockquote class="text">
12769     <p>stringval_escaped
12770    
12771     </p>
12772     </blockquote><p>
12773    
12774     </p>
12775     <p>effect_index =
12776     </p>
12777     <blockquote class="text">
12778     <p>number
12779    
12780     </p>
12781     </blockquote><p>
12782    
12783     </p>
12784     <p>effect_chain =
12785     </p>
12786     <blockquote class="text">
12787     <p>number
12788    
12789     </p>
12790     </blockquote><p>
12791    
12792     </p>
12793     <p>chain_pos =
12794     </p>
12795     <blockquote class="text">
12796     <p>number
12797    
12798     </p>
12799     </blockquote><p>
12800    
12801     </p>
12802     <p>input_control =
12803     </p>
12804     <blockquote class="text">
12805     <p>number
12806    
12807     </p>
12808     </blockquote><p>
12809    
12810     </p>
12811 schoenebeck 575 <p>param_val_list =
12812     </p>
12813     <blockquote class="text">
12814     <p>param_val
12815 schoenebeck 940
12816 schoenebeck 575 </p>
12817     <p>/ param_val_list','param_val
12818 schoenebeck 940
12819 schoenebeck 575 </p>
12820 schoenebeck 708 </blockquote><p>
12821 schoenebeck 575
12822 schoenebeck 708 </p>
12823 schoenebeck 575 <p>param_val =
12824     </p>
12825     <blockquote class="text">
12826     <p>string
12827 schoenebeck 940
12828 schoenebeck 575 </p>
12829 schoenebeck 940 <p>/ stringval
12830    
12831 schoenebeck 575 </p>
12832     <p>/ number
12833 schoenebeck 940
12834 schoenebeck 575 </p>
12835     <p>/ dotnum
12836 schoenebeck 940
12837 schoenebeck 575 </p>
12838 schoenebeck 708 </blockquote><p>
12839 schoenebeck 575
12840 schoenebeck 708 </p>
12841 iliev 1189 <p>query_val_list =
12842     </p>
12843     <blockquote class="text">
12844     <p>string '=' query_val
12845    
12846     </p>
12847     <p>/ query_val_list SP string '=' query_val
12848    
12849     </p>
12850     </blockquote><p>
12851    
12852     </p>
12853     <p>query_val =
12854     </p>
12855     <blockquote class="text">
12856 schoenebeck 1390 <p>text_escaped
12857 iliev 1189
12858     </p>
12859 schoenebeck 1363 <p>/ stringval_escaped
12860 iliev 1189
12861     </p>
12862     </blockquote><p>
12863    
12864     </p>
12865 iliev 1201 <p>scan_mode =
12866     </p>
12867     <blockquote class="text">
12868     <p>RECURSIVE
12869    
12870     </p>
12871     <p>/ NON_RECURSIVE
12872    
12873     </p>
12874     <p>/ FLAT
12875    
12876     </p>
12877     </blockquote><p>
12878    
12879     </p>
12880 schoenebeck 2139 <p>effect_system =
12881     </p>
12882     <blockquote class="text">
12883     <p>string
12884    
12885     </p>
12886     </blockquote><p>
12887    
12888     </p>
12889     <p>module =
12890     </p>
12891     <blockquote class="text">
12892     <p>filename
12893    
12894     </p>
12895     </blockquote><p>
12896    
12897     </p>
12898 schoenebeck 1251 <a name="character_set"></a><br /><hr />
12899     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
12900     <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
12901     Character Set and Escape Sequences</h3>
12902    
12903     <p>Older versions of this protocol up to and including v1.1 only
12904     supported the standard ASCII character set (ASCII code 0 - 127)
12905     <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
12906     however support the Extended ASCII character set (ASCII code
12907     0 - 255). The same group of younger protocols also support
12908     escape sequences, but only for certain, explicitly declared
12909     parts of the protocol. The supported escape sequences are
12910     defined as follows:
12911     </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
12912     <col align="left"><col align="left">
12913     <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
12914     <tr>
12915     <td align="left">\n</td>
12916     <td align="left">new line</td>
12917     </tr>
12918     <tr>
12919     <td align="left">\r</td>
12920     <td align="left">carriage return</td>
12921     </tr>
12922     <tr>
12923     <td align="left">\f</td>
12924     <td align="left">form feed</td>
12925     </tr>
12926     <tr>
12927     <td align="left">\t</td>
12928     <td align="left">horizontal tab</td>
12929     </tr>
12930     <tr>
12931     <td align="left">\v</td>
12932     <td align="left">vertical tab</td>
12933     </tr>
12934     <tr>
12935     <td align="left">\'</td>
12936     <td align="left">apostrophe</td>
12937     </tr>
12938     <tr>
12939     <td align="left">\"</td>
12940     <td align="left">quotation mark</td>
12941     </tr>
12942     <tr>
12943     <td align="left">\\</td>
12944     <td align="left">backslash</td>
12945     </tr>
12946     <tr>
12947     <td align="left">\OOO</td>
12948     <td align="left">three digit octal ASCII code of the character</td>
12949     </tr>
12950     <tr>
12951     <td align="left">\xHH</td>
12952     <td align="left">two digit hex ASCII code of the character</td>
12953     </tr>
12954     </table>
12955 schoenebeck 1801 <br clear="all" />
12956 schoenebeck 1251
12957     <p>Notice: due to the transition of certain parts of the
12958     protocol which now support escape sequences, a slight backward
12959     incompatibility to protocols version v1.1 and younger has been
12960     introduced. The only difference is that in parts of the protocol
12961     where escape characters are now supported, a backslash characters
12962     MUST be escaped as well (that is as double backslash), whereas
12963     in the old versions a single backslash was sufficient.
12964     </p>
12965 schoenebeck 1390 <p>The following LSCP commands support escape sequences as part
12966 schoenebeck 1400 of their filename / path based arguments and / or may contain
12967     a filename / path with escape sequences in their response:
12968 schoenebeck 1390 </p>
12969     <blockquote class="text">
12970     <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
12971     </p>
12972 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>
12973     </p>
12974 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>
12975     </p>
12976 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>
12977     </p>
12978 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>
12979     </p>
12980     <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>
12981     </p>
12982     <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>
12983     </p>
12984     <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
12985     </p>
12986     <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>
12987     </p>
12988     <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>
12989     </p>
12990     <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>
12991     </p>
12992     <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
12993     </p>
12994     <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>
12995     </p>
12996     <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>
12997     </p>
12998     <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>
12999     </p>
13000     <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>
13001     </p>
13002     <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>
13003     </p>
13004     <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>
13005     </p>
13006     <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13007     </p>
13008     <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
13009     </p>
13010     <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
13011     </p>
13012     <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>
13013     </p>
13014     <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
13015     </p>
13016     <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>
13017     </p>
13018 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>
13019     </p>
13020     <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>
13021     </p>
13022 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>
13023     </p>
13024     <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>
13025     </p>
13026     <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>
13027     </p>
13028 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>
13029     </p>
13030     <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>
13031     </p>
13032     <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>
13033     </p>
13034 schoenebeck 1390 </blockquote><p>
13035     Note that the forward slash character ('/') has a special meaning in
13036     filename / path based arguments: it acts as separator of the nodes in
13037     the path, thus if a directory- or filename includes a forward slash
13038     (not intended as path node separator), you MUST escape that slash
13039     either with the respective hex escape sequence ("\x2f") or with the
13040     respective octal escape sequence ("\057").
13041    
13042     </p>
13043     <p>
13044 schoenebeck 1572 Note for Windows: file path arguments in LSCP are expected
13045     to use forward slashes as directory node separator similar
13046     to Unix based operating systems. In contrast to Unix however
13047     a Windows typical drive character is expected to be
13048     prefixed to the path. That is an original Windows file path
13049     like "D:\Sounds\My.gig" would become in LSCP:
13050     "D:/Sounds/My.gig".
13051    
13052     </p>
13053     <p>
13054 schoenebeck 1390 The following LSCP commands even support escape sequences as
13055     part of at least one of their text-based arguments (i.e. entity name,
13056 schoenebeck 1400 description) and / or may contain escape sequences in at least one of
13057     their text-based fields in their response:
13058 schoenebeck 1390 </p>
13059     <blockquote class="text">
13060 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>
13061     </p>
13062     <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>
13063     </p>
13064     <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13065     </p>
13066     <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>
13067     </p>
13068     <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>
13069     </p>
13070     <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>
13071     </p>
13072     <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>
13073     </p>
13074     <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>
13075     </p>
13076 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>
13077     </p>
13078     <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>
13079     </p>
13080     <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>
13081     </p>
13082 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>
13083     </p>
13084 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>
13085     </p>
13086     <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>
13087     </p>
13088 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>
13089     </p>
13090 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>
13091     </p>
13092 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>
13093     </p>
13094     <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>
13095     </p>
13096 schoenebeck 1400 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13097 schoenebeck 1390 </p>
13098 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>
13099     </p>
13100     <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>
13101     </p>
13102     <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>
13103     </p>
13104 schoenebeck 1390 </blockquote><p>
13105     Please note that these lists are manually maintained. If you
13106     find a command that also supports escape sequences we forgot to
13107     mention here, please report it!
13108    
13109     </p>
13110 senoner 542 <a name="events"></a><br /><hr />
13111 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13112     <a name="rfc.section.8"></a><h3>8.&nbsp;
13113     Events</h3>
13114 senoner 542
13115     <p>This chapter will describe all currently defined events supported by LinuxSampler.
13116     </p>
13117 iliev 992 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
13118 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13119     <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
13120 iliev 992 Number of audio output devices changed</h3>
13121    
13122     <p>Client may want to be notified when the total number of audio output devices on the
13123     back-end changes by issuing the following command:
13124     </p>
13125     <p>
13126     </p>
13127     <blockquote class="text">
13128     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
13129     </p>
13130     </blockquote><p>
13131    
13132     </p>
13133     <p>Server will start sending the following notification messages:
13134     </p>
13135     <p>
13136     </p>
13137     <blockquote class="text">
13138     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
13139     </p>
13140     </blockquote><p>
13141    
13142     </p>
13143     <p>where &lt;devices&gt; will be replaced by the new number
13144     of audio output devices.
13145     </p>
13146     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
13147     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13148     <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
13149     Audio output device's settings changed</h3>
13150    
13151     <p>Client may want to be notified when changes were made to audio output devices on the
13152     back-end by issuing the following command:
13153     </p>
13154     <p>
13155     </p>
13156     <blockquote class="text">
13157     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
13158     </p>
13159     </blockquote><p>
13160    
13161     </p>
13162     <p>Server will start sending the following notification messages:
13163     </p>
13164     <p>
13165     </p>
13166     <blockquote class="text">
13167     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
13168     </p>
13169     </blockquote><p>
13170    
13171     </p>
13172     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
13173     which settings has been changed. The front-end will have to send
13174     the respective command to actually get the audio output device info. Because these messages
13175     will be triggered by LSCP commands issued by other clients rather than real
13176     time events happening on the server, it is believed that an empty notification
13177     message is sufficient here.
13178     </p>
13179     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
13180     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13181     <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
13182     Number of MIDI input devices changed</h3>
13183    
13184     <p>Client may want to be notified when the total number of MIDI input devices on the
13185     back-end changes by issuing the following command:
13186     </p>
13187     <p>
13188     </p>
13189     <blockquote class="text">
13190     <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
13191     </p>
13192     </blockquote><p>
13193    
13194     </p>
13195     <p>Server will start sending the following notification messages:
13196     </p>
13197     <p>
13198     </p>
13199     <blockquote class="text">
13200     <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
13201     </p>
13202     </blockquote><p>
13203    
13204     </p>
13205     <p>where &lt;devices&gt; will be replaced by the new number
13206     of MIDI input devices.
13207     </p>
13208     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
13209     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13210     <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
13211     MIDI input device's settings changed</h3>
13212    
13213     <p>Client may want to be notified when changes were made to MIDI input devices on the
13214     back-end by issuing the following command:
13215     </p>
13216     <p>
13217     </p>
13218     <blockquote class="text">
13219     <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
13220     </p>
13221     </blockquote><p>
13222    
13223     </p>
13224     <p>Server will start sending the following notification messages:
13225     </p>
13226     <p>
13227     </p>
13228     <blockquote class="text">
13229     <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
13230     </p>
13231     </blockquote><p>
13232    
13233     </p>
13234     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
13235     which settings has been changed. The front-end will have to send
13236     the respective command to actually get the MIDI input device info. Because these messages
13237     will be triggered by LSCP commands issued by other clients rather than real
13238     time events happening on the server, it is believed that an empty notification
13239     message is sufficient here.
13240     </p>
13241     <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
13242     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13243     <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
13244 schoenebeck 974 Number of sampler channels changed</h3>
13245 senoner 542
13246     <p>Client may want to be notified when the total number of channels on the
13247     back-end changes by issuing the following command:
13248     </p>
13249 schoenebeck 708 <p>
13250     </p>
13251 senoner 542 <blockquote class="text">
13252 schoenebeck 558 <p>SUBSCRIBE CHANNEL_COUNT
13253 senoner 542 </p>
13254 schoenebeck 708 </blockquote><p>
13255 schoenebeck 940
13256 schoenebeck 708 </p>
13257 senoner 542 <p>Server will start sending the following notification messages:
13258     </p>
13259 schoenebeck 708 <p>
13260     </p>
13261 senoner 542 <blockquote class="text">
13262 schoenebeck 558 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
13263 senoner 542 </p>
13264 schoenebeck 708 </blockquote><p>
13265 schoenebeck 940
13266 schoenebeck 708 </p>
13267 senoner 542 <p>where &lt;channels&gt; will be replaced by the new number
13268     of sampler channels.
13269     </p>
13270 schoenebeck 1685 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
13271     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13272     <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
13273     MIDI data on a sampler channel arrived</h3>
13274    
13275     <p>Client may want to be notified when MIDI data arrive on sampler channels on
13276     back-end side, by issuing the following command:
13277     </p>
13278     <p>
13279     </p>
13280     <blockquote class="text">
13281     <p>SUBSCRIBE CHANNEL_MIDI
13282     </p>
13283     </blockquote><p>
13284    
13285     </p>
13286     <p>Server will start sending one of the the following notification messages:
13287     </p>
13288     <p>
13289     </p>
13290     <blockquote class="text">
13291     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13292     </p>
13293     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13294     </p>
13295     </blockquote><p>
13296    
13297     </p>
13298     <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
13299     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13300     0 .. 127, reflecting the analog meaning of the MIDI specification.
13301    
13302     </p>
13303     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13304     delivered by this mechanism! With other words: events could be lost at any time!
13305     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13306     thread unaffected by this feature.
13307     </p>
13308 schoenebeck 1696 <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
13309     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13310     <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
13311     MIDI data on a MIDI input device arrived</h3>
13312    
13313     <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
13314     </p>
13315     <p>
13316     </p>
13317     <blockquote class="text">
13318     <p>SUBSCRIBE DEVICE_MIDI
13319     </p>
13320     </blockquote><p>
13321    
13322     </p>
13323     <p>Server will start sending one of the the following notification messages:
13324     </p>
13325     <p>
13326     </p>
13327     <blockquote class="text">
13328 iliev 1731 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13329 schoenebeck 1696 </p>
13330 iliev 1731 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13331 schoenebeck 1696 </p>
13332     </blockquote><p>
13333    
13334     </p>
13335     <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
13336     by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
13337     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13338     0 .. 127, reflecting the analog meaning of the MIDI specification.
13339    
13340     </p>
13341     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13342     delivered by this mechanism! With other words: events could be lost at any time!
13343     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13344     thread unaffected by this feature.
13345     </p>
13346 schoenebeck 940 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
13347 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13348 schoenebeck 1696 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
13349 schoenebeck 974 Number of active voices changed</h3>
13350 senoner 542
13351     <p>Client may want to be notified when the number of voices on the
13352     back-end changes by issuing the following command:
13353     </p>
13354 schoenebeck 708 <p>
13355     </p>
13356 senoner 542 <blockquote class="text">
13357     <p>SUBSCRIBE VOICE_COUNT
13358     </p>
13359 schoenebeck 708 </blockquote><p>
13360 schoenebeck 940
13361 schoenebeck 708 </p>
13362 senoner 542 <p>Server will start sending the following notification messages:
13363     </p>
13364 schoenebeck 708 <p>
13365     </p>
13366 senoner 542 <blockquote class="text">
13367 iliev 1110 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
13368 senoner 542 </p>
13369 schoenebeck 708 </blockquote><p>
13370 schoenebeck 940
13371 schoenebeck 708 </p>
13372 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13373     voice count change occurred and &lt;voices&gt; by the new number of
13374     active voices on that channel.
13375     </p>
13376 schoenebeck 940 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
13377 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13378 schoenebeck 1696 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
13379 schoenebeck 974 Number of active disk streams changed</h3>
13380 senoner 542
13381     <p>Client may want to be notified when the number of streams on the back-end
13382     changes by issuing the following command: SUBSCRIBE STREAM_COUNT
13383     </p>
13384 schoenebeck 708 <p>
13385     </p>
13386 senoner 542 <blockquote class="text">
13387     <p>SUBSCRIBE STREAM_COUNT
13388     </p>
13389 schoenebeck 708 </blockquote><p>
13390 schoenebeck 940
13391 schoenebeck 708 </p>
13392 senoner 542 <p>Server will start sending the following notification messages:
13393     </p>
13394 schoenebeck 708 <p>
13395     </p>
13396 senoner 542 <blockquote class="text">
13397     <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
13398     </p>
13399 schoenebeck 708 </blockquote><p>
13400 schoenebeck 940
13401 schoenebeck 708 </p>
13402 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13403     stream count change occurred and &lt;streams&gt; by the new number of
13404     active disk streams on that channel.
13405     </p>
13406 schoenebeck 940 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
13407 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13408 schoenebeck 1696 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
13409 schoenebeck 974 Disk stream buffer fill state changed</h3>
13410 senoner 542
13411     <p>Client may want to be notified when the buffer fill state of a disk stream
13412     on the back-end changes by issuing the following command:
13413     </p>
13414 schoenebeck 708 <p>
13415     </p>
13416 senoner 542 <blockquote class="text">
13417     <p>SUBSCRIBE BUFFER_FILL
13418     </p>
13419 schoenebeck 708 </blockquote><p>
13420 schoenebeck 940
13421 schoenebeck 708 </p>
13422 senoner 542 <p>Server will start sending the following notification messages:
13423     </p>
13424 schoenebeck 708 <p>
13425     </p>
13426 senoner 542 <blockquote class="text">
13427     <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
13428     </p>
13429 schoenebeck 708 </blockquote><p>
13430 schoenebeck 940
13431 schoenebeck 708 </p>
13432 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13433     buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
13434 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>
13435     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.
13436 senoner 542 </p>
13437 iliev 992 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
13438 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13439 schoenebeck 1696 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
13440 schoenebeck 974 Channel information changed</h3>
13441 senoner 542
13442     <p>Client may want to be notified when changes were made to sampler channels on the
13443 schoenebeck 561 back-end by issuing the following command:
13444 senoner 542 </p>
13445 schoenebeck 708 <p>
13446     </p>
13447 senoner 542 <blockquote class="text">
13448 schoenebeck 558 <p>SUBSCRIBE CHANNEL_INFO
13449 senoner 542 </p>
13450 schoenebeck 708 </blockquote><p>
13451 schoenebeck 940
13452 schoenebeck 708 </p>
13453 senoner 542 <p>Server will start sending the following notification messages:
13454     </p>
13455 schoenebeck 708 <p>
13456     </p>
13457 senoner 542 <blockquote class="text">
13458 schoenebeck 558 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
13459 senoner 542 </p>
13460 schoenebeck 708 </blockquote><p>
13461 schoenebeck 940
13462 schoenebeck 708 </p>
13463 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13464     channel info change occurred. The front-end will have to send
13465     the respective command to actually get the channel info. Because these messages
13466     will be triggered by LSCP commands issued by other clients rather than real
13467     time events happening on the server, it is believed that an empty notification
13468     message is sufficient here.
13469     </p>
13470 iliev 1110 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
13471     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13472 schoenebeck 1696 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
13473 iliev 1110 Number of effect sends changed</h3>
13474    
13475 schoenebeck 1251 <p>Client may want to be notified when the number of effect sends on
13476 iliev 1110 a particular sampler channel is changed by issuing the following command:
13477     </p>
13478     <p>
13479     </p>
13480     <blockquote class="text">
13481     <p>SUBSCRIBE FX_SEND_COUNT
13482     </p>
13483     </blockquote><p>
13484    
13485     </p>
13486     <p>Server will start sending the following notification messages:
13487     </p>
13488     <p>
13489     </p>
13490     <blockquote class="text">
13491     <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
13492     </p>
13493     </blockquote><p>
13494    
13495     </p>
13496     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13497     channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
13498     be replaced by the new number of effect sends on that channel.
13499     </p>
13500     <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
13501     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13502 schoenebeck 1696 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
13503 iliev 1110 Effect send information changed</h3>
13504    
13505     <p>Client may want to be notified when changes were made to effect sends on a
13506     a particular sampler channel by issuing the following command:
13507     </p>
13508     <p>
13509     </p>
13510     <blockquote class="text">
13511     <p>SUBSCRIBE FX_SEND_INFO
13512     </p>
13513     </blockquote><p>
13514    
13515     </p>
13516     <p>Server will start sending the following notification messages:
13517     </p>
13518     <p>
13519     </p>
13520     <blockquote class="text">
13521     <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
13522     </p>
13523     </blockquote><p>
13524    
13525     </p>
13526     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13527     channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
13528     be replaced by the numerical ID of the changed effect send.
13529     </p>
13530 schoenebeck 940 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
13531 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13532 schoenebeck 1696 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
13533 schoenebeck 974 Total number of active voices changed</h3>
13534 senoner 542
13535 schoenebeck 940 <p>Client may want to be notified when the total number of voices on the
13536     back-end changes by issuing the following command:
13537     </p>
13538     <p>
13539     </p>
13540     <blockquote class="text">
13541     <p>SUBSCRIBE TOTAL_VOICE_COUNT
13542     </p>
13543     </blockquote><p>
13544    
13545     </p>
13546     <p>Server will start sending the following notification messages:
13547     </p>
13548     <p>
13549     </p>
13550     <blockquote class="text">
13551 iliev 1110 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
13552 schoenebeck 940 </p>
13553     </blockquote><p>
13554    
13555     </p>
13556     <p>where &lt;voices&gt; will be replaced by the new number of
13557     all currently active voices.
13558     </p>
13559 schoenebeck 1572 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
13560     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13561 schoenebeck 1696 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
13562 schoenebeck 1572 Total number of active disk streams changed</h3>
13563    
13564     <p>Client may want to be notified when the total number of disk streams on the
13565     back-end changes by issuing the following command:
13566     </p>
13567     <p>
13568     </p>
13569     <blockquote class="text">
13570     <p>SUBSCRIBE TOTAL_STREAM_COUNT
13571     </p>
13572     </blockquote><p>
13573    
13574     </p>
13575     <p>Server will start sending the following notification messages:
13576     </p>
13577     <p>
13578     </p>
13579     <blockquote class="text">
13580     <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
13581     </p>
13582     </blockquote><p>
13583    
13584     </p>
13585     <p>where &lt;streams&gt; will be replaced by the new number of
13586     all currently active disk streams.
13587     </p>
13588 iliev 992 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
13589     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13590 schoenebeck 1696 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
13591 iliev 992 Number of MIDI instrument maps changed</h3>
13592    
13593     <p>Client may want to be notified when the number of MIDI instrument maps on the
13594     back-end changes by issuing the following command:
13595     </p>
13596     <p>
13597     </p>
13598     <blockquote class="text">
13599     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
13600     </p>
13601     </blockquote><p>
13602    
13603     </p>
13604     <p>Server will start sending the following notification messages:
13605     </p>
13606     <p>
13607     </p>
13608     <blockquote class="text">
13609     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
13610     </p>
13611     </blockquote><p>
13612    
13613     </p>
13614     <p>where &lt;maps&gt; will be replaced by the new number
13615     of MIDI instrument maps.
13616     </p>
13617     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
13618     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13619 schoenebeck 1696 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
13620 iliev 992 MIDI instrument map information changed</h3>
13621    
13622     <p>Client may want to be notified when changes were made to MIDI instrument maps on the
13623     back-end by issuing the following command:
13624     </p>
13625     <p>
13626     </p>
13627     <blockquote class="text">
13628     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
13629     </p>
13630     </blockquote><p>
13631    
13632     </p>
13633     <p>Server will start sending the following notification messages:
13634     </p>
13635     <p>
13636     </p>
13637     <blockquote class="text">
13638     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
13639     </p>
13640     </blockquote><p>
13641    
13642     </p>
13643     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13644     for which information changes occurred. The front-end will have to send
13645     the respective command to actually get the MIDI instrument map info. Because these messages
13646     will be triggered by LSCP commands issued by other clients rather than real
13647     time events happening on the server, it is believed that an empty notification
13648     message is sufficient here.
13649     </p>
13650     <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
13651     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13652 schoenebeck 1696 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
13653 iliev 992 Number of MIDI instruments changed</h3>
13654    
13655     <p>Client may want to be notified when the number of MIDI instrument maps on the
13656     back-end changes by issuing the following command:
13657     </p>
13658     <p>
13659     </p>
13660     <blockquote class="text">
13661     <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
13662     </p>
13663     </blockquote><p>
13664    
13665     </p>
13666     <p>Server will start sending the following notification messages:
13667     </p>
13668     <p>
13669     </p>
13670     <blockquote class="text">
13671     <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
13672     </p>
13673     </blockquote><p>
13674    
13675     </p>
13676     <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
13677     the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
13678     the new number of MIDI instruments in the specified map.
13679     </p>
13680     <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
13681     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13682 schoenebeck 1696 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
13683 iliev 992 MIDI instrument information changed</h3>
13684    
13685     <p>Client may want to be notified when changes were made to MIDI instruments on the
13686     back-end by issuing the following command:
13687     </p>
13688     <p>
13689     </p>
13690     <blockquote class="text">
13691     <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
13692     </p>
13693     </blockquote><p>
13694    
13695     </p>
13696     <p>Server will start sending the following notification messages:
13697     </p>
13698     <p>
13699     </p>
13700     <blockquote class="text">
13701     <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
13702     </p>
13703     </blockquote><p>
13704    
13705     </p>
13706     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13707     in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
13708     the location of the changed MIDI instrument in the map. The front-end will have to send
13709     the respective command to actually get the MIDI instrument info. Because these messages
13710     will be triggered by LSCP commands issued by other clients rather than real
13711     time events happening on the server, it is believed that an empty notification
13712     message is sufficient here.
13713     </p>
13714 iliev 1110 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
13715     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13716 schoenebeck 1696 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
13717 iliev 1110 Global settings changed</h3>
13718    
13719     <p>Client may want to be notified when changes to the global settings
13720     of the sampler were made by issuing the following command:
13721     </p>
13722     <p>
13723     </p>
13724     <blockquote class="text">
13725     <p>SUBSCRIBE GLOBAL_INFO
13726     </p>
13727     </blockquote><p>
13728    
13729     </p>
13730     <p>Server will start sending the following types of notification messages:
13731     </p>
13732     <p>
13733     </p>
13734     <blockquote class="text">
13735     <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
13736     golbal volume of the sampler is changed, where &lt;volume&gt; will be
13737     replaced by the optional dotted floating point value, reflecting the
13738     new global volume parameter.
13739     </p>
13740     </blockquote><p>
13741 schoenebeck 1801 </p>
13742     <blockquote class="text">
13743     <p>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
13744     golbal limit of the sampler for maximum voices is changed, where
13745     &lt;max-voices&gt; will be an integer value, reflecting the
13746     new global voice limit parameter.
13747     </p>
13748     </blockquote><p>
13749     </p>
13750     <blockquote class="text">
13751     <p>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
13752     golbal limit of the sampler for maximum disk streams is changed, where
13753     &lt;max-streams&gt; will be an integer value, reflecting the
13754     new global disk streams limit parameter.
13755     </p>
13756     </blockquote><p>
13757 iliev 1110
13758     </p>
13759 iliev 1162 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
13760     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13761 schoenebeck 1696 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
13762 iliev 1162 Number of database instrument directories changed</h3>
13763    
13764     <p>Client may want to be notified when the number of instrument
13765     directories in a particular directory in the instruments database
13766     is changed by issuing the following command:
13767     </p>
13768     <p>
13769     </p>
13770     <blockquote class="text">
13771     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
13772     </p>
13773     </blockquote><p>
13774    
13775     </p>
13776     <p>Server will start sending the following notification messages:
13777     </p>
13778     <p>
13779     </p>
13780     <blockquote class="text">
13781     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
13782     </p>
13783     </blockquote><p>
13784    
13785     </p>
13786     <p>where &lt;dir-path&gt; will be replaced by the absolute path
13787     name of the directory in the instruments database,
13788     in which the number of directories is changed.
13789     </p>
13790     <p>Note that when a non-empty directory is removed, this event
13791     is not sent for the subdirectories in that directory.
13792     </p>
13793     <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
13794     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13795 schoenebeck 1696 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
13796 iliev 1162 Database instrument directory information changed</h3>
13797    
13798     <p>Client may want to be notified when changes were made to directories
13799     in the instruments database by issuing the following command:
13800     </p>
13801     <p>
13802     </p>
13803     <blockquote class="text">
13804     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
13805     </p>
13806     </blockquote><p>
13807    
13808     </p>
13809     <p>Server will start sending the following notification messages:
13810     </p>
13811     <p>
13812     </p>
13813     <blockquote class="text">
13814     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
13815     </p>
13816     </blockquote><p>
13817    
13818     </p>
13819     <p>where &lt;dir-path&gt; will be replaced by the absolute path name
13820     of the directory, for which information changes occurred. The front-end will have to send
13821     the respective command to actually get the updated directory info. Because these messages
13822     will be triggered by LSCP commands issued by other clients rather than real
13823     time events happening on the server, it is believed that an empty notification
13824     message is sufficient here.
13825     </p>
13826     <p>
13827     </p>
13828     <blockquote class="text">
13829     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
13830     </p>
13831     </blockquote><p>
13832    
13833     </p>
13834     <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
13835     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13836     the new name of the directory, encapsulated into apostrophes.
13837     </p>
13838     <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
13839     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13840 schoenebeck 1696 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
13841 iliev 1162 Number of database instruments changed</h3>
13842    
13843     <p>Client may want to be notified when the number of instruments
13844     in a particular directory in the instruments database
13845     is changed by issuing the following command:
13846     </p>
13847     <p>
13848     </p>
13849     <blockquote class="text">
13850     <p>SUBSCRIBE DB_INSTRUMENT_COUNT
13851     </p>
13852     </blockquote><p>
13853    
13854     </p>
13855     <p>Server will start sending the following notification messages:
13856     </p>
13857     <p>
13858     </p>
13859     <blockquote class="text">
13860     <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
13861     </p>
13862     </blockquote><p>
13863    
13864     </p>
13865     <p>where &lt;dir-path&gt; will be replaced by the absolute path
13866     name of the directory in the instruments database,
13867     in which the number of instruments is changed.
13868     </p>
13869     <p>Note that when a non-empty directory is removed, this event
13870     is not sent for the instruments in that directory.
13871     </p>
13872     <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
13873     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13874 schoenebeck 1696 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
13875 iliev 1162 Database instrument information changed</h3>
13876    
13877     <p>Client may want to be notified when changes were made to instruments
13878     in the instruments database by issuing the following command:
13879     </p>
13880     <p>
13881     </p>
13882     <blockquote class="text">
13883     <p>SUBSCRIBE DB_INSTRUMENT_INFO
13884     </p>
13885     </blockquote><p>
13886    
13887     </p>
13888     <p>Server will start sending the following notification messages:
13889     </p>
13890     <p>
13891     </p>
13892     <blockquote class="text">
13893     <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
13894     </p>
13895     </blockquote><p>
13896    
13897     </p>
13898     <p>where &lt;instr-path&gt; will be replaced by the absolute path name
13899     of the instrument, which settings are changed. The front-end will have to send
13900     the respective command to actually get the updated directory info. Because these messages
13901     will be triggered by LSCP commands issued by other clients rather than real
13902     time events happening on the server, it is believed that an empty notification
13903     message is sufficient here.
13904     </p>
13905     <p>
13906     </p>
13907     <blockquote class="text">
13908     <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
13909     </p>
13910     </blockquote><p>
13911    
13912     </p>
13913     <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
13914     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13915     the new name of the instrument, encapsulated into apostrophes.
13916     </p>
13917 iliev 1201 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
13918     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13919 schoenebeck 1696 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
13920 iliev 1201 Database job status information changed</h3>
13921    
13922     <p>Client may want to be notified when the status of particular database
13923     instruments job is changed by issuing the following command:
13924     </p>
13925     <p>
13926     </p>
13927     <blockquote class="text">
13928     <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
13929     </p>
13930     </blockquote><p>
13931    
13932     </p>
13933     <p>Server will start sending the following notification messages:
13934     </p>
13935     <p>
13936     </p>
13937     <blockquote class="text">
13938     <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
13939     </p>
13940     </blockquote><p>
13941    
13942     </p>
13943     <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
13944     which status is changed. The front-end will have to send the respective
13945     command to actually get the status info. Because these messages
13946     will be triggered by LSCP commands issued by other clients rather than real
13947     time events happening on the server, it is believed that an empty notification
13948     message is sufficient here.
13949     </p>
13950 iliev 2189 <a name="SUBSCRIBE EFFECT_INSTANCE_COUNT"></a><br /><hr />
13951     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13952     <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
13953     Number of effect instances changed</h3>
13954    
13955     <p>Client may want to be notified when the number of effect instances
13956     is changed by issuing the following command:
13957     </p>
13958     <p>
13959     </p>
13960     <blockquote class="text">
13961     <p>SUBSCRIBE EFFECT_INSTANCE_COUNT
13962     </p>
13963     </blockquote><p>
13964    
13965     </p>
13966     <p>Server will start sending the following notification messages:
13967     </p>
13968     <p>
13969     </p>
13970     <blockquote class="text">
13971     <p>"EFFECT_INSTANCE_COUNT:&lt;instances&gt;"
13972     </p>
13973     </blockquote><p>
13974    
13975     </p>
13976     <p>where &lt;instances&gt; will be replaced by the new number
13977     of effect instances.
13978     </p>
13979     <a name="SUBSCRIBE EFFECT_INSTANCE_INFO"></a><br /><hr />
13980     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13981     <a name="rfc.section.8.27"></a><h3>8.27.&nbsp;
13982     Effect instance information changed</h3>
13983    
13984     <p>Client may want to be notified when changes were made to effect instances
13985     on the back-end by issuing the following command:
13986     </p>
13987     <p>
13988     </p>
13989     <blockquote class="text">
13990     <p>SUBSCRIBE EFFECT_INSTANCE_INFO
13991     </p>
13992     </blockquote><p>
13993    
13994     </p>
13995     <p>Server will start sending the following notification messages:
13996     </p>
13997     <p>
13998     </p>
13999     <blockquote class="text">
14000     <p>"EFFECT_INSTANCE_INFO:&lt;instance-id&gt;"
14001     </p>
14002     </blockquote><p>
14003    
14004     </p>
14005     <p>where &lt;instance-id&gt; will be replaced by the numerical ID
14006     of the effect instance.
14007     </p>
14008     <a name="SUBSCRIBE SEND_EFFECT_CHAIN_COUNT"></a><br /><hr />
14009     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14010     <a name="rfc.section.8.28"></a><h3>8.28.&nbsp;
14011     Number of send effect chains changed</h3>
14012    
14013     <p>Client may want to be notified when the number of send effect chains
14014     is changed by issuing the following command:
14015     </p>
14016     <p>
14017     </p>
14018     <blockquote class="text">
14019     <p>SUBSCRIBE SEND_EFFECT_CHAIN_COUNT
14020     </p>
14021     </blockquote><p>
14022    
14023     </p>
14024     <p>Server will start sending the following notification messages:
14025     </p>
14026     <p>
14027     </p>
14028     <blockquote class="text">
14029     <p>"NOTIFY:SEND_EFFECT_CHAIN_COUNT:&lt;device-id&gt; &lt;chains&gt;"
14030     </p>
14031     </blockquote><p>
14032    
14033     </p>
14034     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14035     output device, in which the number of send effect chains is changed and
14036     &lt;chains&gt; will be replaced by the new number of send effect chains.
14037     </p>
14038     <a name="SUBSCRIBE SEND_EFFECT_CHAIN_INFO"></a><br /><hr />
14039     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14040     <a name="rfc.section.8.29"></a><h3>8.29.&nbsp;
14041     Send effect chain information changed</h3>
14042    
14043     <p>Client may want to be notified when changes were made to send effect chains
14044     on the back-end by issuing the following command:
14045     </p>
14046     <p>
14047     </p>
14048     <blockquote class="text">
14049     <p>SUBSCRIBE SEND_EFFECT_CHAIN_INFO
14050     </p>
14051     </blockquote><p>
14052    
14053     </p>
14054     <p>Server will start sending the following notification messages:
14055     </p>
14056     <p>
14057     </p>
14058     <blockquote class="text">
14059     <p>"SEND_EFFECT_CHAIN_INFO:&lt;device-id&gt; &lt;chain-id&gt; &lt;instances&gt;" -
14060     Notifies that the number of effect instances in a particular send effect chain
14061     is changed, where &lt;device-id&gt; will be replaced by the numerical ID of the audio
14062     output device the send effect chain belongs to, &lt;chain-id&gt; will be replaced
14063     by the numerical ID of the send effect chain in which the number of effect instances
14064     has changed and &lt;instances&gt; will be replaced by the new number
14065     of effect instances in the specified send effect chain.
14066     </p>
14067     </blockquote><p>
14068    
14069     </p>
14070 schoenebeck 940 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
14071 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14072 iliev 2189 <a name="rfc.section.8.30"></a><h3>8.30.&nbsp;
14073 schoenebeck 974 Miscellaneous and debugging events</h3>
14074 schoenebeck 940
14075 senoner 542 <p>Client may want to be notified of miscellaneous and debugging events occurring at
14076     the server by issuing the following command:
14077     </p>
14078 schoenebeck 708 <p>
14079     </p>
14080 senoner 542 <blockquote class="text">
14081     <p>SUBSCRIBE MISCELLANEOUS
14082     </p>
14083 schoenebeck 708 </blockquote><p>
14084 schoenebeck 940
14085 schoenebeck 708 </p>
14086 senoner 542 <p>Server will start sending the following notification messages:
14087     </p>
14088 schoenebeck 708 <p>
14089     </p>
14090 senoner 542 <blockquote class="text">
14091     <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
14092     </p>
14093 schoenebeck 708 </blockquote><p>
14094 schoenebeck 940
14095 schoenebeck 708 </p>
14096 senoner 542 <p>where &lt;string&gt; will be replaced by whatever data server
14097     wants to send to the client. Client MAY display this data to the
14098     user AS IS to facilitate debugging.
14099     </p>
14100 schoenebeck 974 <a name="anchor14"></a><br /><hr />
14101     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14102     <a name="rfc.section.9"></a><h3>9.&nbsp;
14103     Security Considerations</h3>
14104 senoner 542
14105     <p>As there is so far no method of authentication and authorization
14106     defined and so not required for a client applications to succeed to
14107     connect, running LinuxSampler might be a security risk for the host
14108     system the LinuxSampler instance is running on.
14109     </p>
14110 schoenebeck 974 <a name="anchor15"></a><br /><hr />
14111     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14112     <a name="rfc.section.10"></a><h3>10.&nbsp;
14113     Acknowledgments</h3>
14114 senoner 542
14115     <p>This document has benefited greatly from the comments of the
14116     following people, discussed on the LinuxSampler developer's mailing
14117     list:
14118     </p>
14119 schoenebeck 708 <p>
14120     </p>
14121 senoner 542 <blockquote class="text">
14122     <p>Rui Nuno Capela
14123     </p>
14124     <p>Vladimir Senkov
14125     </p>
14126     <p>Mark Knecht
14127     </p>
14128 schoenebeck 561 <p>Grigor Iliev
14129     </p>
14130 schoenebeck 708 </blockquote><p>
14131 schoenebeck 940
14132 schoenebeck 708 </p>
14133 senoner 542 <a name="rfc.references1"></a><br /><hr />
14134 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14135 schoenebeck 708 <h3>11.&nbsp;References</h3>
14136 senoner 542 <table width="99%" border="0">
14137 schoenebeck 1251 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
14138 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>
14139 senoner 542 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
14140 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>
14141 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
14142 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>
14143 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
14144 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>
14145 senoner 542 </table>
14146    
14147     <a name="rfc.authors"></a><br /><hr />
14148 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14149 senoner 542 <h3>Author's Address</h3>
14150     <table width="99%" border="0" cellpadding="0" cellspacing="0">
14151     <tr><td class="author-text">&nbsp;</td>
14152     <td class="author-text">C.
14153     Schoenebeck</td></tr>
14154     <tr><td class="author-text">&nbsp;</td>
14155     <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
14156     <tr><td class="author-text">&nbsp;</td>
14157     <td class="author-text">Max-Planck-Str. 39</td></tr>
14158     <tr><td class="author-text">&nbsp;</td>
14159     <td class="author-text">74081 Heilbronn</td></tr>
14160     <tr><td class="author-text">&nbsp;</td>
14161     <td class="author-text">Germany</td></tr>
14162 schoenebeck 708 <tr><td class="author" align="right">Email:&nbsp;</td>
14163 senoner 542 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
14164     </table>
14165     <a name="rfc.copyright"></a><br /><hr />
14166 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
14167     <h3>Full Copyright Statement</h3>
14168 senoner 542 <p class='copyright'>
14169 iliev 2189 Copyright &copy; The IETF Trust (2011).</p>
14170 senoner 542 <p class='copyright'>
14171 schoenebeck 974 This document is subject to the rights,
14172     licenses and restrictions contained in BCP&nbsp;78,
14173     and except as set forth therein,
14174     the authors retain all their rights.</p>
14175 senoner 542 <p class='copyright'>
14176 schoenebeck 974 This document and the information contained herein are provided
14177     on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
14178 iliev 1110 THE ORGANIZATION HE/SHE REPRESENTS
14179     OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
14180     AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
14181     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
14182     THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
14183     IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
14184     PURPOSE.</p>
14185 schoenebeck 974 <h3>Intellectual Property</h3>
14186 senoner 542 <p class='copyright'>
14187 schoenebeck 974 The IETF takes no position regarding the validity or scope of any
14188     Intellectual Property Rights or other rights that might be claimed
14189     to pertain to the implementation or use of the technology
14190     described in this document or the extent to which any license
14191     under such rights might or might not be available; nor does it
14192     represent that it has made any independent effort to identify any
14193     such rights.
14194     Information on the procedures with respect to
14195     rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
14196 senoner 542 <p class='copyright'>
14197 schoenebeck 974 Copies of IPR disclosures made to the IETF Secretariat and any
14198     assurances of licenses to be made available,
14199     or the result of an attempt made to obtain a general license or
14200     permission for the use of such proprietary rights by implementers or
14201     users of this specification can be obtained from the IETF on-line IPR
14202     repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
14203 senoner 542 <p class='copyright'>
14204 schoenebeck 974 The IETF invites any interested party to bring to its attention
14205     any copyrights,
14206     patents or patent applications,
14207     or other
14208     proprietary rights that may cover technology that may be required
14209     to implement this standard.
14210     Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
14211 senoner 542 </body></html>

  ViewVC Help
Powered by ViewVC