/[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 2139 - (hide annotations) (download) (as text)
Mon Oct 4 22:17:58 2010 UTC (13 years, 6 months ago) by schoenebeck
File MIME type: text/html
File size: 499409 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 schoenebeck 2139 <meta name="generator" content="xml2rfc v1.35 (http://xml.resource.org/)">
7 schoenebeck 974 <style type='text/css'><!--
8 iliev 1110 body {
9     font-family: verdana, charcoal, helvetica, arial, sans-serif;
10     font-size: small; color: #000; background-color: #FFF;
11     margin: 2em;
12     }
13 schoenebeck 974 h1, h2, h3, h4, h5, h6 {
14 iliev 1110 font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15     font-weight: bold; font-style: normal;
16     }
17     h1 { color: #900; background-color: transparent; text-align: right; }
18     h3 { color: #333; background-color: transparent; }
19 senoner 542
20 iliev 1110 td.RFCbug {
21     font-size: x-small; text-decoration: none;
22     width: 30px; height: 30px; padding-top: 2px;
23     text-align: justify; vertical-align: middle;
24     background-color: #000;
25     }
26     td.RFCbug span.RFC {
27     font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28     font-weight: bold; color: #666;
29     }
30     td.RFCbug span.hotText {
31     font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32     font-weight: normal; text-align: center; color: #FFF;
33     }
34 senoner 542
35 iliev 1110 table.TOCbug { width: 30px; height: 15px; }
36     td.TOCbug {
37     text-align: center; width: 30px; height: 15px;
38     color: #FFF; background-color: #900;
39     }
40     td.TOCbug a {
41     font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42     font-weight: bold; font-size: x-small; text-decoration: none;
43     color: #FFF; background-color: transparent;
44     }
45 senoner 542
46 iliev 1110 td.header {
47     font-family: arial, helvetica, sans-serif; font-size: x-small;
48     vertical-align: top; width: 33%;
49     color: #FFF; background-color: #666;
50     }
51     td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52     td.author-text { font-size: x-small; }
53 senoner 542
54 iliev 1110 /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55     a.info {
56     /* This is the key. */
57     position: relative;
58     z-index: 24;
59     text-decoration: none;
60     }
61     a.info:hover {
62     z-index: 25;
63     color: #FFF; background-color: #900;
64     }
65     a.info span { display: none; }
66     a.info:hover span.info {
67     /* The span will display just on :hover state. */
68     display: block;
69     position: absolute;
70     font-size: smaller;
71     top: 2em; left: -5em; width: 15em;
72     padding: 2px; border: 1px solid #333;
73     color: #900; background-color: #EEE;
74     text-align: left;
75     }
76 senoner 542
77 iliev 1110 a { font-weight: bold; }
78     a:link { color: #900; background-color: transparent; }
79     a:visited { color: #633; background-color: transparent; }
80     a:active { color: #633; background-color: transparent; }
81 senoner 542
82 iliev 1110 p { margin-left: 2em; margin-right: 2em; }
83     p.copyright { font-size: x-small; }
84     p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85     table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86     td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87 senoner 542
88 iliev 1110 ol.text { margin-left: 2em; margin-right: 2em; }
89     ul.text { margin-left: 2em; margin-right: 2em; }
90     li { margin-left: 3em; }
91 senoner 542
92 iliev 1110 /* RFC-2629 <spanx>s and <artwork>s. */
93     em { font-style: italic; }
94     strong { font-weight: bold; }
95     dfn { font-weight: bold; font-style: normal; }
96     cite { font-weight: normal; font-style: normal; }
97     tt { color: #036; }
98 schoenebeck 974 tt, pre, pre dfn, pre em, pre cite, pre span {
99 iliev 1110 font-family: "Courier New", Courier, monospace; font-size: small;
100     }
101     pre {
102     text-align: left; padding: 4px;
103     color: #000; background-color: #CCC;
104     }
105     pre dfn { color: #900; }
106     pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107     pre .key { color: #33C; font-weight: bold; }
108     pre .id { color: #900; }
109     pre .str { color: #000; background-color: #CFF; }
110     pre .val { color: #066; }
111     pre .rep { color: #909; }
112     pre .oth { color: #000; background-color: #FCF; }
113     pre .err { background-color: #FCC; }
114 schoenebeck 708
115 iliev 1110 /* RFC-2629 <texttable>s. */
116     table.all, table.full, table.headers, table.none {
117     font-size: small; text-align: center; border-width: 2px;
118     vertical-align: top; border-collapse: collapse;
119     }
120     table.all, table.full { border-style: solid; border-color: black; }
121     table.headers, table.none { border-style: none; }
122     th {
123     font-weight: bold; border-color: black;
124     border-width: 2px 2px 3px 2px;
125     }
126     table.all th, table.full th { border-style: solid; }
127     table.headers th { border-style: none none solid none; }
128     table.none th { border-style: none; }
129     table.all td {
130     border-style: solid; border-color: #333;
131     border-width: 1px 2px;
132     }
133     table.full td, table.headers td, table.none td { border-style: none; }
134 senoner 542
135 iliev 1110 hr { height: 1px; }
136     hr.insert {
137     width: 80%; border-style: none; border-width: 0;
138     color: #CCC; background-color: #CCC;
139     }
140 schoenebeck 974 --></style>
141 senoner 542 </head>
142     <body>
143 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144 senoner 542 <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145     <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146     <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 schoenebeck 2139 <tr><td class="header">Expires: April 8, 2011</td><td class="header">October 5, 2010</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 schoenebeck 2139 Task Force (IETF). Note that other groups may also distribute
171     working documents as Internet-Drafts. The list of current
172     Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.</p>
173 senoner 542 <p>
174     Internet-Drafts are draft documents valid for a maximum of six months
175     and may be updated, replaced, or obsoleted by other documents at any time.
176     It is inappropriate to use Internet-Drafts as reference material or to cite
177 schoenebeck 708 them other than as &ldquo;work in progress.&rdquo;</p>
178 senoner 542 <p>
179 schoenebeck 2139 This Internet-Draft will expire on April 8, 2011.</p>
180 schoenebeck 2023 <a name="toc"></a><br /><hr />
181 senoner 542 <h3>Table of Contents</h3>
182     <p class="toc">
183     <a href="#anchor1">1.</a>&nbsp;
184     Requirements notation<br />
185 schoenebeck 575 <a href="#LSCP versioning">2.</a>&nbsp;
186     Versioning of this specification<br />
187     <a href="#anchor2">3.</a>&nbsp;
188 senoner 542 Introduction<br />
189 schoenebeck 575 <a href="#anchor3">4.</a>&nbsp;
190 senoner 542 Focus of this protocol<br />
191 schoenebeck 575 <a href="#anchor4">5.</a>&nbsp;
192 senoner 542 Communication Overview<br />
193 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
194 senoner 542 Request/response communication method<br />
195 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
196 senoner 542 Result format<br />
197 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
198 senoner 542 Subscribe/notify communication method<br />
199 schoenebeck 575 <a href="#control_commands">6.</a>&nbsp;
200 senoner 542 Description for control commands<br />
201 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
202 senoner 542 Ignored lines and comments<br />
203 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
204 senoner 542 Configuring audio drivers<br />
205 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
206 senoner 542 Getting amount of available audio output drivers<br />
207 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
208 senoner 542 Getting all available audio output drivers<br />
209 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
210 senoner 542 Getting information about a specific audio
211     output driver<br />
212 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
213 senoner 542 Getting information about specific audio
214     output driver parameter<br />
215 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
216 senoner 542 Creating an audio output device<br />
217 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
218 senoner 542 Destroying an audio output device<br />
219 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
220 senoner 542 Getting all created audio output device count<br />
221 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
222 senoner 542 Getting all created audio output device list<br />
223 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
224 senoner 542 Getting current settings of an audio output device<br />
225 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
226 senoner 542 Changing settings of audio output devices<br />
227 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
228 senoner 542 Getting information about an audio channel<br />
229 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
230 senoner 542 Getting information about specific audio channel parameter<br />
231 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
232 senoner 542 Changing settings of audio output channels<br />
233 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
234 senoner 542 Configuring MIDI input drivers<br />
235 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
236 senoner 542 Getting amount of available MIDI input drivers<br />
237 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
238 senoner 542 Getting all available MIDI input drivers<br />
239 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
240 senoner 542 Getting information about a specific MIDI input driver<br />
241 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
242 senoner 542 Getting information about specific MIDI input driver parameter<br />
243 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
244 senoner 542 Creating a MIDI input device<br />
245 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
246 senoner 542 Destroying a MIDI input device<br />
247 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
248 senoner 542 Getting all created MIDI input device count<br />
249 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
250 senoner 542 Getting all created MIDI input device list<br />
251 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
252 senoner 542 Getting current settings of a MIDI input device<br />
253 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
254 senoner 542 Changing settings of MIDI input devices<br />
255 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
256 senoner 542 Getting information about a MIDI port<br />
257 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
258 senoner 542 Getting information about specific MIDI port parameter<br />
259 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
260 senoner 542 Changing settings of MIDI input ports<br />
261 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
262 senoner 542 Configuring sampler channels<br />
263 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
264 senoner 542 Loading an instrument<br />
265 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
266 senoner 542 Loading a sampler engine<br />
267 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
268 senoner 542 Getting all created sampler channel count<br />
269 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
270 senoner 542 Getting all created sampler channel list<br />
271 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
272 senoner 542 Adding a new sampler channel<br />
273 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
274 senoner 542 Removing a sampler channel<br />
275 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
276 senoner 542 Getting amount of available engines<br />
277 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
278 senoner 542 Getting all available engines<br />
279 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
280 senoner 542 Getting information about an engine<br />
281 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
282 senoner 542 Getting sampler channel information<br />
283 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
284 senoner 542 Current number of active voices<br />
285 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
286 senoner 542 Current number of active disk streams<br />
287 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
288 senoner 542 Current fill state of disk stream buffers<br />
289 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
290 senoner 542 Setting audio output device<br />
291 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
292 senoner 542 Setting audio output type<br />
293 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
294 senoner 542 Setting audio output channel<br />
295 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
296 senoner 542 Setting MIDI input device<br />
297 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
298 senoner 542 Setting MIDI input type<br />
299 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
300 senoner 542 Setting MIDI input port<br />
301 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
302 senoner 542 Setting MIDI input channel<br />
303 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
304 senoner 542 Setting channel volume<br />
305 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
306 schoenebeck 708 Muting a sampler channel<br />
307 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
308 schoenebeck 708 Soloing a sampler channel<br />
309 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
310     Assigning a MIDI instrument map to a sampler channel<br />
311 schoenebeck 1002 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
312     Adding an effect send to a sampler channel<br />
313     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
314     Removing an effect send from a sampler channel<br />
315     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
316     Getting amount of effect sends on a sampler channel<br />
317     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
318     Listing all effect sends on a sampler channel<br />
319     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
320     Getting effect send information<br />
321 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
322     Changing effect send's name<br />
323     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
324 schoenebeck 1002 Altering effect send's audio routing<br />
325 schoenebeck 2139 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND SEND_EFFECT">6.4.32.</a>&nbsp;
326     Assigning destination effect to an effect send<br />
327     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE FX_SEND SEND_EFFECT">6.4.33.</a>&nbsp;
328     Removing destination effect from an effect send<br />
329     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.34.</a>&nbsp;
330 schoenebeck 1028 Altering effect send's MIDI controller<br />
331 schoenebeck 2139 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.35.</a>&nbsp;
332 schoenebeck 1028 Altering effect send's send level<br />
333 schoenebeck 2139 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SEND CHANNEL MIDI_DATA">6.4.36.</a>&nbsp;
334 iliev 1773 Sending MIDI messages to sampler channel<br />
335 schoenebeck 2139 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.37.</a>&nbsp;
336 senoner 542 Resetting a sampler channel<br />
337 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
338 senoner 542 Controlling connection<br />
339 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
340 senoner 542 Register front-end for receiving event messages<br />
341 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
342 senoner 542 Unregister front-end for not receiving event messages<br />
343 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
344 senoner 542 Enable or disable echo of commands<br />
345 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
346 senoner 542 Close client connection<br />
347 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
348 senoner 542 Global commands<br />
349 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
350     Current number of active voices<br />
351     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
352     Maximum amount of active voices<br />
353 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
354     Current number of active disk streams<br />
355     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
356 senoner 542 Reset sampler<br />
357 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
358 schoenebeck 575 General sampler informations<br />
359 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
360 schoenebeck 1006 Getting global volume attenuation<br />
361 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
362 schoenebeck 1006 Setting global volume attenuation<br />
363 schoenebeck 1801 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOICES">6.6.8.</a>&nbsp;
364     Getting global voice limit<br />
365     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOICES">6.6.9.</a>&nbsp;
366     Setting global voice limit<br />
367     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET STREAMS">6.6.10.</a>&nbsp;
368     Getting global disk stream limit<br />
369     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET STREAMS">6.6.11.</a>&nbsp;
370     Setting global disk stream limit<br />
371 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
372 schoenebeck 945 MIDI Instrument Mapping<br />
373 schoenebeck 1390 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
374 schoenebeck 974 Create a new MIDI instrument map<br />
375     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
376     Delete one particular or all MIDI instrument maps<br />
377     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
378     Get amount of existing MIDI instrument maps<br />
379     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
380     Getting all created MIDI instrument maps<br />
381     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
382     Getting MIDI instrument map information<br />
383     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
384     Renaming a MIDI instrument map<br />
385     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
386 schoenebeck 945 Create or replace a MIDI instrument map entry<br />
387 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
388 schoenebeck 945 Getting ammount of MIDI instrument map entries<br />
389 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
390     Getting indeces of all entries of a MIDI instrument map<br />
391     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
392 schoenebeck 945 Remove an entry from the MIDI instrument map<br />
393 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
394 schoenebeck 945 Get current settings of MIDI instrument map entry<br />
395 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
396 schoenebeck 945 Clear MIDI instrument map<br />
397 iliev 1162 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
398     Managing Instruments Database<br />
399     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
400     Creating a new instrument directory<br />
401     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
402     Deleting an instrument directory<br />
403     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
404     Getting amount of instrument directories<br />
405     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
406     Listing all directories in specific directory<br />
407     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
408     Getting instrument directory information<br />
409     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
410     Renaming an instrument directory<br />
411     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
412     Moving an instrument directory<br />
413 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
414     Copying instrument directories<br />
415     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
416 iliev 1162 Changing the description of directory<br />
417 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
418     Finding directories<br />
419     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
420 iliev 1162 Adding instruments to the instruments database<br />
421 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
422 iliev 1162 Removing an instrument<br />
423 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
424 iliev 1162 Getting amount of instruments<br />
425 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
426 iliev 1162 Listing all instruments in specific directory<br />
427 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
428 iliev 1162 Getting instrument information<br />
429 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
430 iliev 1162 Renaming an instrument<br />
431 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
432 iliev 1162 Moving an instrument<br />
433 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
434     Copying instruments<br />
435     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
436 iliev 1162 Changing the description of instrument<br />
437 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
438     Finding instruments<br />
439 iliev 1201 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
440     Getting job status information<br />
441 schoenebeck 1363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
442     Formatting the instruments database<br />
443 iliev 1731 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND LOST DB_INSTRUMENT_FILES">6.8.23.</a>&nbsp;
444     Checking for lost instrument files<br />
445     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT FILE_PATH">6.8.24.</a>&nbsp;
446     Replacing an instrument file<br />
447 schoenebeck 1363 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
448     Editing Instruments<br />
449     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
450     Opening an appropriate instrument editor application<br />
451 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
452     Managing Files<br />
453     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
454     Retrieving amount of instruments of a file<br />
455     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
456     Retrieving all instruments of a file<br />
457     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
458     Retrieving informations about one instrument in a file<br />
459 schoenebeck 2139 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#effects">6.11.</a>&nbsp;
460     Managing Effects<br />
461     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_EFFECTS">6.11.1.</a>&nbsp;
462     Retrieve amount of available effects<br />
463     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_EFFECTS">6.11.2.</a>&nbsp;
464     Get list of available effects<br />
465     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT INFO">6.11.3.</a>&nbsp;
466     Retrieving general information about an effect<br />
467     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE">6.11.4.</a>&nbsp;
468     Creating an instance of an effect by its portable ID<br />
469     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE EFFECT_INSTANCE (non-portable)">6.11.5.</a>&nbsp;
470     Creating an instance of an effect by its numerical ID<br />
471     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY EFFECT_INSTANCE">6.11.6.</a>&nbsp;
472     Destroy an effect instance<br />
473     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCES">6.11.7.</a>&nbsp;
474     Retrieve amount of effect instances<br />
475     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST EFFECT_INSTANCES">6.11.8.</a>&nbsp;
476     Get list of effect instances<br />
477     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE INFO">6.11.9.</a>&nbsp;
478     Retrieving current information about an effect instance<br />
479     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET EFFECT_INSTANCE_INPUT_CONTROL INFO">6.11.10.</a>&nbsp;
480     Retrieving information about an effect parameter<br />
481     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET EFFECT_INSTANCE_INPUT_CONTROL VALUE">6.11.11.</a>&nbsp;
482     Altering an effect parameter<br />
483     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAINS">6.11.12.</a>&nbsp;
484     Retrieve amount of send effect chains<br />
485     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST SEND_EFFECT_CHAINS">6.11.13.</a>&nbsp;
486     Retrieve list of send effect chains<br />
487     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD SEND_EFFECT_CHAIN">6.11.14.</a>&nbsp;
488     Add send effect chain<br />
489     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN">6.11.15.</a>&nbsp;
490     Remove send effect chain<br />
491     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SEND_EFFECT_CHAIN INFO">6.11.16.</a>&nbsp;
492     Retrieving information about a send effect chain<br />
493     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#APPEND SEND_EFFECT_CHAIN EFFECT">6.11.17.</a>&nbsp;
494     Append effect instance to a send effect chain<br />
495     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#INSERT SEND_EFFECT_CHAIN EFFECT">6.11.18.</a>&nbsp;
496     Insert effect instance to a send effect chain<br />
497     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE SEND_EFFECT_CHAIN EFFECT">6.11.19.</a>&nbsp;
498     Remove effect instance from send effect chain<br />
499 schoenebeck 575 <a href="#command_syntax">7.</a>&nbsp;
500 senoner 542 Command Syntax<br />
501 schoenebeck 1251 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
502     Character Set and Escape Sequences<br />
503 schoenebeck 575 <a href="#events">8.</a>&nbsp;
504 senoner 542 Events<br />
505 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
506     Number of audio output devices changed<br />
507     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
508     Audio output device's settings changed<br />
509     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
510     Number of MIDI input devices changed<br />
511     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
512     MIDI input device's settings changed<br />
513     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
514 senoner 542 Number of sampler channels changed<br />
515 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
516     MIDI data on a sampler channel arrived<br />
517 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DEVICE_MIDI">8.7.</a>&nbsp;
518     MIDI data on a MIDI input device arrived<br />
519     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.8.</a>&nbsp;
520 senoner 542 Number of active voices changed<br />
521 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.9.</a>&nbsp;
522 senoner 542 Number of active disk streams changed<br />
523 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.10.</a>&nbsp;
524 senoner 542 Disk stream buffer fill state changed<br />
525 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.11.</a>&nbsp;
526 senoner 542 Channel information changed<br />
527 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.12.</a>&nbsp;
528 iliev 1110 Number of effect sends changed<br />
529 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.13.</a>&nbsp;
530 iliev 1110 Effect send information changed<br />
531 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.14.</a>&nbsp;
532 schoenebeck 940 Total number of active voices changed<br />
533 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.15.</a>&nbsp;
534 schoenebeck 1572 Total number of active disk streams changed<br />
535 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.16.</a>&nbsp;
536 iliev 992 Number of MIDI instrument maps changed<br />
537 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.17.</a>&nbsp;
538 iliev 992 MIDI instrument map information changed<br />
539 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.18.</a>&nbsp;
540 iliev 992 Number of MIDI instruments changed<br />
541 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.19.</a>&nbsp;
542 iliev 992 MIDI instrument information changed<br />
543 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.20.</a>&nbsp;
544 iliev 1110 Global settings changed<br />
545 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.21.</a>&nbsp;
546 iliev 1162 Number of database instrument directories changed<br />
547 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.22.</a>&nbsp;
548 iliev 1162 Database instrument directory information changed<br />
549 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.23.</a>&nbsp;
550 iliev 1162 Number of database instruments changed<br />
551 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.24.</a>&nbsp;
552 iliev 1162 Database instrument information changed<br />
553 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.25.</a>&nbsp;
554 iliev 1201 Database job status information changed<br />
555 schoenebeck 1696 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.26.</a>&nbsp;
556 senoner 542 Miscellaneous and debugging events<br />
557 schoenebeck 974 <a href="#anchor14">9.</a>&nbsp;
558 senoner 542 Security Considerations<br />
559 schoenebeck 974 <a href="#anchor15">10.</a>&nbsp;
560 senoner 542 Acknowledgments<br />
561 schoenebeck 575 <a href="#rfc.references1">11.</a>&nbsp;
562 senoner 542 References<br />
563     <a href="#rfc.authors">&#167;</a>&nbsp;
564     Author's Address<br />
565     <a href="#rfc.copyright">&#167;</a>&nbsp;
566     Intellectual Property and Copyright Statements<br />
567     </p>
568     <br clear="all" />
569    
570     <a name="anchor1"></a><br /><hr />
571 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
572     <a name="rfc.section.1"></a><h3>1.&nbsp;
573     Requirements notation</h3>
574 senoner 542
575     <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
576     "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
577     and "OPTIONAL" in this document are to be interpreted as
578 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>.
579 senoner 542 </p>
580     <p>This protocol is always case-sensitive if not explicitly
581     claimed the opposite.
582     </p>
583     <p>In examples, "C:" and "S:" indicate lines sent by the client
584     (front-end) and server (LinuxSampler) respectively. Lines in
585     examples must be interpreted as every line being CRLF
586     terminated (carriage return character followed by line feed
587 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>),
588     thus the following example:
589 senoner 542 </p>
590 schoenebeck 708 <p>
591     </p>
592 senoner 542 <blockquote class="text">
593     <p>C: "some line"
594     </p>
595     <p>&nbsp;&nbsp;&nbsp;"another line"
596     </p>
597 schoenebeck 708 </blockquote><p>
598 schoenebeck 940
599 schoenebeck 708 </p>
600 senoner 542 <p>must actually be interpreted as client sending the following
601     message:
602     </p>
603 schoenebeck 708 <p>
604     </p>
605 senoner 542 <blockquote class="text">
606     <p>"some line&lt;CR&gt;&lt;LF&gt;another
607     line&lt;CR&gt;&lt;LF&gt;"
608     </p>
609 schoenebeck 708 </blockquote><p>
610 schoenebeck 940
611 schoenebeck 708 </p>
612 senoner 542 <p>where &lt;CR&gt; symbolizes the carriage return character and
613     &lt;LF&gt; the line feed character as defined in the ASCII
614     standard.
615     </p>
616     <p>Due to technical reasons, messages can arbitrary be
617     fragmented, means the following example:
618     </p>
619 schoenebeck 708 <p>
620     </p>
621 senoner 542 <blockquote class="text">
622     <p>S: "abcd"
623     </p>
624 schoenebeck 708 </blockquote><p>
625 schoenebeck 940
626 schoenebeck 708 </p>
627 senoner 542 <p>could also happen to be sent in three messages like in the
628     following sequence scenario:
629     </p>
630 schoenebeck 708 <p>
631     </p>
632 senoner 542 <ul class="text">
633     <li>server sending message "a"
634     </li>
635     <li>followed by a delay (pause) with
636     arbitrary duration
637     </li>
638     <li>followed by server sending message
639     "bcd&lt;CR&gt;"
640     </li>
641     <li>again followed by a delay (pause) with arbitrary
642     duration
643     </li>
644     <li>followed by server sending the message
645     "&lt;LF&gt;"
646     </li>
647 schoenebeck 708 </ul><p>
648 schoenebeck 940
649 schoenebeck 708 </p>
650 senoner 542 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
651     return and line feed characters respectively.
652     </p>
653 schoenebeck 575 <a name="LSCP versioning"></a><br /><hr />
654 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
655     <a name="rfc.section.2"></a><h3>2.&nbsp;
656     Versioning of this specification</h3>
657 schoenebeck 575
658     <p>LSCP will certainly be extended and enhanced by-and-by. Each official
659     release of the LSCP specification will be tagged with a unique version
660     tuple. The version tuple consists at least of a major and minor version
661     number like:
662 schoenebeck 940
663 schoenebeck 575 </p>
664 schoenebeck 708 <p>
665     </p>
666 schoenebeck 575 <blockquote class="text">
667     <p>"1.2"
668     </p>
669 schoenebeck 708 </blockquote><p>
670 schoenebeck 940
671 schoenebeck 708 </p>
672 schoenebeck 575 <p>
673     In this example the major version number would be "1" and the minor
674     version number would be "2". Note that the version tuple might also
675     have more than two elements. The major version number defines a
676     group of backward compatible versions. That means a frontend is
677     compatible to the connected sampler if and only if the LSCP versions
678     to which each of the two parties complies to, match both of the
679     following rules:
680 schoenebeck 940
681 schoenebeck 575 </p>
682     <p>Compatibility:
683     </p>
684 schoenebeck 708 <p>
685     </p>
686 schoenebeck 575 <ol class="text">
687     <li>The frontend's LSCP major version and the sampler's LSCP
688     major version are exactly equal.
689     </li>
690     <li>The frontend's LSCP minor version is less or equal than
691     the sampler's LSCP minor version.
692     </li>
693 schoenebeck 708 </ol><p>
694 schoenebeck 940
695 schoenebeck 708 </p>
696 schoenebeck 575 <p>
697     Compatibility can only be claimed if both rules are true.
698     The frontend can use the
699 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
700 schoenebeck 575 get the version of the LSCP specification the sampler complies with.
701 schoenebeck 940
702 schoenebeck 575 </p>
703 senoner 542 <a name="anchor2"></a><br /><hr />
704 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
705     <a name="rfc.section.3"></a><h3>3.&nbsp;
706     Introduction</h3>
707 senoner 542
708     <p>LinuxSampler is a so called software sampler application
709     capable to playback audio samples from a computer's Random
710     Access Memory (RAM) as well as directly streaming it from disk.
711     LinuxSampler is designed to be modular. It provides several so
712     called "sampler engines" where each engine is specialized for a
713     certain purpose. LinuxSampler has virtual channels which will be
714     referred in this document as "sampler channels". The channels
715     are in such way virtual as they can be connected to an
716     arbitrary MIDI input method and arbitrary MIDI channel (e.g.
717     sampler channel 17 could be connected to an ALSA sequencer
718     device 64:0 and listening to MIDI channel 1 there). Each sampler
719 schoenebeck 575 channel will be associated with an instance of one of the available
720 senoner 542 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
721     each sampler channel can be routed to an arbitrary audio output
722     method (ALSA / JACK) and an arbitrary audio output channel
723     there.
724     </p>
725     <a name="anchor3"></a><br /><hr />
726 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
727     <a name="rfc.section.4"></a><h3>4.&nbsp;
728     Focus of this protocol</h3>
729 senoner 542
730     <p>Main focus of this protocol is to provide a way to configure
731     a running LinuxSampler instance and to retrieve information
732     about it. The focus of this protocol is not to provide a way to
733     control synthesis parameters or even to trigger or release
734     notes. Or in other words; the focus are those functionalities
735     which are not covered by MIDI or which may at most be handled
736     via MIDI System Exclusive Messages.
737     </p>
738     <a name="anchor4"></a><br /><hr />
739 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
740     <a name="rfc.section.5"></a><h3>5.&nbsp;
741     Communication Overview</h3>
742 senoner 542
743     <p>There are two distinct methods of communication between a
744     running instance of LinuxSampler and one or more control
745     applications, so called "front-ends": a simple request/response
746     communication method used by the clients to give commands to the
747     server as well as to inquire about server's status and a
748     subscribe/notify communication method used by the client to
749     subscribe to and receive notifications of certain events as they
750     happen on the server. The latter needs more effort to be
751     implemented in the front-end application. The two communication
752     methods will be described next.
753     </p>
754 schoenebeck 940 <a name="anchor5"></a><br /><hr />
755 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
756     <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
757     Request/response communication method</h3>
758 senoner 542
759 schoenebeck 575 <p>This simple communication method is based on
760 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
761 senoner 542 front-end application establishes a TCP connection to the
762     LinuxSampler instance on a certain host system. Then the
763     front-end application will send certain ASCII based commands
764     as defined in this document (every command line must be CRLF
765     terminated - see "Conventions used in this document" at the
766     beginning of this document) and the LinuxSampler application
767     will response after a certain process time with an
768     appropriate ASCII based answer, also as defined in this
769     document. So this TCP communication is simply based on query
770     and answer paradigm. That way LinuxSampler is only able to
771     answer on queries from front-ends, but not able to
772     automatically send messages to the client if it's not asked
773     to. The fronted should not reconnect to LinuxSampler for
774     every single command, instead it should keep the connection
775     established and simply resend message(s) for subsequent
776     commands. To keep information in the front-end up-to-date
777     the front-end has to periodically send new requests to get
778     the current information from the LinuxSampler instance. This
779     is often referred to as "polling". While polling is simple
780     to implement and may be OK to use in some cases, there may
781     be disadvantages to polling such as network traffic overhead
782     and information being out of date.
783     It is possible for a client or several clients to open more
784     than one connection to the server at the same time. It is
785     also possible to send more than one request to the server
786     at the same time but if those requests are sent over the
787     same connection server MUST execute them sequentially. Upon
788     executing a request server will produce a result set and
789     send it to the client. Each and every request made by the
790     client MUST result in a result set being sent back to the
791     client. No other data other than a result set may be sent by
792     a server to a client. No result set may be sent to a client
793     without the client sending request to the server first. On
794     any particular connection, result sets MUST be sent in their
795     entirety without being interrupted by other result sets. If
796     several requests got queued up at the server they MUST be
797     processed in the order they were received and result sets
798     MUST be sent back in the same order.
799     </p>
800 schoenebeck 940 <a name="anchor6"></a><br /><hr />
801 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
802     <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
803     Result format</h3>
804 senoner 542
805     <p>Result set could be one of the following types:
806     </p>
807 schoenebeck 708 <p>
808     </p>
809 senoner 542 <ol class="text">
810     <li>Normal
811     </li>
812     <li>Warning
813     </li>
814     <li>Error
815     </li>
816 schoenebeck 708 </ol><p>
817 schoenebeck 940
818 schoenebeck 708 </p>
819 senoner 542 <p>Warning and Error result sets MUST be single line and
820     have the following format:
821     </p>
822 schoenebeck 708 <p>
823     </p>
824 senoner 542 <ul class="text">
825     <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
826     </li>
827     <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
828     </li>
829 schoenebeck 708 </ul><p>
830 schoenebeck 940
831 schoenebeck 708 </p>
832 senoner 542 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
833     numeric unique identifiers of the warning or error and
834     &lt;warning-message&gt; and &lt;error-message&gt; are
835     human readable descriptions of the warning or error
836     respectively.
837     </p>
838     <p>Examples:
839     </p>
840 schoenebeck 708 <p>
841     </p>
842 senoner 542 <blockquote class="text">
843     <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
844     </p>
845     <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
846     </p>
847 schoenebeck 708 </blockquote><p>
848 schoenebeck 940
849 schoenebeck 708 </p>
850     <p>
851     </p>
852 senoner 542 <blockquote class="text">
853     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
854     </p>
855     <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
856     </p>
857 schoenebeck 708 </blockquote><p>
858 schoenebeck 940
859 schoenebeck 708 </p>
860     <p>
861     </p>
862 senoner 542 <blockquote class="text">
863     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
864     </p>
865     <p>S: "ERR:9:There is no audio output device with index 123456."
866     </p>
867 schoenebeck 708 </blockquote><p>
868 schoenebeck 940
869 schoenebeck 708 </p>
870 senoner 542 <p>Normal result sets could be:
871     </p>
872 schoenebeck 708 <p>
873     </p>
874 senoner 542 <ol class="text">
875     <li>Empty
876     </li>
877     <li>Single line
878     </li>
879     <li>Multi-line
880     </li>
881 schoenebeck 708 </ol><p>
882 schoenebeck 940
883 schoenebeck 708 </p>
884 senoner 542 <p> Empty result set is issued when the server only
885     needed to acknowledge the fact that the request was
886     received and it was processed successfully and no
887     additional information is available. This result set has
888     the following format:
889     </p>
890 schoenebeck 708 <p>
891     </p>
892 senoner 542 <blockquote class="text">
893     <p>"OK"
894     </p>
895 schoenebeck 708 </blockquote><p>
896 schoenebeck 940
897 schoenebeck 708 </p>
898 senoner 542 <p>Example:
899     </p>
900 schoenebeck 708 <p>
901     </p>
902 senoner 542 <blockquote class="text">
903     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
904     </p>
905     <p>S: "OK"
906     </p>
907 schoenebeck 708 </blockquote><p>
908 schoenebeck 940
909 schoenebeck 708 </p>
910 senoner 542 <p>Single line result sets are command specific. One
911     example of a single line result set is an empty line.
912     Multi-line result sets are command specific and may
913     include one or more lines of information. They MUST
914     always end with the following line:
915     </p>
916 schoenebeck 708 <p>
917     </p>
918 senoner 542 <blockquote class="text">
919     <p>"."
920     </p>
921 schoenebeck 708 </blockquote><p>
922 schoenebeck 940
923 schoenebeck 708 </p>
924 senoner 542 <p>Example:
925     </p>
926 schoenebeck 708 <p>
927     </p>
928 senoner 542 <blockquote class="text">
929     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
930     </p>
931     <p>S: "DRIVER: ALSA"
932     </p>
933     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
934     </p>
935     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
936     </p>
937     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
938     </p>
939     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
940     </p>
941     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
942     </p>
943     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
944     </p>
945     <p>&nbsp;&nbsp;&nbsp;"."
946     </p>
947 schoenebeck 708 </blockquote><p>
948 schoenebeck 940
949 schoenebeck 708 </p>
950 senoner 542 <p>In addition to above mentioned formats, warnings and
951     empty result sets MAY be indexed. In this case, they
952     have the following formats respectively:
953     </p>
954 schoenebeck 708 <p>
955     </p>
956 senoner 542 <ul class="text">
957     <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
958     </li>
959     <li>"OK[&lt;index&gt;]"
960     </li>
961 schoenebeck 708 </ul><p>
962 schoenebeck 940
963 schoenebeck 708 </p>
964 senoner 542 <p>where &lt;index&gt; is command specific and is used
965     to indicate channel number that the result set was
966     related to or other integer value.
967     </p>
968     <p>Each line of the result set MUST end with
969     &lt;CRLF&gt;.
970     </p>
971     <p>Examples:
972     </p>
973 schoenebeck 708 <p>
974     </p>
975 senoner 542 <blockquote class="text">
976     <p>C: "ADD CHANNEL"
977     </p>
978     <p>S: "OK[12]"
979     </p>
980 schoenebeck 708 </blockquote><p>
981 schoenebeck 940
982 schoenebeck 708 </p>
983     <p>
984     </p>
985 senoner 542 <blockquote class="text">
986     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
987     </p>
988     <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
989     </p>
990 schoenebeck 708 </blockquote><p>
991 schoenebeck 940
992 schoenebeck 708 </p>
993 schoenebeck 940 <a name="anchor7"></a><br /><hr />
994 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
995     <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
996     Subscribe/notify communication method</h3>
997 senoner 542
998     <p>This more sophisticated communication method is actually
999     only an extension of the simple request/response
1000     communication method. The front-end still uses a TCP
1001     connection and sends the same commands on the TCP
1002     connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
1003     commands that allow a client to tell the server that it is
1004     interested in receiving notifications about certain events
1005     as they happen on the server. The SUBSCRIBE command has the
1006     following syntax:
1007     </p>
1008 schoenebeck 708 <p>
1009     </p>
1010 senoner 542 <blockquote class="text">
1011     <p>SUBSCRIBE &lt;event-id&gt;
1012     </p>
1013 schoenebeck 708 </blockquote><p>
1014 schoenebeck 940
1015 schoenebeck 708 </p>
1016 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective
1017     event that client wants to subscribe to. Upon receiving such
1018     request, server SHOULD respond with OK and start sending
1019     EVENT notifications when a given even has occurred to the
1020     front-end when an event has occurred. It MAY be possible
1021     certain events may be sent before OK response during real
1022     time nature of their generation. Event messages have the
1023     following format:
1024     </p>
1025 schoenebeck 708 <p>
1026     </p>
1027 senoner 542 <blockquote class="text">
1028     <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
1029     </p>
1030 schoenebeck 708 </blockquote><p>
1031 schoenebeck 940
1032 schoenebeck 708 </p>
1033 senoner 542 <p>where &lt;event-id&gt; uniquely identifies the event that
1034     has occurred and &lt;custom-event-data&gt; is event
1035     specific.
1036     </p>
1037     <p>Several rules must be followed by the server when
1038     generating events:
1039     </p>
1040 schoenebeck 708 <p>
1041     </p>
1042 senoner 542 <ol class="text">
1043     <li>Events MUST NOT be sent to any client who has not
1044     issued an appropriate SUBSCRIBE command.
1045     </li>
1046     <li>Events MUST only be sent using the same
1047     connection that was used to subscribe to them.
1048     </li>
1049     <li>When response is being sent to the client, event
1050     MUST be inserted in the stream before or after the
1051     response, but NOT in the middle. Same is true about
1052     the response. It should never be inserted in the
1053     middle of the event message as well as any other
1054     response.
1055     </li>
1056 schoenebeck 708 </ol><p>
1057 schoenebeck 940
1058 schoenebeck 708 </p>
1059 senoner 542 <p>If the client is not interested in a particular event
1060     anymore it MAY issue UNSUBSCRIBE command using the following
1061     syntax:
1062     </p>
1063 schoenebeck 708 <p>
1064     </p>
1065 senoner 542 <blockquote class="text">
1066     <p>UNSUBSCRIBE &lt;event-id&gt;
1067     </p>
1068 schoenebeck 708 </blockquote><p>
1069 schoenebeck 940
1070 schoenebeck 708 </p>
1071 senoner 542 <p>where &lt;event-id&gt; will be replace by the respective
1072     event that client is no longer interested in receiving. For
1073 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>.
1074 senoner 542 </p>
1075     <p>Example: the fill states of disk stream buffers have
1076     changed on sampler channel 4 and the LinuxSampler instance
1077     will react by sending the following message to all clients
1078     who subscribed to this event:
1079     </p>
1080 schoenebeck 708 <p>
1081     </p>
1082 senoner 542 <blockquote class="text">
1083     <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1084     </p>
1085 schoenebeck 708 </blockquote><p>
1086 schoenebeck 940
1087 schoenebeck 708 </p>
1088 senoner 542 <p>Which means there are currently three active streams on
1089     sampler channel 4, where the stream with ID "35" is filled
1090     by 62%, stream with ID 33 is filled by 80% and stream with
1091     ID 37 is filled by 98%.
1092     </p>
1093     <p>Clients may choose to open more than one connection to
1094     the server and use some connections to receive notifications
1095     while using other connections to issue commands to the
1096     back-end. This is entirely legal and up to the
1097     implementation. This does not change the protocol in any way
1098     and no special restrictions exist on the server to allow or
1099     disallow this or to track what connections belong to what
1100     front-ends. Server will listen on a single port, accept
1101     multiple connections and support protocol described in this
1102     specification in it's entirety on this single port on each
1103     connection that it accepted.
1104     </p>
1105     <p>Due to the fact that TCP is used for this communication,
1106     dead peers will be detected automatically by the OS TCP
1107     stack. While it may take a while to detect dead peers if no
1108     traffic is being sent from server to client (TCP keep-alive
1109     timer is set to 2 hours on many OSes) it will not be an
1110     issue here as when notifications are sent by the server,
1111     dead client will be detected quickly.
1112     </p>
1113     <p>When connection is closed for any reason server MUST
1114     forget all subscriptions that were made on this connection.
1115     If client reconnects it MUST resubscribe to all events that
1116     it wants to receive.
1117     </p>
1118 schoenebeck 575 <a name="control_commands"></a><br /><hr />
1119 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1120     <a name="rfc.section.6"></a><h3>6.&nbsp;
1121     Description for control commands</h3>
1122 senoner 542
1123     <p>This chapter will describe the available control commands
1124     that can be sent on the TCP connection in detail. Some certain
1125 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>
1126     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
1127 senoner 542 multiple-line responses. In this case LinuxSampler signals the
1128     end of the response by a "." (single dot) line.
1129     </p>
1130 schoenebeck 940 <a name="anchor8"></a><br /><hr />
1131 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1132     <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1133     Ignored lines and comments</h3>
1134 senoner 542
1135     <p>White lines, that is lines which only contain space and
1136     tabulator characters, and lines that start with a "#"
1137     character are ignored, thus it's possible for example to
1138     group commands and to place comments in a LSCP script
1139     file.
1140     </p>
1141 schoenebeck 940 <a name="anchor9"></a><br /><hr />
1142 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1143     <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1144     Configuring audio drivers</h3>
1145 senoner 542
1146     <p>Instances of drivers in LinuxSampler are called devices.
1147     You can use multiple audio devices simultaneously, e.g. to
1148     output the sound of one sampler channel using the ALSA audio
1149     output driver, and on another sampler channel you might want
1150     to use the JACK audio output driver. For particular audio
1151     output systems it's also possible to create several devices
1152     of the same audio output driver, e.g. two separate ALSA
1153     audio output devices for using two different sound cards at
1154     the same time. This chapter describes all commands to
1155     configure LinuxSampler's audio output devices and their
1156     parameters.
1157     </p>
1158     <p>Instead of defining commands and parameters for each
1159     driver individually, all possible parameters, their meanings
1160     and possible values have to be obtained at runtime. This
1161     makes the protocol a bit abstract, but has the advantage,
1162     that front-ends can be written independently of what drivers
1163     are currently implemented and what parameters these drivers
1164     are actually offering. This means front-ends can even handle
1165     drivers which are implemented somewhere in future without
1166     modifying the front-end at all.
1167     </p>
1168     <p>Note: examples in this chapter showing particular
1169     parameters of drivers are not meant as specification of the
1170     drivers' parameters. Driver implementations in LinuxSampler
1171     might have complete different parameter names and meanings
1172     than shown in these examples or might change in future, so
1173     these examples are only meant for showing how to retrieve
1174     what parameters drivers are offering, how to retrieve their
1175     possible values, etc.
1176     </p>
1177 schoenebeck 940 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1178 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1179     <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1180     Getting amount of available audio output drivers</h3>
1181 senoner 542
1182     <p>Use the following command to get the number of
1183     audio output drivers currently available for the
1184     LinuxSampler instance:
1185     </p>
1186 schoenebeck 708 <p>
1187     </p>
1188 senoner 542 <blockquote class="text">
1189     <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1190     </p>
1191 schoenebeck 708 </blockquote><p>
1192 schoenebeck 940
1193 schoenebeck 708 </p>
1194 senoner 542 <p>Possible Answers:
1195     </p>
1196 schoenebeck 708 <p>
1197     </p>
1198 senoner 542 <blockquote class="text">
1199     <p>LinuxSampler will answer by sending the
1200     number of audio output drivers.
1201     </p>
1202 schoenebeck 708 </blockquote><p>
1203 schoenebeck 940
1204 schoenebeck 708 </p>
1205 senoner 542 <p>Example:
1206     </p>
1207 schoenebeck 708 <p>
1208     </p>
1209 senoner 542 <blockquote class="text">
1210     <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1211     </p>
1212     <p>S: "2"
1213     </p>
1214 schoenebeck 708 </blockquote><p>
1215 schoenebeck 940
1216 schoenebeck 708 </p>
1217 schoenebeck 940 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1218 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1219     <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1220     Getting all available audio output drivers</h3>
1221 senoner 542
1222     <p>Use the following command to list all audio output
1223     drivers currently available for the LinuxSampler
1224     instance:
1225     </p>
1226 schoenebeck 708 <p>
1227     </p>
1228 senoner 542 <blockquote class="text">
1229     <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1230     </p>
1231 schoenebeck 708 </blockquote><p>
1232 schoenebeck 940
1233 schoenebeck 708 </p>
1234 senoner 542 <p>Possible Answers:
1235     </p>
1236 schoenebeck 708 <p>
1237     </p>
1238 senoner 542 <blockquote class="text">
1239     <p>LinuxSampler will answer by sending comma
1240     separated character strings, each symbolizing an
1241     audio output driver.
1242     </p>
1243 schoenebeck 708 </blockquote><p>
1244 schoenebeck 940
1245 schoenebeck 708 </p>
1246 senoner 542 <p>Example:
1247     </p>
1248 schoenebeck 708 <p>
1249     </p>
1250 senoner 542 <blockquote class="text">
1251     <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1252     </p>
1253     <p>S: "ALSA,JACK"
1254     </p>
1255 schoenebeck 708 </blockquote><p>
1256 schoenebeck 940
1257 schoenebeck 708 </p>
1258 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1259 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1260     <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1261     Getting information about a specific audio
1262 schoenebeck 940 output driver</h3>
1263 senoner 542
1264     <p>Use the following command to get detailed information
1265     about a specific audio output driver:
1266     </p>
1267 schoenebeck 708 <p>
1268     </p>
1269 senoner 542 <blockquote class="text">
1270     <p>GET AUDIO_OUTPUT_DRIVER INFO
1271     &lt;audio-output-driver&gt;
1272     </p>
1273 schoenebeck 708 </blockquote><p>
1274 schoenebeck 940
1275 schoenebeck 708 </p>
1276 senoner 542 <p>Where &lt;audio-output-driver&gt; is the name of the
1277     audio output driver, returned by the
1278 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.
1279 senoner 542 </p>
1280     <p>Possible Answers:
1281     </p>
1282 schoenebeck 708 <p>
1283     </p>
1284 senoner 542 <blockquote class="text">
1285     <p>LinuxSampler will answer by sending a
1286     &lt;CRLF&gt; separated list. Each answer line
1287     begins with the information category name
1288     followed by a colon and then a space character
1289     &lt;SP&gt; and finally the info character string
1290     to that info category. At the moment the
1291     following information categories are
1292     defined:
1293     </p>
1294 schoenebeck 708 <p>
1295     </p>
1296 senoner 542 <blockquote class="text">
1297     <p>DESCRIPTION -
1298     </p>
1299     <blockquote class="text">
1300     <p> character string describing the
1301     audio output driver
1302     </p>
1303 schoenebeck 940 </blockquote>
1304    
1305 senoner 542
1306     <p>VERSION -
1307     </p>
1308     <blockquote class="text">
1309     <p>character string reflecting the
1310     driver's version
1311     </p>
1312 schoenebeck 940 </blockquote>
1313    
1314 senoner 542
1315     <p>PARAMETERS -
1316     </p>
1317     <blockquote class="text">
1318     <p>comma separated list of all
1319     parameters available for the given
1320     audio output driver, at least
1321     parameters 'channels', 'samplerate'
1322     and 'active' are offered by all audio
1323     output drivers
1324     </p>
1325 schoenebeck 940 </blockquote>
1326    
1327 senoner 542
1328 schoenebeck 940 </blockquote>
1329    
1330 senoner 542
1331     <p>The mentioned fields above don't have to be
1332     in particular order.
1333     </p>
1334 schoenebeck 708 </blockquote><p>
1335 schoenebeck 940
1336 schoenebeck 708 </p>
1337 senoner 542 <p>Example:
1338     </p>
1339 schoenebeck 708 <p>
1340     </p>
1341 senoner 542 <blockquote class="text">
1342     <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1343     </p>
1344     <p>S: "DESCRIPTION: Advanced Linux Sound
1345     Architecture"
1346     </p>
1347     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1348     </p>
1349     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1350     DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1351     FRAGMENTSIZE,CARD"
1352     </p>
1353     <p>&nbsp;&nbsp;&nbsp;"."
1354     </p>
1355 schoenebeck 708 </blockquote><p>
1356 schoenebeck 940
1357 schoenebeck 708 </p>
1358 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1359 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1360     <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1361     Getting information about specific audio
1362 schoenebeck 940 output driver parameter</h3>
1363 senoner 542
1364     <p>Use the following command to get detailed information
1365     about a specific audio output driver parameter:
1366     </p>
1367 schoenebeck 708 <p>
1368     </p>
1369 senoner 542 <blockquote class="text">
1370     <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1371     </p>
1372 schoenebeck 708 </blockquote><p>
1373 schoenebeck 940
1374 schoenebeck 708 </p>
1375 senoner 542 <p>Where &lt;audio&gt; is the name of the audio output
1376 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,
1377 senoner 542 &lt;prm&gt; a specific parameter name for which information should be
1378     obtained (as returned by the
1379 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
1380 senoner 542 &lt;deplist&gt; is an optional list of parameters on which the sought
1381     parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1382     pairs in form of "key1=val1 key2=val2 ...", where character string values
1383     are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1384     which are not dependency parameters of &lt;prm&gt; will be ignored, means
1385     the front-end application can simply put all parameters into &lt;deplist&gt;
1386     with the values already selected by the user.
1387     </p>
1388     <p>Possible Answers:
1389     </p>
1390 schoenebeck 708 <p>
1391     </p>
1392 senoner 542 <blockquote class="text">
1393     <p>LinuxSampler will answer by sending a
1394     &lt;CRLF&gt; separated list.
1395     Each answer line begins with the information category name
1396     followed by a colon and then a space character &lt;SP&gt; and
1397     finally
1398     the info character string to that info category. There are
1399     information which is always returned, independently of the
1400     given driver parameter and there are optional information
1401     which is only shown dependently to given driver parameter. At
1402     the moment the following information categories are defined:
1403     </p>
1404 schoenebeck 708 </blockquote><p>
1405 schoenebeck 940
1406 schoenebeck 708 </p>
1407     <p>
1408     </p>
1409 senoner 542 <blockquote class="text">
1410     <p>TYPE -
1411     </p>
1412     <blockquote class="text">
1413     <p>either "BOOL" for boolean value(s) or
1414     "INT" for integer
1415     value(s) or "FLOAT" for dotted number(s) or "STRING" for
1416     character string(s)
1417     (always returned, no matter which driver parameter)
1418     </p>
1419 schoenebeck 940 </blockquote>
1420    
1421 senoner 542
1422     <p>DESCRIPTION -
1423     </p>
1424     <blockquote class="text">
1425     <p>arbitrary text describing the purpose of the parameter
1426     (always returned, no matter which driver parameter)
1427     </p>
1428 schoenebeck 940 </blockquote>
1429    
1430 senoner 542
1431     <p>MANDATORY -
1432     </p>
1433     <blockquote class="text">
1434     <p>either true or false, defines if this parameter must be
1435     given when the device is to be created with the
1436 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>
1437 senoner 542 command (always returned, no matter which driver parameter)
1438     </p>
1439 schoenebeck 940 </blockquote>
1440    
1441 senoner 542
1442     <p>FIX -
1443     </p>
1444     <blockquote class="text">
1445     <p>either true or false, if false then this parameter can
1446     be changed at any time, once the device is created by
1447 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>
1448 senoner 542 command (always returned, no matter which driver parameter)
1449     </p>
1450 schoenebeck 940 </blockquote>
1451    
1452 senoner 542
1453     <p>MULTIPLICITY -
1454     </p>
1455     <blockquote class="text">
1456     <p>either true or false, defines if this parameter allows
1457     only one value or a list of values, where true means
1458     multiple values and false only a single value allowed
1459     (always returned, no matter which driver parameter)
1460     </p>
1461 schoenebeck 940 </blockquote>
1462    
1463 senoner 542
1464     <p>DEPENDS -
1465     </p>
1466     <blockquote class="text">
1467 schoenebeck 561 <p>comma separated list of parameters this parameter depends
1468 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1469     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1470     listed parameters, for example assuming that an audio
1471     driver (like the ALSA driver) offers parameters 'card'
1472     and 'samplerate' then parameter 'samplerate' would
1473     depend on 'card' because the possible values for
1474     'samplerate' depends on the sound card which can be
1475     chosen by the 'card' parameter
1476     (optionally returned, dependent to driver parameter)
1477     </p>
1478 schoenebeck 940 </blockquote>
1479    
1480 senoner 542
1481     <p>DEFAULT -
1482     </p>
1483     <blockquote class="text">
1484     <p>reflects the default value for this parameter which is
1485     used when the device is created and not explicitly
1486 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,
1487 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
1488     list, that's why character strings are encapsulated into
1489     apostrophes (')
1490     (optionally returned, dependent to driver parameter)
1491     </p>
1492 schoenebeck 940 </blockquote>
1493    
1494 senoner 542
1495     <p>RANGE_MIN -
1496     </p>
1497     <blockquote class="text">
1498     <p>defines lower limit of the allowed value range for this
1499     parameter, can be an integer value as well as a dotted
1500     number, this parameter is often used in conjunction
1501     with RANGE_MAX, but may also appear without
1502     (optionally returned, dependent to driver parameter)
1503     </p>
1504 schoenebeck 940 </blockquote>
1505    
1506 senoner 542
1507     <p>RANGE_MAX -
1508     </p>
1509     <blockquote class="text">
1510     <p>defines upper limit of the allowed value range for this
1511     parameter, can be an integer value as well as a dotted
1512     number, this parameter is often used in conjunction with
1513     RANGE_MIN, but may also appear without
1514     (optionally returned, dependent to driver parameter)
1515     </p>
1516 schoenebeck 940 </blockquote>
1517    
1518 senoner 542
1519     <p>POSSIBILITIES -
1520     </p>
1521     <blockquote class="text">
1522     <p>comma separated list of possible values for this
1523     parameter, character strings are encapsulated into
1524     apostrophes
1525     (optionally returned, dependent to driver parameter)
1526     </p>
1527 schoenebeck 940 </blockquote>
1528    
1529 senoner 542
1530 schoenebeck 708 </blockquote><p>
1531 schoenebeck 940
1532 schoenebeck 708 </p>
1533 senoner 542 <p>The mentioned fields above don't have to be in particular order.
1534     </p>
1535     <p>Examples:
1536     </p>
1537 schoenebeck 708 <p>
1538     </p>
1539 senoner 542 <blockquote class="text">
1540     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1541     </p>
1542     <p>S: "DESCRIPTION: sound card to be used"
1543     </p>
1544     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1545     </p>
1546     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1547     </p>
1548     <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1549     </p>
1550     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1551     </p>
1552     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1553     </p>
1554     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1555     </p>
1556     <p>&nbsp;&nbsp;&nbsp;"."
1557     </p>
1558 schoenebeck 708 </blockquote><p>
1559 schoenebeck 940
1560 schoenebeck 708 </p>
1561     <p>
1562     </p>
1563 senoner 542 <blockquote class="text">
1564     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1565     </p>
1566     <p>S: "DESCRIPTION: output sample rate in Hz"
1567     </p>
1568     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1569     </p>
1570     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1571     </p>
1572     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1573     </p>
1574     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1575     </p>
1576     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1577     </p>
1578     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1579     </p>
1580     <p>&nbsp;&nbsp;&nbsp;"."
1581     </p>
1582 schoenebeck 708 </blockquote><p>
1583 schoenebeck 940
1584 schoenebeck 708 </p>
1585     <p>
1586     </p>
1587 senoner 542 <blockquote class="text">
1588     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1589     </p>
1590     <p>S: "DESCRIPTION: output sample rate in Hz"
1591     </p>
1592     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1593     </p>
1594     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1595     </p>
1596     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1597     </p>
1598     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1599     </p>
1600     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1601     </p>
1602     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1603     </p>
1604     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1605     </p>
1606     <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1607     </p>
1608     <p>&nbsp;&nbsp;&nbsp;"."
1609     </p>
1610 schoenebeck 708 </blockquote><p>
1611 schoenebeck 940
1612 schoenebeck 708 </p>
1613 schoenebeck 940 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1614 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1615     <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1616     Creating an audio output device</h3>
1617 senoner 542
1618     <p>Use the following command to create a new audio output device for the desired audio output system:
1619     </p>
1620 schoenebeck 708 <p>
1621     </p>
1622 senoner 542 <blockquote class="text">
1623     <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1624     </p>
1625 schoenebeck 708 </blockquote><p>
1626 schoenebeck 940
1627 schoenebeck 708 </p>
1628 senoner 542 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1629 schoenebeck 575 output system as returned by the
1630 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>
1631 schoenebeck 575 command and &lt;param-list&gt; by an optional list of driver
1632 senoner 542 specific parameters in form of "key1=val1 key2=val2 ...", where
1633     character string values should be encapsulated into apostrophes (').
1634     Note that there might be drivers which require parameter(s) to be
1635     given with this command. Use the previously described commands in
1636     this chapter to get this information.
1637     </p>
1638     <p>Possible Answers:
1639     </p>
1640 schoenebeck 708 <p>
1641     </p>
1642 senoner 542 <blockquote class="text">
1643     <p>"OK[&lt;device-id&gt;]" -
1644     </p>
1645     <blockquote class="text">
1646     <p>in case the device was successfully created, where
1647     &lt;device-id&gt; is the numerical ID of the new device
1648     </p>
1649 schoenebeck 940 </blockquote>
1650    
1651 senoner 542
1652     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1653     </p>
1654     <blockquote class="text">
1655     <p>in case the device was created successfully, where
1656     &lt;device-id&gt; is the numerical ID of the new device, but there
1657     are noteworthy issue(s) related (e.g. sound card doesn't
1658     support given hardware parameters and the driver is using
1659     fall-back values), providing an appropriate warning code and
1660     warning message
1661     </p>
1662 schoenebeck 940 </blockquote>
1663    
1664 senoner 542
1665     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1666     </p>
1667     <blockquote class="text">
1668     <p>in case it failed, providing an appropriate error code and error message
1669     </p>
1670 schoenebeck 940 </blockquote>
1671    
1672 senoner 542
1673 schoenebeck 708 </blockquote><p>
1674 schoenebeck 940
1675 schoenebeck 708 </p>
1676 senoner 542 <p>Examples:
1677     </p>
1678 schoenebeck 708 <p>
1679     </p>
1680 senoner 542 <blockquote class="text">
1681     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1682     </p>
1683     <p>S: "OK[0]"
1684     </p>
1685 schoenebeck 708 </blockquote><p>
1686 schoenebeck 940
1687 schoenebeck 708 </p>
1688     <p>
1689     </p>
1690 senoner 542 <blockquote class="text">
1691     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1692     </p>
1693     <p>S: "OK[1]"
1694     </p>
1695 schoenebeck 708 </blockquote><p>
1696 schoenebeck 940
1697 schoenebeck 708 </p>
1698 schoenebeck 940 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1699 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1700     <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1701     Destroying an audio output device</h3>
1702 senoner 542
1703     <p>Use the following command to destroy a created output device:
1704     </p>
1705 schoenebeck 708 <p>
1706     </p>
1707 senoner 542 <blockquote class="text">
1708     <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1709     </p>
1710 schoenebeck 708 </blockquote><p>
1711 schoenebeck 940
1712 schoenebeck 708 </p>
1713 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1714     audio output device as given by the
1715 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>
1716     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>
1717 senoner 542 command.
1718     </p>
1719     <p>Possible Answers:
1720     </p>
1721 schoenebeck 708 <p>
1722     </p>
1723 senoner 542 <blockquote class="text">
1724     <p>"OK" -
1725     </p>
1726     <blockquote class="text">
1727     <p>in case the device was successfully destroyed
1728     </p>
1729 schoenebeck 940 </blockquote>
1730    
1731 senoner 542
1732     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1733     </p>
1734     <blockquote class="text">
1735     <p>in case the device was destroyed successfully, but there are
1736     noteworthy issue(s) related (e.g. an audio over ethernet
1737     driver was unloaded but the other host might not be
1738     informed about this situation), providing an appropriate
1739     warning code and warning message
1740     </p>
1741 schoenebeck 940 </blockquote>
1742    
1743 senoner 542
1744     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1745     </p>
1746     <blockquote class="text">
1747     <p>in case it failed, providing an appropriate error code and
1748     error message
1749     </p>
1750 schoenebeck 940 </blockquote>
1751    
1752 senoner 542
1753 schoenebeck 708 </blockquote><p>
1754 schoenebeck 940
1755 schoenebeck 708 </p>
1756 senoner 542 <p>Example:
1757     </p>
1758 schoenebeck 708 <p>
1759     </p>
1760 senoner 542 <blockquote class="text">
1761     <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1762     </p>
1763     <p>S: "OK"
1764     </p>
1765 schoenebeck 708 </blockquote><p>
1766 schoenebeck 940
1767 schoenebeck 708 </p>
1768 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1769 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1770     <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1771     Getting all created audio output device count</h3>
1772 senoner 542
1773     <p>Use the following command to count all created audio output devices:
1774     </p>
1775 schoenebeck 708 <p>
1776     </p>
1777 senoner 542 <blockquote class="text">
1778     <p>GET AUDIO_OUTPUT_DEVICES
1779     </p>
1780 schoenebeck 708 </blockquote><p>
1781 schoenebeck 940
1782 schoenebeck 708 </p>
1783 senoner 542 <p>Possible Answers:
1784     </p>
1785 schoenebeck 708 <p>
1786     </p>
1787 senoner 542 <blockquote class="text">
1788     <p>LinuxSampler will answer by sending the current number of all
1789     audio output devices.
1790     </p>
1791 schoenebeck 708 </blockquote><p>
1792 schoenebeck 940
1793 schoenebeck 708 </p>
1794 senoner 542 <p>Example:
1795     </p>
1796 schoenebeck 708 <p>
1797     </p>
1798 senoner 542 <blockquote class="text">
1799     <p>C: "GET AUDIO_OUTPUT_DEVICES"
1800     </p>
1801     <p>S: "4"
1802     </p>
1803 schoenebeck 708 </blockquote><p>
1804 schoenebeck 940
1805 schoenebeck 708 </p>
1806 schoenebeck 940 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1807 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1808     <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1809     Getting all created audio output device list</h3>
1810 senoner 542
1811     <p>Use the following command to list all created audio output devices:
1812     </p>
1813 schoenebeck 708 <p>
1814     </p>
1815 senoner 542 <blockquote class="text">
1816     <p>LIST AUDIO_OUTPUT_DEVICES
1817     </p>
1818 schoenebeck 708 </blockquote><p>
1819 schoenebeck 940
1820 schoenebeck 708 </p>
1821 senoner 542 <p>Possible Answers:
1822     </p>
1823 schoenebeck 708 <p>
1824     </p>
1825 senoner 542 <blockquote class="text">
1826     <p>LinuxSampler will answer by sending a comma separated list with
1827     the numerical IDs of all audio output devices.
1828     </p>
1829 schoenebeck 708 </blockquote><p>
1830 schoenebeck 940
1831 schoenebeck 708 </p>
1832 senoner 542 <p>Example:
1833     </p>
1834 schoenebeck 708 <p>
1835     </p>
1836 senoner 542 <blockquote class="text">
1837     <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1838     </p>
1839     <p>S: "0,1,4,5"
1840     </p>
1841 schoenebeck 708 </blockquote><p>
1842 schoenebeck 940
1843 schoenebeck 708 </p>
1844 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1845 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1846     <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1847     Getting current settings of an audio output device</h3>
1848 senoner 542
1849     <p>Use the following command to get current settings of a specific, created audio output device:
1850     </p>
1851 schoenebeck 708 <p>
1852     </p>
1853 senoner 542 <blockquote class="text">
1854     <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1855     </p>
1856 schoenebeck 708 </blockquote><p>
1857 schoenebeck 940
1858 schoenebeck 708 </p>
1859 senoner 542 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1860     of the audio output device as e.g. returned by the
1861 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.
1862 senoner 542 </p>
1863     <p>Possible Answers:
1864     </p>
1865     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1866     Each answer line begins with the information category name
1867     followed by a colon and then a space character &lt;SP&gt; and finally
1868     the info character string to that info category. As some
1869     parameters might allow multiple values, character strings are
1870     encapsulated into apostrophes ('). At the moment the following
1871     information categories are defined (independently of device):
1872     </p>
1873 schoenebeck 708 <p>
1874     </p>
1875 senoner 542 <blockquote class="text">
1876     <p>DRIVER -
1877     </p>
1878     <blockquote class="text">
1879     <p>identifier of the used audio output driver, as also
1880     returned by the
1881 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>
1882 senoner 542 command
1883     </p>
1884 schoenebeck 940 </blockquote>
1885    
1886 senoner 542
1887     <p>CHANNELS -
1888     </p>
1889     <blockquote class="text">
1890     <p>amount of audio output channels this device currently
1891     offers
1892     </p>
1893 schoenebeck 940 </blockquote>
1894    
1895 senoner 542
1896     <p>SAMPLERATE -
1897     </p>
1898     <blockquote class="text">
1899     <p>playback sample rate the device uses
1900     </p>
1901 schoenebeck 940 </blockquote>
1902    
1903 senoner 542
1904     <p>ACTIVE -
1905     </p>
1906     <blockquote class="text">
1907     <p>either true or false, if false then the audio device is
1908     inactive and doesn't output any sound, nor do the
1909     sampler channels connected to this audio device render
1910     any audio
1911     </p>
1912 schoenebeck 940 </blockquote>
1913    
1914 senoner 542
1915 schoenebeck 708 </blockquote><p>
1916 schoenebeck 940
1917 schoenebeck 708 </p>
1918 senoner 542 <p>The mentioned fields above don't have to be in particular
1919     order. The fields above are only those fields which are
1920     returned by all audio output devices. Every audio output driver
1921     might have its own, additional driver specific parameters (see
1922 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>)
1923 senoner 542 which are also returned by this command.
1924     </p>
1925     <p>Example:
1926     </p>
1927 schoenebeck 708 <p>
1928     </p>
1929 senoner 542 <blockquote class="text">
1930     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1931     </p>
1932     <p>S: "DRIVER: ALSA"
1933     </p>
1934     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1935     </p>
1936     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1937     </p>
1938     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1939     </p>
1940     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1941     </p>
1942     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1943     </p>
1944     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1945     </p>
1946     <p>&nbsp;&nbsp;&nbsp;"."
1947     </p>
1948 schoenebeck 708 </blockquote><p>
1949 schoenebeck 940
1950 schoenebeck 708 </p>
1951 schoenebeck 940 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1952 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1953     <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1954     Changing settings of audio output devices</h3>
1955 senoner 542
1956     <p>Use the following command to alter a specific setting of a created audio output device:
1957     </p>
1958 schoenebeck 708 <p>
1959     </p>
1960 senoner 542 <blockquote class="text">
1961     <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1962     </p>
1963 schoenebeck 708 </blockquote><p>
1964 schoenebeck 940
1965 schoenebeck 708 </p>
1966 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1967 schoenebeck 575 audio output device as given by the
1968 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>
1969     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>
1970 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change
1971 senoner 542 and &lt;value&gt; by the new value for this parameter.
1972     </p>
1973     <p>Possible Answers:
1974     </p>
1975 schoenebeck 708 <p>
1976     </p>
1977 senoner 542 <blockquote class="text">
1978     <p>"OK" -
1979     </p>
1980     <blockquote class="text">
1981     <p>in case setting was successfully changed
1982     </p>
1983 schoenebeck 940 </blockquote>
1984    
1985 senoner 542
1986     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1987     </p>
1988     <blockquote class="text">
1989     <p>in case setting was changed successfully, but there are
1990     noteworthy issue(s) related, providing an appropriate
1991     warning code and warning message
1992     </p>
1993 schoenebeck 940 </blockquote>
1994    
1995 senoner 542
1996     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1997     </p>
1998     <blockquote class="text">
1999     <p>in case it failed, providing an appropriate error code and
2000     error message
2001     </p>
2002 schoenebeck 940 </blockquote>
2003    
2004 senoner 542
2005 schoenebeck 708 </blockquote><p>
2006 schoenebeck 940
2007 schoenebeck 708 </p>
2008 senoner 542 <p>Example:
2009     </p>
2010 schoenebeck 708 <p>
2011     </p>
2012 senoner 542 <blockquote class="text">
2013     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
2014     </p>
2015     <p>S: "OK"
2016     </p>
2017 schoenebeck 708 </blockquote><p>
2018 schoenebeck 940
2019 schoenebeck 708 </p>
2020 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
2021 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2022     <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
2023     Getting information about an audio channel</h3>
2024 senoner 542
2025     <p>Use the following command to get information about an audio channel:
2026     </p>
2027 schoenebeck 708 <p>
2028     </p>
2029 senoner 542 <blockquote class="text">
2030     <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
2031     </p>
2032 schoenebeck 708 </blockquote><p>
2033 schoenebeck 940
2034 schoenebeck 708 </p>
2035 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
2036 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>
2037     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>
2038 schoenebeck 575 command and &lt;audio-chan&gt; the audio channel number.
2039 senoner 542 </p>
2040     <p>Possible Answers:
2041     </p>
2042 schoenebeck 708 <p>
2043     </p>
2044 senoner 542 <blockquote class="text">
2045     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2046     Each answer line begins with the information category name
2047     followed by a colon and then a space character &lt;SP&gt; and finally
2048     the info character string to that info category. At the moment
2049     the following information categories are defined:
2050     </p>
2051 schoenebeck 708 <p>
2052     </p>
2053 senoner 542 <blockquote class="text">
2054     <p>NAME -
2055     </p>
2056     <blockquote class="text">
2057     <p>arbitrary character string naming the channel, which
2058     doesn't have to be unique (always returned by all audio channels)
2059     </p>
2060 schoenebeck 940 </blockquote>
2061    
2062 senoner 542
2063     <p>IS_MIX_CHANNEL -
2064     </p>
2065     <blockquote class="text">
2066     <p>either true or false, a mix-channel is not a real,
2067     independent audio channel, but a virtual channel which
2068     is mixed to another real channel, this mechanism is
2069     needed for sampler engines which need more audio
2070     channels than the used audio system might be able to offer
2071     (always returned by all audio channels)
2072     </p>
2073 schoenebeck 940 </blockquote>
2074    
2075 senoner 542
2076     <p>MIX_CHANNEL_DESTINATION -
2077     </p>
2078     <blockquote class="text">
2079     <p>numerical ID (positive integer including 0)
2080     which reflects the real audio channel (of the same audio
2081     output device) this mix channel refers to, means where
2082     the audio signal actually will be routed / added to
2083     (only returned in case the audio channel is mix channel)
2084     </p>
2085 schoenebeck 940 </blockquote>
2086    
2087 senoner 542
2088 schoenebeck 940 </blockquote>
2089    
2090 senoner 542
2091 schoenebeck 708 </blockquote><p>
2092 schoenebeck 940
2093 schoenebeck 708 </p>
2094 senoner 542 <p>The mentioned fields above don't have to be in particular
2095     order. The fields above are only those fields which are
2096     generally returned for the described cases by all audio
2097     channels regardless of the audio driver. Every audio channel
2098     might have its own, additional driver and channel specific
2099     parameters.
2100     </p>
2101     <p>Examples:
2102     </p>
2103 schoenebeck 708 <p>
2104     </p>
2105 senoner 542 <blockquote class="text">
2106     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2107     </p>
2108     <p>S: "NAME: studio monitor left"
2109     </p>
2110     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2111     </p>
2112     <p>&nbsp;&nbsp;&nbsp;"."
2113     </p>
2114 schoenebeck 708 </blockquote><p>
2115 schoenebeck 940
2116 schoenebeck 708 </p>
2117     <p>
2118     </p>
2119 senoner 542 <blockquote class="text">
2120     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2121     </p>
2122     <p>S: "NAME: studio monitor right"
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 2"
2135     </p>
2136     <p>S: "NAME: studio monitor left"
2137     </p>
2138     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2139     </p>
2140     <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2141     </p>
2142     <p>&nbsp;&nbsp;&nbsp;"."
2143     </p>
2144 schoenebeck 708 </blockquote><p>
2145 schoenebeck 940
2146 schoenebeck 708 </p>
2147     <p>
2148     </p>
2149 senoner 542 <blockquote class="text">
2150     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2151     </p>
2152     <p>S: "NAME: 'ardour (left)'"
2153     </p>
2154     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2155     </p>
2156     <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2157     </p>
2158     <p>&nbsp;&nbsp;&nbsp;"."
2159     </p>
2160 schoenebeck 708 </blockquote><p>
2161 schoenebeck 940
2162 schoenebeck 708 </p>
2163 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2164 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2165     <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2166     Getting information about specific audio channel parameter</h3>
2167 senoner 542
2168     <p>Use the following command to get detailed information about specific audio channel parameter:
2169     </p>
2170 schoenebeck 708 <p>
2171     </p>
2172 senoner 542 <blockquote class="text">
2173     <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2174     </p>
2175 schoenebeck 708 </blockquote><p>
2176 schoenebeck 940
2177 schoenebeck 708 </p>
2178 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2179 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>
2180     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>
2181 senoner 542 command, &lt;chan&gt; the audio channel number
2182     and &lt;param&gt; a specific channel parameter name for which information should
2183 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).
2184 senoner 542 </p>
2185     <p>Possible Answers:
2186     </p>
2187 schoenebeck 708 <p>
2188     </p>
2189 senoner 542 <blockquote class="text">
2190     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2191     Each answer line begins with the information category name
2192     followed by a colon and then a space character &lt;SP&gt; and finally
2193     the info character string to that info category. There are
2194     information which is always returned, independently of the
2195     given channel parameter and there is optional information
2196     which is only shown dependently to the given audio channel. At
2197     the moment the following information categories are defined:
2198     </p>
2199 schoenebeck 708 <p>
2200     </p>
2201 senoner 542 <blockquote class="text">
2202     <p>TYPE -
2203     </p>
2204     <blockquote class="text">
2205     <p>either "BOOL" for boolean value(s) or "INT" for integer
2206     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2207     character string(s)
2208     (always returned)
2209     </p>
2210 schoenebeck 940 </blockquote>
2211    
2212 senoner 542
2213     <p>DESCRIPTION -
2214     </p>
2215     <blockquote class="text">
2216     <p>arbitrary text describing the purpose of the parameter (always returned)
2217     </p>
2218 schoenebeck 940 </blockquote>
2219    
2220 senoner 542
2221     <p>FIX -
2222     </p>
2223     <blockquote class="text">
2224     <p>either true or false, if true then this parameter is
2225     read only, thus cannot be altered
2226     (always returned)
2227     </p>
2228 schoenebeck 940 </blockquote>
2229    
2230 senoner 542
2231     <p>MULTIPLICITY -
2232     </p>
2233     <blockquote class="text">
2234     <p>either true or false, defines if this parameter allows
2235     only one value or a list of values, where true means
2236     multiple values and false only a single value allowed
2237     (always returned)
2238     </p>
2239 schoenebeck 940 </blockquote>
2240    
2241 senoner 542
2242     <p>RANGE_MIN -
2243     </p>
2244     <blockquote class="text">
2245     <p>defines lower limit of the allowed value range for this
2246     parameter, can be an integer value as well as a dotted
2247     number, usually used in conjunction with 'RANGE_MAX',
2248     but may also appear without
2249     (optionally returned, dependent to driver and channel
2250     parameter)
2251     </p>
2252 schoenebeck 940 </blockquote>
2253    
2254 senoner 542
2255     <p>RANGE_MAX -
2256     </p>
2257     <blockquote class="text">
2258     <p>defines upper limit of the allowed value range for this
2259     parameter, can be an integer value as well as a dotted
2260     number, usually used in conjunction with 'RANGE_MIN',
2261     but may also appear without
2262     (optionally returned, dependent to driver and channel
2263     parameter)
2264     </p>
2265 schoenebeck 940 </blockquote>
2266    
2267 senoner 542
2268     <p>POSSIBILITIES -
2269     </p>
2270     <blockquote class="text">
2271     <p>comma separated list of possible values for this
2272     parameter, character strings are encapsulated into
2273     apostrophes
2274     (optionally returned, dependent to driver and channel
2275     parameter)
2276     </p>
2277 schoenebeck 940 </blockquote>
2278    
2279 senoner 542
2280 schoenebeck 940 </blockquote>
2281    
2282 senoner 542
2283     <p>The mentioned fields above don't have to be in particular order.
2284     </p>
2285 schoenebeck 708 </blockquote><p>
2286 schoenebeck 940
2287 schoenebeck 708 </p>
2288 senoner 542 <p>Example:
2289     </p>
2290 schoenebeck 708 <p>
2291     </p>
2292 senoner 542 <blockquote class="text">
2293     <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2294     </p>
2295     <p>S: "DESCRIPTION: bindings to other JACK clients"
2296     </p>
2297     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2298     </p>
2299     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2300     </p>
2301     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2302     </p>
2303     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2304     </p>
2305     <p>&nbsp;&nbsp;&nbsp;"."
2306     </p>
2307 schoenebeck 708 </blockquote><p>
2308 schoenebeck 940
2309 schoenebeck 708 </p>
2310 schoenebeck 940 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2311 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2312     <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2313     Changing settings of audio output channels</h3>
2314 senoner 542
2315     <p>Use the following command to alter a specific setting of an audio output channel:
2316     </p>
2317 schoenebeck 708 <p>
2318     </p>
2319 senoner 542 <blockquote class="text">
2320     <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2321     </p>
2322 schoenebeck 708 </blockquote><p>
2323 schoenebeck 940
2324 schoenebeck 708 </p>
2325 schoenebeck 575 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2326 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>
2327     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>
2328 schoenebeck 575 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2329 senoner 542 parameter to change and &lt;value&gt; by the new value for this parameter.
2330     </p>
2331     <p>Possible Answers:
2332     </p>
2333 schoenebeck 708 <p>
2334     </p>
2335 senoner 542 <blockquote class="text">
2336     <p>"OK" -
2337     </p>
2338     <blockquote class="text">
2339     <p>in case setting was successfully changed
2340     </p>
2341 schoenebeck 940 </blockquote>
2342    
2343 senoner 542
2344     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2345     </p>
2346     <blockquote class="text">
2347     <p>in case setting was changed successfully, but there are
2348     noteworthy issue(s) related, providing an appropriate
2349     warning code and warning message
2350     </p>
2351 schoenebeck 940 </blockquote>
2352    
2353 senoner 542
2354     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2355     </p>
2356     <blockquote class="text">
2357     <p>in case it failed, providing an appropriate error code and
2358     error message
2359     </p>
2360 schoenebeck 940 </blockquote>
2361    
2362 senoner 542
2363 schoenebeck 708 </blockquote><p>
2364 schoenebeck 940
2365 schoenebeck 708 </p>
2366 senoner 542 <p>Example:
2367     </p>
2368 schoenebeck 708 <p>
2369     </p>
2370 senoner 542 <blockquote class="text">
2371     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2372     </p>
2373     <p>S: "OK"
2374     </p>
2375 schoenebeck 708 </blockquote><p>
2376 schoenebeck 940
2377 schoenebeck 708 </p>
2378     <p>
2379     </p>
2380 senoner 542 <blockquote class="text">
2381     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2382     </p>
2383     <p>S: "OK"
2384     </p>
2385 schoenebeck 708 </blockquote><p>
2386 schoenebeck 940
2387 schoenebeck 708 </p>
2388 schoenebeck 940 <a name="anchor10"></a><br /><hr />
2389 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2390     <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2391     Configuring MIDI input drivers</h3>
2392 senoner 542
2393     <p>Instances of drivers in LinuxSampler are called devices. You can use
2394     multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2395     MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2396     channel. For particular MIDI input systems it's also possible to create
2397     several devices of the same MIDI input type. This chapter describes all
2398     commands to configure LinuxSampler's MIDI input devices and their parameters.
2399     </p>
2400     <p>Instead of defining commands and parameters for each driver individually,
2401     all possible parameters, their meanings and possible values have to be obtained
2402     at runtime. This makes the protocol a bit abstract, but has the advantage, that
2403     front-ends can be written independently of what drivers are currently implemented
2404     and what parameters these drivers are actually offering. This means front-ends can
2405     even handle drivers which are implemented somewhere in future without modifying
2406     the front-end at all.
2407     </p>
2408     <p>Commands for configuring MIDI input devices are pretty much the same as the
2409     commands for configuring audio output drivers, already described in the last
2410     chapter.
2411     </p>
2412     <p>Note: examples in this chapter showing particular parameters of drivers are
2413     not meant as specification of the drivers' parameters. Driver implementations in
2414     LinuxSampler might have complete different parameter names and meanings than shown
2415     in these examples or might change in future, so these examples are only meant for
2416     showing how to retrieve what parameters drivers are offering, how to retrieve their
2417     possible values, etc.
2418     </p>
2419 schoenebeck 940 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2420 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2421     <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2422     Getting amount of available MIDI input drivers</h3>
2423 senoner 542
2424     <p>Use the following command to get the number of
2425     MIDI input drivers currently available for the
2426     LinuxSampler instance:
2427     </p>
2428 schoenebeck 708 <p>
2429     </p>
2430 senoner 542 <blockquote class="text">
2431     <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2432     </p>
2433 schoenebeck 708 </blockquote><p>
2434 schoenebeck 940
2435 schoenebeck 708 </p>
2436 senoner 542 <p>Possible Answers:
2437     </p>
2438 schoenebeck 708 <p>
2439     </p>
2440 senoner 542 <blockquote class="text">
2441     <p>LinuxSampler will answer by sending the
2442     number of available MIDI input drivers.
2443     </p>
2444 schoenebeck 708 </blockquote><p>
2445 schoenebeck 940
2446 schoenebeck 708 </p>
2447 senoner 542 <p>Example:
2448     </p>
2449 schoenebeck 708 <p>
2450     </p>
2451 senoner 542 <blockquote class="text">
2452     <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2453     </p>
2454     <p>S: "2"
2455     </p>
2456 schoenebeck 708 </blockquote><p>
2457 schoenebeck 940
2458 schoenebeck 708 </p>
2459 schoenebeck 940 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2460 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2461     <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2462     Getting all available MIDI input drivers</h3>
2463 senoner 542
2464     <p>Use the following command to list all MIDI input drivers currently available
2465     for the LinuxSampler instance:
2466     </p>
2467 schoenebeck 708 <p>
2468     </p>
2469 senoner 542 <blockquote class="text">
2470     <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2471     </p>
2472 schoenebeck 708 </blockquote><p>
2473 schoenebeck 940
2474 schoenebeck 708 </p>
2475 senoner 542 <p>Possible Answers:
2476     </p>
2477 schoenebeck 708 <p>
2478     </p>
2479 senoner 542 <blockquote class="text">
2480     <p>LinuxSampler will answer by sending comma separated character
2481     strings, each symbolizing a MIDI input driver.
2482     </p>
2483 schoenebeck 708 </blockquote><p>
2484 schoenebeck 940
2485 schoenebeck 708 </p>
2486 senoner 542 <p>Example:
2487     </p>
2488 schoenebeck 708 <p>
2489     </p>
2490 senoner 542 <blockquote class="text">
2491     <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2492     </p>
2493     <p>S: "ALSA,JACK"
2494     </p>
2495 schoenebeck 708 </blockquote><p>
2496 schoenebeck 940
2497 schoenebeck 708 </p>
2498 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2499 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2500     <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2501     Getting information about a specific MIDI input driver</h3>
2502 senoner 542
2503     <p>Use the following command to get detailed information about a specific MIDI input driver:
2504     </p>
2505 schoenebeck 708 <p>
2506     </p>
2507 senoner 542 <blockquote class="text">
2508     <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2509     </p>
2510 schoenebeck 708 </blockquote><p>
2511 schoenebeck 940
2512 schoenebeck 708 </p>
2513 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2514 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.
2515 senoner 542 </p>
2516     <p>Possible Answers:
2517     </p>
2518 schoenebeck 708 <p>
2519     </p>
2520 senoner 542 <blockquote class="text">
2521     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2522     Each answer line begins with the information category name
2523     followed by a colon and then a space character &lt;SP&gt; and finally
2524     the info character string to that info category. At the moment
2525     the following information categories are defined:
2526     </p>
2527 schoenebeck 708 <p>
2528     </p>
2529 senoner 542 <blockquote class="text">
2530     <p>DESCRIPTION -
2531     </p>
2532     <blockquote class="text">
2533     <p>arbitrary description text about the MIDI input driver
2534     </p>
2535 schoenebeck 940 </blockquote>
2536    
2537 senoner 542
2538     <p>VERSION -
2539     </p>
2540     <blockquote class="text">
2541     <p>arbitrary character string regarding the driver's version
2542     </p>
2543 schoenebeck 940 </blockquote>
2544    
2545 senoner 542
2546     <p>PARAMETERS -
2547     </p>
2548     <blockquote class="text">
2549     <p>comma separated list of all parameters available for the given MIDI input driver
2550     </p>
2551 schoenebeck 940 </blockquote>
2552    
2553 senoner 542
2554 schoenebeck 940 </blockquote>
2555    
2556 senoner 542
2557     <p>The mentioned fields above don't have to be in particular order.
2558     </p>
2559 schoenebeck 708 </blockquote><p>
2560 schoenebeck 940
2561 schoenebeck 708 </p>
2562 senoner 542 <p>Example:
2563     </p>
2564 schoenebeck 708 <p>
2565     </p>
2566 senoner 542 <blockquote class="text">
2567     <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2568     </p>
2569     <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2570     </p>
2571     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2572     </p>
2573     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2574     </p>
2575     <p>&nbsp;&nbsp;&nbsp;"."
2576     </p>
2577 schoenebeck 708 </blockquote><p>
2578 schoenebeck 940
2579 schoenebeck 708 </p>
2580 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2581 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2582     <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2583     Getting information about specific MIDI input driver parameter</h3>
2584 senoner 542
2585     <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2586     </p>
2587 schoenebeck 708 <p>
2588     </p>
2589 senoner 542 <blockquote class="text">
2590     <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2591     </p>
2592 schoenebeck 708 </blockquote><p>
2593 schoenebeck 940
2594 schoenebeck 708 </p>
2595 schoenebeck 561 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2596 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
2597 senoner 542 parameter name for which information should be obtained (as returned by the
2598 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
2599 senoner 542 of parameters on which the sought parameter &lt;param&gt; depends on,
2600     &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2601     where character string values are encapsulated into apostrophes ('). Arguments
2602     given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2603     will be ignored, means the front-end application can simply put all parameters
2604     in &lt;deplist&gt; with the values selected by the user.
2605     </p>
2606     <p>Possible Answers:
2607     </p>
2608     <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2609     Each answer line begins with the information category name
2610     followed by a colon and then a space character &lt;SP> and finally
2611     the info character string to that info category. There is
2612     information which is always returned, independent of the
2613     given driver parameter and there is optional information
2614     which is only shown dependent to given driver parameter. At
2615     the moment the following information categories are defined:
2616     </p>
2617 schoenebeck 708 <p>
2618     </p>
2619 senoner 542 <blockquote class="text">
2620     <p>TYPE -
2621     </p>
2622     <blockquote class="text">
2623     <p>either "BOOL" for boolean value(s) or "INT" for integer
2624     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2625     character string(s)
2626     (always returned, no matter which driver parameter)
2627     </p>
2628 schoenebeck 940 </blockquote>
2629    
2630 senoner 542
2631     <p>DESCRIPTION -
2632     </p>
2633     <blockquote class="text">
2634     <p>arbitrary text describing the purpose of the parameter
2635     (always returned, no matter which driver parameter)
2636     </p>
2637 schoenebeck 940 </blockquote>
2638    
2639 senoner 542
2640     <p>MANDATORY -
2641     </p>
2642     <blockquote class="text">
2643     <p>either true or false, defines if this parameter must be
2644     given when the device is to be created with the
2645 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
2646 senoner 542 (always returned, no matter which driver parameter)
2647     </p>
2648 schoenebeck 940 </blockquote>
2649    
2650 senoner 542
2651     <p>FIX -
2652     </p>
2653     <blockquote class="text">
2654     <p>either true or false, if false then this parameter can
2655     be changed at any time, once the device is created by
2656 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
2657 senoner 542 (always returned, no matter which driver parameter)
2658     </p>
2659 schoenebeck 940 </blockquote>
2660    
2661 senoner 542
2662     <p>MULTIPLICITY -
2663     </p>
2664     <blockquote class="text">
2665     <p>either true or false, defines if this parameter allows
2666     only one value or a list of values, where true means
2667     multiple values and false only a single value allowed
2668     (always returned, no matter which driver parameter)
2669     </p>
2670 schoenebeck 940 </blockquote>
2671    
2672 senoner 542
2673     <p>DEPENDS -
2674     </p>
2675     <blockquote class="text">
2676 schoenebeck 561 <p>comma separated list of parameters this parameter depends
2677 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2678     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2679     listed parameters, for example assuming that an audio
2680     driver (like the ALSA driver) offers parameters 'card'
2681     and 'samplerate' then parameter 'samplerate' would
2682     depend on 'card' because the possible values for
2683     'samplerate' depends on the sound card which can be
2684     chosen by the 'card' parameter
2685     (optionally returned, dependent to driver parameter)
2686     </p>
2687 schoenebeck 940 </blockquote>
2688    
2689 senoner 542
2690     <p>DEFAULT -
2691     </p>
2692     <blockquote class="text">
2693     <p>reflects the default value for this parameter which is
2694     used when the device is created and not explicitly
2695 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,
2696 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
2697     list, that's why character strings are encapsulated into
2698     apostrophes (')
2699     (optionally returned, dependent to driver parameter)
2700     </p>
2701 schoenebeck 940 </blockquote>
2702    
2703 senoner 542
2704     <p>RANGE_MIN -
2705     </p>
2706     <blockquote class="text">
2707     <p>defines lower limit of the allowed value range for this
2708     parameter, can be an integer value as well as a dotted
2709     number, this parameter is often used in conjunction
2710     with RANGE_MAX, but may also appear without
2711     (optionally returned, dependent to driver parameter)
2712     </p>
2713 schoenebeck 940 </blockquote>
2714    
2715 senoner 542
2716     <p>RANGE_MAX -
2717     </p>
2718     <blockquote class="text">
2719     <p>defines upper limit of the allowed value range for this
2720     parameter, can be an integer value as well as a dotted
2721     number, this parameter is often used in conjunction with
2722     RANGE_MIN, but may also appear without
2723     (optionally returned, dependent to driver parameter)
2724     </p>
2725 schoenebeck 940 </blockquote>
2726    
2727 senoner 542
2728     <p>POSSIBILITIES -
2729     </p>
2730     <blockquote class="text">
2731     <p>comma separated list of possible values for this
2732     parameter, character strings are encapsulated into
2733     apostrophes
2734     (optionally returned, dependent to driver parameter)
2735     </p>
2736 schoenebeck 940 </blockquote>
2737    
2738 senoner 542
2739 schoenebeck 708 </blockquote><p>
2740 schoenebeck 940
2741 schoenebeck 708 </p>
2742 senoner 542 <p>The mentioned fields above don't have to be in particular order.
2743     </p>
2744     <p>Example:
2745     </p>
2746 schoenebeck 708 <p>
2747     </p>
2748 senoner 542 <blockquote class="text">
2749     <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2750     </p>
2751     <p>S: "DESCRIPTION: Whether device is enabled"
2752     </p>
2753     <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2754     </p>
2755     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2756     </p>
2757     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2758     </p>
2759     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2760     </p>
2761     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2762     </p>
2763     <p>&nbsp;&nbsp;&nbsp;"."
2764     </p>
2765 schoenebeck 708 </blockquote><p>
2766 schoenebeck 940
2767 schoenebeck 708 </p>
2768 schoenebeck 940 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2769 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2770     <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2771     Creating a MIDI input device</h3>
2772 senoner 542
2773     <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2774     </p>
2775 schoenebeck 708 <p>
2776     </p>
2777 senoner 542 <blockquote class="text">
2778     <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2779     </p>
2780 schoenebeck 708 </blockquote><p>
2781 schoenebeck 940
2782 schoenebeck 708 </p>
2783 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2784 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
2785 senoner 542 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2786     character string values should be encapsulated into apostrophes (').
2787     Note that there might be drivers which require parameter(s) to be
2788     given with this command. Use the previously described commands in
2789     this chapter to get that information.
2790     </p>
2791     <p>Possible Answers:
2792     </p>
2793 schoenebeck 708 <p>
2794     </p>
2795 senoner 542 <blockquote class="text">
2796     <p>"OK[&lt;device-id&gt;]" -
2797     </p>
2798     <blockquote class="text">
2799     <p>in case the device was successfully created, where
2800     &lt;device-id&gt; is the numerical ID of the new device
2801     </p>
2802 schoenebeck 940 </blockquote>
2803    
2804 senoner 542
2805     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2806     </p>
2807     <blockquote class="text">
2808     <p>in case the driver was loaded successfully, where
2809     &lt;device-id&gt; is the numerical ID of the new device, but
2810     there are noteworthy issue(s) related, providing an
2811     appropriate warning code and warning message
2812     </p>
2813 schoenebeck 940 </blockquote>
2814    
2815 senoner 542
2816     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2817     </p>
2818     <blockquote class="text">
2819     <p>in case it failed, providing an appropriate error code and error message
2820     </p>
2821 schoenebeck 940 </blockquote>
2822    
2823 senoner 542
2824 schoenebeck 708 </blockquote><p>
2825 schoenebeck 940
2826 schoenebeck 708 </p>
2827 senoner 542 <p>Example:
2828     </p>
2829 schoenebeck 708 <p>
2830     </p>
2831 senoner 542 <blockquote class="text">
2832     <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2833     </p>
2834     <p>S: "OK[0]"
2835     </p>
2836 schoenebeck 708 </blockquote><p>
2837 schoenebeck 940
2838 schoenebeck 708 </p>
2839 schoenebeck 940 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2840 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2841     <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2842     Destroying a MIDI input device</h3>
2843 senoner 542
2844     <p>Use the following command to destroy a created MIDI input device:
2845     </p>
2846 schoenebeck 708 <p>
2847     </p>
2848 senoner 542 <blockquote class="text">
2849     <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2850     </p>
2851 schoenebeck 708 </blockquote><p>
2852 schoenebeck 940
2853 schoenebeck 708 </p>
2854 schoenebeck 575 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2855 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>
2856     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>
2857 schoenebeck 575 command.
2858 senoner 542 </p>
2859     <p>Possible Answers:
2860     </p>
2861 schoenebeck 708 <p>
2862     </p>
2863 senoner 542 <blockquote class="text">
2864     <p>"OK" -
2865     </p>
2866     <blockquote class="text">
2867     <p>in case the device was successfully destroyed
2868     </p>
2869 schoenebeck 940 </blockquote>
2870    
2871 senoner 542
2872     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2873     </p>
2874     <blockquote class="text">
2875     <p>in case the device was destroyed, but there are noteworthy
2876     issue(s) related, providing an appropriate warning code and
2877     warning message
2878     </p>
2879 schoenebeck 940 </blockquote>
2880    
2881 senoner 542
2882     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2883     </p>
2884     <blockquote class="text">
2885     <p>in case it failed, providing an appropriate error code and error message
2886     </p>
2887 schoenebeck 940 </blockquote>
2888    
2889 senoner 542
2890 schoenebeck 708 </blockquote><p>
2891 schoenebeck 940
2892 schoenebeck 708 </p>
2893 senoner 542 <p>Example:
2894     </p>
2895 schoenebeck 708 <p>
2896     </p>
2897 senoner 542 <blockquote class="text">
2898     <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2899     </p>
2900     <p>S: "OK"
2901     </p>
2902 schoenebeck 708 </blockquote><p>
2903 schoenebeck 940
2904 schoenebeck 708 </p>
2905 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2906 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2907     <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2908     Getting all created MIDI input device count</h3>
2909 senoner 542
2910     <p>Use the following command to count all created MIDI input devices:
2911     </p>
2912 schoenebeck 708 <p>
2913     </p>
2914 senoner 542 <blockquote class="text">
2915     <p>GET MIDI_INPUT_DEVICES
2916     </p>
2917 schoenebeck 708 </blockquote><p>
2918 schoenebeck 940
2919 schoenebeck 708 </p>
2920 senoner 542 <p>Possible Answers:
2921     </p>
2922 schoenebeck 708 <p>
2923     </p>
2924 senoner 542 <blockquote class="text">
2925     <p>LinuxSampler will answer by sending the current number of all
2926     MIDI input devices.
2927     </p>
2928 schoenebeck 708 </blockquote><p>
2929 schoenebeck 940
2930 schoenebeck 708 </p>
2931 senoner 542 <p>Example:
2932     </p>
2933 schoenebeck 708 <p>
2934     </p>
2935 senoner 542 <blockquote class="text">
2936     <p>C: "GET MIDI_INPUT_DEVICES"
2937     </p>
2938     <p>S: "3"
2939     </p>
2940 schoenebeck 708 </blockquote><p>
2941 schoenebeck 940
2942 schoenebeck 708 </p>
2943 schoenebeck 940 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2944 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2945     <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2946     Getting all created MIDI input device list</h3>
2947 senoner 542
2948     <p>Use the following command to list all created MIDI input devices:
2949     </p>
2950 schoenebeck 708 <p>
2951     </p>
2952 senoner 542 <blockquote class="text">
2953     <p>LIST MIDI_INPUT_DEVICES
2954     </p>
2955 schoenebeck 708 </blockquote><p>
2956 schoenebeck 940
2957 schoenebeck 708 </p>
2958 senoner 542 <p>Possible Answers:
2959     </p>
2960 schoenebeck 708 <p>
2961     </p>
2962 senoner 542 <blockquote class="text">
2963     <p>LinuxSampler will answer by sending a comma separated list
2964     with the numerical Ids of all created MIDI input devices.
2965     </p>
2966 schoenebeck 708 </blockquote><p>
2967 schoenebeck 940
2968 schoenebeck 708 </p>
2969 senoner 542 <p>Examples:
2970     </p>
2971 schoenebeck 708 <p>
2972     </p>
2973 senoner 542 <blockquote class="text">
2974     <p>C: "LIST MIDI_INPUT_DEVICES"
2975     </p>
2976     <p>S: "0,1,2"
2977     </p>
2978 schoenebeck 708 </blockquote><p>
2979 schoenebeck 940
2980 schoenebeck 708 </p>
2981     <p>
2982     </p>
2983 senoner 542 <blockquote class="text">
2984     <p>C: "LIST MIDI_INPUT_DEVICES"
2985     </p>
2986     <p>S: "1,3"
2987     </p>
2988 schoenebeck 708 </blockquote><p>
2989 schoenebeck 940
2990 schoenebeck 708 </p>
2991 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2992 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2993     <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2994     Getting current settings of a MIDI input device</h3>
2995 senoner 542
2996     <p>Use the following command to get current settings of a specific, created MIDI input device:
2997     </p>
2998 schoenebeck 708 <p>
2999     </p>
3000 senoner 542 <blockquote class="text">
3001     <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
3002     </p>
3003 schoenebeck 708 </blockquote><p>
3004 schoenebeck 940
3005 schoenebeck 708 </p>
3006 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3007 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>
3008     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>
3009 schoenebeck 575 command.
3010 senoner 542 </p>
3011     <p>Possible Answers:
3012     </p>
3013 schoenebeck 708 <p>
3014     </p>
3015 senoner 542 <blockquote class="text">
3016     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3017     Each answer line begins with the information category name
3018     followed by a colon and then a space character &lt;SP&gt; and finally
3019     the info character string to that info category. As some
3020     parameters might allow multiple values, character strings are
3021     encapsulated into apostrophes ('). At the moment the following
3022     information categories are defined (independent of driver):
3023     </p>
3024 schoenebeck 708 <p>
3025     </p>
3026 senoner 542 <blockquote class="text">
3027     <p>DRIVER -
3028     </p>
3029     <blockquote class="text">
3030     <p>identifier of the used MIDI input driver, as e.g.
3031 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>
3032 senoner 542 command
3033     </p>
3034 schoenebeck 940 </blockquote>
3035    
3036 senoner 542
3037 schoenebeck 940 </blockquote>
3038    
3039 senoner 542 <blockquote class="text">
3040 schoenebeck 708 <p>ACTIVE -
3041 senoner 542 </p>
3042     <blockquote class="text">
3043     <p>either true or false, if false then the MIDI device is
3044     inactive and doesn't listen to any incoming MIDI events
3045     and thus doesn't forward them to connected sampler
3046     channels
3047     </p>
3048 schoenebeck 940 </blockquote>
3049    
3050 senoner 542
3051 schoenebeck 940 </blockquote>
3052    
3053 senoner 542
3054 schoenebeck 708 </blockquote><p>
3055 schoenebeck 940
3056 schoenebeck 708 </p>
3057 senoner 542 <p>The mentioned fields above don't have to be in particular
3058     order. The fields above are only those fields which are
3059     returned by all MIDI input devices. Every MIDI input driver
3060     might have its own, additional driver specific parameters (see
3061 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
3062 senoner 542 by this command.
3063     </p>
3064     <p>Example:
3065     </p>
3066 schoenebeck 708 <p>
3067     </p>
3068 senoner 542 <blockquote class="text">
3069     <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3070     </p>
3071     <p>S: "DRIVER: ALSA"
3072     </p>
3073     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3074     </p>
3075     <p>&nbsp;&nbsp;&nbsp;"."
3076     </p>
3077 schoenebeck 708 </blockquote><p>
3078 schoenebeck 940
3079 schoenebeck 708 </p>
3080 schoenebeck 940 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3081 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3082     <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3083     Changing settings of MIDI input devices</h3>
3084 senoner 542
3085     <p>Use the following command to alter a specific setting of a created MIDI input device:
3086     </p>
3087 schoenebeck 708 <p>
3088     </p>
3089 senoner 542 <blockquote class="text">
3090     <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3091     </p>
3092 schoenebeck 708 </blockquote><p>
3093 schoenebeck 940
3094 schoenebeck 708 </p>
3095 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3096 schoenebeck 575 MIDI input device as returned by the
3097 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>
3098     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>
3099 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change and
3100 senoner 542 &lt;value&gt; by the new value for this parameter.
3101     </p>
3102     <p>Possible Answers:
3103     </p>
3104 schoenebeck 708 <p>
3105     </p>
3106 senoner 542 <blockquote class="text">
3107     <p>"OK" -
3108     </p>
3109     <blockquote class="text">
3110     <p>in case setting was successfully changed
3111     </p>
3112 schoenebeck 940 </blockquote>
3113    
3114 senoner 542
3115     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3116     </p>
3117     <blockquote class="text">
3118     <p>in case setting was changed successfully, but there are
3119     noteworthy issue(s) related, providing an appropriate
3120     warning code and warning message
3121     </p>
3122 schoenebeck 940 </blockquote>
3123    
3124 senoner 542
3125     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3126     </p>
3127     <blockquote class="text">
3128     <p>in case it failed, providing an appropriate error code and error message
3129     </p>
3130 schoenebeck 940 </blockquote>
3131    
3132 senoner 542
3133 schoenebeck 708 </blockquote><p>
3134 schoenebeck 940
3135 schoenebeck 708 </p>
3136 senoner 542 <p>Example:
3137     </p>
3138 schoenebeck 708 <p>
3139     </p>
3140 senoner 542 <blockquote class="text">
3141     <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3142     </p>
3143     <p>S: "OK"
3144     </p>
3145 schoenebeck 708 </blockquote><p>
3146 schoenebeck 940
3147 schoenebeck 708 </p>
3148 schoenebeck 940 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3149 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3150     <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3151     Getting information about a MIDI port</h3>
3152 senoner 542
3153     <p>Use the following command to get information about a MIDI port:
3154     </p>
3155 schoenebeck 708 <p>
3156     </p>
3157 senoner 542 <blockquote class="text">
3158     <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3159     </p>
3160 schoenebeck 708 </blockquote><p>
3161 schoenebeck 940
3162 schoenebeck 708 </p>
3163 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3164 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>
3165     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>
3166 schoenebeck 575 command and &lt;midi-port&gt; the MIDI input port number.
3167 senoner 542 </p>
3168     <p>Possible Answers:
3169     </p>
3170 schoenebeck 708 <p>
3171     </p>
3172 senoner 542 <blockquote class="text">
3173     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3174     Each answer line begins with the information category name
3175     followed by a colon and then a space character &lt;SP&gt; and finally
3176     the info character string to that info category. At the moment
3177     the following information categories are defined:
3178     </p>
3179     <p>NAME -
3180     </p>
3181     <blockquote class="text">
3182     <p>arbitrary character string naming the port
3183     </p>
3184 schoenebeck 940 </blockquote>
3185    
3186 senoner 542
3187 schoenebeck 708 </blockquote><p>
3188 schoenebeck 940
3189 schoenebeck 708 </p>
3190 senoner 542 <p>The field above is only the one which is returned by all MIDI
3191     ports regardless of the MIDI driver and port. Every MIDI port
3192     might have its own, additional driver and port specific
3193     parameters.
3194     </p>
3195     <p>Example:
3196     </p>
3197 schoenebeck 708 <p>
3198     </p>
3199 senoner 542 <blockquote class="text">
3200     <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3201     </p>
3202     <p>S: "NAME: 'Masterkeyboard'"
3203     </p>
3204     <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3205     </p>
3206     <p>&nbsp;&nbsp;&nbsp;"."
3207     </p>
3208 schoenebeck 708 </blockquote><p>
3209 schoenebeck 940
3210 schoenebeck 708 </p>
3211 schoenebeck 940 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3212 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3213     <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3214     Getting information about specific MIDI port parameter</h3>
3215 senoner 542
3216     <p>Use the following command to get detailed information about specific MIDI port parameter:
3217     </p>
3218 schoenebeck 708 <p>
3219     </p>
3220 senoner 542 <blockquote class="text">
3221     <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3222     </p>
3223 schoenebeck 708 </blockquote><p>
3224 schoenebeck 940
3225 schoenebeck 708 </p>
3226 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3227 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>
3228     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>
3229 schoenebeck 575 command, &lt;port&gt; the MIDI port number and
3230 senoner 542 &lt;param&gt; a specific port parameter name for which information should be
3231 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).
3232 senoner 542 </p>
3233     <p>Possible Answers:
3234     </p>
3235 schoenebeck 708 <p>
3236     </p>
3237 senoner 542 <blockquote class="text">
3238     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3239     Each answer line begins with the information category name
3240     followed by a colon and then a space character &lt;SP&gt; and finally
3241     the info character string to that info category. There is
3242     information which is always returned, independently of the
3243     given channel parameter and there is optional information
3244     which are only shown dependently to the given MIDI port. At the
3245     moment the following information categories are defined:
3246     </p>
3247     <p>TYPE -
3248     </p>
3249     <blockquote class="text">
3250     <p>either "BOOL" for boolean value(s) or "INT" for integer
3251     value(s) or "FLOAT" for dotted number(s) or "STRING" for
3252     character string(s)
3253     (always returned)
3254     </p>
3255 schoenebeck 940 </blockquote>
3256    
3257 senoner 542
3258     <p>DESCRIPTION -
3259     </p>
3260     <blockquote class="text">
3261     <p>arbitrary text describing the purpose of the parameter
3262     (always returned)
3263     </p>
3264 schoenebeck 940 </blockquote>
3265    
3266 senoner 542
3267     <p>FIX -
3268     </p>
3269     <blockquote class="text">
3270     <p>either true or false, if true then this parameter is
3271     read only, thus cannot be altered
3272     (always returned)
3273     </p>
3274 schoenebeck 940 </blockquote>
3275    
3276 senoner 542
3277     <p>MULTIPLICITY -
3278     </p>
3279     <blockquote class="text">
3280     <p>either true or false, defines if this parameter allows
3281     only one value or a list of values, where true means
3282     multiple values and false only a single value allowed
3283     (always returned)
3284     </p>
3285 schoenebeck 940 </blockquote>
3286    
3287 senoner 542
3288     <p>RANGE_MIN -
3289     </p>
3290     <blockquote class="text">
3291     <p>defines lower limit of the allowed value range for this
3292     parameter, can be an integer value as well as a dotted
3293     number, this parameter is usually used in conjunction
3294     with 'RANGE_MAX' but may also appear without
3295     (optionally returned, dependent to driver and port
3296     parameter)
3297     </p>
3298 schoenebeck 940 </blockquote>
3299    
3300 senoner 542
3301     <p>RANGE_MAX -
3302     </p>
3303     <blockquote class="text">
3304     <p>defines upper limit of the allowed value range for this
3305     parameter, can be an integer value as well as a dotted
3306     number, this parameter is usually used in conjunction
3307     with 'RANGE_MIN' but may also appear without
3308     (optionally returned, dependent to driver and port
3309     parameter)
3310     </p>
3311 schoenebeck 940 </blockquote>
3312    
3313 senoner 542
3314     <p>POSSIBILITIES -
3315     </p>
3316     <blockquote class="text">
3317     <p>comma separated list of possible values for this
3318     parameter, character strings are encapsulated into
3319     apostrophes
3320     (optionally returned, dependent to device and port
3321     parameter)
3322     </p>
3323 schoenebeck 940 </blockquote>
3324    
3325 senoner 542
3326 schoenebeck 708 </blockquote><p>
3327 schoenebeck 940
3328 schoenebeck 708 </p>
3329 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3330     </p>
3331     <p>Example:
3332     </p>
3333 schoenebeck 708 <p>
3334     </p>
3335 senoner 542 <blockquote class="text">
3336     <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3337     </p>
3338     <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3339     </p>
3340     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3341     </p>
3342     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3343     </p>
3344     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3345     </p>
3346     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3347     </p>
3348     <p>&nbsp;&nbsp;&nbsp;"."
3349     </p>
3350 schoenebeck 708 </blockquote><p>
3351 schoenebeck 940
3352 schoenebeck 708 </p>
3353 schoenebeck 940 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3354 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3355     <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3356     Changing settings of MIDI input ports</h3>
3357 senoner 542
3358     <p>Use the following command to alter a specific setting of a MIDI input port:
3359     </p>
3360 schoenebeck 708 <p>
3361     </p>
3362 senoner 542 <blockquote class="text">
3363     <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3364     </p>
3365 schoenebeck 708 </blockquote><p>
3366 schoenebeck 940
3367 schoenebeck 708 </p>
3368 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3369 schoenebeck 575 MIDI device as returned by the
3370 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>
3371     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>
3372 schoenebeck 575 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3373 senoner 542 the parameter to change and &lt;value&gt; by the new value for this
3374 schoenebeck 1363 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3375     for specifying no value for parameters allowing a list of values.
3376 senoner 542 </p>
3377     <p>Possible Answers:
3378     </p>
3379 schoenebeck 708 <p>
3380     </p>
3381 senoner 542 <blockquote class="text">
3382     <p>"OK" -
3383     </p>
3384     <blockquote class="text">
3385     <p>in case setting was successfully changed
3386     </p>
3387 schoenebeck 940 </blockquote>
3388    
3389 senoner 542
3390     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3391     </p>
3392     <blockquote class="text">
3393     <p>in case setting was changed successfully, but there are
3394     noteworthy issue(s) related, providing an appropriate
3395     warning code and warning message
3396     </p>
3397 schoenebeck 940 </blockquote>
3398    
3399 senoner 542
3400     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3401     </p>
3402     <blockquote class="text">
3403     <p>in case it failed, providing an appropriate error code and error message
3404     </p>
3405 schoenebeck 940 </blockquote>
3406    
3407 senoner 542
3408 schoenebeck 708 </blockquote><p>
3409 schoenebeck 940
3410 schoenebeck 708 </p>
3411 senoner 542 <p>Example:
3412     </p>
3413 schoenebeck 708 <p>
3414     </p>
3415 senoner 542 <blockquote class="text">
3416 schoenebeck 1363 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3417     </p>
3418     <p>S: "OK"
3419     </p>
3420     </blockquote><p>
3421    
3422     </p>
3423 senoner 542 <p>
3424 schoenebeck 1363 </p>
3425     <blockquote class="text">
3426     <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3427 senoner 542 </p>
3428 schoenebeck 1363 <p>S: "OK"
3429     </p>
3430 schoenebeck 708 </blockquote><p>
3431 schoenebeck 940
3432 schoenebeck 708 </p>
3433 schoenebeck 940 <a name="anchor11"></a><br /><hr />
3434 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3435     <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3436     Configuring sampler channels</h3>
3437 senoner 542
3438 schoenebeck 575 <p>The following commands describe how to add and remove sampler channels, associate a
3439     sampler channel with a sampler engine, load instruments and connect sampler channels to
3440     MIDI and audio devices.
3441 senoner 542 </p>
3442 schoenebeck 940 <a name="LOAD INSTRUMENT"></a><br /><hr />
3443 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3444     <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3445     Loading an instrument</h3>
3446 senoner 542
3447     <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3448     </p>
3449 schoenebeck 708 <p>
3450     </p>
3451 senoner 542 <blockquote class="text">
3452     <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3453     </p>
3454 schoenebeck 708 </blockquote><p>
3455 schoenebeck 940
3456 schoenebeck 708 </p>
3457 senoner 542 <p>Where &lt;filename&gt; is the name of the instrument file on the
3458     LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3459     instrument in the instrument file and &lt;sampler-channel> is the
3460     number of the sampler channel the instrument should be assigned to.
3461     Each sampler channel can only have one instrument.
3462     </p>
3463 schoenebeck 1251 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3464     escape characters for special characters (see chapter
3465     "<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>"
3466     for details) and accordingly backslash characters in the filename
3467     MUST now be escaped as well!
3468     </p>
3469 senoner 542 <p>The difference between regular and NON_MODAL versions of the command
3470     is that the regular command returns OK only after the instrument has been
3471     fully loaded and the channel is ready to be used while NON_MODAL version
3472     returns immediately and a background process is launched to load the instrument
3473 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>
3474 senoner 542 command can be used to obtain loading
3475     progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3476     such as making sure that the file could be read and it is of a proper format
3477     and SHOULD return ERR and SHOULD not launch the background process should any
3478     errors be detected at that point.
3479     </p>
3480     <p>Possible Answers:
3481     </p>
3482 schoenebeck 708 <p>
3483     </p>
3484 senoner 542 <blockquote class="text">
3485     <p>"OK" -
3486     </p>
3487     <blockquote class="text">
3488     <p>in case the instrument was successfully loaded
3489     </p>
3490 schoenebeck 940 </blockquote>
3491    
3492 senoner 542
3493     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3494     </p>
3495     <blockquote class="text">
3496     <p>in case the instrument was loaded successfully, but there
3497     are noteworthy issue(s) related (e.g. Engine doesn't support
3498     one or more patch parameters provided by the loaded
3499     instrument file), providing an appropriate warning code and
3500     warning message
3501     </p>
3502 schoenebeck 940 </blockquote>
3503    
3504 senoner 542
3505     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3506     </p>
3507     <blockquote class="text">
3508     <p>in case it failed, providing an appropriate error code and error message
3509     </p>
3510 schoenebeck 940 </blockquote>
3511    
3512 senoner 542
3513 schoenebeck 708 </blockquote><p>
3514 schoenebeck 940
3515 schoenebeck 708 </p>
3516 schoenebeck 1572 <p>Example (Unix):
3517 senoner 542 </p>
3518 schoenebeck 708 <p>
3519     </p>
3520 senoner 542 <blockquote class="text">
3521 schoenebeck 1572 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3522     </p>
3523     <p>S: OK
3524     </p>
3525     </blockquote><p>
3526    
3527     </p>
3528     <p>Example (Windows):
3529     </p>
3530 senoner 542 <p>
3531 schoenebeck 1572 </p>
3532     <blockquote class="text">
3533     <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3534 senoner 542 </p>
3535 schoenebeck 1572 <p>S: OK
3536     </p>
3537 schoenebeck 708 </blockquote><p>
3538 schoenebeck 940
3539 schoenebeck 708 </p>
3540 schoenebeck 940 <a name="LOAD ENGINE"></a><br /><hr />
3541 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3542     <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3543     Loading a sampler engine</h3>
3544 senoner 542
3545 schoenebeck 575 <p>A sampler engine type can be associated to a specific sampler
3546 senoner 542 channel by the following command:
3547     </p>
3548 schoenebeck 708 <p>
3549     </p>
3550 senoner 542 <blockquote class="text">
3551     <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3552     </p>
3553 schoenebeck 708 </blockquote><p>
3554 schoenebeck 940
3555 schoenebeck 708 </p>
3556 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3557 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;
3558 schoenebeck 575 the sampler channel as returned by the
3559 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
3560     <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
3561 schoenebeck 575 the engine type should be assigned to. This command should be issued
3562     after adding a new sampler channel and before any other control
3563     commands on the new sampler channel. It can also be used to change
3564     the engine type of a sampler channel. This command has (currently) no
3565     way to define or force if a new engine instance should be created and
3566     assigned to the given sampler channel or if an already existing
3567     instance of that engine type, shared with other sampler channels,
3568     should be used.
3569 senoner 542 </p>
3570     <p>Possible Answers:
3571     </p>
3572 schoenebeck 708 <p>
3573     </p>
3574 senoner 542 <blockquote class="text">
3575     <p>"OK" -
3576     </p>
3577     <blockquote class="text">
3578     <p>in case the engine was successfully deployed
3579     </p>
3580 schoenebeck 940 </blockquote>
3581    
3582 senoner 542
3583     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3584     </p>
3585     <blockquote class="text">
3586     <p>in case the engine was deployed successfully, but there
3587     are noteworthy issue(s) related, providing an appropriate
3588     warning code and warning message
3589     </p>
3590 schoenebeck 940 </blockquote>
3591    
3592 senoner 542
3593     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3594     </p>
3595     <blockquote class="text">
3596     <p>in case it failed, providing an appropriate error code and
3597     error message
3598     </p>
3599 schoenebeck 940 </blockquote>
3600    
3601 senoner 542
3602 schoenebeck 708 </blockquote><p>
3603 schoenebeck 940
3604 schoenebeck 708 </p>
3605 senoner 542 <p>Example:
3606     </p>
3607 schoenebeck 708 <p>
3608     </p>
3609 senoner 542 <blockquote class="text">
3610     <p>
3611     </p>
3612 schoenebeck 708 </blockquote><p>
3613 schoenebeck 940
3614 schoenebeck 708 </p>
3615 schoenebeck 940 <a name="GET CHANNELS"></a><br /><hr />
3616 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3617     <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3618     Getting all created sampler channel count</h3>
3619 senoner 542
3620     <p>The number of sampler channels can change on runtime. To get the
3621     current amount of sampler channels, the front-end can send the
3622     following command:
3623     </p>
3624 schoenebeck 708 <p>
3625     </p>
3626 senoner 542 <blockquote class="text">
3627     <p>GET CHANNELS
3628     </p>
3629 schoenebeck 708 </blockquote><p>
3630 schoenebeck 940
3631 schoenebeck 708 </p>
3632 senoner 542 <p>Possible Answers:
3633     </p>
3634 schoenebeck 708 <p>
3635     </p>
3636 senoner 542 <blockquote class="text">
3637     <p>LinuxSampler will answer by returning the current number of sampler channels.
3638     </p>
3639 schoenebeck 708 </blockquote><p>
3640 schoenebeck 940
3641 schoenebeck 708 </p>
3642 senoner 542 <p>Example:
3643     </p>
3644 schoenebeck 708 <p>
3645     </p>
3646 senoner 542 <blockquote class="text">
3647     <p>C: "GET CHANNELS"
3648     </p>
3649     <p>S: "12"
3650     </p>
3651 schoenebeck 708 </blockquote><p>
3652 schoenebeck 940
3653 schoenebeck 708 </p>
3654 schoenebeck 940 <a name="LIST CHANNELS"></a><br /><hr />
3655 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3656     <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3657     Getting all created sampler channel list</h3>
3658 senoner 542
3659     <p>The number of sampler channels can change on runtime. To get the
3660     current list of sampler channels, the front-end can send the
3661     following command:
3662     </p>
3663 schoenebeck 708 <p>
3664     </p>
3665 senoner 542 <blockquote class="text">
3666     <p>LIST CHANNELS
3667     </p>
3668 schoenebeck 708 </blockquote><p>
3669 schoenebeck 940
3670 schoenebeck 708 </p>
3671 senoner 542 <p>Possible Answers:
3672     </p>
3673 schoenebeck 708 <p>
3674     </p>
3675 senoner 542 <blockquote class="text">
3676     <p>LinuxSampler will answer by returning a comma separated list
3677     with all sampler channels numerical IDs.
3678     </p>
3679 schoenebeck 708 </blockquote><p>
3680 schoenebeck 940
3681 schoenebeck 708 </p>
3682 senoner 542 <p>Example:
3683     </p>
3684 schoenebeck 708 <p>
3685     </p>
3686 senoner 542 <blockquote class="text">
3687     <p>C: "LIST CHANNELS"
3688     </p>
3689     <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3690     </p>
3691 schoenebeck 708 </blockquote><p>
3692 schoenebeck 940
3693 schoenebeck 708 </p>
3694 schoenebeck 940 <a name="ADD CHANNEL"></a><br /><hr />
3695 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3696     <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3697     Adding a new sampler channel</h3>
3698 senoner 542
3699     <p>A new sampler channel can be added to the end of the sampler
3700     channel list by sending the following command:
3701     </p>
3702 schoenebeck 708 <p>
3703     </p>
3704 senoner 542 <blockquote class="text">
3705     <p>ADD CHANNEL
3706     </p>
3707 schoenebeck 708 </blockquote><p>
3708 schoenebeck 940
3709 schoenebeck 708 </p>
3710 senoner 542 <p>This will increment the sampler channel count by one and the new
3711     sampler channel will be appended to the end of the sampler channel
3712     list. The front-end should send the respective, related commands
3713     right after to e.g. load an engine, load an instrument and setting
3714     input, output method and eventually other commands to initialize
3715     the new channel. The front-end should use the sampler channel
3716     returned by the answer of this command to perform the previously
3717     recommended commands, to avoid race conditions e.g. with other
3718     front-ends that might also have sent an "ADD CHANNEL" command.
3719     </p>
3720     <p>Possible Answers:
3721     </p>
3722 schoenebeck 708 <p>
3723     </p>
3724 senoner 542 <blockquote class="text">
3725     <p>"OK[&lt;sampler-channel&gt;]" -
3726     </p>
3727     <blockquote class="text">
3728     <p>in case a new sampler channel could be added, where
3729     &lt;sampler-channel&gt; reflects the channel number of the new
3730 schoenebeck 561 created sampler channel which should be used to set up
3731     the sampler channel by sending subsequent initialization
3732 senoner 542 commands
3733     </p>
3734 schoenebeck 940 </blockquote>
3735    
3736 senoner 542
3737     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3738     </p>
3739     <blockquote class="text">
3740     <p>in case a new channel was added successfully, but there are
3741     noteworthy issue(s) related, providing an appropriate
3742     warning code and warning message
3743     </p>
3744 schoenebeck 940 </blockquote>
3745    
3746 senoner 542
3747     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3748     </p>
3749     <blockquote class="text">
3750     <p>in case it failed, providing an appropriate error code and
3751     error message
3752     </p>
3753 schoenebeck 940 </blockquote>
3754    
3755 senoner 542
3756 schoenebeck 708 </blockquote><p>
3757 schoenebeck 940
3758 schoenebeck 708 </p>
3759 senoner 542 <p>Example:
3760     </p>
3761 schoenebeck 708 <p>
3762     </p>
3763 senoner 542 <blockquote class="text">
3764     <p>
3765     </p>
3766 schoenebeck 708 </blockquote><p>
3767 schoenebeck 940
3768 schoenebeck 708 </p>
3769 schoenebeck 940 <a name="REMOVE CHANNEL"></a><br /><hr />
3770 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3771     <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3772     Removing a sampler channel</h3>
3773 senoner 542
3774     <p>A sampler channel can be removed by sending the following command:
3775     </p>
3776 schoenebeck 708 <p>
3777     </p>
3778 senoner 542 <blockquote class="text">
3779     <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3780     </p>
3781 schoenebeck 708 </blockquote><p>
3782 schoenebeck 940
3783 schoenebeck 708 </p>
3784 schoenebeck 561 <p>Where &lt;sampler-channel&gt; should be replaced by the
3785     number of the sampler channel as given by the
3786 schoenebeck 974 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3787     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3788 schoenebeck 561 command. The channel numbers of all subsequent sampler channels
3789     remain the same.
3790 senoner 542 </p>
3791     <p>Possible Answers:
3792     </p>
3793 schoenebeck 708 <p>
3794     </p>
3795 senoner 542 <blockquote class="text">
3796     <p>"OK" -
3797     </p>
3798     <blockquote class="text">
3799     <p>in case the given sampler channel could be removed
3800     </p>
3801 schoenebeck 940 </blockquote>
3802    
3803 senoner 542
3804     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3805     </p>
3806     <blockquote class="text">
3807     <p>in case the given channel was removed, but there are
3808     noteworthy issue(s) related, providing an appropriate
3809     warning code and warning message
3810     </p>
3811 schoenebeck 940 </blockquote>
3812    
3813 senoner 542
3814     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3815     </p>
3816     <blockquote class="text">
3817     <p>in case it failed, providing an appropriate error code and
3818     error message
3819     </p>
3820 schoenebeck 940 </blockquote>
3821    
3822 senoner 542
3823 schoenebeck 708 </blockquote><p>
3824 schoenebeck 940
3825 schoenebeck 708 </p>
3826 senoner 542 <p>Example:
3827     </p>
3828 schoenebeck 708 <p>
3829     </p>
3830 senoner 542 <blockquote class="text">
3831     <p>
3832     </p>
3833 schoenebeck 708 </blockquote><p>
3834 schoenebeck 940
3835 schoenebeck 708 </p>
3836 schoenebeck 940 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3837 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3838     <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3839     Getting amount of available engines</h3>
3840 senoner 542
3841     <p>The front-end can ask for the number of available engines by sending the following command:
3842     </p>
3843 schoenebeck 708 <p>
3844     </p>
3845 senoner 542 <blockquote class="text">
3846     <p>GET AVAILABLE_ENGINES
3847     </p>
3848 schoenebeck 708 </blockquote><p>
3849 schoenebeck 940
3850 schoenebeck 708 </p>
3851 senoner 542 <p>Possible Answers:
3852     </p>
3853 schoenebeck 708 <p>
3854     </p>
3855 senoner 542 <blockquote class="text">
3856     <p>LinuxSampler will answer by sending the number of available engines.
3857     </p>
3858 schoenebeck 708 </blockquote><p>
3859 schoenebeck 940
3860 schoenebeck 708 </p>
3861 senoner 542 <p>Example:
3862     </p>
3863 schoenebeck 708 <p>
3864     </p>
3865 senoner 542 <blockquote class="text">
3866     <p>C: "GET AVAILABLE_ENGINES"
3867     </p>
3868     <p>S: "4"
3869     </p>
3870 schoenebeck 708 </blockquote><p>
3871 schoenebeck 940
3872 schoenebeck 708 </p>
3873 schoenebeck 940 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3874 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3875     <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3876     Getting all available engines</h3>
3877 senoner 542
3878     <p>The front-end can ask for a list of all available engines by sending the following command:
3879     </p>
3880 schoenebeck 708 <p>
3881     </p>
3882 senoner 542 <blockquote class="text">
3883     <p>LIST AVAILABLE_ENGINES
3884     </p>
3885 schoenebeck 708 </blockquote><p>
3886 schoenebeck 940
3887 schoenebeck 708 </p>
3888 senoner 542 <p>Possible Answers:
3889     </p>
3890 schoenebeck 708 <p>
3891     </p>
3892 senoner 542 <blockquote class="text">
3893 schoenebeck 561 <p>LinuxSampler will answer by sending a comma separated list
3894     of the engines' names encapsulated into apostrophes (').
3895     Engine names can consist of lower and upper cases,
3896     digits and underlines ("_" character).
3897 senoner 542 </p>
3898 schoenebeck 708 </blockquote><p>
3899 schoenebeck 940
3900 schoenebeck 708 </p>
3901 senoner 542 <p>Example:
3902     </p>
3903 schoenebeck 708 <p>
3904     </p>
3905 senoner 542 <blockquote class="text">
3906     <p>C: "LIST AVAILABLE_ENGINES"
3907     </p>
3908 schoenebeck 561 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3909 senoner 542 </p>
3910 schoenebeck 708 </blockquote><p>
3911 schoenebeck 940
3912 schoenebeck 708 </p>
3913 schoenebeck 940 <a name="GET ENGINE INFO"></a><br /><hr />
3914 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3915     <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3916     Getting information about an engine</h3>
3917 senoner 542
3918     <p>The front-end can ask for information about a specific engine by
3919     sending the following command:
3920     </p>
3921 schoenebeck 708 <p>
3922     </p>
3923 senoner 542 <blockquote class="text">
3924     <p>GET ENGINE INFO &lt;engine-name&gt;
3925     </p>
3926 schoenebeck 708 </blockquote><p>
3927 schoenebeck 940
3928 schoenebeck 708 </p>
3929 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3930 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.
3931 senoner 542 </p>
3932     <p>Possible Answers:
3933     </p>
3934 schoenebeck 708 <p>
3935     </p>
3936 senoner 542 <blockquote class="text">
3937     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3938     Each answer line begins with the information category name
3939     followed by a colon and then a space character &lt;SP&gt; and finally
3940     the info character string to that info category. At the moment
3941     the following categories are defined:
3942     </p>
3943 schoenebeck 708 <p>
3944     </p>
3945 senoner 542 <blockquote class="text">
3946     <p>DESCRIPTION -
3947     </p>
3948     <blockquote class="text">
3949     <p>arbitrary description text about the engine
3950 schoenebeck 1400 (note that the character string may contain
3951     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3952 senoner 542 </p>
3953 schoenebeck 940 </blockquote>
3954    
3955 senoner 542
3956     <p>VERSION -
3957     </p>
3958     <blockquote class="text">
3959     <p>arbitrary character string regarding the engine's version
3960     </p>
3961 schoenebeck 940 </blockquote>
3962    
3963 senoner 542
3964 schoenebeck 940 </blockquote>
3965    
3966 senoner 542
3967 schoenebeck 708 </blockquote><p>
3968 schoenebeck 940
3969 schoenebeck 708 </p>
3970 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3971     </p>
3972     <p>Example:
3973     </p>
3974 schoenebeck 708 <p>
3975     </p>
3976 senoner 542 <blockquote class="text">
3977     <p>C: "GET ENGINE INFO JoesCustomEngine"
3978     </p>
3979     <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3980     </p>
3981     <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3982     </p>
3983     <p>&nbsp;&nbsp;&nbsp;"."
3984     </p>
3985 schoenebeck 708 </blockquote><p>
3986 schoenebeck 940
3987 schoenebeck 708 </p>
3988 schoenebeck 940 <a name="GET CHANNEL INFO"></a><br /><hr />
3989 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3990     <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3991     Getting sampler channel information</h3>
3992 senoner 542
3993     <p>The front-end can ask for the current settings of a sampler channel
3994     by sending the following command:
3995     </p>
3996 schoenebeck 708 <p>
3997     </p>
3998 senoner 542 <blockquote class="text">
3999     <p>GET CHANNEL INFO &lt;sampler-channel&gt;
4000     </p>
4001 schoenebeck 708 </blockquote><p>
4002 schoenebeck 940
4003 schoenebeck 708 </p>
4004 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4005 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>
4006     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.
4007 senoner 542 </p>
4008     <p>Possible Answers:
4009     </p>
4010 schoenebeck 708 <p>
4011     </p>
4012 senoner 542 <blockquote class="text">
4013     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4014     Each answer line begins with the settings category name
4015     followed by a colon and then a space character &lt;SP&gt; and finally
4016     the info character string to that setting category. At the
4017     moment the following categories are defined:
4018     </p>
4019 schoenebeck 708 <p>
4020     </p>
4021 senoner 542 <blockquote class="text">
4022     <p>ENGINE_NAME -
4023     </p>
4024     <blockquote class="text">
4025 schoenebeck 575 <p>name of the engine that is associated with the sampler
4026     channel, "NONE" if there's no engine associated yet for
4027 senoner 542 this sampler channel
4028     </p>
4029 schoenebeck 940 </blockquote>
4030    
4031 senoner 542
4032     <p>AUDIO_OUTPUT_DEVICE -
4033     </p>
4034     <blockquote class="text">
4035     <p>numerical ID of the audio output device which is
4036     currently connected to this sampler channel to output
4037 schoenebeck 1805 the audio signal, "-1" if there's no device
4038 senoner 542 connected to this sampler channel
4039     </p>
4040 schoenebeck 940 </blockquote>
4041    
4042 senoner 542
4043     <p>AUDIO_OUTPUT_CHANNELS -
4044     </p>
4045     <blockquote class="text">
4046     <p>number of output channels the sampler channel offers
4047     (dependent to used sampler engine and loaded instrument)
4048     </p>
4049 schoenebeck 940 </blockquote>
4050    
4051 senoner 542
4052     <p>AUDIO_OUTPUT_ROUTING -
4053     </p>
4054     <blockquote class="text">
4055     <p>comma separated list which reflects to which audio
4056     channel of the selected audio output device each
4057     sampler output channel is routed to, e.g. "0,3" would
4058     mean the engine's output channel 0 is routed to channel
4059     0 of the audio output device and the engine's output
4060     channel 1 is routed to the channel 3 of the audio
4061     output device
4062     </p>
4063 schoenebeck 940 </blockquote>
4064    
4065 senoner 542
4066     <p>INSTRUMENT_FILE -
4067     </p>
4068     <blockquote class="text">
4069     <p>the file name of the loaded instrument, "NONE" if
4070     there's no instrument yet loaded for this sampler
4071 schoenebeck 1400 channel (note: since LSCP 1.2 this path may contain
4072     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4073 senoner 542 </p>
4074 schoenebeck 940 </blockquote>
4075    
4076 senoner 542
4077     <p>INSTRUMENT_NR -
4078     </p>
4079     <blockquote class="text">
4080 schoenebeck 1805 <p>the instrument index number of the loaded instrument,
4081     "-1" if there's no instrument loaded for this sampler
4082     channel
4083 senoner 542 </p>
4084 schoenebeck 940 </blockquote>
4085    
4086 senoner 542
4087     <p>INSTRUMENT_NAME -
4088     </p>
4089     <blockquote class="text">
4090     <p>the instrument name of the loaded instrument
4091 schoenebeck 1400 (note: since LSCP 1.2 this character string may contain
4092     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4093 senoner 542 </p>
4094 schoenebeck 940 </blockquote>
4095    
4096 senoner 542
4097     <p>INSTRUMENT_STATUS -
4098     </p>
4099     <blockquote class="text">
4100 schoenebeck 1805 <p>Integer values 0 to 100 indicating loading progress
4101     percentage for the instrument. Negative
4102     value indicates a loading exception (also returns "-1" in case no
4103     instrument was yet to be loaded on the sampler channel).
4104     Value of 100 indicates that the instrument is fully
4105 senoner 542 loaded.
4106     </p>
4107 schoenebeck 940 </blockquote>
4108    
4109 senoner 542
4110     <p>MIDI_INPUT_DEVICE -
4111     </p>
4112     <blockquote class="text">
4113     <p>numerical ID of the MIDI input device which is
4114     currently connected to this sampler channel to deliver
4115 schoenebeck 1805 MIDI input commands, "-1" if there's no device
4116 senoner 542 connected to this sampler channel
4117     </p>
4118 schoenebeck 940 </blockquote>
4119    
4120 senoner 542
4121     <p>MIDI_INPUT_PORT -
4122     </p>
4123     <blockquote class="text">
4124 schoenebeck 1805 <p>port number of the MIDI input device (in case a
4125     MIDI device was already assigned to the sampler
4126     channel)
4127 senoner 542 </p>
4128 schoenebeck 940 </blockquote>
4129    
4130 senoner 542
4131     <p>MIDI_INPUT_CHANNEL -
4132     </p>
4133     <blockquote class="text">
4134     <p>the MIDI input channel number this sampler channel
4135     should listen to or "ALL" to listen on all MIDI channels
4136     </p>
4137 schoenebeck 940 </blockquote>
4138    
4139 senoner 542
4140     <p>VOLUME -
4141     </p>
4142     <blockquote class="text">
4143     <p>optionally dotted number for the channel volume factor
4144 schoenebeck 1028 (where a value &lt; 1.0 means attenuation and a value >
4145 senoner 542 1.0 means amplification)
4146     </p>
4147 schoenebeck 940 </blockquote>
4148    
4149 senoner 542
4150 schoenebeck 708 <p>MUTE -
4151     </p>
4152     <blockquote class="text">
4153     <p>Determines whether the channel is muted, "true" if the
4154     channel is muted, "false" if the channel is not muted, and
4155     "MUTED_BY_SOLO" if the channel is muted because of the
4156     presence of a solo channel and will be unmuted when
4157     there are no solo channels left
4158     </p>
4159 schoenebeck 940 </blockquote>
4160    
4161 senoner 542
4162 schoenebeck 708 <p>SOLO -
4163     </p>
4164     <blockquote class="text">
4165     <p>Determines whether this is a solo channel, "true" if
4166     the channel is a solo channel; "false" otherwise
4167     </p>
4168 schoenebeck 940 </blockquote>
4169    
4170 senoner 542
4171 schoenebeck 974 <p>MIDI_INSTRUMENT_MAP -
4172     </p>
4173     <blockquote class="text">
4174     <p>Determines to which MIDI instrument map this sampler
4175     channel is assigned to. Read chapter
4176     <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>
4177     for a list of possible values.
4178     </p>
4179 schoenebeck 940 </blockquote>
4180 schoenebeck 974
4181    
4182     </blockquote>
4183 schoenebeck 940
4184 schoenebeck 708
4185     </blockquote><p>
4186 schoenebeck 940
4187 schoenebeck 708 </p>
4188 senoner 542 <p>The mentioned fields above don't have to be in particular order.
4189     </p>
4190     <p>Example:
4191     </p>
4192 schoenebeck 708 <p>
4193     </p>
4194 senoner 542 <blockquote class="text">
4195     <p>C: "GET CHANNEL INFO 34"
4196     </p>
4197     <p>S: "ENGINE_NAME: GigEngine"
4198     </p>
4199     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4200     </p>
4201     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4202     </p>
4203     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4204     </p>
4205     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4206     </p>
4207     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4208     </p>
4209     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4210     </p>
4211     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4212     </p>
4213     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4214     </p>
4215     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4216     </p>
4217     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4218     </p>
4219     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4220     </p>
4221 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4222     </p>
4223     <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4224     </p>
4225     <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4226     </p>
4227     <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4228     </p>
4229 senoner 542 <p>&nbsp;&nbsp;&nbsp;"."
4230     </p>
4231 schoenebeck 708 </blockquote><p>
4232 schoenebeck 940
4233 schoenebeck 708 </p>
4234 schoenebeck 940 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4235 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4236     <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4237     Current number of active voices</h3>
4238 senoner 542
4239     <p>The front-end can ask for the current number of active voices on a
4240     sampler channel by sending the following command:
4241     </p>
4242 schoenebeck 708 <p>
4243     </p>
4244 senoner 542 <blockquote class="text">
4245     <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4246     </p>
4247 schoenebeck 708 </blockquote><p>
4248 schoenebeck 940
4249 schoenebeck 708 </p>
4250 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4251 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>
4252     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.
4253 senoner 542 </p>
4254     <p>Possible Answers:
4255     </p>
4256 schoenebeck 708 <p>
4257     </p>
4258 senoner 542 <blockquote class="text">
4259     <p>LinuxSampler will answer by returning the number of active
4260     voices on that channel.
4261     </p>
4262 schoenebeck 708 </blockquote><p>
4263 schoenebeck 940
4264 schoenebeck 708 </p>
4265 senoner 542 <p>Example:
4266     </p>
4267 schoenebeck 708 <p>
4268     </p>
4269 senoner 542 <blockquote class="text">
4270     <p>
4271     </p>
4272 schoenebeck 708 </blockquote><p>
4273 schoenebeck 940
4274 schoenebeck 708 </p>
4275 schoenebeck 940 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4276 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4277     <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4278     Current number of active disk streams</h3>
4279 senoner 542
4280     <p>The front-end can ask for the current number of active disk streams
4281     on a sampler channel by sending the following command:
4282     </p>
4283 schoenebeck 708 <p>
4284     </p>
4285 senoner 542 <blockquote class="text">
4286     <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4287     </p>
4288 schoenebeck 708 </blockquote><p>
4289 schoenebeck 940
4290 schoenebeck 708 </p>
4291 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4292 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>
4293     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.
4294 senoner 542 </p>
4295     <p>Possible Answers:
4296     </p>
4297 schoenebeck 708 <p>
4298     </p>
4299 senoner 542 <blockquote class="text">
4300     <p>LinuxSampler will answer by returning the number of active
4301     disk streams on that channel in case the engine supports disk
4302     streaming, if the engine doesn't support disk streaming it will
4303     return "NA" for not available.
4304     </p>
4305 schoenebeck 708 </blockquote><p>
4306 schoenebeck 940
4307 schoenebeck 708 </p>
4308 senoner 542 <p>Example:
4309     </p>
4310 schoenebeck 708 <p>
4311     </p>
4312 senoner 542 <blockquote class="text">
4313     <p>
4314     </p>
4315 schoenebeck 708 </blockquote><p>
4316 schoenebeck 940
4317 schoenebeck 708 </p>
4318 schoenebeck 940 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4319 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4320     <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4321     Current fill state of disk stream buffers</h3>
4322 senoner 542
4323     <p>The front-end can ask for the current fill state of all disk streams
4324     on a sampler channel by sending the following command:
4325     </p>
4326 schoenebeck 708 <p>
4327     </p>
4328 senoner 542 <blockquote class="text">
4329     <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4330     </p>
4331 schoenebeck 708 </blockquote><p>
4332 schoenebeck 940
4333 schoenebeck 708 </p>
4334 senoner 542 <p>to get the fill state in bytes or
4335     </p>
4336 schoenebeck 708 <p>
4337     </p>
4338 senoner 542 <blockquote class="text">
4339     <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4340     </p>
4341 schoenebeck 708 </blockquote><p>
4342 schoenebeck 940
4343 schoenebeck 708 </p>
4344 senoner 542 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4345 schoenebeck 575 sampler channel number the front-end is interested in
4346 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>
4347     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.
4348 senoner 542 </p>
4349     <p>Possible Answers:
4350     </p>
4351 schoenebeck 708 <p>
4352     </p>
4353 senoner 542 <blockquote class="text">
4354     <p>LinuxSampler will either answer by returning a comma separated
4355     string with the fill state of all disk stream buffers on that
4356     channel or an empty line if there are no active disk streams or
4357     "NA" for *not available* in case the engine which is deployed
4358     doesn't support disk streaming. Each entry in the answer list
4359     will begin with the stream's ID in brackets followed by the
4360     numerical representation of the fill size (either in bytes or
4361     percentage). Note: due to efficiency reasons the fill states in
4362     the response are not in particular order, thus the front-end has
4363     to sort them by itself if necessary.
4364     </p>
4365 schoenebeck 708 </blockquote><p>
4366 schoenebeck 940
4367 schoenebeck 708 </p>
4368 senoner 542 <p>Examples:
4369     </p>
4370 schoenebeck 708 <p>
4371     </p>
4372 senoner 542 <blockquote class="text">
4373     <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4374     </p>
4375     <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4376     </p>
4377 schoenebeck 708 </blockquote><p>
4378    
4379     </p>
4380 senoner 542 <blockquote class="text">
4381 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4382 senoner 542 </p>
4383     <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4384     </p>
4385 schoenebeck 708 </blockquote><p>
4386    
4387     </p>
4388 senoner 542 <blockquote class="text">
4389 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4390 senoner 542 </p>
4391     <p>S: ""
4392     </p>
4393 schoenebeck 708 </blockquote><p>
4394 schoenebeck 940
4395 schoenebeck 708 </p>
4396 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4397 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4398     <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4399     Setting audio output device</h3>
4400 senoner 542
4401     <p>The front-end can set the audio output device on a specific sampler
4402     channel by sending the following command:
4403     </p>
4404 schoenebeck 708 <p>
4405     </p>
4406 senoner 542 <blockquote class="text">
4407     <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4408     </p>
4409 schoenebeck 708 </blockquote><p>
4410 schoenebeck 940
4411 schoenebeck 708 </p>
4412 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4413 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>
4414     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
4415 schoenebeck 575 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4416 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>
4417     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>
4418 schoenebeck 575 command.
4419 senoner 542 </p>
4420     <p>Possible Answers:
4421     </p>
4422 schoenebeck 708 <p>
4423     </p>
4424 senoner 542 <blockquote class="text">
4425     <p>"OK" -
4426     </p>
4427     <blockquote class="text">
4428     <p>on success
4429     </p>
4430 schoenebeck 940 </blockquote>
4431    
4432 senoner 542
4433     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4434     </p>
4435     <blockquote class="text">
4436     <p>if audio output device was set, but there are noteworthy
4437     issue(s) related, providing an appropriate warning code and
4438     warning message
4439     </p>
4440 schoenebeck 940 </blockquote>
4441    
4442 senoner 542
4443     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4444     </p>
4445     <blockquote class="text">
4446     <p>in case it failed, providing an appropriate error code and error message
4447     </p>
4448 schoenebeck 940 </blockquote>
4449    
4450 senoner 542
4451 schoenebeck 708 </blockquote><p>
4452 schoenebeck 940
4453 schoenebeck 708 </p>
4454 senoner 542 <p>Examples:
4455     </p>
4456 schoenebeck 708 <p>
4457     </p>
4458 senoner 542 <blockquote class="text">
4459     <p>
4460     </p>
4461 schoenebeck 708 </blockquote><p>
4462 schoenebeck 940
4463 schoenebeck 708 </p>
4464 schoenebeck 974 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4465     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4466     <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4467     Setting audio output type</h3>
4468 senoner 542
4469     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4470     </p>
4471     <p>The front-end can alter the audio output type on a specific sampler
4472     channel by sending the following command:
4473     </p>
4474 schoenebeck 708 <p>
4475     </p>
4476 senoner 542 <blockquote class="text">
4477     <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4478     </p>
4479 schoenebeck 708 </blockquote><p>
4480 schoenebeck 940
4481 schoenebeck 708 </p>
4482 senoner 542 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4483     &lt;sampler-channel&gt; is the respective sampler channel number.
4484     </p>
4485     <p>Possible Answers:
4486     </p>
4487 schoenebeck 708 <p>
4488     </p>
4489 senoner 542 <blockquote class="text">
4490     <p>"OK" -
4491     </p>
4492     <blockquote class="text">
4493     <p>on success
4494     </p>
4495 schoenebeck 940 </blockquote>
4496    
4497 senoner 542
4498     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4499     </p>
4500     <blockquote class="text">
4501     <p>if audio output type was set, but there are noteworthy
4502     issue(s) related, providing an appropriate warning code and
4503     warning message
4504     </p>
4505 schoenebeck 940 </blockquote>
4506    
4507 senoner 542
4508     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4509     </p>
4510     <blockquote class="text">
4511     <p>in case it failed, providing an appropriate error code and error message
4512     </p>
4513 schoenebeck 940 </blockquote>
4514    
4515 senoner 542
4516 schoenebeck 708 </blockquote><p>
4517 schoenebeck 940
4518 schoenebeck 708 </p>
4519 senoner 542 <p>Examples:
4520     </p>
4521 schoenebeck 708 <p>
4522     </p>
4523 senoner 542 <blockquote class="text">
4524     <p>
4525     </p>
4526 schoenebeck 708 </blockquote><p>
4527 schoenebeck 940
4528 schoenebeck 708 </p>
4529 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4530 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4531     <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4532     Setting audio output channel</h3>
4533 senoner 542
4534     <p>The front-end can alter the audio output channel on a specific
4535     sampler channel by sending the following command:
4536     </p>
4537 schoenebeck 708 <p>
4538     </p>
4539 senoner 542 <blockquote class="text">
4540     <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4541     </p>
4542 schoenebeck 708 </blockquote><p>
4543 schoenebeck 940
4544 schoenebeck 708 </p>
4545 schoenebeck 575 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4546 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>
4547     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
4548 senoner 542 numerical ID of the sampler channel's audio output channel which should be
4549     rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4550     output device where &lt;audio-out&gt; should be routed to.
4551     </p>
4552     <p>Possible Answers:
4553     </p>
4554 schoenebeck 708 <p>
4555     </p>
4556 senoner 542 <blockquote class="text">
4557     <p>"OK" -
4558     </p>
4559     <blockquote class="text">
4560     <p>on success
4561     </p>
4562 schoenebeck 940 </blockquote>
4563    
4564 senoner 542
4565     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4566     </p>
4567     <blockquote class="text">
4568     <p>if audio output channel was set, but there are noteworthy
4569     issue(s) related, providing an appropriate warning code and
4570     warning message
4571     </p>
4572 schoenebeck 940 </blockquote>
4573    
4574 senoner 542
4575     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4576     </p>
4577     <blockquote class="text">
4578     <p>in case it failed, providing an appropriate error code and error message
4579     </p>
4580 schoenebeck 940 </blockquote>
4581    
4582 senoner 542
4583 schoenebeck 708 </blockquote><p>
4584 schoenebeck 940
4585 schoenebeck 708 </p>
4586 senoner 542 <p>Examples:
4587     </p>
4588 schoenebeck 708 <p>
4589     </p>
4590 senoner 542 <blockquote class="text">
4591     <p>
4592     </p>
4593 schoenebeck 708 </blockquote><p>
4594 schoenebeck 940
4595 schoenebeck 708 </p>
4596 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4597 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4598     <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4599     Setting MIDI input device</h3>
4600 senoner 542
4601     <p>The front-end can set the MIDI input device on a specific sampler
4602     channel by sending the following command:
4603     </p>
4604 schoenebeck 708 <p>
4605     </p>
4606 senoner 542 <blockquote class="text">
4607     <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4608     </p>
4609 schoenebeck 708 </blockquote><p>
4610 schoenebeck 940
4611 schoenebeck 708 </p>
4612 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4613 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>
4614     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
4615 schoenebeck 575 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4616 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>
4617     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.
4618 senoner 542 </p>
4619     <p>Possible Answers:
4620     </p>
4621 schoenebeck 708 <p>
4622     </p>
4623 senoner 542 <blockquote class="text">
4624     <p>"OK" -
4625     </p>
4626     <blockquote class="text">
4627     <p>on success
4628     </p>
4629 schoenebeck 940 </blockquote>
4630    
4631 senoner 542
4632     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4633     </p>
4634     <blockquote class="text">
4635     <p>if MIDI input device was set, but there are noteworthy
4636     issue(s) related, providing an appropriate warning code and
4637     warning message
4638     </p>
4639 schoenebeck 940 </blockquote>
4640    
4641 senoner 542
4642     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4643     </p>
4644     <blockquote class="text">
4645     <p>in case it failed, providing an appropriate error code and error message
4646     </p>
4647 schoenebeck 940 </blockquote>
4648    
4649 senoner 542
4650 schoenebeck 708 </blockquote><p>
4651 schoenebeck 940
4652 schoenebeck 708 </p>
4653 senoner 542 <p>Examples:
4654     </p>
4655 schoenebeck 708 <p>
4656     </p>
4657 senoner 542 <blockquote class="text">
4658     <p>
4659     </p>
4660 schoenebeck 708 </blockquote><p>
4661 schoenebeck 940
4662 schoenebeck 708 </p>
4663 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4664 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4665     <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4666     Setting MIDI input type</h3>
4667 senoner 542
4668     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4669     </p>
4670     <p>The front-end can alter the MIDI input type on a specific sampler
4671     channel by sending the following command:
4672     </p>
4673 schoenebeck 708 <p>
4674     </p>
4675 senoner 542 <blockquote class="text">
4676     <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4677     </p>
4678 schoenebeck 708 </blockquote><p>
4679 schoenebeck 940
4680 schoenebeck 708 </p>
4681 senoner 542 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4682     &lt;sampler-channel&gt; is the respective sampler channel number.
4683     </p>
4684     <p>Possible Answers:
4685     </p>
4686 schoenebeck 708 <p>
4687     </p>
4688 senoner 542 <blockquote class="text">
4689     <p>"OK" -
4690     </p>
4691     <blockquote class="text">
4692     <p>on success
4693     </p>
4694 schoenebeck 940 </blockquote>
4695    
4696 senoner 542
4697     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4698     </p>
4699     <blockquote class="text">
4700     <p>if MIDI input type was set, but there are noteworthy
4701     issue(s) related, providing an appropriate warning code and
4702     warning message
4703     </p>
4704 schoenebeck 940 </blockquote>
4705    
4706 senoner 542
4707     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4708     </p>
4709     <blockquote class="text">
4710     <p>in case it failed, providing an appropriate error code and error message
4711     </p>
4712 schoenebeck 940 </blockquote>
4713    
4714 senoner 542
4715 schoenebeck 708 </blockquote><p>
4716 schoenebeck 940
4717 schoenebeck 708 </p>
4718 senoner 542 <p>Examples:
4719     </p>
4720 schoenebeck 708 <p>
4721     </p>
4722 senoner 542 <blockquote class="text">
4723     <p>
4724     </p>
4725 schoenebeck 708 </blockquote><p>
4726 schoenebeck 940
4727 schoenebeck 708 </p>
4728 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4729 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4730     <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4731     Setting MIDI input port</h3>
4732 senoner 542
4733     <p>The front-end can alter the MIDI input port on a specific sampler
4734     channel by sending the following command:
4735     </p>
4736 schoenebeck 708 <p>
4737     </p>
4738 senoner 542 <blockquote class="text">
4739     <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4740     </p>
4741 schoenebeck 708 </blockquote><p>
4742 schoenebeck 940
4743 schoenebeck 708 </p>
4744 senoner 542 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4745     MIDI input device connected to the sampler channel given by
4746     &lt;sampler-channel&gt;.
4747     </p>
4748     <p>Possible Answers:
4749     </p>
4750 schoenebeck 708 <p>
4751     </p>
4752 senoner 542 <blockquote class="text">
4753     <p>"OK" -
4754     </p>
4755     <blockquote class="text">
4756     <p>on success
4757     </p>
4758 schoenebeck 940 </blockquote>
4759    
4760 senoner 542
4761     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4762     </p>
4763     <blockquote class="text">
4764     <p>if MIDI input port was set, but there are noteworthy
4765     issue(s) related, providing an appropriate warning code and
4766     warning message
4767     </p>
4768 schoenebeck 940 </blockquote>
4769    
4770 senoner 542
4771     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4772     </p>
4773     <blockquote class="text">
4774 schoenebeck 561 <p>in case it failed, providing an appropriate error code and error message
4775 senoner 542 </p>
4776 schoenebeck 940 </blockquote>
4777    
4778 senoner 542
4779 schoenebeck 708 </blockquote><p>
4780 schoenebeck 940
4781 schoenebeck 708 </p>
4782 senoner 542 <p>Examples:
4783     </p>
4784 schoenebeck 708 <p>
4785     </p>
4786 senoner 542 <blockquote class="text">
4787     <p>
4788     </p>
4789 schoenebeck 708 </blockquote><p>
4790 schoenebeck 940
4791 schoenebeck 708 </p>
4792 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4793 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4794     <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4795     Setting MIDI input channel</h3>
4796 senoner 542
4797     <p>The front-end can alter the MIDI channel a sampler channel should
4798     listen to by sending the following command:
4799     </p>
4800 schoenebeck 708 <p>
4801     </p>
4802 senoner 542 <blockquote class="text">
4803     <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4804     </p>
4805 schoenebeck 708 </blockquote><p>
4806 schoenebeck 940
4807 schoenebeck 708 </p>
4808 senoner 542 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4809     &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4810     channels.
4811     </p>
4812     <p>Possible Answers:
4813     </p>
4814 schoenebeck 708 <p>
4815     </p>
4816 senoner 542 <blockquote class="text">
4817     <p>"OK" -
4818     </p>
4819     <blockquote class="text">
4820     <p>on success
4821     </p>
4822 schoenebeck 940 </blockquote>
4823    
4824 senoner 542
4825     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4826     </p>
4827     <blockquote class="text">
4828     <p>if MIDI input channel was set, but there are noteworthy
4829     issue(s) related, providing an appropriate warning code and
4830     warning message
4831     </p>
4832 schoenebeck 940 </blockquote>
4833    
4834 senoner 542
4835     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4836     </p>
4837     <blockquote class="text">
4838     <p>in case it failed, providing an appropriate error code and error message
4839     </p>
4840 schoenebeck 940 </blockquote>
4841    
4842 senoner 542
4843 schoenebeck 708 </blockquote><p>
4844 schoenebeck 940
4845 schoenebeck 708 </p>
4846 senoner 542 <p>Examples:
4847     </p>
4848 schoenebeck 708 <p>
4849     </p>
4850 senoner 542 <blockquote class="text">
4851     <p>
4852     </p>
4853 schoenebeck 708 </blockquote><p>
4854 schoenebeck 940
4855 schoenebeck 708 </p>
4856 schoenebeck 940 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4857 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4858     <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4859     Setting channel volume</h3>
4860 senoner 542
4861     <p>The front-end can alter the volume of a sampler channel by sending
4862     the following command:
4863     </p>
4864 schoenebeck 708 <p>
4865     </p>
4866 senoner 542 <blockquote class="text">
4867     <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4868     </p>
4869 schoenebeck 708 </blockquote><p>
4870 schoenebeck 940
4871 schoenebeck 708 </p>
4872 senoner 542 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4873     smaller than 1.0 means attenuation, whereas a value greater than
4874     1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4875     channel where this volume factor should be set.
4876     </p>
4877     <p>Possible Answers:
4878     </p>
4879 schoenebeck 708 <p>
4880     </p>
4881 senoner 542 <blockquote class="text">
4882     <p>"OK" -
4883     </p>
4884     <blockquote class="text">
4885     <p>on success
4886     </p>
4887 schoenebeck 940 </blockquote>
4888    
4889 senoner 542
4890     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4891     </p>
4892     <blockquote class="text">
4893     <p>if channel volume was set, but there are noteworthy
4894     issue(s) related, providing an appropriate warning code and
4895     warning message
4896     </p>
4897 schoenebeck 940 </blockquote>
4898    
4899 senoner 542
4900     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4901     </p>
4902     <blockquote class="text">
4903     <p>in case it failed, providing an appropriate error code and error message
4904     </p>
4905 schoenebeck 940 </blockquote>
4906    
4907 senoner 542
4908 schoenebeck 708 </blockquote><p>
4909 schoenebeck 940
4910 schoenebeck 708 </p>
4911 senoner 542 <p>Examples:
4912     </p>
4913 schoenebeck 708 <p>
4914     </p>
4915 senoner 542 <blockquote class="text">
4916     <p>
4917     </p>
4918 schoenebeck 708 </blockquote><p>
4919 schoenebeck 940
4920 schoenebeck 708 </p>
4921 schoenebeck 940 <a name="SET CHANNEL MUTE"></a><br /><hr />
4922 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4923     <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4924     Muting a sampler channel</h3>
4925 senoner 542
4926 schoenebeck 708 <p>The front-end can mute/unmute a specific sampler
4927     channel by sending the following command:
4928     </p>
4929     <p>
4930     </p>
4931     <blockquote class="text">
4932     <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4933     </p>
4934     </blockquote><p>
4935 schoenebeck 940
4936 schoenebeck 708 </p>
4937     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4938 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>
4939     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
4940 schoenebeck 708 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4941     to unmute the channel.
4942     </p>
4943     <p>Possible Answers:
4944     </p>
4945     <p>
4946     </p>
4947     <blockquote class="text">
4948     <p>"OK" -
4949     </p>
4950     <blockquote class="text">
4951     <p>on success
4952     </p>
4953 schoenebeck 940 </blockquote>
4954    
4955 schoenebeck 708
4956     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4957     </p>
4958     <blockquote class="text">
4959     <p>if the channel was muted/unmuted, but there are noteworthy
4960     issue(s) related, providing an appropriate warning code and
4961     warning message
4962     </p>
4963 schoenebeck 940 </blockquote>
4964    
4965 schoenebeck 708
4966     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4967     </p>
4968     <blockquote class="text">
4969     <p>in case it failed, providing an appropriate error code and error message
4970     </p>
4971 schoenebeck 940 </blockquote>
4972    
4973 schoenebeck 708
4974     </blockquote><p>
4975 schoenebeck 940
4976 schoenebeck 708 </p>
4977     <p>Examples:
4978     </p>
4979     <p>
4980     </p>
4981     <blockquote class="text">
4982     <p>
4983     </p>
4984     </blockquote><p>
4985 schoenebeck 940
4986 schoenebeck 708 </p>
4987 schoenebeck 940 <a name="SET CHANNEL SOLO"></a><br /><hr />
4988 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4989     <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4990     Soloing a sampler channel</h3>
4991 schoenebeck 708
4992     <p>The front-end can solo/unsolo a specific sampler channel
4993     by sending the following command:
4994     </p>
4995     <p>
4996     </p>
4997     <blockquote class="text">
4998     <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4999     </p>
5000     </blockquote><p>
5001 schoenebeck 940
5002 schoenebeck 708 </p>
5003     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5004 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>
5005     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
5006 schoenebeck 708 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
5007     to unsolo the channel.
5008     </p>
5009     <p>Possible Answers:
5010     </p>
5011     <p>
5012     </p>
5013     <blockquote class="text">
5014     <p>"OK" -
5015     </p>
5016     <blockquote class="text">
5017     <p>on success
5018     </p>
5019 schoenebeck 940 </blockquote>
5020    
5021 schoenebeck 708
5022     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5023     </p>
5024     <blockquote class="text">
5025     <p>if the channel was soloed/unsoloed, but there are noteworthy
5026     issue(s) related, providing an appropriate warning code and
5027     warning message
5028     </p>
5029 schoenebeck 940 </blockquote>
5030    
5031 schoenebeck 708
5032     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5033     </p>
5034     <blockquote class="text">
5035     <p>in case it failed, providing an appropriate error code and error message
5036     </p>
5037 schoenebeck 940 </blockquote>
5038    
5039 schoenebeck 708
5040     </blockquote><p>
5041 schoenebeck 940
5042 schoenebeck 708 </p>
5043     <p>Examples:
5044     </p>
5045     <p>
5046     </p>
5047     <blockquote class="text">
5048     <p>
5049     </p>
5050     </blockquote><p>
5051 schoenebeck 940
5052 schoenebeck 708 </p>
5053 schoenebeck 974 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
5054     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5055     <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
5056     Assigning a MIDI instrument map to a sampler channel</h3>
5057    
5058     <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5059     by sending the following command:
5060     </p>
5061     <p>
5062     </p>
5063     <blockquote class="text">
5064     <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5065     </p>
5066     </blockquote><p>
5067    
5068     </p>
5069     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5070     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>
5071     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
5072     &lt;map&gt; can have the following possibilites:
5073     </p>
5074     <p>
5075     </p>
5076     <blockquote class="text">
5077     <p>"NONE" -
5078     </p>
5079     <blockquote class="text">
5080     <p>This is the default setting. In this case
5081     the sampler channel is not assigned any MIDI
5082     instrument map and thus will ignore all MIDI
5083     program change messages.
5084     </p>
5085     </blockquote>
5086    
5087    
5088     <p>"DEFAULT" -
5089     </p>
5090     <blockquote class="text">
5091     <p>The sampler channel will always use the
5092     default MIDI instrument map to handle MIDI
5093     program change messages.
5094     </p>
5095     </blockquote>
5096    
5097    
5098     <p>numeric ID -
5099     </p>
5100     <blockquote class="text">
5101     <p>You can assign a specific MIDI instrument map
5102     by replacing &lt;map&gt; with the respective numeric
5103     ID of the MIDI instrument map as returned by the
5104     <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>
5105     command. Once that map will be deleted, the sampler
5106     channel would fall back to "NONE".
5107     </p>
5108     </blockquote>
5109    
5110    
5111     </blockquote><p>
5112    
5113     </p>
5114     <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>
5115     for details regarding MIDI instrument mapping.
5116     </p>
5117     <p>Possible Answers:
5118     </p>
5119     <p>
5120     </p>
5121     <blockquote class="text">
5122     <p>"OK" -
5123     </p>
5124     <blockquote class="text">
5125     <p>on success
5126     </p>
5127     </blockquote>
5128    
5129    
5130     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5131     </p>
5132     <blockquote class="text">
5133     <p>in case it failed, providing an appropriate error code and error message
5134     </p>
5135     </blockquote>
5136    
5137    
5138     </blockquote><p>
5139    
5140     </p>
5141     <p>Examples:
5142     </p>
5143     <p>
5144     </p>
5145     <blockquote class="text">
5146     <p>
5147     </p>
5148     </blockquote><p>
5149    
5150     </p>
5151 schoenebeck 1002 <a name="CREATE FX_SEND"></a><br /><hr />
5152     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5153     <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5154     Adding an effect send to a sampler channel</h3>
5155    
5156     <p>The front-end can create an additional effect send on a specific sampler channel
5157     by sending the following command:
5158     </p>
5159     <p>
5160     </p>
5161     <blockquote class="text">
5162     <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5163     </p>
5164     </blockquote><p>
5165    
5166     </p>
5167     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5168     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>
5169     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
5170     sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5171     is a number between 0..127 defining the MIDI controller which can alter the
5172     effect send level and &lt;name&gt; is an optional argument defining a name
5173 schoenebeck 1390 for the effect send entity. The name does not have to be unique, but MUST be
5174     encapsulated into apostrophes and supports escape sequences as described in chapter
5175     "<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>".
5176 schoenebeck 1002 </p>
5177     <p>By default, that is as initial routing, the effect send's audio channels
5178     are automatically routed to the last audio channels of the sampler channel's
5179     audio output device, that way you can i.e. first increase the amount of audio
5180     channels on the audio output device for having dedicated effect send output
5181     channels and when "CREATE FX_SEND" is called, those channels will automatically
5182     be picked. You can alter the destination channels however with
5183     <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>.
5184    
5185     </p>
5186     <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5187     sends on a sampler channel will decrease runtime performance, because for implementing channel
5188     effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5189     the voices and route the audio signal afterwards to the master outputs and effect send
5190     outputs (along with their respective effect send levels). A sampler channel without effect
5191     sends however can mix its voices directly into the audio output devices's audio buffers
5192     and is thus faster.
5193    
5194     </p>
5195     <p>Possible Answers:
5196     </p>
5197     <p>
5198     </p>
5199     <blockquote class="text">
5200     <p>"OK[&lt;fx-send-id&gt;]" -
5201     </p>
5202     <blockquote class="text">
5203     <p>in case a new effect send could be added to the
5204     sampler channel, where &lt;fx-send-id&gt; reflects the
5205     unique ID of the newly created effect send entity
5206     </p>
5207     </blockquote>
5208    
5209    
5210     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5211     </p>
5212     <blockquote class="text">
5213     <p>when a new effect send could not be added, i.e.
5214     due to invalid parameters
5215     </p>
5216     </blockquote>
5217    
5218    
5219     </blockquote><p>
5220    
5221     </p>
5222     <p>Examples:
5223     </p>
5224     <p>
5225     </p>
5226     <blockquote class="text">
5227     <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5228     </p>
5229     <p>S: "OK[0]"
5230     </p>
5231     </blockquote><p>
5232    
5233     </p>
5234     <p>
5235     </p>
5236     <blockquote class="text">
5237     <p>C: "CREATE FX_SEND 0 93"
5238     </p>
5239     <p>S: "OK[1]"
5240     </p>
5241     </blockquote><p>
5242    
5243     </p>
5244     <a name="DESTROY FX_SEND"></a><br /><hr />
5245     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5246     <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5247     Removing an effect send from a sampler channel</h3>
5248    
5249     <p>The front-end can remove an existing effect send on a specific sampler channel
5250     by sending the following command:
5251     </p>
5252     <p>
5253     </p>
5254     <blockquote class="text">
5255     <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5256     </p>
5257     </blockquote><p>
5258    
5259     </p>
5260     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5261     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>
5262     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
5263     sampler channel from which the effect send should be removed from and
5264     &lt;fx-send-id&gt; is the respective effect send number as returned by the
5265     <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>
5266     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.
5267     </p>
5268     <p>Possible Answers:
5269     </p>
5270     <p>
5271     </p>
5272     <blockquote class="text">
5273     <p>"OK" -
5274     </p>
5275     <blockquote class="text">
5276     <p>on success
5277     </p>
5278     </blockquote>
5279    
5280    
5281     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5282     </p>
5283     <blockquote class="text">
5284     <p>in case it failed, providing an appropriate error code and
5285     error message
5286     </p>
5287     </blockquote>
5288    
5289    
5290     </blockquote><p>
5291    
5292     </p>
5293     <p>Example:
5294     </p>
5295     <p>
5296     </p>
5297     <blockquote class="text">
5298     <p>C: "DESTROY FX_SEND 0 0"
5299     </p>
5300     <p>S: "OK"
5301     </p>
5302     </blockquote><p>
5303    
5304     </p>
5305     <a name="GET FX_SENDS"></a><br /><hr />
5306     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5307     <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5308     Getting amount of effect sends on a sampler channel</h3>
5309    
5310     <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5311     by sending the following command:
5312     </p>
5313     <p>
5314     </p>
5315     <blockquote class="text">
5316     <p>GET FX_SENDS &lt;sampler-channel&gt;
5317     </p>
5318     </blockquote><p>
5319    
5320     </p>
5321     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5322     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>
5323     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.
5324     </p>
5325     <p>Possible Answers:
5326     </p>
5327     <p>
5328     </p>
5329     <blockquote class="text">
5330     <p>The sampler will answer by returning the number of effect
5331     sends on the given sampler channel.
5332     </p>
5333     </blockquote><p>
5334    
5335     </p>
5336     <p>Example:
5337     </p>
5338     <p>
5339     </p>
5340     <blockquote class="text">
5341     <p>C: "GET FX_SENDS 0"
5342     </p>
5343     <p>S: "2"
5344     </p>
5345     </blockquote><p>
5346    
5347     </p>
5348     <a name="LIST FX_SENDS"></a><br /><hr />
5349     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5350     <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5351     Listing all effect sends on a sampler channel</h3>
5352    
5353     <p>The front-end can ask for a list of effect sends on a specific sampler channel
5354     by sending the following command:
5355     </p>
5356     <p>
5357     </p>
5358     <blockquote class="text">
5359     <p>LIST FX_SENDS &lt;sampler-channel&gt;
5360     </p>
5361     </blockquote><p>
5362    
5363     </p>
5364     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5365     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>
5366     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.
5367     </p>
5368     <p>Possible Answers:
5369     </p>
5370     <p>
5371     </p>
5372     <blockquote class="text">
5373     <p>The sampler will answer by returning a comma separated list
5374     with all effect sends' numerical IDs on the given sampler
5375     channel.
5376     </p>
5377     </blockquote><p>
5378    
5379     </p>
5380     <p>Examples:
5381     </p>
5382     <p>
5383     </p>
5384     <blockquote class="text">
5385     <p>C: "LIST FX_SENDS 0"
5386     </p>
5387     <p>S: "0,1"
5388     </p>
5389     </blockquote><p>
5390    
5391     </p>
5392     <p>
5393     </p>
5394     <blockquote class="text">
5395     <p>C: "LIST FX_SENDS 1"
5396     </p>
5397     <p>S: ""
5398     </p>
5399     </blockquote><p>
5400    
5401     </p>
5402     <a name="GET FX_SEND INFO"></a><br /><hr />
5403     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5404     <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5405     Getting effect send information</h3>
5406    
5407     <p>The front-end can ask for the current settings of an effect send entity
5408     by sending the following command:
5409     </p>
5410     <p>
5411     </p>
5412     <blockquote class="text">
5413     <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5414     </p>
5415     </blockquote><p>
5416    
5417     </p>
5418     <p>Where &lt;sampler-channel&gt; is the sampler channel number
5419     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>
5420     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
5421     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5422     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>
5423     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.
5424    
5425     </p>
5426     <p>Possible Answers:
5427     </p>
5428     <p>
5429     </p>
5430     <blockquote class="text">
5431     <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5432     Each answer line begins with the settings category name
5433     followed by a colon and then a space character &lt;SP&gt; and finally
5434     the info character string to that setting category. At the
5435     moment the following categories are defined:
5436     </p>
5437     <p>
5438     </p>
5439     <blockquote class="text">
5440     <p>NAME -
5441     </p>
5442     <blockquote class="text">
5443     <p>name of the effect send entity
5444 schoenebeck 1400 (note that this character string may contain
5445     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5446 schoenebeck 1002 </p>
5447     </blockquote>
5448    
5449    
5450 schoenebeck 1028 <p>MIDI_CONTROLLER -
5451     </p>
5452     <blockquote class="text">
5453     <p>a value between 0 and 127 reflecting the MIDI controller
5454     which is able to modify the effect send's send level
5455     </p>
5456     </blockquote>
5457    
5458    
5459     <p>LEVEL -
5460     </p>
5461     <blockquote class="text">
5462     <p>optionally dotted number reflecting the effect send's
5463     current send level (where a value &lt; 1.0 means attenuation
5464     and a value > 1.0 means amplification)
5465     </p>
5466     </blockquote>
5467    
5468    
5469 schoenebeck 1002 <p>AUDIO_OUTPUT_ROUTING -
5470     </p>
5471     <blockquote class="text">
5472     <p>comma separated list which reflects to which audio
5473     channel of the selected audio output device each
5474     effect send output channel is routed to, e.g. "0,3" would
5475     mean the effect send's output channel 0 is routed to channel
5476     0 of the audio output device and the effect send's output
5477     channel 1 is routed to the channel 3 of the audio
5478     output device (see
5479     <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>
5480 schoenebeck 2139 for details), if an internal send
5481     effect is assigned to the effect
5482     send, then this setting defines the
5483     audio channel routing to that
5484     effect instance respectively
5485 schoenebeck 1002 </p>
5486     </blockquote>
5487    
5488    
5489 schoenebeck 2139 <p>SEND_EFFECT -
5490     </p>
5491     <blockquote class="text">
5492     <p>destination send effect chain ID
5493     and destination effect chain
5494     position, separated by comma in the
5495     form "&lt;effect-chain&gt;,&lt;chain-pos&gt;"
5496     or "NONE" if there is no send effect
5497     assigned to the effect send
5498     </p>
5499 schoenebeck 1002 </blockquote>
5500 schoenebeck 2139
5501    
5502     </blockquote>
5503 schoenebeck 1002
5504    
5505     </blockquote><p>
5506    
5507     </p>
5508     <p>The mentioned fields above don't have to be in particular order.
5509     </p>
5510     <p>Example:
5511     </p>
5512     <p>
5513     </p>
5514     <blockquote class="text">
5515     <p>C: "GET FX_SEND INFO 0 0"
5516     </p>
5517     <p>S: "NAME: Reverb Send"
5518     </p>
5519 schoenebeck 1028 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5520     </p>
5521     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5522     </p>
5523 schoenebeck 1002 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5524     </p>
5525     <p>&nbsp;&nbsp;&nbsp;"."
5526     </p>
5527     </blockquote><p>
5528    
5529     </p>
5530 iliev 1137 <a name="SET FX_SEND NAME"></a><br /><hr />
5531     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5532     <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5533     Changing effect send's name</h3>
5534    
5535     <p>The front-end can alter the current name of an effect
5536     send entity by sending the following command:
5537     </p>
5538     <p>
5539     </p>
5540     <blockquote class="text">
5541     <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5542     </p>
5543     </blockquote><p>
5544    
5545     </p>
5546     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5547     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>
5548     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,
5549     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5550     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>
5551     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
5552     &lt;name&gt; is the new name of the effect send entity, which
5553 schoenebeck 1390 does not have to be unique (name MUST be encapsulated into apostrophes
5554     and supports escape sequences as described in chapter
5555     "<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>").
5556    
5557 iliev 1137 </p>
5558     <p>Possible Answers:
5559     </p>
5560     <p>
5561     </p>
5562     <blockquote class="text">
5563     <p>"OK" -
5564     </p>
5565     <blockquote class="text">
5566     <p>on success
5567     </p>
5568     </blockquote>
5569    
5570    
5571     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5572     </p>
5573     <blockquote class="text">
5574     <p>in case it failed, providing an appropriate error code and error message
5575     </p>
5576     </blockquote>
5577    
5578    
5579     </blockquote><p>
5580    
5581     </p>
5582     <p>Example:
5583     </p>
5584     <p>
5585     </p>
5586     <blockquote class="text">
5587     <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5588     </p>
5589     <p>S: "OK"
5590     </p>
5591     </blockquote><p>
5592    
5593     </p>
5594 schoenebeck 1002 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5595     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5596 iliev 1137 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5597 schoenebeck 1002 Altering effect send's audio routing</h3>
5598    
5599     <p>The front-end can alter the destination of an effect send's audio channel on a specific
5600     sampler channel by sending the following command:
5601     </p>
5602     <p>
5603     </p>
5604     <blockquote class="text">
5605     <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5606     </p>
5607     </blockquote><p>
5608    
5609     </p>
5610     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5611     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>
5612     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,
5613     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5614     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>
5615     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,
5616     &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5617     which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5618     the audio channel of the selected audio output device where &lt;audio-src&gt;
5619 schoenebeck 2139 should be routed to. If an internal send effect is assigned
5620     to the effect send, then this setting defines the audio
5621     channel routing to that effect instance respectively.
5622 schoenebeck 1002 </p>
5623     <p>Note that effect sends can only route audio to the same audio output
5624     device as assigned to the effect send's sampler channel. Also note that an
5625     effect send entity does always have exactly as much audio channels as its
5626     sampler channel. So if the sampler channel is stereo, the effect send does
5627     have two audio channels as well. Also keep in mind that the amount of audio
5628     channels on a sampler channel might be dependant not only to the deployed
5629     sampler engine on the sampler channel, but also dependant to the instrument
5630     currently loaded. However you can (effectively) turn an i.e. stereo effect
5631     send into a mono one by simply altering its audio routing appropriately.
5632     </p>
5633     <p>Possible Answers:
5634     </p>
5635     <p>
5636     </p>
5637     <blockquote class="text">
5638     <p>"OK" -
5639     </p>
5640     <blockquote class="text">
5641     <p>on success
5642     </p>
5643     </blockquote>
5644    
5645    
5646     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5647     </p>
5648     <blockquote class="text">
5649     <p>if audio output channel was set, but there are noteworthy
5650     issue(s) related, providing an appropriate warning code and
5651     warning message
5652     </p>
5653     </blockquote>
5654    
5655    
5656     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5657     </p>
5658     <blockquote class="text">
5659     <p>in case it failed, providing an appropriate error code and error message
5660     </p>
5661     </blockquote>
5662    
5663    
5664     </blockquote><p>
5665    
5666     </p>
5667     <p>Example:
5668     </p>
5669     <p>
5670     </p>
5671     <blockquote class="text">
5672     <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5673     </p>
5674     <p>S: "OK"
5675     </p>
5676     </blockquote><p>
5677    
5678     </p>
5679 schoenebeck 2139 <a name="SET FX_SEND SEND_EFFECT"></a><br /><hr />
5680     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5681     <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5682     Assigning destination effect to an effect send</h3>
5683    
5684     <p>The front-end can (re-)assign a destination effect to an
5685     effect send by sending the following command:
5686     </p>
5687     <p>
5688     </p>
5689     <blockquote class="text">
5690     <p>SET FX_SEND SEND_EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
5691     </p>
5692     </blockquote><p>
5693    
5694     </p>
5695     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5696     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>
5697     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,
5698     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5699     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>
5700     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,
5701     &lt;effect-chain&gt; by the numerical ID of the destination
5702     effect chain as returned by the
5703     <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>
5704     or
5705     <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>
5706     command and &lt;chain-pos&gt; reflects the exact effect
5707     chain position in the effect chain which hosts the actual
5708     destination effect.
5709     </p>
5710     <p>Possible Answers:
5711     </p>
5712     <p>
5713     </p>
5714     <blockquote class="text">
5715     <p>"OK" -
5716     </p>
5717     <blockquote class="text">
5718     <p>on success
5719     </p>
5720     </blockquote>
5721    
5722    
5723     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5724     </p>
5725     <blockquote class="text">
5726     <p>in case it failed, providing an appropriate error code and error message
5727     </p>
5728     </blockquote>
5729    
5730    
5731     </blockquote><p>
5732    
5733     </p>
5734     <p>Example:
5735     </p>
5736     <p>
5737     </p>
5738     <blockquote class="text">
5739     <p>C: "SET FX_SEND SEND_EFFECT 0 0 2 5"
5740     </p>
5741     <p>S: "OK"
5742     </p>
5743     </blockquote><p>
5744    
5745     </p>
5746     <a name="REMOVE FX_SEND SEND_EFFECT"></a><br /><hr />
5747     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5748     <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5749     Removing destination effect from an effect send</h3>
5750    
5751     <p>The front-end can (re-)assign a destination effect to an
5752     effect send by sending the following command:
5753     </p>
5754     <p>
5755     </p>
5756     <blockquote class="text">
5757     <p>REMOVE FX_SEND SEND_EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt;
5758     </p>
5759     </blockquote><p>
5760    
5761     </p>
5762     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5763     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>
5764     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,
5765     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5766     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>
5767     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.
5768     </p>
5769     <p>After the destination effect has been removed from the
5770     effect send, the audio signal of the effect send will be
5771     routed directly to the audio output device, according to the
5772     audio channel routing setting of the effect send.
5773    
5774     </p>
5775     <p>Possible Answers:
5776     </p>
5777     <p>
5778     </p>
5779     <blockquote class="text">
5780     <p>"OK" -
5781     </p>
5782     <blockquote class="text">
5783     <p>on success
5784     </p>
5785     </blockquote>
5786    
5787    
5788     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5789     </p>
5790     <blockquote class="text">
5791     <p>in case it failed, providing an appropriate error code and error message
5792     </p>
5793     </blockquote>
5794    
5795    
5796     </blockquote><p>
5797    
5798     </p>
5799     <p>Example:
5800     </p>
5801     <p>
5802     </p>
5803     <blockquote class="text">
5804     <p>C: "REMOVE FX_SEND SEND_EFFECT 0 0"
5805     </p>
5806     <p>S: "OK"
5807     </p>
5808     </blockquote><p>
5809    
5810     </p>
5811 schoenebeck 1028 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5812     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5813 schoenebeck 2139 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5814 schoenebeck 1028 Altering effect send's MIDI controller</h3>
5815    
5816     <p>The front-end can alter the MIDI controller of an effect
5817     send entity by sending the following command:
5818     </p>
5819     <p>
5820     </p>
5821     <blockquote class="text">
5822     <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5823     </p>
5824     </blockquote><p>
5825    
5826     </p>
5827     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5828     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>
5829     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,
5830     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5831     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>
5832     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
5833     &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5834     able to modify the effect send's send level.
5835     </p>
5836     <p>Possible Answers:
5837     </p>
5838     <p>
5839     </p>
5840     <blockquote class="text">
5841     <p>"OK" -
5842     </p>
5843     <blockquote class="text">
5844     <p>on success
5845     </p>
5846     </blockquote>
5847    
5848    
5849     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5850     </p>
5851     <blockquote class="text">
5852     <p>if MIDI controller was set, but there are noteworthy
5853     issue(s) related, providing an appropriate warning code and
5854     warning message
5855     </p>
5856     </blockquote>
5857    
5858    
5859     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5860     </p>
5861     <blockquote class="text">
5862     <p>in case it failed, providing an appropriate error code and error message
5863     </p>
5864     </blockquote>
5865    
5866    
5867     </blockquote><p>
5868    
5869     </p>
5870     <p>Example:
5871     </p>
5872     <p>
5873     </p>
5874     <blockquote class="text">
5875     <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5876     </p>
5877     <p>S: "OK"
5878     </p>
5879     </blockquote><p>
5880    
5881     </p>
5882     <a name="SET FX_SEND LEVEL"></a><br /><hr />
5883     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5884 schoenebeck 2139 <a name="rfc.section.6.4.35"></a><h3>6.4.35.&nbsp;
5885 schoenebeck 1028 Altering effect send's send level</h3>
5886    
5887     <p>The front-end can alter the current send level of an effect
5888     send entity by sending the following command:
5889     </p>
5890     <p>
5891     </p>
5892     <blockquote class="text">
5893     <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5894     </p>
5895     </blockquote><p>
5896    
5897     </p>
5898     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5899     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>
5900     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,
5901     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5902     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>
5903     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
5904     &lt;volume&gt; is an optionally dotted positive number (a value
5905     smaller than 1.0 means attenuation, whereas a value greater than
5906     1.0 means amplification) reflecting the new send level.
5907     </p>
5908     <p>Possible Answers:
5909     </p>
5910     <p>
5911     </p>
5912     <blockquote class="text">
5913     <p>"OK" -
5914     </p>
5915     <blockquote class="text">
5916     <p>on success
5917     </p>
5918     </blockquote>
5919    
5920    
5921     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5922     </p>
5923     <blockquote class="text">
5924     <p>if new send level was set, but there are noteworthy
5925     issue(s) related, providing an appropriate warning code and
5926     warning message
5927     </p>
5928     </blockquote>
5929    
5930    
5931     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5932     </p>
5933     <blockquote class="text">
5934     <p>in case it failed, providing an appropriate error code and error message
5935     </p>
5936     </blockquote>
5937    
5938    
5939     </blockquote><p>
5940    
5941     </p>
5942     <p>Example:
5943     </p>
5944     <p>
5945     </p>
5946     <blockquote class="text">
5947     <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5948     </p>
5949     <p>S: "OK"
5950     </p>
5951     </blockquote><p>
5952    
5953     </p>
5954 iliev 1773 <a name="SEND CHANNEL MIDI_DATA"></a><br /><hr />
5955     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5956 schoenebeck 2139 <a name="rfc.section.6.4.36"></a><h3>6.4.36.&nbsp;
5957 iliev 1773 Sending MIDI messages to sampler channel</h3>
5958    
5959 schoenebeck 2023 <p>The front-end can send MIDI events to a specific sampler channel
5960 iliev 1773 by sending the following command:
5961     </p>
5962     <p>
5963     </p>
5964     <blockquote class="text">
5965     <p>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;
5966     </p>
5967     </blockquote><p>
5968    
5969     </p>
5970     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5971     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5972     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5973     &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
5974     specifies the MIDI message type. Currently, the following MIDI messages are supported:
5975     </p>
5976     <p>
5977     </p>
5978     <blockquote class="text">
5979     <p>"NOTE_ON" -
5980     </p>
5981     <blockquote class="text">
5982     <p>For turning on MIDI notes, where &lt;arg1&gt;
5983     specifies the key number and &lt;arg2&gt; the velocity
5984     as described in the MIDI specification.
5985     </p>
5986     </blockquote>
5987    
5988    
5989     <p>"NOTE_OFF" -
5990     </p>
5991     <blockquote class="text">
5992     <p>For turning a currently playing MIDI note off, where &lt;arg1&gt;
5993     specifies the key number and &lt;arg2&gt; the velocity
5994     as described in the MIDI specification.
5995     </p>
5996     </blockquote>
5997    
5998    
5999 schoenebeck 2023 <p>"CC" -
6000     </p>
6001     <blockquote class="text">
6002     <p>For changing a MIDI controller, where &lt;arg1&gt;
6003     specifies the controller number and &lt;arg2&gt; the
6004     new value of the controller as described in the Control
6005     Change section of the MIDI specification.
6006     </p>
6007     </blockquote>
6008    
6009    
6010 iliev 1773 </blockquote><p>
6011    
6012     </p>
6013     <p>CAUTION: This command is provided for implementations of virtual MIDI keyboards
6014     and no realtime guarantee whatsoever will be made!
6015     </p>
6016     <p>Possible Answers:
6017     </p>
6018     <p>
6019     </p>
6020     <blockquote class="text">
6021     <p>"OK" -
6022     </p>
6023     <blockquote class="text">
6024     <p>on success
6025     </p>
6026     </blockquote>
6027    
6028    
6029     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6030     </p>
6031     <blockquote class="text">
6032     <p>in case it failed, providing an appropriate error code and error message
6033     </p>
6034     </blockquote>
6035    
6036    
6037     </blockquote><p>
6038    
6039     </p>
6040     <p>Example:
6041     </p>
6042     <p>
6043     </p>
6044     <blockquote class="text">
6045     <p>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"
6046     </p>
6047     <p>S: "OK"
6048     </p>
6049     </blockquote><p>
6050    
6051     </p>
6052 schoenebeck 940 <a name="RESET CHANNEL"></a><br /><hr />
6053 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6054 schoenebeck 2139 <a name="rfc.section.6.4.37"></a><h3>6.4.37.&nbsp;
6055 schoenebeck 974 Resetting a sampler channel</h3>
6056 schoenebeck 708
6057 senoner 542 <p>The front-end can reset a particular sampler channel by sending the following command:
6058     </p>
6059 schoenebeck 708 <p>
6060     </p>
6061 senoner 542 <blockquote class="text">
6062     <p>RESET CHANNEL &lt;sampler-channel&gt;
6063     </p>
6064 schoenebeck 708 </blockquote><p>
6065 schoenebeck 940
6066 schoenebeck 708 </p>
6067 senoner 542 <p>
6068     Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
6069     This will cause the engine on that sampler channel, its voices and
6070     eventually disk streams and all control and status variables to be
6071     reset.
6072     </p>
6073     <p>Possible Answers:
6074     </p>
6075 schoenebeck 708 <p>
6076     </p>
6077 senoner 542 <blockquote class="text">
6078     <p>"OK" -
6079     </p>
6080     <blockquote class="text">
6081     <p>on success
6082     </p>
6083 schoenebeck 940 </blockquote>
6084    
6085 senoner 542
6086     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6087     </p>
6088     <blockquote class="text">
6089     <p>if channel was reset, but there are noteworthy issue(s)
6090     related, providing an appropriate warning code and warning
6091     message
6092     </p>
6093 schoenebeck 940 </blockquote>
6094    
6095 senoner 542
6096     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6097     </p>
6098     <blockquote class="text">
6099     <p>in case it failed, providing an appropriate error code and
6100     error message
6101     </p>
6102 schoenebeck 940 </blockquote>
6103    
6104 senoner 542
6105 schoenebeck 708 </blockquote><p>
6106 schoenebeck 940
6107 schoenebeck 708 </p>
6108 senoner 542 <p>Examples:
6109     </p>
6110 schoenebeck 708 <p>
6111     </p>
6112 senoner 542 <blockquote class="text">
6113     <p>
6114     </p>
6115 schoenebeck 708 </blockquote><p>
6116 schoenebeck 940
6117 schoenebeck 708 </p>
6118 schoenebeck 940 <a name="anchor12"></a><br /><hr />
6119 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6120     <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
6121     Controlling connection</h3>
6122 senoner 542
6123     <p>The following commands are used to control the connection to LinuxSampler.
6124     </p>
6125 schoenebeck 940 <a name="SUBSCRIBE"></a><br /><hr />
6126 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6127     <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
6128     Register front-end for receiving event messages</h3>
6129 senoner 542
6130     <p>The front-end can register itself to the LinuxSampler application to
6131     be informed about noteworthy events by sending this command:
6132     </p>
6133 schoenebeck 708 <p>
6134     </p>
6135 senoner 542 <blockquote class="text">
6136     <p>SUBSCRIBE &lt;event-id&gt;
6137     </p>
6138 schoenebeck 708 </blockquote><p>
6139 schoenebeck 940
6140 schoenebeck 708 </p>
6141 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective event that
6142     client wants to subscribe to.
6143     </p>
6144     <p>Possible Answers:
6145     </p>
6146 schoenebeck 708 <p>
6147     </p>
6148 senoner 542 <blockquote class="text">
6149     <p>"OK" -
6150     </p>
6151     <blockquote class="text">
6152     <p>on success
6153     </p>
6154 schoenebeck 940 </blockquote>
6155    
6156 senoner 542
6157     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6158     </p>
6159     <blockquote class="text">
6160     <p>if registration succeeded, but there are noteworthy
6161     issue(s) related, providing an appropriate warning code and
6162     warning message
6163     </p>
6164 schoenebeck 940 </blockquote>
6165    
6166 senoner 542
6167     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6168     </p>
6169     <blockquote class="text">
6170     <p>in case it failed, providing an appropriate error code and
6171     error message
6172     </p>
6173 schoenebeck 940 </blockquote>
6174    
6175 senoner 542
6176 schoenebeck 708 </blockquote><p>
6177 schoenebeck 940
6178 schoenebeck 708 </p>
6179 senoner 542 <p>Examples:
6180     </p>
6181 schoenebeck 708 <p>
6182     </p>
6183 senoner 542 <blockquote class="text">
6184     <p>
6185     </p>
6186 schoenebeck 708 </blockquote><p>
6187 schoenebeck 940
6188 schoenebeck 708 </p>
6189 schoenebeck 940 <a name="UNSUBSCRIBE"></a><br /><hr />
6190 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6191     <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
6192     Unregister front-end for not receiving event messages</h3>
6193 senoner 542
6194     <p>The front-end can unregister itself if it doesn't want to receive event
6195     messages anymore by sending the following command:
6196     </p>
6197 schoenebeck 708 <p>
6198     </p>
6199 senoner 542 <blockquote class="text">
6200     <p>UNSUBSCRIBE &lt;event-id&gt;
6201     </p>
6202 schoenebeck 708 </blockquote><p>
6203 schoenebeck 940
6204 schoenebeck 708 </p>
6205 senoner 542 <p>Where &lt;event-id&gt; will be replaced by the respective event that
6206     client doesn't want to receive anymore.
6207     </p>
6208     <p>Possible Answers:
6209     </p>
6210 schoenebeck 708 <p>
6211     </p>
6212 senoner 542 <blockquote class="text">
6213     <p>"OK" -
6214     </p>
6215     <blockquote class="text">
6216     <p>on success
6217     </p>
6218 schoenebeck 940 </blockquote>
6219    
6220 senoner 542
6221     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6222     </p>
6223     <blockquote class="text">
6224     <p>if unregistration succeeded, but there are noteworthy
6225     issue(s) related, providing an appropriate warning code and
6226     warning message
6227     </p>
6228 schoenebeck 940 </blockquote>
6229    
6230 senoner 542
6231     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6232     </p>
6233     <blockquote class="text">
6234     <p>in case it failed, providing an appropriate error code and
6235     error message
6236     </p>
6237 schoenebeck 940 </blockquote>
6238    
6239 senoner 542
6240 schoenebeck 708 </blockquote><p>
6241 schoenebeck 940
6242 schoenebeck 708 </p>
6243 senoner 542 <p>Examples:
6244     </p>
6245 schoenebeck 708 <p>
6246     </p>
6247 senoner 542 <blockquote class="text">
6248     <p>
6249     </p>
6250 schoenebeck 708 </blockquote><p>
6251 schoenebeck 940
6252 schoenebeck 708 </p>
6253 schoenebeck 940 <a name="SET ECHO"></a><br /><hr />
6254 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6255     <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
6256     Enable or disable echo of commands</h3>
6257 senoner 542
6258     <p>To enable or disable back sending of commands to the client the following command can be used:
6259     </p>
6260 schoenebeck 708 <p>
6261     </p>
6262 senoner 542 <blockquote class="text">
6263     <p>SET ECHO &lt;value&gt;
6264     </p>
6265 schoenebeck 708 </blockquote><p>
6266 schoenebeck 940
6267 schoenebeck 708 </p>
6268 senoner 542 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
6269     or "0" to disable echo mode. When echo mode is enabled, all
6270     commands send to LinuxSampler will be immediately send back and
6271     after this echo the actual response to the command will be
6272     returned. Echo mode will only be altered for the client connection
6273     that issued the "SET ECHO" command, not globally for all client
6274     connections.
6275     </p>
6276     <p>Possible Answers:
6277     </p>
6278 schoenebeck 708 <p>
6279     </p>
6280 senoner 542 <blockquote class="text">
6281     <p>"OK" -
6282     </p>
6283     <blockquote class="text">
6284     <p>usually
6285     </p>
6286 schoenebeck 940 </blockquote>
6287    
6288 senoner 542
6289     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6290     </p>
6291     <blockquote class="text">
6292     <p>on syntax error, e.g. non boolean value
6293     </p>
6294 schoenebeck 940 </blockquote>
6295    
6296 senoner 542
6297 schoenebeck 708 </blockquote><p>
6298 schoenebeck 940
6299 schoenebeck 708 </p>
6300 senoner 542 <p>Examples:
6301     </p>
6302 schoenebeck 708 <p>
6303     </p>
6304 senoner 542 <blockquote class="text">
6305     <p>
6306     </p>
6307 schoenebeck 708 </blockquote><p>
6308 schoenebeck 940
6309 schoenebeck 708 </p>
6310 schoenebeck 940 <a name="QUIT"></a><br /><hr />
6311 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6312     <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6313     Close client connection</h3>
6314 senoner 542
6315     <p>The client can close its network connection to LinuxSampler by sending the following command:
6316     </p>
6317 schoenebeck 708 <p>
6318     </p>
6319 senoner 542 <blockquote class="text">
6320     <p>QUIT
6321     </p>
6322 schoenebeck 708 </blockquote><p>
6323 schoenebeck 940
6324 schoenebeck 708 </p>
6325 senoner 542 <p>This is probably more interesting for manual telnet connections to
6326     LinuxSampler than really useful for a front-end implementation.
6327     </p>
6328 schoenebeck 940 <a name="anchor13"></a><br /><hr />
6329 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6330     <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6331     Global commands</h3>
6332 senoner 542
6333     <p>The following commands have global impact on the sampler.
6334     </p>
6335 schoenebeck 940 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6336 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6337     <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6338     Current number of active voices</h3>
6339 senoner 542
6340 schoenebeck 940 <p>The front-end can ask for the current number of active voices on
6341     the sampler by sending the following command:
6342     </p>
6343     <p>
6344     </p>
6345     <blockquote class="text">
6346     <p>GET TOTAL_VOICE_COUNT
6347     </p>
6348     </blockquote><p>
6349    
6350     </p>
6351     <p>Possible Answers:
6352     </p>
6353     <p>
6354     </p>
6355     <blockquote class="text">
6356     <p>LinuxSampler will answer by returning the number of all active
6357     voices on the sampler.
6358     </p>
6359     </blockquote><p>
6360    
6361     </p>
6362     <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6363 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6364     <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6365     Maximum amount of active voices</h3>
6366 schoenebeck 940
6367     <p>The front-end can ask for the maximum number of active voices
6368     by sending the following command:
6369     </p>
6370     <p>
6371     </p>
6372     <blockquote class="text">
6373     <p>GET TOTAL_VOICE_COUNT_MAX
6374     </p>
6375     </blockquote><p>
6376    
6377     </p>
6378     <p>Possible Answers:
6379     </p>
6380     <p>
6381     </p>
6382     <blockquote class="text">
6383     <p>LinuxSampler will answer by returning the maximum number
6384     of active voices.
6385     </p>
6386     </blockquote><p>
6387    
6388     </p>
6389 schoenebeck 1572 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6390     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6391     <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6392     Current number of active disk streams</h3>
6393    
6394     <p>The front-end can ask for the current number of active disk streams on
6395     the sampler by sending the following command:
6396     </p>
6397     <p>
6398     </p>
6399     <blockquote class="text">
6400     <p>GET TOTAL_STREAM_COUNT
6401     </p>
6402     </blockquote><p>
6403    
6404     </p>
6405     <p>Possible Answers:
6406     </p>
6407     <p>
6408     </p>
6409     <blockquote class="text">
6410     <p>LinuxSampler will answer by returning the number of all active
6411     disk streams on the sampler.
6412     </p>
6413     </blockquote><p>
6414    
6415     </p>
6416 schoenebeck 940 <a name="RESET"></a><br /><hr />
6417 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6418 schoenebeck 1572 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6419 schoenebeck 974 Reset sampler</h3>
6420 schoenebeck 940
6421 senoner 542 <p>The front-end can reset the whole sampler by sending the following command:
6422     </p>
6423 schoenebeck 708 <p>
6424     </p>
6425 senoner 542 <blockquote class="text">
6426     <p>RESET
6427     </p>
6428 schoenebeck 708 </blockquote><p>
6429 schoenebeck 940
6430 schoenebeck 708 </p>
6431 senoner 542 <p>Possible Answers:
6432     </p>
6433 schoenebeck 708 <p>
6434     </p>
6435 senoner 542 <blockquote class="text">
6436     <p>"OK" -
6437     </p>
6438     <blockquote class="text">
6439     <p>always
6440     </p>
6441 schoenebeck 940 </blockquote>
6442    
6443 senoner 542
6444 schoenebeck 708 </blockquote><p>
6445 schoenebeck 940
6446 schoenebeck 708 </p>
6447 senoner 542 <p>Examples:
6448     </p>
6449 schoenebeck 708 <p>
6450     </p>
6451 senoner 542 <blockquote class="text">
6452     <p>
6453     </p>
6454 schoenebeck 708 </blockquote><p>
6455 schoenebeck 940
6456 schoenebeck 708 </p>
6457 schoenebeck 940 <a name="GET SERVER INFO"></a><br /><hr />
6458 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6459 schoenebeck 1572 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6460 schoenebeck 974 General sampler informations</h3>
6461 schoenebeck 575
6462     <p>The client can ask for general informations about the LinuxSampler
6463     instance by sending the following command:
6464     </p>
6465 schoenebeck 708 <p>
6466     </p>
6467 schoenebeck 575 <blockquote class="text">
6468     <p>GET SERVER INFO
6469     </p>
6470 schoenebeck 708 </blockquote><p>
6471 schoenebeck 940
6472 schoenebeck 708 </p>
6473 schoenebeck 575 <p>Possible Answers:
6474     </p>
6475 schoenebeck 708 <p>
6476     </p>
6477 schoenebeck 575 <blockquote class="text">
6478     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6479     Each answer line begins with the information category name
6480     followed by a colon and then a space character &lt;SP&gt; and finally
6481     the info character string to that information category. At the
6482     moment the following categories are defined:
6483 schoenebeck 940
6484 schoenebeck 575 </p>
6485 schoenebeck 708 <p>
6486     </p>
6487 schoenebeck 575 <blockquote class="text">
6488     <p>DESCRIPTION -
6489     </p>
6490     <blockquote class="text">
6491     <p>arbitrary textual description about the sampler
6492 schoenebeck 1390 (note that the character string may contain
6493     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6494 schoenebeck 575 </p>
6495 schoenebeck 940 </blockquote>
6496    
6497 schoenebeck 575
6498     <p>VERSION -
6499     </p>
6500     <blockquote class="text">
6501     <p>version of the sampler
6502     </p>
6503 schoenebeck 940 </blockquote>
6504    
6505 schoenebeck 575
6506     <p>PROTOCOL_VERSION -
6507     </p>
6508     <blockquote class="text">
6509     <p>version of the LSCP specification the sampler
6510 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)
6511 schoenebeck 575 </p>
6512 schoenebeck 940 </blockquote>
6513    
6514 schoenebeck 575
6515 iliev 1162 <p>INSTRUMENTS_DB_SUPPORT -
6516     </p>
6517     <blockquote class="text">
6518     <p>either yes or no, specifies whether the
6519     sampler is build with instruments database support.
6520     </p>
6521 schoenebeck 940 </blockquote>
6522 iliev 1162
6523    
6524     </blockquote>
6525 schoenebeck 940
6526 schoenebeck 575
6527 schoenebeck 708 </blockquote><p>
6528 schoenebeck 940
6529 schoenebeck 708 </p>
6530 schoenebeck 575 <p>The mentioned fields above don't have to be in particular order.
6531     Other fields might be added in future.
6532     </p>
6533 schoenebeck 1006 <a name="GET VOLUME"></a><br /><hr />
6534     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6535 schoenebeck 1572 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6536 schoenebeck 1006 Getting global volume attenuation</h3>
6537    
6538     <p>The client can ask for the current global sampler-wide volume
6539     attenuation by sending the following command:
6540     </p>
6541     <p>
6542     </p>
6543     <blockquote class="text">
6544     <p>GET VOLUME
6545     </p>
6546     </blockquote><p>
6547    
6548     </p>
6549     <p>Possible Answers:
6550     </p>
6551     <p>
6552     </p>
6553     <blockquote class="text">
6554     <p>The sampler will always answer by returning the optional
6555     dotted floating point coefficient, reflecting the current
6556     global volume attenuation.
6557    
6558     </p>
6559     </blockquote><p>
6560    
6561     </p>
6562     <p>Note: it is up to the respective sampler engine whether to obey
6563     that global volume parameter or not, but in general all engines SHOULD
6564     use this parameter.
6565     </p>
6566     <a name="SET VOLUME"></a><br /><hr />
6567     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6568 schoenebeck 1572 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6569 schoenebeck 1006 Setting global volume attenuation</h3>
6570    
6571     <p>The client can alter the current global sampler-wide volume
6572     attenuation by sending the following command:
6573     </p>
6574     <p>
6575     </p>
6576     <blockquote class="text">
6577     <p>SET VOLUME &lt;volume&gt;
6578     </p>
6579     </blockquote><p>
6580    
6581     </p>
6582     <p>Where &lt;volume&gt; should be replaced by the optional dotted
6583     floating point value, reflecting the new global volume parameter.
6584     This value might usually be in the range between 0.0 and 1.0, that
6585     is for attenuating the overall volume.
6586     </p>
6587     <p>Possible Answers:
6588     </p>
6589     <p>
6590     </p>
6591     <blockquote class="text">
6592     <p>"OK" -
6593     </p>
6594     <blockquote class="text">
6595     <p>on success
6596     </p>
6597     </blockquote>
6598    
6599    
6600     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6601     </p>
6602     <blockquote class="text">
6603     <p>if the global volume was set, but there are noteworthy
6604     issue(s) related, providing an appropriate warning code and
6605     warning message
6606     </p>
6607     </blockquote>
6608    
6609    
6610     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6611     </p>
6612     <blockquote class="text">
6613     <p>in case it failed, providing an appropriate error code and error message
6614     </p>
6615     </blockquote>
6616    
6617    
6618     </blockquote><p>
6619    
6620     </p>
6621 schoenebeck 1801 <a name="GET VOICES"></a><br /><hr />
6622     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6623     <a name="rfc.section.6.6.8"></a><h3>6.6.8.&nbsp;
6624     Getting global voice limit</h3>
6625    
6626     <p>The client can ask for the current global sampler-wide limit
6627     for maximum voices by sending the following command:
6628     </p>
6629     <p>
6630     </p>
6631     <blockquote class="text">
6632     <p>GET VOICES
6633     </p>
6634     </blockquote><p>
6635    
6636     </p>
6637     <p>Possible Answers:
6638     </p>
6639     <p>
6640     </p>
6641     <blockquote class="text">
6642     <p>LinuxSampler will answer by returning the number for
6643     the current limit of maximum voices.
6644     </p>
6645     </blockquote><p>
6646    
6647     </p>
6648     <p>The voice limit setting defines how many voices should maximum
6649     be processed by the sampler at the same time. If the user
6650     triggers new notes which would exceed that voice limit, the
6651     sampler engine will react by stealing old voices for those
6652     newly triggered notes. Note that the amount of voices triggered
6653     by a new note can be larger than one and is dependent to the
6654     respective instrument and probably further criterias.
6655     </p>
6656     <a name="SET VOICES"></a><br /><hr />
6657     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6658     <a name="rfc.section.6.6.9"></a><h3>6.6.9.&nbsp;
6659     Setting global voice limit</h3>
6660    
6661     <p>The client can alter the current global sampler-wide limit
6662     for maximum voices by sending the following command:
6663     </p>
6664     <p>
6665     </p>
6666     <blockquote class="text">
6667     <p>SET VOICES &lt;max-voices&gt;
6668     </p>
6669     </blockquote><p>
6670    
6671     </p>
6672     <p>Where &lt;max-voices&gt; should be replaced by the integer
6673     value, reflecting the new global amount limit of maximum voices.
6674     This value has to be larger than 0.
6675     </p>
6676     <p>Possible Answers:
6677     </p>
6678     <p>
6679     </p>
6680     <blockquote class="text">
6681     <p>"OK" -
6682     </p>
6683     <blockquote class="text">
6684     <p>on success
6685     </p>
6686     </blockquote>
6687    
6688    
6689     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6690     </p>
6691     <blockquote class="text">
6692     <p>if the voice limit was set, but there are noteworthy
6693     issue(s) related, providing an appropriate warning code and
6694     warning message
6695     </p>
6696     </blockquote>
6697    
6698    
6699     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6700     </p>
6701     <blockquote class="text">
6702     <p>in case it failed, providing an appropriate error code and error message
6703     </p>
6704     </blockquote>
6705    
6706    
6707     </blockquote><p>
6708    
6709     </p>
6710     <p>Note: the given value will be passed to all sampler engine instances.
6711     The total amount of maximum voices on the running system might thus
6712     be as big as the given value multiplied by the current amount of engine
6713     instances.
6714     </p>
6715     <p>Caution: when adjusting the voice limit, you SHOULD also
6716     adjust the disk stream limit respectively and vice versa.
6717     </p>
6718     <a name="GET STREAMS"></a><br /><hr />
6719     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6720     <a name="rfc.section.6.6.10"></a><h3>6.6.10.&nbsp;
6721     Getting global disk stream limit</h3>
6722    
6723     <p>The client can ask for the current global sampler-wide limit
6724     for maximum disk streams by sending the following command:
6725     </p>
6726     <p>
6727     </p>
6728     <blockquote class="text">
6729     <p>GET STREAMS
6730     </p>
6731     </blockquote><p>
6732    
6733     </p>
6734     <p>Possible Answers:
6735     </p>
6736     <p>
6737     </p>
6738     <blockquote class="text">
6739     <p>LinuxSampler will answer by returning the number for
6740     the current limit of maximum disk streams.
6741     </p>
6742     </blockquote><p>
6743    
6744     </p>
6745     <p>The disk stream limit setting defines how many disk streams should
6746     maximum be processed by a sampler engine at the same time. The
6747     higher this value, the more memory (RAM) will be occupied, since
6748     every disk streams allocates a certain buffer size for being able
6749     to perform its streaming operations.
6750     </p>
6751     <a name="SET STREAMS"></a><br /><hr />
6752     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6753     <a name="rfc.section.6.6.11"></a><h3>6.6.11.&nbsp;
6754     Setting global disk stream limit</h3>
6755    
6756     <p>The client can alter the current global sampler-wide limit
6757     for maximum disk streams by sending the following command:
6758     </p>
6759     <p>
6760     </p>
6761     <blockquote class="text">
6762     <p>SET STREAMS &lt;max-streams&gt;
6763     </p>
6764     </blockquote><p>
6765    
6766     </p>
6767     <p>Where &lt;max-streams&gt; should be replaced by the integer
6768     value, reflecting the new global amount limit of maximum disk streams.
6769     This value has to be positive.
6770     </p>
6771     <p>Possible Answers:
6772     </p>
6773     <p>
6774     </p>
6775     <blockquote class="text">
6776     <p>"OK" -
6777     </p>
6778     <blockquote class="text">
6779     <p>on success
6780     </p>
6781     </blockquote>
6782    
6783    
6784     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6785     </p>
6786     <blockquote class="text">
6787     <p>if the disk stream limit was set, but there are noteworthy
6788     issue(s) related, providing an appropriate warning code and
6789     warning message
6790     </p>
6791     </blockquote>
6792    
6793    
6794     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6795     </p>
6796     <blockquote class="text">
6797     <p>in case it failed, providing an appropriate error code and error message
6798     </p>
6799     </blockquote>
6800    
6801    
6802     </blockquote><p>
6803    
6804     </p>
6805     <p>Note: the given value will be passed to all sampler engine instances.
6806     The total amount of maximum disk streams on the running system might
6807     thus be as big as the given value multiplied by the current amount of
6808     engine instances.
6809     </p>
6810     <p>Caution: when adjusting the disk stream limit, you SHOULD also
6811     adjust the voice limit respectively and vice versa.
6812     </p>
6813 schoenebeck 974 <a name="MIDI Instrument Mapping"></a><br /><hr />
6814     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6815     <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6816     MIDI Instrument Mapping</h3>
6817 schoenebeck 945
6818     <p>The MIDI protocol provides a way to switch between instruments
6819     by sending so called MIDI bank select and MIDI program change
6820     messages which are essentially just numbers. The following commands
6821     allow to actually map arbitrary MIDI bank select / program change
6822     numbers with real instruments.
6823     </p>
6824 schoenebeck 974 <p>The sampler allows to manage an arbitrary amount of MIDI
6825     instrument maps which define which instrument to load on
6826     which MIDI program change message.
6827 schoenebeck 945 </p>
6828 schoenebeck 974 <p>By default, that is when the sampler is launched, there is no
6829     map, thus the sampler will simply ignore all program change
6830     messages. The front-end has to explicitly create at least one
6831     map, add entries to the map and tell the respective sampler
6832     channel(s) which MIDI instrument map to use, so the sampler
6833     knows how to react on a given program change message on the
6834     respective sampler channel, that is by switching to the
6835     respectively defined engine type and loading the respective
6836     instrument. See command
6837     <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>
6838     for how to assign a MIDI instrument map to a sampler channel.
6839     </p>
6840 schoenebeck 945 <p>Also note per MIDI specification a bank select message does not
6841     cause to switch to another instrument. Instead when receiving a
6842     bank select message the bank value will be stored and a subsequent
6843     program change message (which may occur at any time) will finally
6844     cause the sampler to switch to the respective instrument as
6845     reflected by the current MIDI instrument map.
6846     </p>
6847 schoenebeck 1390 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6848 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6849     <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6850     Create a new MIDI instrument map</h3>
6851    
6852     <p>The front-end can add a new MIDI instrument map by sending
6853     the following command:
6854     </p>
6855     <p>
6856     </p>
6857     <blockquote class="text">
6858     <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6859     </p>
6860     </blockquote><p>
6861    
6862     </p>
6863     <p>Where &lt;name&gt; is an optional argument allowing to
6864     assign a custom name to the new map. MIDI instrument Map
6865 schoenebeck 1390 names do not have to be unique, but MUST be encapsulated
6866     into apostrophes and support escape sequences as described
6867     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>".
6868    
6869 schoenebeck 974 </p>
6870     <p>Possible Answers:
6871     </p>
6872     <p>
6873     </p>
6874     <blockquote class="text">
6875     <p>"OK[&lt;map&gt;]" -
6876     </p>
6877     <blockquote class="text">
6878     <p>in case a new MIDI instrument map could
6879     be added, where &lt;map&gt; reflects the
6880     unique ID of the newly created MIDI
6881     instrument map
6882     </p>
6883     </blockquote>
6884    
6885    
6886     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6887     </p>
6888     <blockquote class="text">
6889     <p>when a new map could not be created, which
6890     might never occur in practice
6891     </p>
6892     </blockquote>
6893    
6894    
6895     </blockquote><p>
6896    
6897     </p>
6898     <p>Examples:
6899     </p>
6900     <p>
6901     </p>
6902     <blockquote class="text">
6903     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6904     </p>
6905     <p>S: "OK[0]"
6906     </p>
6907     </blockquote><p>
6908    
6909     </p>
6910     <p>
6911     </p>
6912     <blockquote class="text">
6913     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6914     </p>
6915     <p>S: "OK[1]"
6916     </p>
6917     </blockquote><p>
6918    
6919     </p>
6920     <p>
6921     </p>
6922     <blockquote class="text">
6923     <p>C: "ADD MIDI_INSTRUMENT_MAP"
6924     </p>
6925     <p>S: "OK[5]"
6926     </p>
6927     </blockquote><p>
6928    
6929     </p>
6930     <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6931     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6932     <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6933     Delete one particular or all MIDI instrument maps</h3>
6934    
6935     <p>The front-end can delete a particular MIDI instrument map
6936     by sending the following command:
6937     </p>
6938     <p>
6939     </p>
6940     <blockquote class="text">
6941     <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6942     </p>
6943     </blockquote><p>
6944    
6945     </p>
6946     <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6947     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>
6948     command.
6949     </p>
6950     <p>The front-end can delete all MIDI instrument maps by
6951     sending the following command:
6952     </p>
6953     <p>
6954     </p>
6955     <blockquote class="text">
6956     <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6957     </p>
6958     </blockquote><p>
6959    
6960     </p>
6961     <p>Possible Answers:
6962     </p>
6963     <p>
6964     </p>
6965     <blockquote class="text">
6966     <p>"OK" -
6967     </p>
6968     <blockquote class="text">
6969     <p>in case the map(s) could be deleted
6970     </p>
6971     </blockquote>
6972    
6973    
6974     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6975     </p>
6976     <blockquote class="text">
6977     <p>when the given map does not exist
6978     </p>
6979     </blockquote>
6980    
6981    
6982     </blockquote><p>
6983    
6984     </p>
6985     <p>Examples:
6986     </p>
6987     <p>
6988     </p>
6989     <blockquote class="text">
6990     <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6991     </p>
6992     <p>S: "OK"
6993     </p>
6994     </blockquote><p>
6995    
6996     </p>
6997     <p>
6998     </p>
6999     <blockquote class="text">
7000     <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
7001     </p>
7002     <p>S: "OK"
7003     </p>
7004     </blockquote><p>
7005    
7006     </p>
7007     <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7008     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7009     <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
7010     Get amount of existing MIDI instrument maps</h3>
7011    
7012     <p>The front-end can retrieve the current amount of MIDI
7013     instrument maps by sending the following command:
7014     </p>
7015     <p>
7016     </p>
7017     <blockquote class="text">
7018     <p>GET MIDI_INSTRUMENT_MAPS
7019     </p>
7020     </blockquote><p>
7021    
7022     </p>
7023     <p>Possible Answers:
7024     </p>
7025     <p>
7026     </p>
7027     <blockquote class="text">
7028     <p>The sampler will answer by returning the current
7029     number of MIDI instrument maps.
7030     </p>
7031     </blockquote><p>
7032    
7033     </p>
7034     <p>Example:
7035     </p>
7036     <p>
7037     </p>
7038     <blockquote class="text">
7039     <p>C: "GET MIDI_INSTRUMENT_MAPS"
7040     </p>
7041     <p>S: "2"
7042     </p>
7043     </blockquote><p>
7044    
7045     </p>
7046     <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
7047     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7048     <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
7049     Getting all created MIDI instrument maps</h3>
7050    
7051     <p>The number of MIDI instrument maps can change on runtime. To get the
7052     current list of MIDI instrument maps, the front-end can send the
7053     following command:
7054     </p>
7055     <p>
7056     </p>
7057     <blockquote class="text">
7058     <p>LIST MIDI_INSTRUMENT_MAPS
7059     </p>
7060     </blockquote><p>
7061    
7062     </p>
7063     <p>Possible Answers:
7064     </p>
7065     <p>
7066     </p>
7067     <blockquote class="text">
7068     <p>The sampler will answer by returning a comma separated list
7069     with all MIDI instrument maps' numerical IDs.
7070     </p>
7071     </blockquote><p>
7072    
7073     </p>
7074     <p>Example:
7075     </p>
7076     <p>
7077     </p>
7078     <blockquote class="text">
7079     <p>C: "LIST MIDI_INSTRUMENT_MAPS"
7080     </p>
7081     <p>S: "0,1,5,12"
7082     </p>
7083     </blockquote><p>
7084    
7085     </p>
7086     <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
7087     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7088     <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
7089     Getting MIDI instrument map information</h3>
7090    
7091     <p>The front-end can ask for the current settings of a MIDI
7092     instrument map by sending the following command:
7093     </p>
7094     <p>
7095     </p>
7096     <blockquote class="text">
7097     <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
7098     </p>
7099     </blockquote><p>
7100    
7101     </p>
7102     <p>Where &lt;map&gt; is the numerical ID of the map the
7103     front-end is interested in as returned by the
7104     <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>
7105     command.
7106     </p>
7107     <p>Possible Answers:
7108     </p>
7109     <p>
7110     </p>
7111     <blockquote class="text">
7112     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7113     Each answer line begins with the settings category name
7114     followed by a colon and then a space character &lt;SP&gt; and finally
7115     the info character string to that setting category. At the
7116     moment the following categories are defined:
7117     </p>
7118     <p>
7119     </p>
7120     <blockquote class="text">
7121     <p>NAME -
7122     </p>
7123     <blockquote class="text">
7124     <p>custom name of the given map,
7125     which does not have to be unique
7126 schoenebeck 1400 (note that this character string may contain
7127     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7128 schoenebeck 974 </p>
7129     </blockquote>
7130    
7131    
7132 iliev 1137 <p>DEFAULT -
7133     </p>
7134     <blockquote class="text">
7135     <p>either true or false,
7136     defines whether this map is the default map
7137     </p>
7138 schoenebeck 974 </blockquote>
7139 iliev 1137
7140    
7141     </blockquote>
7142 schoenebeck 974
7143    
7144     </blockquote><p>
7145    
7146     </p>
7147     <p>The mentioned fields above don't have to be in particular order.
7148     </p>
7149     <p>Example:
7150     </p>
7151     <p>
7152     </p>
7153     <blockquote class="text">
7154     <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
7155     </p>
7156     <p>S: "NAME: Standard Map"
7157     </p>
7158 iliev 1137 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
7159     </p>
7160 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"."
7161     </p>
7162     </blockquote><p>
7163    
7164     </p>
7165     <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
7166     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7167     <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
7168     Renaming a MIDI instrument map</h3>
7169    
7170     <p>The front-end can alter the custom name of a MIDI
7171     instrument map by sending the following command:
7172     </p>
7173     <p>
7174     </p>
7175     <blockquote class="text">
7176     <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
7177     </p>
7178     </blockquote><p>
7179    
7180     </p>
7181     <p>Where &lt;map&gt; is the numerical ID of the map and
7182     &lt;name&gt; the new custom name of the map, which does not
7183 schoenebeck 1390 have to be unique (name MUST be encapsulated into apostrophes
7184     and supports escape sequences as described in chapter
7185     "<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>").
7186    
7187 schoenebeck 974 </p>
7188     <p>Possible Answers:
7189     </p>
7190     <p>
7191     </p>
7192     <blockquote class="text">
7193     <p>"OK" -
7194     </p>
7195     <blockquote class="text">
7196     <p>on success
7197     </p>
7198     </blockquote>
7199    
7200    
7201     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7202     </p>
7203     <blockquote class="text">
7204     <p>in case the given map does not exist
7205     </p>
7206     </blockquote>
7207    
7208    
7209     </blockquote><p>
7210    
7211     </p>
7212     <p>Example:
7213     </p>
7214     <p>
7215     </p>
7216     <blockquote class="text">
7217     <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
7218     </p>
7219     <p>S: "OK"
7220     </p>
7221     </blockquote><p>
7222    
7223     </p>
7224 schoenebeck 945 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
7225 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7226     <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
7227     Create or replace a MIDI instrument map entry</h3>
7228 schoenebeck 945
7229     <p>The front-end can create a new or replace an existing entry
7230 schoenebeck 974 in a sampler's MIDI instrument map by sending the following
7231 schoenebeck 945 command:
7232     </p>
7233     <p>
7234     </p>
7235     <blockquote class="text">
7236 schoenebeck 1048 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
7237 schoenebeck 974 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
7238 schoenebeck 945 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
7239     [&lt;instr_load_mode&gt;] [&lt;name&gt;]
7240     </p>
7241     </blockquote><p>
7242    
7243     </p>
7244 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
7245     &lt;midi_bank&gt; is an integer value between
7246     0..16383 reflecting the MIDI bank select index,
7247     &lt;midi_prog&gt; an
7248 schoenebeck 945 integer value between 0..127 reflecting the MIDI program change
7249     index, &lt;engine_name&gt; a sampler engine name as returned by
7250 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>
7251 schoenebeck 945 command (not encapsulated into apostrophes), &lt;filename&gt; the name
7252 schoenebeck 1251 of the instrument's file to be deployed (encapsulated into apostrophes,
7253     supporting escape sequences as described in chapter
7254     "<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>"),
7255 schoenebeck 974 &lt;instrument_index&gt; the index (integer value) of the instrument
7256 schoenebeck 945 within the given file, &lt;volume_value&gt; reflects the master
7257     volume of the instrument as optionally dotted number (where a
7258 schoenebeck 1028 value &lt; 1.0 means attenuation and a value > 1.0 means
7259 schoenebeck 945 amplification). This parameter easily allows to adjust the
7260     volume of all intruments within a custom instrument map
7261     without having to adjust their instrument files. The
7262     OPTIONAL &lt;instr_load_mode&gt; argument defines the life
7263     time of the instrument, that is when the instrument should
7264     be loaded, when freed and has exactly the following
7265     possibilities:
7266     </p>
7267     <p>
7268     </p>
7269     <blockquote class="text">
7270     <p>"ON_DEMAND" -
7271     </p>
7272     <blockquote class="text">
7273     <p>The instrument will be loaded when needed,
7274     that is when demanded by at least one sampler
7275     channel. It will immediately be freed from memory
7276     when not needed by any sampler channel anymore.
7277     </p>
7278     </blockquote>
7279    
7280    
7281     <p>"ON_DEMAND_HOLD" -
7282     </p>
7283     <blockquote class="text">
7284     <p>The instrument will be loaded when needed,
7285     that is when demanded by at least one sampler
7286     channel. It will be kept in memory even when
7287     not needed by any sampler channel anymore.
7288     Instruments with this mode are only freed
7289     when the sampler is reset or all mapping
7290     entries with this mode (and respective
7291     instrument) are explicitly changed to
7292     "ON_DEMAND" and no sampler channel is using
7293     the instrument anymore.
7294     </p>
7295     </blockquote>
7296    
7297    
7298     <p>"PERSISTENT" -
7299     </p>
7300     <blockquote class="text">
7301     <p>The instrument will immediately be loaded
7302 schoenebeck 1048 into memory when this mapping
7303 schoenebeck 945 command is sent and the instrument is kept all
7304     the time. Instruments with this mode are
7305     only freed when the sampler is reset or all
7306     mapping entries with this mode (and
7307     respective instrument) are explicitly
7308     changed to "ON_DEMAND" and no sampler
7309     channel is using the instrument anymore.
7310     </p>
7311     </blockquote>
7312    
7313    
7314     <p>not supplied -
7315     </p>
7316     <blockquote class="text">
7317     <p>In case there is no &lt;instr_load_mode&gt;
7318     argument given, it will be up to the
7319     InstrumentManager to decide which mode to use.
7320     Usually it will use "ON_DEMAND" if an entry
7321     for the given instrument does not exist in
7322     the InstrumentManager's list yet, otherwise
7323     if an entry already exists, it will simply
7324     stick with the mode currently reflected by
7325     the already existing entry, that is it will
7326     not change the mode.
7327     </p>
7328     </blockquote>
7329    
7330    
7331     </blockquote><p>
7332    
7333     </p>
7334     <p>
7335     The &lt;instr_load_mode&gt; argument thus allows to define an
7336     appropriate strategy (low memory consumption vs. fast
7337     instrument switching) for each instrument individually. Note, the
7338     following restrictions apply to this argument: "ON_DEMAND_HOLD" and
7339     "PERSISTENT" have to be supported by the respective sampler engine
7340     (which is technically the case when the engine provides an
7341     InstrumentManager for its format). If this is not the case the
7342     argument will automatically fall back to the default value
7343     "ON_DEMAND". Also the load mode of one instrument may
7344     automatically change the laod mode of other instrument(s), i.e.
7345     because the instruments are part of the same file and the
7346     engine does not allow a way to manage load modes for them
7347     individually. Due to this, in case the frontend shows the
7348     load modes of entries, the frontend should retrieve the actual
7349     mode by i.e. sending
7350 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>
7351 schoenebeck 1390 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
7352     (encapsulated into apostrophes, supporting escape sequences as described in chapter
7353     "<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
7354     mapping entry, useful for frontends for displaying an appropriate name for
7355 schoenebeck 945 mapped instruments (using
7356 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>).
7357 schoenebeck 945
7358     </p>
7359     <p>
7360 schoenebeck 1048 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
7361     completely established in the sampler. The OPTIONAL "NON_MODAL" argument
7362     however causes the respective "MAP MIDI_INSTRUMENT" command to return
7363     immediately, that is to let the sampler establish the mapping in the
7364     background. So this argument might be especially useful for mappings with
7365     a "PERSISTENT" type, because these have to load the respective instruments
7366     immediately and might thus block for a very long time. It is recommended
7367     however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
7368     because it has the following drawbacks: as "NON_MODAL" instructions return
7369     immediately, they may not necessarily return an error i.e. when the given
7370     instrument file turns out to be corrupt, beside that subsequent commands
7371     in a LSCP instruction sequence might fail, because mandatory mappings are
7372     not yet completed.
7373 schoenebeck 945
7374     </p>
7375     <p>Possible Answers:
7376     </p>
7377     <p>
7378     </p>
7379     <blockquote class="text">
7380     <p>"OK" -
7381     </p>
7382     <blockquote class="text">
7383     <p>usually
7384     </p>
7385     </blockquote>
7386    
7387    
7388     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7389     </p>
7390     <blockquote class="text">
7391 schoenebeck 974 <p>when the given map or engine does not exist or a value
7392 schoenebeck 945 is out of range
7393     </p>
7394     </blockquote>
7395    
7396    
7397     </blockquote><p>
7398    
7399     </p>
7400     <p>Examples:
7401     </p>
7402     <p>
7403     </p>
7404     <blockquote class="text">
7405 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
7406 schoenebeck 945 </p>
7407     <p>S: "OK"
7408     </p>
7409     </blockquote><p>
7410    
7411     </p>
7412     <p>
7413     </p>
7414     <blockquote class="text">
7415 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
7416 schoenebeck 945 </p>
7417     <p>S: "OK"
7418     </p>
7419     </blockquote><p>
7420    
7421     </p>
7422     <p>
7423     </p>
7424     <blockquote class="text">
7425     <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
7426     </p>
7427     <p>S: "OK"
7428     </p>
7429 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
7430 schoenebeck 945 </p>
7431     <p>S: "OK"
7432     </p>
7433     </blockquote><p>
7434    
7435     </p>
7436     <p>
7437     </p>
7438     <blockquote class="text">
7439 schoenebeck 1048 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
7440 schoenebeck 945 </p>
7441     <p>S: "OK"
7442     </p>
7443     </blockquote><p>
7444    
7445     </p>
7446     <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
7447 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7448     <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
7449     Getting ammount of MIDI instrument map entries</h3>
7450 schoenebeck 945
7451 schoenebeck 974 <p>The front-end can query the amount of currently existing
7452     entries in a MIDI instrument map by sending the following
7453 schoenebeck 945 command:
7454     </p>
7455     <p>
7456     </p>
7457     <blockquote class="text">
7458 schoenebeck 974 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
7459 schoenebeck 945 </p>
7460     </blockquote><p>
7461    
7462     </p>
7463 schoenebeck 974 <p>The front-end can query the amount of currently existing
7464     entries in all MIDI instrument maps by sending the following
7465     command:
7466     </p>
7467     <p>
7468     </p>
7469     <blockquote class="text">
7470     <p>GET MIDI_INSTRUMENTS ALL
7471     </p>
7472     </blockquote><p>
7473    
7474     </p>
7475 schoenebeck 945 <p>Possible Answers:
7476     </p>
7477     <p>
7478     </p>
7479     <blockquote class="text">
7480 schoenebeck 974 <p>The sampler will answer by sending the current number of
7481     entries in the MIDI instrument map(s).
7482 schoenebeck 945 </p>
7483     </blockquote><p>
7484    
7485     </p>
7486     <p>Example:
7487     </p>
7488     <p>
7489     </p>
7490     <blockquote class="text">
7491 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENTS 0"
7492 schoenebeck 945 </p>
7493 schoenebeck 974 <p>S: "234"
7494 schoenebeck 945 </p>
7495     </blockquote><p>
7496    
7497     </p>
7498 schoenebeck 974 <p>
7499     </p>
7500     <blockquote class="text">
7501     <p>C: "GET MIDI_INSTRUMENTS ALL"
7502     </p>
7503     <p>S: "954"
7504     </p>
7505     </blockquote><p>
7506    
7507     </p>
7508 schoenebeck 945 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7509 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7510     <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7511     Getting indeces of all entries of a MIDI instrument map</h3>
7512 schoenebeck 945
7513 schoenebeck 974 <p>The front-end can query a list of all currently existing
7514     entries in a certain MIDI instrument map by sending the following
7515     command:
7516 schoenebeck 945 </p>
7517     <p>
7518     </p>
7519     <blockquote class="text">
7520 schoenebeck 974 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7521 schoenebeck 945 </p>
7522     </blockquote><p>
7523    
7524     </p>
7525 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7526     </p>
7527     <p>The front-end can query a list of all currently existing
7528     entries of all MIDI instrument maps by sending the following
7529     command:
7530     </p>
7531     <p>
7532     </p>
7533     <blockquote class="text">
7534     <p>LIST MIDI_INSTRUMENTS ALL
7535     </p>
7536     </blockquote><p>
7537    
7538     </p>
7539 schoenebeck 945 <p>Possible Answers:
7540     </p>
7541     <p>
7542     </p>
7543     <blockquote class="text">
7544 schoenebeck 974 <p>The sampler will answer by sending a comma separated
7545     list of map ID - MIDI bank - MIDI program triples, where
7546     each triple is encapsulated into curly braces. The
7547     list is returned in one single line. Each triple
7548     just reflects the key of the respective map entry,
7549     thus subsequent
7550     <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>
7551 schoenebeck 945 command(s) are necessary to retrieve detailed informations
7552     about each entry.
7553     </p>
7554     </blockquote><p>
7555    
7556     </p>
7557     <p>Example:
7558     </p>
7559     <p>
7560     </p>
7561     <blockquote class="text">
7562 schoenebeck 974 <p>C: "LIST MIDI_INSTRUMENTS 0"
7563 schoenebeck 945 </p>
7564 schoenebeck 974 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7565 schoenebeck 945 </p>
7566     </blockquote><p>
7567    
7568     </p>
7569     <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7570 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7571     <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7572     Remove an entry from the MIDI instrument map</h3>
7573 schoenebeck 945
7574 schoenebeck 974 <p>The front-end can delete an entry from a MIDI instrument
7575 schoenebeck 945 map by sending the following command:
7576     </p>
7577     <p>
7578     </p>
7579     <blockquote class="text">
7580 schoenebeck 974 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7581 schoenebeck 945 </p>
7582     </blockquote><p>
7583    
7584     </p>
7585     <p>
7586 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7587     &lt;midi_bank&gt; is an integer value between 0..16383
7588     reflecting the MIDI bank value and
7589     &lt;midi_prog&gt; an integer value between
7590     0..127 reflecting the MIDI program value of the map's entrie's key
7591 schoenebeck 945 index triple.
7592    
7593     </p>
7594     <p>Possible Answers:
7595     </p>
7596     <p>
7597     </p>
7598     <blockquote class="text">
7599     <p>"OK" -
7600     </p>
7601     <blockquote class="text">
7602     <p>usually
7603     </p>
7604     </blockquote>
7605    
7606    
7607     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7608     </p>
7609     <blockquote class="text">
7610     <p>when index out of bounds
7611     </p>
7612     </blockquote>
7613    
7614    
7615     </blockquote><p>
7616    
7617     </p>
7618     <p>Example:
7619     </p>
7620     <p>
7621     </p>
7622     <blockquote class="text">
7623 schoenebeck 974 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7624 schoenebeck 945 </p>
7625     <p>S: "OK"
7626     </p>
7627     </blockquote><p>
7628    
7629     </p>
7630     <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7631 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7632     <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7633     Get current settings of MIDI instrument map entry</h3>
7634 schoenebeck 945
7635     <p>The front-end can retrieve the current settings of a certain
7636     instrument map entry by sending the following command:
7637     </p>
7638     <p>
7639     </p>
7640     <blockquote class="text">
7641 schoenebeck 974 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7642 schoenebeck 945 </p>
7643     </blockquote><p>
7644    
7645     </p>
7646     <p>
7647 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7648     &lt;midi_bank&gt; is an integer value between 0..16383
7649     reflecting the MIDI bank value, &lt;midi_bank&gt;
7650     and &lt;midi_prog&gt; an integer value between
7651     0..127 reflecting the MIDI program value of the map's entrie's key
7652 schoenebeck 945 index triple.
7653    
7654     </p>
7655     <p>Possible Answers:
7656     </p>
7657     <p>
7658     </p>
7659     <blockquote class="text">
7660     <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7661     separated list. Each answer line begins with the
7662     information category name followed by a colon and then
7663     a space character &lt;SP&gt; and finally the info
7664     character string to that info category. At the moment
7665     the following categories are defined:
7666     </p>
7667     <p>"NAME" -
7668     </p>
7669     <blockquote class="text">
7670     <p>Name for this MIDI instrument map entry (if defined).
7671     This name shall be used by frontends for displaying a
7672     name for this mapped instrument. It can be set and
7673     changed with the
7674 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>
7675 schoenebeck 945 command and does not have to be unique.
7676 schoenebeck 1400 (note that this character string may contain
7677     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7678 schoenebeck 945 </p>
7679     </blockquote>
7680    
7681    
7682     <p>"ENGINE_NAME" -
7683     </p>
7684     <blockquote class="text">
7685     <p>Name of the engine to be deployed for this
7686     instrument.
7687     </p>
7688     </blockquote>
7689    
7690    
7691     <p>"INSTRUMENT_FILE" -
7692     </p>
7693     <blockquote class="text">
7694 schoenebeck 1400 <p>File name of the instrument
7695     (note that this path may contain
7696     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7697 schoenebeck 945 </p>
7698     </blockquote>
7699    
7700    
7701     <p>"INSTRUMENT_NR" -
7702     </p>
7703     <blockquote class="text">
7704     <p>Index of the instrument within the file.
7705     </p>
7706     </blockquote>
7707    
7708    
7709     <p>"INSTRUMENT_NAME" -
7710     </p>
7711     <blockquote class="text">
7712     <p>Name of the loaded instrument as reflected by its file.
7713     In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7714 schoenebeck 1400 cannot be changed (note that this character string may contain
7715     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7716 schoenebeck 945 </p>
7717     </blockquote>
7718    
7719    
7720     <p>"LOAD_MODE" -
7721     </p>
7722     <blockquote class="text">
7723     <p>Life time of instrument
7724 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).
7725 schoenebeck 945 </p>
7726     </blockquote>
7727    
7728    
7729     <p>"VOLUME" -
7730     </p>
7731     <blockquote class="text">
7732     <p>master volume of the instrument as optionally
7733 schoenebeck 1028 dotted number (where a value &lt; 1.0 means attenuation
7734 schoenebeck 945 and a value > 1.0 means amplification)
7735     </p>
7736     </blockquote>
7737    
7738    
7739     <p>The mentioned fields above don't have to be in particular order.
7740     </p>
7741     </blockquote><p>
7742    
7743     </p>
7744     <p>Example:
7745     </p>
7746     <p>
7747     </p>
7748     <blockquote class="text">
7749 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7750 schoenebeck 945 </p>
7751     <p>S: "NAME: Drums for Foo Song"
7752     </p>
7753     <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7754     </p>
7755     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7756     </p>
7757     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7758     </p>
7759     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7760     </p>
7761     <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7762     </p>
7763     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7764     </p>
7765     <p>&nbsp;&nbsp;&nbsp;"."
7766     </p>
7767     </blockquote><p>
7768    
7769     </p>
7770     <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7771 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7772     <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7773     Clear MIDI instrument map</h3>
7774 schoenebeck 945
7775 schoenebeck 974 <p>The front-end can clear a whole MIDI instrument map, that
7776     is delete all its entries by sending the following command:
7777 schoenebeck 945 </p>
7778     <p>
7779     </p>
7780     <blockquote class="text">
7781 schoenebeck 974 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7782 schoenebeck 945 </p>
7783     </blockquote><p>
7784    
7785     </p>
7786 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7787     </p>
7788     <p>The front-end can clear all MIDI instrument maps, that
7789     is delete all entries of all maps by sending the following
7790     command:
7791     </p>
7792     <p>
7793     </p>
7794     <blockquote class="text">
7795     <p>CLEAR MIDI_INSTRUMENTS ALL
7796     </p>
7797     </blockquote><p>
7798    
7799     </p>
7800     <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7801     maps, only their entries, thus the map's settings like
7802     custom name will be preservevd.
7803     </p>
7804 schoenebeck 945 <p>Possible Answers:
7805     </p>
7806     <p>
7807     </p>
7808     <blockquote class="text">
7809     <p>"OK" -
7810     </p>
7811     <blockquote class="text">
7812     <p>always
7813     </p>
7814     </blockquote>
7815    
7816    
7817     </blockquote><p>
7818    
7819     </p>
7820 schoenebeck 974 <p>Examples:
7821 schoenebeck 945 </p>
7822     <p>
7823     </p>
7824     <blockquote class="text">
7825 schoenebeck 974 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7826 schoenebeck 945 </p>
7827     <p>S: "OK"
7828     </p>
7829     </blockquote><p>
7830    
7831     </p>
7832 schoenebeck 974 <p>
7833     </p>
7834     <blockquote class="text">
7835     <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7836     </p>
7837     <p>S: "OK"
7838     </p>
7839     </blockquote><p>
7840    
7841     </p>
7842 iliev 1162 <a name="Managing Instruments Database"></a><br /><hr />
7843     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7844     <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7845     Managing Instruments Database</h3>
7846    
7847     <p>The following commands describe how to use and manage
7848     the instruments database.
7849     </p>
7850 schoenebeck 1363 <p>Notice:
7851     </p>
7852     <p>
7853     </p>
7854     <blockquote class="text">
7855     <p>All command arguments representing a path or
7856     instrument/directory name support escape sequences as described in chapter
7857     "<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>".
7858    
7859     </p>
7860     <p>All occurrences of a forward slash in instrument and directory
7861     names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7862    
7863     </p>
7864     </blockquote><p>
7865    
7866     </p>
7867 iliev 1162 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7868     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7869     <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7870     Creating a new instrument directory</h3>
7871    
7872     <p>The front-end can add a new instrument directory to the
7873     instruments database by sending the following command:
7874     </p>
7875     <p>
7876     </p>
7877     <blockquote class="text">
7878     <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7879     </p>
7880     </blockquote><p>
7881    
7882     </p>
7883     <p>Where &lt;dir&gt; is the absolute path name of the directory
7884     to be created (encapsulated into apostrophes).
7885     </p>
7886     <p>Possible Answers:
7887     </p>
7888     <p>
7889     </p>
7890     <blockquote class="text">
7891     <p>"OK" -
7892     </p>
7893     <blockquote class="text">
7894     <p>on success
7895     </p>
7896     </blockquote>
7897    
7898    
7899     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7900     </p>
7901     <blockquote class="text">
7902     <p>when the directory could not be created, which
7903     can happen if the directory already exists or the
7904     name contains not allowed symbols
7905     </p>
7906     </blockquote>
7907    
7908    
7909     </blockquote><p>
7910    
7911     </p>
7912     <p>Examples:
7913     </p>
7914     <p>
7915     </p>
7916     <blockquote class="text">
7917     <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7918     </p>
7919     <p>S: "OK"
7920     </p>
7921     </blockquote><p>
7922    
7923     </p>
7924     <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7925     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7926     <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7927     Deleting an instrument directory</h3>
7928    
7929     <p>The front-end can delete a particular instrument directory
7930     from the instruments database by sending the following command:
7931     </p>
7932     <p>
7933     </p>
7934     <blockquote class="text">
7935     <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7936     </p>
7937     </blockquote><p>
7938    
7939     </p>
7940     <p>Where &lt;dir&gt; is the absolute path name of the directory
7941     to delete. The optional FORCE argument can be used to
7942     force the deletion of a non-empty directory and all its content.
7943     </p>
7944     <p>Possible Answers:
7945     </p>
7946     <p>
7947     </p>
7948     <blockquote class="text">
7949     <p>"OK" -
7950     </p>
7951     <blockquote class="text">
7952     <p>if the directory is deleted successfully
7953     </p>
7954     </blockquote>
7955    
7956    
7957     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7958     </p>
7959     <blockquote class="text">
7960     <p>if the given directory does not exist, or
7961     if trying to delete a non-empty directory,
7962     without using the FORCE argument.
7963     </p>
7964     </blockquote>
7965    
7966    
7967     </blockquote><p>
7968    
7969     </p>
7970     <p>Examples:
7971     </p>
7972     <p>
7973     </p>
7974     <blockquote class="text">
7975     <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7976     </p>
7977     <p>S: "OK"
7978     </p>
7979     </blockquote><p>
7980    
7981     </p>
7982     <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7983     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7984     <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7985     Getting amount of instrument directories</h3>
7986    
7987     <p>The front-end can retrieve the current amount of
7988     directories in a specific directory by sending the following command:
7989     </p>
7990     <p>
7991     </p>
7992     <blockquote class="text">
7993 iliev 1189 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7994 iliev 1162 </p>
7995     </blockquote><p>
7996    
7997     </p>
7998     <p>Where &lt;dir&gt; should be replaced by the absolute path
7999 iliev 1189 name of the directory. If RECURSIVE is specified, the number of
8000     all directories, including those located in subdirectories of the
8001     specified directory, will be returned.
8002 iliev 1162 </p>
8003     <p>Possible Answers:
8004     </p>
8005     <p>
8006     </p>
8007     <blockquote class="text">
8008     <p>The current number of instrument directories
8009     in the specified directory.
8010     </p>
8011     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8012     </p>
8013     <blockquote class="text">
8014     <p>if the given directory does not exist.
8015     </p>
8016     </blockquote>
8017    
8018    
8019     </blockquote><p>
8020    
8021     </p>
8022     <p>Example:
8023     </p>
8024     <p>
8025     </p>
8026     <blockquote class="text">
8027     <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
8028     </p>
8029     <p>S: "2"
8030     </p>
8031     </blockquote><p>
8032    
8033     </p>
8034     <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8035     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8036     <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
8037     Listing all directories in specific directory</h3>
8038    
8039     <p>The front-end can retrieve the current list of directories
8040     in specific directory by sending the following command:
8041     </p>
8042     <p>
8043     </p>
8044     <blockquote class="text">
8045 iliev 1189 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
8046 iliev 1162 </p>
8047     </blockquote><p>
8048    
8049     </p>
8050     <p>Where &lt;dir&gt; should be replaced by the absolute path
8051 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path names
8052     of all directories, including those located in subdirectories of the
8053     specified directory, will be returned.
8054 iliev 1162 </p>
8055     <p>Possible Answers:
8056     </p>
8057     <p>
8058     </p>
8059     <blockquote class="text">
8060     <p>A comma separated list of all instrument directories
8061     (encapsulated into apostrophes) in the specified directory.
8062     </p>
8063     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8064     </p>
8065     <blockquote class="text">
8066     <p>if the given directory does not exist.
8067     </p>
8068     </blockquote>
8069    
8070    
8071     </blockquote><p>
8072    
8073     </p>
8074     <p>Example:
8075     </p>
8076     <p>
8077     </p>
8078     <blockquote class="text">
8079     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
8080     </p>
8081     <p>S: "'Piano Collection','Percussion Collection'"
8082     </p>
8083     </blockquote><p>
8084    
8085     </p>
8086 iliev 1189 <p>
8087     </p>
8088     <blockquote class="text">
8089     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
8090     </p>
8091     <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
8092     </p>
8093     </blockquote><p>
8094    
8095     </p>
8096 iliev 1162 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
8097     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8098     <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
8099     Getting instrument directory information</h3>
8100    
8101     <p>The front-end can ask for the current settings of an
8102     instrument directory by sending the following command:
8103     </p>
8104     <p>
8105     </p>
8106     <blockquote class="text">
8107     <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
8108     </p>
8109     </blockquote><p>
8110    
8111     </p>
8112     <p>Where &lt;dir&gt; should be replaced by the absolute path
8113     name of the directory the front-end is interested in.
8114     </p>
8115     <p>Possible Answers:
8116     </p>
8117     <p>
8118     </p>
8119     <blockquote class="text">
8120     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8121     Each answer line begins with the settings category name
8122     followed by a colon and then a space character &lt;SP&gt; and finally
8123     the info character string to that setting category. At the
8124     moment the following categories are defined:
8125     </p>
8126     <p>
8127     </p>
8128     <blockquote class="text">
8129     <p>DESCRIPTION -
8130     </p>
8131     <blockquote class="text">
8132 schoenebeck 1363 <p>A brief description of the directory content.
8133     Note that the character string may contain
8134     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8135 iliev 1162 </p>
8136     </blockquote>
8137    
8138    
8139     <p>CREATED -
8140     </p>
8141     <blockquote class="text">
8142     <p>The creation date and time of the directory,
8143     represented in "YYYY-MM-DD HH:MM:SS" format
8144     </p>
8145     </blockquote>
8146    
8147    
8148     <p>MODIFIED -
8149     </p>
8150     <blockquote class="text">
8151     <p>The date and time of the last modification of the
8152     directory, represented in "YYYY-MM-DD HH:MM:SS" format
8153     </p>
8154     </blockquote>
8155    
8156    
8157     </blockquote>
8158    
8159    
8160     </blockquote><p>
8161    
8162     </p>
8163     <p>The mentioned fields above don't have to be in particular order.
8164     </p>
8165     <p>Example:
8166     </p>
8167     <p>
8168     </p>
8169     <blockquote class="text">
8170     <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
8171     </p>
8172     <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
8173     </p>
8174     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8175     </p>
8176     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8177     </p>
8178     <p>&nbsp;&nbsp;&nbsp;"."
8179     </p>
8180     </blockquote><p>
8181    
8182     </p>
8183     <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
8184     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8185     <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
8186     Renaming an instrument directory</h3>
8187    
8188     <p>The front-end can alter the name of a specific
8189     instrument directory by sending the following command:
8190     </p>
8191     <p>
8192     </p>
8193     <blockquote class="text">
8194     <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
8195     </p>
8196     </blockquote><p>
8197    
8198     </p>
8199     <p>Where &lt;dir&gt; is the absolute path name of the directory and
8200     &lt;name&gt; is the new name for that directory.
8201     </p>
8202     <p>Possible Answers:
8203     </p>
8204     <p>
8205     </p>
8206     <blockquote class="text">
8207     <p>"OK" -
8208     </p>
8209     <blockquote class="text">
8210     <p>on success
8211     </p>
8212     </blockquote>
8213    
8214    
8215     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8216     </p>
8217     <blockquote class="text">
8218     <p>in case the given directory does not exists,
8219     or if a directory with name equal to the new
8220     name already exists.
8221     </p>
8222     </blockquote>
8223    
8224    
8225     </blockquote><p>
8226    
8227     </p>
8228     <p>Example:
8229     </p>
8230     <p>
8231     </p>
8232     <blockquote class="text">
8233     <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
8234     </p>
8235     <p>S: "OK"
8236     </p>
8237     </blockquote><p>
8238    
8239     </p>
8240     <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8241     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8242     <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
8243     Moving an instrument directory</h3>
8244    
8245     <p>The front-end can move a specific
8246     instrument directory by sending the following command:
8247     </p>
8248     <p>
8249     </p>
8250     <blockquote class="text">
8251     <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8252     </p>
8253     </blockquote><p>
8254    
8255     </p>
8256     <p>Where &lt;dir&gt; is the absolute path name of the directory
8257     to move and &lt;dst&gt; is the location where the directory will
8258     be moved to.
8259     </p>
8260     <p>Possible Answers:
8261     </p>
8262     <p>
8263     </p>
8264     <blockquote class="text">
8265     <p>"OK" -
8266     </p>
8267     <blockquote class="text">
8268     <p>on success
8269     </p>
8270     </blockquote>
8271    
8272    
8273     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8274     </p>
8275     <blockquote class="text">
8276     <p>in case a given directory does not exists,
8277     or if a directory with name equal to the name
8278     of the specified directory already exists in
8279     the destination directory. Error is also thrown
8280     when trying to move a directory to a subdirectory
8281     of itself.
8282     </p>
8283     </blockquote>
8284    
8285    
8286     </blockquote><p>
8287    
8288     </p>
8289     <p>Example:
8290     </p>
8291     <p>
8292     </p>
8293     <blockquote class="text">
8294     <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
8295     </p>
8296     <p>S: "OK"
8297     </p>
8298     </blockquote><p>
8299    
8300     </p>
8301 iliev 1189 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
8302     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8303     <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
8304     Copying instrument directories</h3>
8305    
8306     <p>The front-end can copy a specific
8307     instrument directory by sending the following command:
8308     </p>
8309     <p>
8310     </p>
8311     <blockquote class="text">
8312     <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
8313     </p>
8314     </blockquote><p>
8315    
8316     </p>
8317     <p>Where &lt;dir&gt; is the absolute path name of the directory
8318     to copy and &lt;dst&gt; is the location where the directory will
8319     be copied to.
8320     </p>
8321     <p>Possible Answers:
8322     </p>
8323     <p>
8324     </p>
8325     <blockquote class="text">
8326     <p>"OK" -
8327     </p>
8328     <blockquote class="text">
8329     <p>on success
8330     </p>
8331     </blockquote>
8332    
8333    
8334     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8335     </p>
8336     <blockquote class="text">
8337     <p>in case a given directory does not exists,
8338     or if a directory with name equal to the name
8339     of the specified directory already exists in
8340     the destination directory. Error is also thrown
8341     when trying to copy a directory to a subdirectory
8342     of itself.
8343     </p>
8344     </blockquote>
8345    
8346    
8347     </blockquote><p>
8348    
8349     </p>
8350     <p>Example:
8351     </p>
8352     <p>
8353     </p>
8354     <blockquote class="text">
8355     <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
8356     </p>
8357     <p>S: "OK"
8358     </p>
8359     </blockquote><p>
8360    
8361     </p>
8362 iliev 1162 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
8363     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8364 iliev 1189 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
8365 iliev 1162 Changing the description of directory</h3>
8366    
8367     <p>The front-end can alter the description of a specific
8368     instrument directory by sending the following command:
8369     </p>
8370     <p>
8371     </p>
8372     <blockquote class="text">
8373     <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
8374     </p>
8375     </blockquote><p>
8376    
8377     </p>
8378     <p>Where &lt;dir&gt; is the absolute path name of the directory and
8379 schoenebeck 1363 &lt;desc&gt; is the new description for the directory
8380     (encapsulated into apostrophes, supporting escape sequences as described in chapter
8381     "<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>").
8382 iliev 1162 </p>
8383     <p>Possible Answers:
8384     </p>
8385     <p>
8386     </p>
8387     <blockquote class="text">
8388     <p>"OK" -
8389     </p>
8390     <blockquote class="text">
8391     <p>on success
8392     </p>
8393     </blockquote>
8394    
8395    
8396     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8397     </p>
8398     <blockquote class="text">
8399     <p>in case the given directory does not exists.
8400     </p>
8401     </blockquote>
8402    
8403    
8404     </blockquote><p>
8405    
8406     </p>
8407     <p>Example:
8408     </p>
8409     <p>
8410     </p>
8411     <blockquote class="text">
8412     <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
8413     </p>
8414     <p>S: "OK"
8415     </p>
8416     </blockquote><p>
8417    
8418     </p>
8419 iliev 1189 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
8420     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8421     <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
8422     Finding directories</h3>
8423    
8424     <p>The front-end can search for directories
8425     in specific directory by sending the following command:
8426     </p>
8427     <p>
8428     </p>
8429     <blockquote class="text">
8430     <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8431     </p>
8432     </blockquote><p>
8433    
8434     </p>
8435     <p>Where &lt;dir&gt; should be replaced by the absolute path
8436     name of the directory to search in. If NON_RECURSIVE is specified, the
8437     directories located in subdirectories of the specified directory will not
8438     be searched. &lt;criteria-list&gt; is a list of search criterias
8439     in form of "key1=val1 key2=val2 ...". The following criterias are
8440     allowed:
8441     </p>
8442     <p>
8443    
8444     <p>NAME='&lt;search-string&gt;'
8445     </p>
8446     <blockquote class="text">
8447     <p>Restricts the search to directories, which names
8448 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
8449     supporting escape sequences as described in chapter
8450     "<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>").
8451 iliev 1189 </p>
8452     </blockquote><p>
8453    
8454     </p>
8455    
8456    
8457     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8458     </p>
8459     <blockquote class="text">
8460     <p>Restricts the search to directories, which creation
8461     date satisfies the specified period, where &lt;date-after&gt;
8462     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8463     If &lt;date-after&gt; is omitted the search is restricted to
8464     directories created before &lt;date-before&gt;. If
8465     &lt;date-before&gt; is omitted, the search is restricted
8466     to directories created after &lt;date-after&gt;.
8467     </p>
8468     </blockquote><p>
8469    
8470     </p>
8471    
8472    
8473     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8474     </p>
8475     <blockquote class="text">
8476     <p>Restricts the search to directories, which
8477     date of last modification satisfies the specified period, where
8478     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8479     format. If &lt;date-after&gt; is omitted the search is restricted to
8480     directories, which are last modified before &lt;date-before&gt;. If
8481     &lt;date-before&gt; is omitted, the search is restricted to directories,
8482     which are last modified after &lt;date-after&gt;.
8483     </p>
8484     </blockquote><p>
8485    
8486     </p>
8487    
8488    
8489     <p>DESCRIPTION='&lt;search-string&gt;'
8490     </p>
8491     <blockquote class="text">
8492     <p>Restricts the search to directories with description
8493 schoenebeck 1363 that satisfies the supplied search string
8494     (encapsulated into apostrophes, supporting escape
8495     sequences as described in chapter
8496     "<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>").
8497 iliev 1189 </p>
8498     </blockquote><p>
8499    
8500     </p>
8501    
8502    
8503     <p>Where &lt;search-string&gt; is either a regular expression, or a
8504     word list separated with spaces for OR search and with '+' for AND search.
8505     </p>
8506     <p>Possible Answers:
8507     </p>
8508     <p>
8509     </p>
8510     <blockquote class="text">
8511     <p>A comma separated list with the absolute path names (encapsulated into
8512     apostrophes) of all directories in the specified directory that satisfy
8513     the supplied search criterias.
8514     </p>
8515     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8516     </p>
8517     <blockquote class="text">
8518     <p>if the given directory does not exist.
8519     </p>
8520     </blockquote>
8521    
8522    
8523     </blockquote><p>
8524    
8525     </p>
8526     <p>Example:
8527     </p>
8528     <p>
8529     </p>
8530     <blockquote class="text">
8531     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8532     </p>
8533     <p>S: "'/Piano Collection'"
8534     </p>
8535     </blockquote><p>
8536    
8537     </p>
8538     <p>
8539     </p>
8540     <blockquote class="text">
8541     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8542     </p>
8543     <p>S: "'/Piano Collection','/Percussions'"
8544     </p>
8545     </blockquote><p>
8546    
8547     </p>
8548 iliev 1162 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8549     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8550 iliev 1189 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8551 iliev 1162 Adding instruments to the instruments database</h3>
8552    
8553     <p>The front-end can add one or more instruments
8554     to the instruments database by sending the following command:
8555     </p>
8556     <p>
8557     </p>
8558     <blockquote class="text">
8559 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;]
8560 iliev 1162 </p>
8561     </blockquote><p>
8562    
8563     </p>
8564     <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8565     (encapsulated into apostrophes) in the instruments database in which
8566     only the new instruments (that are not already in the database) will
8567     be added, &lt;file_path&gt; is the absolute path name of a file or
8568     directory in the file system (encapsulated into apostrophes). In case
8569     an instrument file is supplied, only the instruments in the specified
8570     file will be added to the instruments database. If the optional
8571     &lt;instr_index&gt; (the index of the instrument within the given file)
8572     is supplied too, then only the specified instrument will be added.
8573     In case a directory is supplied, the instruments in that directory
8574     will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8575     when a directory is provided as &lt;file_path&gt; and specifies how the
8576     scanning will be done and has exactly the following possibilities:
8577     </p>
8578     <p>
8579     </p>
8580     <blockquote class="text">
8581 iliev 1201 <p>"RECURSIVE" -
8582     </p>
8583     <blockquote class="text">
8584     <p>All instruments will be processed, including those
8585     in the subdirectories, and the respective subdirectory
8586     tree structure will be recreated in the instruments
8587     database
8588     </p>
8589     </blockquote>
8590    
8591    
8592 iliev 1162 <p>"NON_RECURSIVE" -
8593     </p>
8594     <blockquote class="text">
8595     <p>Only the instruments in the specified directory
8596     will be added, the instruments in the subdirectories
8597     will not be processed.
8598     </p>
8599     </blockquote>
8600    
8601    
8602     <p>"FLAT" -
8603     </p>
8604     <blockquote class="text">
8605     <p>All instruments will be processed, including those
8606     in the subdirectories, but the respective subdirectory
8607     structure will not be recreated in the instruments
8608     database. All instruments will be added directly in
8609     the specified database directory.
8610     </p>
8611     </blockquote>
8612    
8613    
8614     </blockquote><p>
8615    
8616     </p>
8617 schoenebeck 1801 <p> If FILE_AS_DIR argument is supplied, all instruments in an instrument
8618     file will be added to a separate directory in the instruments database, which
8619     name will be the name of the instrument file with the file extension stripped off.
8620    
8621     </p>
8622 iliev 1201 <p>The difference between regular and NON_MODAL versions of the command
8623     is that the regular command returns when the scanning is finished
8624     while NON_MODAL version returns immediately and a background process is launched.
8625     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>
8626     command can be used to monitor the scanning progress.
8627     </p>
8628 iliev 1162 <p>Possible Answers:
8629     </p>
8630     <p>
8631     </p>
8632     <blockquote class="text">
8633     <p>"OK" -
8634     </p>
8635     <blockquote class="text">
8636 iliev 1201 <p>on success when NON_MODAL is not supplied
8637 iliev 1162 </p>
8638     </blockquote>
8639    
8640    
8641 iliev 1201 <p>"OK[&lt;job-id&gt;]" -
8642     </p>
8643     <blockquote class="text">
8644     <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8645     is a numerical ID used to obtain status information about the job progress.
8646     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>
8647    
8648     </p>
8649     </blockquote>
8650    
8651    
8652 iliev 1162 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8653     </p>
8654     <blockquote class="text">
8655     <p>if an invalid path is specified.
8656     </p>
8657     </blockquote>
8658    
8659    
8660     </blockquote><p>
8661    
8662     </p>
8663     <p>Examples:
8664     </p>
8665     <p>
8666     </p>
8667     <blockquote class="text">
8668     <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8669     </p>
8670     <p>S: "OK"
8671     </p>
8672     </blockquote><p>
8673    
8674     </p>
8675     <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8676     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8677 iliev 1189 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8678 iliev 1162 Removing an instrument</h3>
8679    
8680     <p>The front-end can remove a particular instrument
8681     from the instruments database by sending the following command:
8682     </p>
8683     <p>
8684     </p>
8685     <blockquote class="text">
8686     <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8687     </p>
8688     </blockquote><p>
8689    
8690     </p>
8691     <p>Where &lt;instr_path&gt; is the absolute path name
8692     (in the instruments database) of the instrument to remove.
8693     </p>
8694     <p>Possible Answers:
8695     </p>
8696     <p>
8697     </p>
8698     <blockquote class="text">
8699     <p>"OK" -
8700     </p>
8701     <blockquote class="text">
8702     <p>if the instrument is removed successfully
8703     </p>
8704     </blockquote>
8705    
8706    
8707     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8708     </p>
8709     <blockquote class="text">
8710     <p>if the given path does not exist or
8711     is a directory.
8712     </p>
8713     </blockquote>
8714    
8715    
8716     </blockquote><p>
8717    
8718     </p>
8719     <p>Examples:
8720     </p>
8721     <p>
8722     </p>
8723     <blockquote class="text">
8724     <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8725     </p>
8726     <p>S: "OK"
8727     </p>
8728     </blockquote><p>
8729    
8730     </p>
8731     <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8732     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8733 iliev 1189 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8734 iliev 1162 Getting amount of instruments</h3>
8735    
8736     <p>The front-end can retrieve the current amount of
8737     instruments in a specific directory by sending the following command:
8738     </p>
8739     <p>
8740     </p>
8741     <blockquote class="text">
8742 iliev 1189 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8743 iliev 1162 </p>
8744     </blockquote><p>
8745    
8746     </p>
8747     <p>Where &lt;dir&gt; should be replaced by the absolute path name
8748 iliev 1189 of the directory. If RECURSIVE is specified, the number of all
8749     instruments, including those located in subdirectories of the
8750     specified directory, will be returned.
8751 iliev 1162 </p>
8752     <p>Possible Answers:
8753     </p>
8754     <p>
8755     </p>
8756     <blockquote class="text">
8757     <p>The current number of instruments
8758     in the specified directory.
8759     </p>
8760     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8761     </p>
8762     <blockquote class="text">
8763     <p>if the given directory does not exist.
8764     </p>
8765     </blockquote>
8766    
8767    
8768     </blockquote><p>
8769    
8770     </p>
8771     <p>Example:
8772     </p>
8773     <p>
8774     </p>
8775     <blockquote class="text">
8776     <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8777     </p>
8778     <p>S: "2"
8779     </p>
8780     </blockquote><p>
8781    
8782     </p>
8783     <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8784     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8785 iliev 1189 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8786 iliev 1162 Listing all instruments in specific directory</h3>
8787    
8788     <p>The front-end can retrieve the current list of instruments
8789     in specific directory by sending the following command:
8790     </p>
8791     <p>
8792     </p>
8793     <blockquote class="text">
8794 iliev 1189 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8795 iliev 1162 </p>
8796     </blockquote><p>
8797    
8798     </p>
8799     <p>Where &lt;dir&gt; should be replaced by the absolute path
8800 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path
8801     names of all instruments, including those located in subdirectories
8802     of the specified directory, will be returned.
8803 iliev 1162 </p>
8804     <p>Possible Answers:
8805     </p>
8806     <p>
8807     </p>
8808     <blockquote class="text">
8809     <p>A comma separated list of all instruments
8810     (encapsulated into apostrophes) in the specified directory.
8811     </p>
8812     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8813     </p>
8814     <blockquote class="text">
8815     <p>if the given directory does not exist.
8816     </p>
8817     </blockquote>
8818    
8819    
8820     </blockquote><p>
8821    
8822     </p>
8823     <p>Example:
8824     </p>
8825     <p>
8826     </p>
8827     <blockquote class="text">
8828     <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8829     </p>
8830     <p>S: "'Bosendorfer 290','Steinway D'"
8831     </p>
8832     </blockquote><p>
8833    
8834     </p>
8835 iliev 1189 <p>
8836     </p>
8837     <blockquote class="text">
8838     <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8839     </p>
8840     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8841     </p>
8842     </blockquote><p>
8843    
8844     </p>
8845 iliev 1162 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8846     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8847 iliev 1189 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8848 iliev 1162 Getting instrument information</h3>
8849    
8850     <p>The front-end can ask for the current settings of an
8851     instrument by sending the following command:
8852     </p>
8853     <p>
8854     </p>
8855     <blockquote class="text">
8856     <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8857     </p>
8858     </blockquote><p>
8859    
8860     </p>
8861     <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8862     name of the instrument the front-end is interested in.
8863     </p>
8864     <p>Possible Answers:
8865     </p>
8866     <p>
8867     </p>
8868     <blockquote class="text">
8869     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8870     Each answer line begins with the settings category name
8871     followed by a colon and then a space character &lt;SP&gt; and finally
8872     the info character string to that setting category. At the
8873     moment the following categories are defined:
8874     </p>
8875     <p>
8876     </p>
8877     <blockquote class="text">
8878     <p>INSTRUMENT_FILE -
8879     </p>
8880     <blockquote class="text">
8881     <p>File name of the instrument.
8882 schoenebeck 1363 Note that the character string may contain
8883     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8884 iliev 1162 </p>
8885     </blockquote>
8886    
8887    
8888     <p>INSTRUMENT_NR -
8889     </p>
8890     <blockquote class="text">
8891     <p>Index of the instrument within the file.
8892     </p>
8893     </blockquote>
8894    
8895    
8896     <p>FORMAT_FAMILY -
8897     </p>
8898     <blockquote class="text">
8899     <p>The format family of the instrument.
8900     </p>
8901     </blockquote>
8902    
8903    
8904     <p>FORMAT_VERSION -
8905     </p>
8906     <blockquote class="text">
8907     <p>The format version of the instrument.
8908     </p>
8909     </blockquote>
8910    
8911    
8912     <p>SIZE -
8913     </p>
8914     <blockquote class="text">
8915     <p>The size of the instrument in bytes.
8916     </p>
8917     </blockquote>
8918    
8919    
8920     <p>CREATED -
8921     </p>
8922     <blockquote class="text">
8923     <p>The date and time when the instrument is added
8924     in the instruments database, represented in
8925     "YYYY-MM-DD HH:MM:SS" format
8926     </p>
8927     </blockquote>
8928    
8929    
8930     <p>MODIFIED -
8931     </p>
8932     <blockquote class="text">
8933     <p>The date and time of the last modification of the
8934     instrument's database settings, represented in
8935     "YYYY-MM-DD HH:MM:SS" format
8936     </p>
8937     </blockquote>
8938    
8939    
8940     <p>DESCRIPTION -
8941     </p>
8942     <blockquote class="text">
8943 schoenebeck 1363 <p>A brief description of the instrument.
8944     Note that the character string may contain
8945     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8946 iliev 1162 </p>
8947     </blockquote>
8948    
8949    
8950     <p>IS_DRUM -
8951     </p>
8952     <blockquote class="text">
8953     <p>either true or false, determines whether the
8954     instrument is a drumkit or a chromatic instrument
8955     </p>
8956     </blockquote>
8957    
8958    
8959     <p>PRODUCT -
8960     </p>
8961     <blockquote class="text">
8962 schoenebeck 1363 <p>The product title of the instrument.
8963     Note that the character string may contain
8964     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8965 iliev 1162 </p>
8966     </blockquote>
8967    
8968    
8969     <p>ARTISTS -
8970     </p>
8971     <blockquote class="text">
8972 schoenebeck 1363 <p>Lists the artist names.
8973     Note that the character string may contain
8974     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8975 iliev 1162 </p>
8976     </blockquote>
8977    
8978    
8979     <p>KEYWORDS -
8980     </p>
8981     <blockquote class="text">
8982     <p>Provides a list of keywords that refer to the instrument.
8983     Keywords are separated with semicolon and blank.
8984 schoenebeck 1363 Note that the character string may contain
8985     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8986 iliev 1162 </p>
8987     </blockquote>
8988    
8989    
8990     </blockquote>
8991    
8992    
8993     </blockquote><p>
8994    
8995     </p>
8996     <p>The mentioned fields above don't have to be in particular order.
8997     </p>
8998     <p>Example:
8999     </p>
9000     <p>
9001     </p>
9002     <blockquote class="text">
9003     <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
9004     </p>
9005     <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
9006     </p>
9007     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
9008     </p>
9009     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9010     </p>
9011     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
9012     </p>
9013     <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
9014     </p>
9015     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
9016     </p>
9017     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
9018     </p>
9019     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
9020     </p>
9021     <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
9022     </p>
9023     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
9024     </p>
9025     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
9026     </p>
9027     <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
9028     </p>
9029     <p>&nbsp;&nbsp;&nbsp;"."
9030     </p>
9031     </blockquote><p>
9032    
9033     </p>
9034     <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
9035     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9036 iliev 1189 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
9037 iliev 1162 Renaming an instrument</h3>
9038    
9039     <p>The front-end can alter the name of a specific
9040     instrument by sending the following command:
9041     </p>
9042     <p>
9043     </p>
9044     <blockquote class="text">
9045     <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
9046     </p>
9047     </blockquote><p>
9048    
9049     </p>
9050     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9051     &lt;name&gt; is the new name for that instrument.
9052     </p>
9053     <p>Possible Answers:
9054     </p>
9055     <p>
9056     </p>
9057     <blockquote class="text">
9058     <p>"OK" -
9059     </p>
9060     <blockquote class="text">
9061     <p>on success
9062     </p>
9063     </blockquote>
9064    
9065    
9066     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9067     </p>
9068     <blockquote class="text">
9069     <p>in case the given instrument does not exists,
9070     or if an instrument with name equal to the new
9071     name already exists.
9072     </p>
9073     </blockquote>
9074    
9075    
9076     </blockquote><p>
9077    
9078     </p>
9079     <p>Example:
9080     </p>
9081     <p>
9082     </p>
9083     <blockquote class="text">
9084     <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
9085     </p>
9086     <p>S: "OK"
9087     </p>
9088     </blockquote><p>
9089    
9090     </p>
9091     <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
9092     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9093 iliev 1189 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
9094 iliev 1162 Moving an instrument</h3>
9095    
9096     <p>The front-end can move a specific instrument to another directory by
9097     sending the following command:
9098     </p>
9099     <p>
9100     </p>
9101     <blockquote class="text">
9102     <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9103     </p>
9104     </blockquote><p>
9105    
9106     </p>
9107     <p>Where &lt;instr&gt; is the absolute path name of the instrument
9108     to move and &lt;dst&gt; is the directory where the instrument will
9109     be moved to.
9110     </p>
9111     <p>Possible Answers:
9112     </p>
9113     <p>
9114     </p>
9115     <blockquote class="text">
9116     <p>"OK" -
9117     </p>
9118     <blockquote class="text">
9119     <p>on success
9120     </p>
9121     </blockquote>
9122    
9123    
9124     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9125     </p>
9126     <blockquote class="text">
9127     <p>in case the given instrument does not exists,
9128     or if an instrument with name equal to the name of the
9129     specified instrument already exists in the destination
9130     directory.
9131     </p>
9132     </blockquote>
9133    
9134    
9135     </blockquote><p>
9136    
9137     </p>
9138     <p>Example:
9139     </p>
9140     <p>
9141     </p>
9142     <blockquote class="text">
9143     <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
9144     </p>
9145     <p>S: "OK"
9146     </p>
9147     </blockquote><p>
9148    
9149     </p>
9150 iliev 1189 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
9151     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9152     <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
9153     Copying instruments</h3>
9154    
9155     <p>The front-end can copy a specific instrument to another directory by
9156     sending the following command:
9157     </p>
9158     <p>
9159     </p>
9160     <blockquote class="text">
9161     <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
9162     </p>
9163     </blockquote><p>
9164    
9165     </p>
9166     <p>Where &lt;instr&gt; is the absolute path name of the instrument
9167     to copy and &lt;dst&gt; is the directory where the instrument will
9168     be copied to.
9169     </p>
9170     <p>Possible Answers:
9171     </p>
9172     <p>
9173     </p>
9174     <blockquote class="text">
9175     <p>"OK" -
9176     </p>
9177     <blockquote class="text">
9178     <p>on success
9179     </p>
9180     </blockquote>
9181    
9182    
9183     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9184     </p>
9185     <blockquote class="text">
9186     <p>in case the given instrument does not exists,
9187     or if an instrument with name equal to the name of the
9188     specified instrument already exists in the destination
9189     directory.
9190     </p>
9191     </blockquote>
9192    
9193    
9194     </blockquote><p>
9195    
9196     </p>
9197     <p>Example:
9198     </p>
9199     <p>
9200     </p>
9201     <blockquote class="text">
9202     <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
9203     </p>
9204     <p>S: "OK"
9205     </p>
9206     </blockquote><p>
9207    
9208     </p>
9209 iliev 1162 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
9210     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9211 iliev 1189 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
9212 iliev 1162 Changing the description of instrument</h3>
9213    
9214     <p>The front-end can alter the description of a specific
9215     instrument by sending the following command:
9216     </p>
9217     <p>
9218     </p>
9219     <blockquote class="text">
9220     <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
9221     </p>
9222     </blockquote><p>
9223    
9224     </p>
9225     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
9226 schoenebeck 1572 &lt;desc&gt; is the new description for the instrument
9227 schoenebeck 1363 (encapsulated into apostrophes, supporting escape sequences as described in chapter
9228     "<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>").
9229 iliev 1162 </p>
9230     <p>Possible Answers:
9231     </p>
9232     <p>
9233     </p>
9234     <blockquote class="text">
9235     <p>"OK" -
9236     </p>
9237     <blockquote class="text">
9238     <p>on success
9239     </p>
9240     </blockquote>
9241    
9242    
9243     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9244     </p>
9245     <blockquote class="text">
9246     <p>in case the given instrument does not exists.
9247     </p>
9248     </blockquote>
9249    
9250    
9251     </blockquote><p>
9252    
9253     </p>
9254     <p>Example:
9255     </p>
9256     <p>
9257     </p>
9258     <blockquote class="text">
9259     <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
9260     </p>
9261     <p>S: "OK"
9262     </p>
9263     </blockquote><p>
9264    
9265     </p>
9266 iliev 1189 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
9267     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9268     <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
9269     Finding instruments</h3>
9270    
9271     <p>The front-end can search for instruments
9272     in specific directory by sending the following command:
9273     </p>
9274     <p>
9275     </p>
9276     <blockquote class="text">
9277     <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
9278     </p>
9279     </blockquote><p>
9280    
9281     </p>
9282     <p>Where &lt;dir&gt; should be replaced by the absolute path
9283     name of the directory to search in. If NON_RECURSIVE is specified, the
9284     directories located in subdirectories of the specified directory will not
9285     be searched. &lt;criteria-list&gt; is a list of search criterias
9286     in form of "key1=val1 key2=val2 ...". The following criterias are
9287     allowed:
9288     </p>
9289     <p>
9290    
9291     <p>NAME='&lt;search-string&gt;'
9292     </p>
9293     <blockquote class="text">
9294     <p>Restricts the search to instruments, which names
9295 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
9296     supporting escape sequences as described in chapter
9297     "<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>").
9298 iliev 1189 </p>
9299     </blockquote><p>
9300    
9301     </p>
9302    
9303    
9304     <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
9305     </p>
9306     <blockquote class="text">
9307 schoenebeck 1251 <p>Restricts the search to instruments, which
9308 iliev 1189 size is in the specified range. If &lt;min&gt; is omitted,
9309     the search results are restricted to instruments with size less then
9310     or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
9311     search is restricted to instruments with size greater then
9312     or equal to &lt;min&gt;.
9313     </p>
9314     </blockquote><p>
9315    
9316     </p>
9317    
9318    
9319     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9320     </p>
9321     <blockquote class="text">
9322     <p>Restricts the search to instruments, which creation
9323     date satisfies the specified period, where &lt;date-after&gt;
9324     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
9325     If &lt;date-after&gt; is omitted the search is restricted to
9326     instruments created before &lt;date-before&gt;. If
9327     &lt;date-before&gt; is omitted, the search is restricted
9328     to instruments created after &lt;date-after&gt;.
9329     </p>
9330     </blockquote><p>
9331    
9332     </p>
9333    
9334    
9335     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
9336     </p>
9337     <blockquote class="text">
9338     <p>Restricts the search to instruments, which
9339     date of last modification satisfies the specified period, where
9340     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
9341     format. If &lt;date-after&gt; is omitted the search is restricted to
9342     instruments, which are last modified before &lt;date-before&gt;. If
9343     &lt;date-before&gt; is omitted, the search is restricted to instruments,
9344     which are last modified after &lt;date-after&gt;.
9345     </p>
9346     </blockquote><p>
9347    
9348     </p>
9349    
9350    
9351     <p>DESCRIPTION='&lt;search-string&gt;'
9352     </p>
9353     <blockquote class="text">
9354     <p>Restricts the search to instruments with description
9355 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9356     supporting escape sequences as described in chapter
9357     "<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>").
9358 iliev 1189 </p>
9359     </blockquote><p>
9360    
9361     </p>
9362    
9363    
9364     <p>PRODUCT='&lt;search-string&gt;'
9365     </p>
9366     <blockquote class="text">
9367     <p>Restricts the search to instruments with product info
9368 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9369     supporting escape sequences as described in chapter
9370     "<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>").
9371 iliev 1189 </p>
9372     </blockquote><p>
9373    
9374     </p>
9375    
9376    
9377     <p>ARTISTS='&lt;search-string&gt;'
9378     </p>
9379     <blockquote class="text">
9380     <p>Restricts the search to instruments with artists info
9381 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9382     supporting escape sequences as described in chapter
9383     "<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>").
9384 iliev 1189 </p>
9385     </blockquote><p>
9386    
9387     </p>
9388    
9389    
9390     <p>KEYWORDS='&lt;search-string&gt;'
9391     </p>
9392     <blockquote class="text">
9393     <p>Restricts the search to instruments with keyword list
9394 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
9395     supporting escape sequences as described in chapter
9396     "<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>").
9397 iliev 1189 </p>
9398     </blockquote><p>
9399    
9400     </p>
9401    
9402    
9403     <p>IS_DRUM=true | false
9404     </p>
9405     <blockquote class="text">
9406 schoenebeck 1251 <p>Either true or false. Restricts the search to
9407 iliev 1189 drum kits or chromatic instruments.
9408     </p>
9409     </blockquote><p>
9410    
9411     </p>
9412    
9413    
9414     <p>FORMAT_FAMILIES='&lt;format-list&gt;'
9415     </p>
9416     <blockquote class="text">
9417     <p>Restricts the search to instruments of the supplied format families,
9418     where &lt;format-list&gt; is a comma separated list of format families.
9419     </p>
9420     </blockquote><p>
9421    
9422     </p>
9423    
9424    
9425     <p>Where &lt;search-string&gt; is either a regular expression, or a
9426     word list separated with spaces for OR search and with '+' for AND search.
9427     </p>
9428     <p>Possible Answers:
9429     </p>
9430     <p>
9431     </p>
9432     <blockquote class="text">
9433     <p>A comma separated list with the absolute path names (encapsulated into
9434     apostrophes) of all instruments in the specified directory that satisfy
9435     the supplied search criterias.
9436     </p>
9437     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9438     </p>
9439     <blockquote class="text">
9440     <p>if the given directory does not exist.
9441     </p>
9442     </blockquote>
9443    
9444    
9445     </blockquote><p>
9446    
9447     </p>
9448     <p>Example:
9449     </p>
9450     <p>
9451     </p>
9452     <blockquote class="text">
9453     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
9454     </p>
9455     <p>S: "'/Piano Collection/Bosendorfer 290'"
9456     </p>
9457     </blockquote><p>
9458    
9459     </p>
9460     <p>
9461     </p>
9462     <blockquote class="text">
9463     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
9464     </p>
9465     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
9466     </p>
9467     </blockquote><p>
9468    
9469     </p>
9470 iliev 1201 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
9471     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9472     <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
9473     Getting job status information</h3>
9474    
9475     <p>The front-end can ask for the current status of a
9476     particular database instruments job by sending the following command:
9477     </p>
9478     <p>
9479     </p>
9480     <blockquote class="text">
9481     <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
9482     </p>
9483     </blockquote><p>
9484    
9485     </p>
9486     <p>Where &lt;job-id&gt; should be replaced by the numerical ID
9487     of the job the front-end is interested in.
9488     </p>
9489     <p>Possible Answers:
9490     </p>
9491     <p>
9492     </p>
9493     <blockquote class="text">
9494     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9495     Each answer line begins with the settings category name
9496     followed by a colon and then a space character &lt;SP&gt; and finally
9497     the info character string to that setting category. At the
9498     moment the following categories are defined:
9499     </p>
9500     <p>
9501     </p>
9502     <blockquote class="text">
9503     <p>FILES_TOTAL -
9504     </p>
9505     <blockquote class="text">
9506     <p>The total number of files scheduled for scanning
9507     </p>
9508     </blockquote>
9509    
9510    
9511     <p>FILES_SCANNED -
9512     </p>
9513     <blockquote class="text">
9514     <p>The current number of scanned files
9515     </p>
9516     </blockquote>
9517    
9518    
9519     <p>SCANNING -
9520     </p>
9521     <blockquote class="text">
9522     <p>The absolute path name of the file which is currently
9523     being scanned
9524     </p>
9525     </blockquote>
9526    
9527    
9528     <p>STATUS -
9529     </p>
9530     <blockquote class="text">
9531     <p>An integer value between 0 and 100 indicating the
9532     scanning progress percentage of the file which is
9533     currently being scanned
9534     </p>
9535     </blockquote>
9536    
9537    
9538     </blockquote>
9539    
9540    
9541     </blockquote><p>
9542    
9543     </p>
9544     <p>The mentioned fields above don't have to be in particular order.
9545     </p>
9546     <p>Example:
9547     </p>
9548     <p>
9549     </p>
9550     <blockquote class="text">
9551     <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9552     </p>
9553     <p>S: "FILES_TOTAL: 12"
9554     </p>
9555     <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9556     </p>
9557     <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9558     </p>
9559     <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9560     </p>
9561     <p>&nbsp;&nbsp;&nbsp;"."
9562     </p>
9563     </blockquote><p>
9564    
9565     </p>
9566 schoenebeck 1363 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9567     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9568     <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9569     Formatting the instruments database</h3>
9570    
9571     <p>The front-end can remove all instruments and directories and re-create
9572     the instruments database structure (e.g., in case of a database corruption)
9573     by sending the following command:
9574     </p>
9575     <p>
9576     </p>
9577     <blockquote class="text">
9578     <p>FORMAT INSTRUMENTS_DB
9579     </p>
9580     </blockquote><p>
9581    
9582     </p>
9583     <p>Possible Answers:
9584     </p>
9585     <p>
9586     </p>
9587     <blockquote class="text">
9588     <p>"OK" -
9589     </p>
9590     <blockquote class="text">
9591     <p>on success
9592     </p>
9593     </blockquote>
9594    
9595    
9596     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9597     </p>
9598     <blockquote class="text">
9599     <p>If the formatting of the instruments database
9600     failed.
9601     </p>
9602     </blockquote>
9603    
9604    
9605     </blockquote><p>
9606    
9607     </p>
9608 iliev 1731 <a name="FIND LOST DB_INSTRUMENT_FILES"></a><br /><hr />
9609     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9610     <a name="rfc.section.6.8.23"></a><h3>6.8.23.&nbsp;
9611     Checking for lost instrument files</h3>
9612    
9613     <p>The front-end can retrieve the list of all instrument files in the instruments database
9614     that don't exist in the filesystem by sending the following command:
9615     </p>
9616     <p>
9617     </p>
9618     <blockquote class="text">
9619     <p>FIND LOST DB_INSTRUMENT_FILES
9620     </p>
9621     </blockquote><p>
9622    
9623     </p>
9624     <p>Possible Answers:
9625     </p>
9626     <p>
9627     </p>
9628     <blockquote class="text">
9629     <p>A comma separated list with the absolute path names
9630     (encapsulated into apostrophes) of all lost instrument files.
9631     </p>
9632     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9633     </p>
9634     <blockquote class="text">
9635     <p>in case it failed, providing an appropriate error code and error message.
9636     </p>
9637     </blockquote>
9638    
9639    
9640     </blockquote><p>
9641    
9642     </p>
9643     <p>Example:
9644     </p>
9645     <p>
9646     </p>
9647     <blockquote class="text">
9648     <p>C: "FIND LOST DB_INSTRUMENT_FILES"
9649     </p>
9650     <p>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"
9651     </p>
9652     </blockquote><p>
9653    
9654     </p>
9655     <a name="SET DB_INSTRUMENT FILE_PATH"></a><br /><hr />
9656     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9657     <a name="rfc.section.6.8.24"></a><h3>6.8.24.&nbsp;
9658     Replacing an instrument file</h3>
9659    
9660     <p>The front-end can substitute all occurrences of an instrument file
9661     in the instruments database with a new one by sending the following command:
9662     </p>
9663     <p>
9664     </p>
9665     <blockquote class="text">
9666     <p>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;
9667     </p>
9668     </blockquote><p>
9669    
9670     </p>
9671     <p>Where &lt;old_path&gt; is the absolute path name of the instrument file
9672     to substitute with &lt;new_path&gt;.
9673     </p>
9674     <p>Possible Answers:
9675     </p>
9676     <p>
9677     </p>
9678     <blockquote class="text">
9679     <p>"OK" -
9680     </p>
9681     <blockquote class="text">
9682     <p>on success
9683     </p>
9684     </blockquote>
9685    
9686    
9687     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9688     </p>
9689     <blockquote class="text">
9690     <p>in case it failed, providing an appropriate error code and error message.
9691     </p>
9692     </blockquote>
9693    
9694    
9695     </blockquote><p>
9696    
9697     </p>
9698     <p>Example:
9699     </p>
9700     <p>
9701     </p>
9702     <blockquote class="text">
9703     <p>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"
9704     </p>
9705     <p>S: "OK"
9706     </p>
9707     </blockquote><p>
9708    
9709     </p>
9710 schoenebeck 1363 <a name="editing_instruments"></a><br /><hr />
9711     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9712     <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9713     Editing Instruments</h3>
9714    
9715     <p>The sampler allows to edit instruments while playing with the
9716     sampler by spawning an external (3rd party) instrument editor
9717     application for a given instrument. The 3rd party instrument
9718     editor applications have to place a respective plugin DLL file
9719     into the sampler's plugins directory. The sampler will
9720     automatically try to load all plugin DLLs in that directory on
9721     startup and only on startup!
9722     </p>
9723     <p>At the moment there is only one command for this feature set,
9724     but this will most probably change in future.
9725     </p>
9726     <a name="EDIT INSTRUMENT"></a><br /><hr />
9727     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9728     <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9729     Opening an appropriate instrument editor application</h3>
9730    
9731     <p>The front-end can request to open an appropriate instrument
9732     editor application by sending the following command:
9733     </p>
9734     <p>
9735     </p>
9736     <blockquote class="text">
9737 schoenebeck 1430 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9738 schoenebeck 1363 </p>
9739     </blockquote><p>
9740    
9741     </p>
9742     <p>Where &lt;sampler-channel&gt; should be replaced by the
9743     number of the sampler channel as given by the
9744     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9745     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9746     command.
9747     </p>
9748     <p>The sampler will try to ask all registered instrument
9749     editors (or to be more specific: their sampler plugins)
9750     whether they are capable to handle the instrument on the
9751     given sampler channel. The sampler will simply use the first
9752     instrument editor application which replied with a positive
9753     answer and spawn that instrument editor application within
9754     the sampler's process and provide that application access
9755     to the instrument's data structures, so both applications
9756     can share and access the same instruments data at the same
9757     time, thus allowing to immediately hear changes with the
9758     sampler made by the instrument editor.
9759     </p>
9760     <p>Note: consequently instrument editors are always spawned
9761     locally on the same machine where the sampler is running
9762     on!
9763     </p>
9764     <p>Possible Answers:
9765     </p>
9766     <p>
9767     </p>
9768     <blockquote class="text">
9769     <p>"OK" -
9770     </p>
9771     <blockquote class="text">
9772     <p>when an appropriate instrument editor was
9773     launched
9774     </p>
9775     </blockquote>
9776    
9777    
9778     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9779     </p>
9780     <blockquote class="text">
9781     <p>when an appropriate instrument editor was
9782     launched, but there are noteworthy issues
9783     </p>
9784     </blockquote>
9785    
9786    
9787     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9788     </p>
9789     <blockquote class="text">
9790     <p>when an appropriate instrument editor
9791     could not be launched
9792     </p>
9793     </blockquote>
9794    
9795    
9796     </blockquote><p>
9797    
9798     </p>
9799     <p>Examples:
9800     </p>
9801     <p>
9802     </p>
9803     <blockquote class="text">
9804 schoenebeck 1430 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9805 schoenebeck 1363 </p>
9806     <p>S: "OK"
9807     </p>
9808     </blockquote><p>
9809    
9810     </p>
9811 schoenebeck 1572 <a name="file_management"></a><br /><hr />
9812     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9813     <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9814     Managing Files</h3>
9815    
9816     <p>You can query detailed informations about files located
9817     at the same system where the sampler instance is running on.
9818     Using this command set allows to retrieve file informations
9819     even remotely from another machine.
9820     </p>
9821     <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9822     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9823     <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9824     Retrieving amount of instruments of a file</h3>
9825    
9826     <p>The front-end can retrieve the amount of instruments
9827     within a given instrument file by sending the
9828     following command:
9829     </p>
9830     <p>
9831     </p>
9832     <blockquote class="text">
9833     <p>GET FILE INSTRUMENTS &lt;filename&gt;
9834     </p>
9835     </blockquote><p>
9836    
9837     </p>
9838     <p>Where &lt;filename&gt; is the name of the instrument
9839     file (encapsulated into apostrophes, supporting escape
9840     sequences as described in chapter
9841     "<a class='info' href='#character_set'>Character Set and Escape
9842     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9843     </p>
9844     <p>The sampler will try to ask all sampler engines,
9845     whether they support the given file and ask the first
9846     engine with a positive answer for the amount of
9847     instruments.
9848     </p>
9849     <p>Possible Answers:
9850     </p>
9851     <p>
9852     </p>
9853     <blockquote class="text">
9854     <p>On success, the sampler will answer by
9855     returning the amount of instruments.
9856    
9857     </p>
9858     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9859     </p>
9860     <blockquote class="text">
9861     <p>if the file could not be handled
9862     </p>
9863     </blockquote>
9864    
9865    
9866     </blockquote><p>
9867    
9868     </p>
9869     <p>Examples:
9870     </p>
9871     <p>
9872     </p>
9873     <blockquote class="text">
9874     <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9875     </p>
9876     <p>S: "10"
9877     </p>
9878     </blockquote><p>
9879    
9880     </p>
9881     <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9882     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9883     <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9884     Retrieving all instruments of a file</h3>
9885    
9886     <p>The front-end can retrieve a list of all instruments
9887     within a given instrument file by sending the
9888     following command:
9889     </p>
9890     <p>
9891     </p>
9892     <blockquote class="text">
9893     <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9894     </p>
9895     </blockquote><p>
9896    
9897     </p>
9898     <p>Where &lt;filename&gt; is the name of the instrument
9899     file (encapsulated into apostrophes, supporting escape
9900     sequences as described in chapter
9901     "<a class='info' href='#character_set'>Character Set and Escape
9902     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9903     </p>
9904     <p>The sampler will try to ask all sampler engines,
9905     whether they support the given file and ask the first
9906     engine with a positive answer for a list of IDs for the
9907     instruments in the given file.
9908     </p>
9909     <p>Possible Answers:
9910     </p>
9911     <p>
9912     </p>
9913     <blockquote class="text">
9914     <p>On success, the sampler will answer by
9915     returning a comma separated list of
9916     instrument IDs.
9917    
9918     </p>
9919     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9920     </p>
9921     <blockquote class="text">
9922     <p>if the file could not be handled
9923     </p>
9924     </blockquote>
9925    
9926    
9927     </blockquote><p>
9928    
9929     </p>
9930     <p>Examples:
9931     </p>
9932     <p>
9933     </p>
9934     <blockquote class="text">
9935     <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9936     </p>
9937     <p>S: "0,1,2,3,4,5,6,7,8,9"
9938     </p>
9939     </blockquote><p>
9940    
9941     </p>
9942     <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9943     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9944     <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9945     Retrieving informations about one instrument in a file</h3>
9946    
9947     <p>The front-end can retrieve detailed informations
9948     about a specific instrument within a given instrument
9949     file by sending the following command:
9950     </p>
9951     <p>
9952     </p>
9953     <blockquote class="text">
9954     <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9955     &lt;instr-id&gt;
9956     </p>
9957     </blockquote><p>
9958    
9959     </p>
9960     <p>Where &lt;filename&gt; is the name of the instrument
9961     file (encapsulated into apostrophes, supporting escape
9962     sequences as described in chapter
9963     "<a class='info' href='#character_set'>Character Set and Escape
9964     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
9965     instrument ID as returned by the
9966     <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.
9967     </p>
9968     <p>The sampler will try to ask all sampler engines,
9969     whether they support the given file and ask the first
9970     engine with a positive answer for informations about the
9971     specific instrument in the given file.
9972     </p>
9973     <p>Possible Answers:
9974     </p>
9975     <p>
9976     </p>
9977     <blockquote class="text">
9978     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9979     Each answer line begins with the settings category name
9980     followed by a colon and then a space character &lt;SP&gt; and finally
9981     the info character string to that setting category. At the
9982     moment the following categories are defined:
9983     </p>
9984     <p>
9985     </p>
9986     <blockquote class="text">
9987     <p>NAME -
9988     </p>
9989     <blockquote class="text">
9990     <p>name of the instrument as
9991     stored in the instrument file
9992     </p>
9993     </blockquote>
9994    
9995    
9996     <p>FORMAT_FAMILY -
9997     </p>
9998     <blockquote class="text">
9999     <p>name of the sampler format
10000     of the given instrument
10001     </p>
10002     </blockquote>
10003    
10004    
10005     <p>FORMAT_VERSION -
10006     </p>
10007     <blockquote class="text">
10008     <p>version of the sampler format
10009     the instrumen is stored as
10010     </p>
10011     </blockquote>
10012    
10013    
10014     <p>PRODUCT -
10015     </p>
10016     <blockquote class="text">
10017     <p>official product name of the
10018     instrument as stored in the file
10019    
10020     </p>
10021     </blockquote>
10022    
10023    
10024     <p>ARTISTS -
10025     </p>
10026     <blockquote class="text">
10027     <p>artists / sample library
10028     vendor of the instrument
10029     </p>
10030     </blockquote>
10031    
10032    
10033 iliev 1773 <p>KEY_BINDINGS -
10034     </p>
10035     <blockquote class="text">
10036     <p>comma separated list of integer values representing
10037     the instrument's key mapping in the range between 0 .. 127,
10038     reflecting the analog meaning of the MIDI specification.
10039     </p>
10040 schoenebeck 1572 </blockquote>
10041 iliev 1773
10042    
10043     <p>KEYSWITCH_BINDINGS -
10044     </p>
10045     <blockquote class="text">
10046     <p>comma separated list of integer values representing
10047     the instrument's keyswitch mapping in the range between 0 .. 127,
10048     reflecting the analog meaning of the MIDI specification.
10049     </p>
10050     </blockquote>
10051    
10052    
10053     </blockquote>
10054 schoenebeck 1572
10055    
10056     </blockquote><p>
10057    
10058     </p>
10059     <p>The mentioned fields above don't have to be in particular order.
10060     </p>
10061     <p>Example:
10062     </p>
10063     <p>
10064     </p>
10065     <blockquote class="text">
10066     <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
10067     </p>
10068     <p>S: "NAME: Lunatic Loops"
10069     </p>
10070     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
10071     </p>
10072     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
10073     </p>
10074     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
10075     </p>
10076     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
10077     </p>
10078     <p>&nbsp;&nbsp;&nbsp;"."
10079     </p>
10080     </blockquote><p>
10081    
10082     </p>
10083 schoenebeck 2139 <a name="effects"></a><br /><hr />
10084     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10085     <a name="rfc.section.6.11"></a><h3>6.11.&nbsp;
10086     Managing Effects</h3>
10087    
10088     <p>Audio effects (e.g. reverb, delay, compression) can be
10089     applied to the audio signals generated by the sampler. The
10090     sampler usually provides a set of internal audio effects for
10091     this task. The exact set of effects depends on the availability
10092     of third party effect plugins installed on the system where the
10093     sampler runs on.
10094     </p>
10095     <p>At the moment only "send effects" are supported. Support for
10096     "insert effects" and "master effects" is planned to be added at
10097     a later point.
10098     </p>
10099     <p>The following commands allow to retrieve the set of internal
10100     effects available to the sampler, detailed informations about
10101     those effects and to create and destroy instances of such
10102     effects. After an instance of an effect is created, the effect
10103     instance can be inserted into the audio signal path of the
10104     sampler, e.g. as send effect.
10105     </p>
10106     <p>The sampler allows to create an arbitrary amount of so called
10107     send effect chains. Each effect chain can host an arbitrary
10108     amount of effect instances. The output of the first effect
10109     instance in an effect chain is fed to the input of the second
10110     effect instance of the chain and so on. So effects in one chain
10111     are processed sequentially. Send effect chains however are
10112     processed in parallel to other send effect chains. Audio signals
10113     of sampler channels are fed to send effects by creating FX sends
10114     to the respective sampler channel and assigning a destination
10115     send effect to that FX by using the
10116     <a class='info' href='#SET FX_SEND SEND_EFFECT'>"SET FX_SEND SEND_EFFECT"<span> (</span><span class='info'>Assigning destination effect to an effect send</span><span>)</span></a>
10117     command. The latter allows to route the FX send to the beginning
10118     of a send effect chain, as well as directly to any other
10119     position of the send effect chain.
10120     </p>
10121     <a name="GET AVAILABLE_EFFECTS"></a><br /><hr />
10122     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10123     <a name="rfc.section.6.11.1"></a><h3>6.11.1.&nbsp;
10124     Retrieve amount of available effects</h3>
10125    
10126     <p>The front-end can retrieve the amount of internal
10127     effects, available to the sampler by sending
10128     the following command:
10129     </p>
10130     <p>
10131     </p>
10132     <blockquote class="text">
10133     <p>GET AVAILABLE_EFFECTS
10134     </p>
10135     </blockquote><p>
10136    
10137     </p>
10138     <p>Possible Answers:
10139     </p>
10140     <p>
10141     </p>
10142     <blockquote class="text">
10143     <p>The sampler will answer by returning the current
10144     number of effects available to the sampler.
10145     </p>
10146     </blockquote><p>
10147    
10148     </p>
10149     <p>Examples:
10150     </p>
10151     <p>
10152     </p>
10153     <blockquote class="text">
10154     <p>C: "GET AVAILABLE_EFFECTS"
10155     </p>
10156     <p>S: "129"
10157     </p>
10158     </blockquote><p>
10159    
10160     </p>
10161     <a name="LIST AVAILABLE_EFFECTS"></a><br /><hr />
10162     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10163     <a name="rfc.section.6.11.2"></a><h3>6.11.2.&nbsp;
10164     Get list of available effects</h3>
10165    
10166     <p>The set of available internal effects can change at
10167     runtime. The front-end can retrieve the list of internal
10168     effects, available to the sampler by sending the following
10169     command:
10170     </p>
10171     <p>
10172     </p>
10173     <blockquote class="text">
10174     <p>LIST AVAILABLE_EFFECTS
10175     </p>
10176     </blockquote><p>
10177    
10178     </p>
10179     <p>Possible Answers:
10180     </p>
10181     <p>
10182     </p>
10183     <blockquote class="text">
10184     <p>The sampler will answer by returning a comma
10185     separated list with numerical IDs of effects. Note:
10186     the numercial ID of an effect is generated by the
10187     sampler for the current moment. The numerical ID of
10188     the same effect can change at runtime, e.g. when the
10189     user requests a rescan of available effect plugins.
10190    
10191     </p>
10192     </blockquote><p>
10193    
10194     </p>
10195     <p>Example:
10196     </p>
10197     <p>
10198     </p>
10199     <blockquote class="text">
10200     <p>C: "LIST AVAILABLE_EFFECTS"
10201     </p>
10202     <p>S: "5,6,7,120,121,122,123,124"
10203     </p>
10204     </blockquote><p>
10205    
10206     </p>
10207     <a name="GET EFFECT INFO"></a><br /><hr />
10208     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10209     <a name="rfc.section.6.11.3"></a><h3>6.11.3.&nbsp;
10210     Retrieving general information about an effect</h3>
10211    
10212     <p>The front-end can ask for general informations about an
10213     effect by sending the following command:
10214     </p>
10215     <p>
10216     </p>
10217     <blockquote class="text">
10218     <p>GET EFFECT INFO &lt;effect-index&gt;
10219     </p>
10220     </blockquote><p>
10221    
10222     </p>
10223     <p>Where &lt;effect-index&gt; is the numerical ID of an
10224     effect as returned by the
10225     <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10226     command.
10227     </p>
10228     <p>Possible Answers:
10229     </p>
10230     <p>
10231     </p>
10232     <blockquote class="text">
10233     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10234     Each answer line begins with the effect information
10235     category name, followed by a colon and then a space
10236     character &lt;SP&gt; and finally the info character
10237     string to that effect information category. At the
10238     moment the following categories are defined:
10239     </p>
10240     <p>
10241     </p>
10242     <blockquote class="text">
10243     <p>SYSTEM -
10244     </p>
10245     <blockquote class="text">
10246     <p>name of the effect plugin system
10247     the effect is based on
10248     (e.g. "LADSPA")
10249     </p>
10250     </blockquote>
10251    
10252    
10253     <p>MODULE -
10254     </p>
10255     <blockquote class="text">
10256     <p>module of the effect plugin
10257     system that contains this effect,
10258     the module is usually the
10259     dynamic-linked library (DLL)
10260     filename of the effect plugin,
10261     including full path (note that this
10262     filename may contain
10263     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10264     </p>
10265     </blockquote>
10266    
10267    
10268     <p>NAME -
10269     </p>
10270     <blockquote class="text">
10271     <p>character string defining the
10272     unique name of the effect within its
10273     module (note that the character
10274     string may contain
10275     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10276     </p>
10277     </blockquote>
10278    
10279    
10280     <p>DESCRIPTION -
10281     </p>
10282     <blockquote class="text">
10283     <p>human readable name of the
10284     effect, intended to be displayed in
10285     user interfaces (note that the
10286     character string may contain
10287     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10288     </p>
10289     </blockquote>
10290    
10291    
10292     </blockquote>
10293    
10294    
10295     </blockquote><p>
10296    
10297     </p>
10298     <p>The mentioned fields above don't have to be in particular order.
10299     </p>
10300     <p>Example:
10301     </p>
10302     <p>
10303     </p>
10304     <blockquote class="text">
10305     <p>C: "GET EFFECT INFO 121"
10306     </p>
10307     <p>S: "SYSTEM: LADSPA"
10308     </p>
10309     <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/lowpass_iir_1891.so"
10310     </p>
10311     <p>&nbsp;&nbsp;&nbsp;"NAME: lowpass_iir"
10312     </p>
10313     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Glame Lowpass Filter"
10314     </p>
10315     <p>&nbsp;&nbsp;&nbsp;"."
10316     </p>
10317     </blockquote><p>
10318    
10319     </p>
10320     <a name="CREATE EFFECT_INSTANCE"></a><br /><hr />
10321     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10322     <a name="rfc.section.6.11.4"></a><h3>6.11.4.&nbsp;
10323     Creating an instance of an effect by its portable ID</h3>
10324    
10325     <p>The front-end can spawn an instance of the desired
10326     effect by sending the following command:
10327     </p>
10328     <p>
10329     </p>
10330     <blockquote class="text">
10331     <p>CREATE EFFECT_INSTANCE &lt;effect-system&gt; &lt;module&gt; &lt;effect-name&gt;
10332     </p>
10333     </blockquote><p>
10334    
10335     </p>
10336     <p>Where &lt;effect-system&gt; is the "SYSTEM" field,
10337     &lt;module&gt; the "MODULE" field and &lt;effect-name&gt;
10338     the "NAME" field as returned by the
10339     <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>
10340     command. The filename of argument &lt;module&gt; and the
10341     character string of argument &lt;effect-name&gt; may contain
10342     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
10343     </p>
10344     <p>The sampler will try to load the requested effect and to
10345     create an instance of it. To allow loading the same effect
10346     on a different machine, probably even running a completely
10347     different operating system (e.g. Linux vs. Windows), the
10348     sampler tries to match &lt;module&gt; "softly". That means
10349     it first tries to find an effect that exactly matches the
10350     given &lt;module&gt; argument. If there is no exact match,
10351     the sampler will try to lower the restrictions on matching
10352     the &lt;module&gt; argument more and more, e.g. by ignoring
10353     upper / lower case differences and by ignoring the path of
10354     the DLL filename and file extension. If there is still no
10355     match at the end, the sampler will try to ignore the
10356     &lt;module&gt; argument completely and as a last resort
10357     search for an effect that only matches the given
10358     &lt;effect-system&gt; and &lt;effect-name&gt; arguments.
10359     </p>
10360     <p>Possible Answers:
10361     </p>
10362     <p>
10363     </p>
10364     <blockquote class="text">
10365     <p>"OK[&lt;effect-instance&gt;]" -
10366     </p>
10367     <blockquote class="text">
10368     <p>in case the effect instance was
10369     successfully created, where
10370     &lt;effect-instance&gt; is the numerical ID
10371     of the new effect instance
10372     </p>
10373     </blockquote>
10374    
10375    
10376     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10377     </p>
10378     <blockquote class="text">
10379     <p>in case the effect instance was spawned
10380     successfully, but there are noteworthy
10381     issue(s) related, providing an appropriate
10382     warning code and warning message
10383     </p>
10384     </blockquote>
10385    
10386    
10387     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10388     </p>
10389     <blockquote class="text">
10390     <p>if the effect could not be instantiated
10391     </p>
10392     </blockquote>
10393    
10394    
10395     </blockquote><p>
10396    
10397     </p>
10398     <p>Examples:
10399     </p>
10400     <p>
10401     </p>
10402     <blockquote class="text">
10403     <p>C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'"
10404     </p>
10405     <p>S: "OK[0]"
10406     </p>
10407     </blockquote><p>
10408    
10409     </p>
10410     <a name="CREATE EFFECT_INSTANCE (non-portable)"></a><br /><hr />
10411     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10412     <a name="rfc.section.6.11.5"></a><h3>6.11.5.&nbsp;
10413     Creating an instance of an effect by its numerical ID</h3>
10414    
10415     <p>The front-end can spawn an instance of the desired
10416     effect by sending the following command:
10417     </p>
10418     <p>
10419     </p>
10420     <blockquote class="text">
10421     <p>CREATE EFFECT_INSTANCE &lt;effect-index&gt;
10422     </p>
10423     </blockquote><p>
10424    
10425     </p>
10426     <p>Where &lt;effect-index&gt; is the numerical ID of the
10427     effect as returned by the
10428     <a class='info' href='#LIST AVAILABLE_EFFECTS'>"LIST AVAILABLE_EFFECTS"<span> (</span><span class='info'>Get list of available effects</span><span>)</span></a>
10429     command.
10430     </p>
10431     <p>The sampler will try to load the requested effect and to
10432     create an instance of it.
10433     </p>
10434     <p>Note: Since the numerical ID of a certain effect can
10435     change at any time, you should not use this command in
10436     LSCP files to restore a certain effect at a later time! To
10437     store a sampler session including all its effects, use the
10438     <a class='info' href='#CREATE EFFECT_INSTANCE'>portable text-based
10439     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
10440     allows to restore a sampler session with all its effects
10441     also on other machines, possibly even running a completely
10442     different operating system (e.g. Linux vs. Windows), with
10443     different plugin directories or plugin DLL names.
10444     </p>
10445     <p>Possible Answers:
10446     </p>
10447     <p>
10448     </p>
10449     <blockquote class="text">
10450     <p>"OK[&lt;effect-instance&gt;]" -
10451     </p>
10452     <blockquote class="text">
10453     <p>in case the effect instance was
10454     successfully created, where
10455     &lt;effect-instance&gt; is the numerical ID
10456     of the new effect instance
10457     </p>
10458     </blockquote>
10459    
10460    
10461     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
10462     </p>
10463     <blockquote class="text">
10464     <p>in case the effect instance was spawned
10465     successfully, but there are noteworthy
10466     issue(s) related, providing an appropriate
10467     warning code and warning message
10468     </p>
10469     </blockquote>
10470    
10471    
10472     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10473     </p>
10474     <blockquote class="text">
10475     <p>if the effect could not be instantiated
10476     </p>
10477     </blockquote>
10478    
10479    
10480     </blockquote><p>
10481    
10482     </p>
10483     <p>Examples:
10484     </p>
10485     <p>
10486     </p>
10487     <blockquote class="text">
10488     <p>C: "CREATE EFFECT_INSTANCE 72"
10489     </p>
10490     <p>S: "OK[5]"
10491     </p>
10492     </blockquote><p>
10493    
10494     </p>
10495     <a name="DESTROY EFFECT_INSTANCE"></a><br /><hr />
10496     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10497     <a name="rfc.section.6.11.6"></a><h3>6.11.6.&nbsp;
10498     Destroy an effect instance</h3>
10499    
10500     <p>The front-end can destroy an unusued effect instance and
10501     thus freeing it from memory by sending the following command:
10502     </p>
10503     <p>
10504     </p>
10505     <blockquote class="text">
10506     <p>DESTROY EFFECT_INSTANCE &lt;effect-instance&gt;
10507     </p>
10508     </blockquote><p>
10509    
10510     </p>
10511     <p>Where &lt;effect-instance&gt; is the numerical ID of the
10512     effect instance as returned by the
10513     <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
10514     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10515     command.
10516     </p>
10517     <p>The effect instance can only be destroyed if it's not
10518     used in any part of the sampler's audio signal path anymore.
10519     If the effect instance is still in use somewhere, trying to
10520     destroy the effect instance will result in an error
10521     message.
10522     </p>
10523     <p>Possible Answers:
10524     </p>
10525     <p>
10526     </p>
10527     <blockquote class="text">
10528     <p>"OK" -
10529     </p>
10530     <blockquote class="text">
10531     <p>in case the effect instance was successfully destroyed
10532     </p>
10533     </blockquote>
10534    
10535    
10536     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10537     </p>
10538     <blockquote class="text">
10539     <p>in case it failed, providing an appropriate error code and
10540     error message
10541     </p>
10542     </blockquote>
10543    
10544    
10545     </blockquote><p>
10546    
10547     </p>
10548     <p>Examples:
10549     </p>
10550     <p>
10551     </p>
10552     <blockquote class="text">
10553     <p>C: "DESTROY EFFECT_INSTANCE 5"
10554     </p>
10555     <p>S: "OK"
10556     </p>
10557     </blockquote><p>
10558    
10559     </p>
10560     <a name="GET EFFECT_INSTANCES"></a><br /><hr />
10561     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10562     <a name="rfc.section.6.11.7"></a><h3>6.11.7.&nbsp;
10563     Retrieve amount of effect instances</h3>
10564    
10565     <p>The front-end can retrieve the current amount of effect
10566     instances by sending the following command:
10567     </p>
10568     <p>
10569     </p>
10570     <blockquote class="text">
10571     <p>GET EFFECT_INSTANCES
10572     </p>
10573     </blockquote><p>
10574    
10575     </p>
10576     <p>Possible Answers:
10577     </p>
10578     <p>
10579     </p>
10580     <blockquote class="text">
10581     <p>The sampler will answer by returning the current
10582     number of effect instances created and not yet
10583     destroyed in the current sampler session.
10584     </p>
10585     </blockquote><p>
10586    
10587     </p>
10588     <p>Examples:
10589     </p>
10590     <p>
10591     </p>
10592     <blockquote class="text">
10593     <p>C: "GET EFFECT_INSTANCES"
10594     </p>
10595     <p>S: "14"
10596     </p>
10597     </blockquote><p>
10598    
10599     </p>
10600     <a name="LIST EFFECT_INSTANCES"></a><br /><hr />
10601     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10602     <a name="rfc.section.6.11.8"></a><h3>6.11.8.&nbsp;
10603     Get list of effect instances</h3>
10604    
10605     <p>The front-end can retrieve the current list of effect
10606     instances by sending the following command:
10607     </p>
10608     <p>
10609     </p>
10610     <blockquote class="text">
10611     <p>LIST EFFECT_INSTANCES
10612     </p>
10613     </blockquote><p>
10614    
10615     </p>
10616     <p>Possible Answers:
10617     </p>
10618     <p>
10619     </p>
10620     <blockquote class="text">
10621     <p>The sampler will answer by returning a comma
10622     separated list with numerical IDs of effects
10623     instances.
10624    
10625     </p>
10626     </blockquote><p>
10627    
10628     </p>
10629     <p>Example:
10630     </p>
10631     <p>
10632     </p>
10633     <blockquote class="text">
10634     <p>C: "LIST EFFECT_INSTANCES"
10635     </p>
10636     <p>S: "9,11,14,15,16,17,25"
10637     </p>
10638     </blockquote><p>
10639    
10640     </p>
10641     <a name="GET EFFECT_INSTANCE INFO"></a><br /><hr />
10642     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10643     <a name="rfc.section.6.11.9"></a><h3>6.11.9.&nbsp;
10644     Retrieving current information about an effect instance</h3>
10645    
10646     <p>The front-end can ask for the current informations about
10647     a particular effect instance by sending the following command:
10648     </p>
10649     <p>
10650     </p>
10651     <blockquote class="text">
10652     <p>GET EFFECT_INSTANCE INFO &lt;effect-instance&gt;
10653     </p>
10654     </blockquote><p>
10655    
10656     </p>
10657     <p>Where &lt;effect-instance&gt; is the numerical ID of an
10658     effect instance as returned by the
10659     <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>
10660     or
10661     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10662     command.
10663     </p>
10664     <p>Possible Answers:
10665     </p>
10666     <p>
10667     </p>
10668     <blockquote class="text">
10669     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10670     Each answer line begins with the information
10671     category name, followed by a colon and then a space
10672     character &lt;SP&gt; and finally the info character
10673     string to that information category. At the
10674     moment the following categories are defined:
10675     </p>
10676     <p>
10677     </p>
10678     <blockquote class="text">
10679     <p>SYSTEM -
10680     </p>
10681     <blockquote class="text">
10682     <p>name of the effect plugin system
10683     the effect is based on
10684     (e.g. "LADSPA")
10685     </p>
10686     </blockquote>
10687    
10688    
10689     <p>MODULE -
10690     </p>
10691     <blockquote class="text">
10692     <p>module of the effect plugin
10693     system that contains this effect,
10694     the module is usually the
10695     dynamic-linked library (DLL)
10696     filename of the effect plugin,
10697     including full path (note that this
10698     filename may contain
10699     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10700     </p>
10701     </blockquote>
10702    
10703    
10704     <p>NAME -
10705     </p>
10706     <blockquote class="text">
10707     <p>character string defining the
10708     unique name of the effect within its
10709     module (note that the character
10710     string may contain
10711     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10712     </p>
10713     </blockquote>
10714    
10715    
10716     <p>DESCRIPTION -
10717     </p>
10718     <blockquote class="text">
10719     <p>human readable name of the
10720     effect, intended to be displayed in
10721     user interfaces (note that the
10722     character string may contain
10723     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10724     </p>
10725     </blockquote>
10726    
10727    
10728     <p>INPUT_CONTROLS -
10729     </p>
10730     <blockquote class="text">
10731     <p>amount of input controls the
10732     effect instance provides, to allow
10733     controlling the effect parameters in
10734     realtime
10735     </p>
10736     </blockquote>
10737    
10738    
10739     </blockquote>
10740    
10741    
10742     </blockquote><p>
10743    
10744     </p>
10745     <p>The mentioned fields above don't have to be in particular order.
10746     </p>
10747     <p>Example:
10748     </p>
10749     <p>
10750     </p>
10751     <blockquote class="text">
10752     <p>C: "GET EFFECT_INSTANCE INFO 3"
10753     </p>
10754     <p>S: "SYSTEM: LADSPA"
10755     </p>
10756     <p>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/mod_delay_1419.so"
10757     </p>
10758     <p>&nbsp;&nbsp;&nbsp;"NAME: modDelay"
10759     </p>
10760     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Modulatable delay"
10761     </p>
10762     <p>&nbsp;&nbsp;&nbsp;"INPUT_CONTROLS: 1"
10763     </p>
10764     <p>&nbsp;&nbsp;&nbsp;"."
10765     </p>
10766     </blockquote><p>
10767    
10768     </p>
10769     <a name="GET EFFECT_INSTANCE_INPUT_CONTROL INFO"></a><br /><hr />
10770     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10771     <a name="rfc.section.6.11.10"></a><h3>6.11.10.&nbsp;
10772     Retrieving information about an effect parameter</h3>
10773    
10774     <p>Effects typically provide a certain set of effect
10775     parameters which can be altered by the user in realtime
10776     (e.g. depth of a reverb effect, duration of a delay effect,
10777     dry / wet signal ratio). Those controllable effect parameters
10778     are called "input controls". The front-end can ask for the
10779     current informations of an effect instance's input control
10780     by sending the following command:
10781     </p>
10782     <p>
10783     </p>
10784     <blockquote class="text">
10785     <p>GET EFFECT_INSTANCE_INPUT_CONTROL INFO &lt;effect-instance&gt; &lt;input-control&gt;
10786     </p>
10787     </blockquote><p>
10788    
10789     </p>
10790     <p>Where &lt;effect-instance&gt; is the numerical ID of an
10791     effect instance as returned by the
10792     <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>
10793     or
10794     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10795     command and &lt;input-control&gt; is the index of the input
10796     control within the numerical bounds as returned by the
10797     "INPUT_CONTROLS" field of the
10798     <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>
10799     command.
10800     </p>
10801     <p>Possible Answers:
10802     </p>
10803     <p>
10804     </p>
10805     <blockquote class="text">
10806     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
10807     Each answer line begins with the information
10808     category name, followed by a colon and then a space
10809     character &lt;SP&gt; and finally the info character
10810     string to that information category. There are
10811     information categories which are always returned,
10812     independent of the respective effect parameter and
10813     there are optional information categories
10814     which are only shown for certain effect parameters.
10815     At the moment the following categories are defined:
10816     </p>
10817     <p>
10818     </p>
10819     <blockquote class="text">
10820     <p>DESCRIPTION -
10821     </p>
10822     <blockquote class="text">
10823     <p>(always returned)
10824     human readable name of the
10825     effect parameter, intended to be
10826     displayed in user interfaces (note
10827     that the character string may
10828     contain <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
10829     </p>
10830     </blockquote>
10831    
10832    
10833     <p>VALUE -
10834     </p>
10835     <blockquote class="text">
10836     <p>
10837     (always returned)
10838     current (optional dotted)
10839     floating point value of this effect
10840     parameter
10841     </p>
10842     </blockquote>
10843    
10844    
10845     <p>RANGE_MIN -
10846     </p>
10847     <blockquote class="text">
10848     <p>
10849     (optionally returned)
10850     minimum allowed value for this
10851     effect parameter
10852     </p>
10853     </blockquote>
10854    
10855    
10856     <p>RANGE_MAX -
10857     </p>
10858     <blockquote class="text">
10859     <p>
10860     (optionally returned)
10861     maximum allowed value for this
10862     effect parameter
10863     </p>
10864     </blockquote>
10865    
10866    
10867     <p>POSSIBILITIES -
10868     </p>
10869     <blockquote class="text">
10870     <p>
10871     (optionally returned)
10872     comma separated list of
10873     (optional dotted) floating point
10874     numbers, reflecting the exact set of
10875     possible values for this effect
10876     parameter
10877     </p>
10878     </blockquote>
10879    
10880    
10881     <p>DEFAULT -
10882     </p>
10883     <blockquote class="text">
10884     <p>
10885     (optionally returned)
10886     default value of this effect
10887     parameter
10888     </p>
10889     </blockquote>
10890    
10891    
10892     </blockquote>
10893    
10894    
10895     </blockquote><p>
10896    
10897     </p>
10898     <p>The mentioned fields above don't have to be in particular order.
10899     </p>
10900     <p>Example:
10901     </p>
10902     <p>
10903     </p>
10904     <blockquote class="text">
10905     <p>C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0"
10906     </p>
10907     <p>S: "SYSTEM: LADSPA"
10908     </p>
10909     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Base delay (s)"
10910     </p>
10911     <p>&nbsp;&nbsp;&nbsp;"VALUE: 0.500"
10912     </p>
10913     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 0.000"
10914     </p>
10915     <p>&nbsp;&nbsp;&nbsp;"."
10916     </p>
10917     </blockquote><p>
10918    
10919     </p>
10920     <a name="SET EFFECT_INSTANCE_INPUT_CONTROL VALUE"></a><br /><hr />
10921     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10922     <a name="rfc.section.6.11.11"></a><h3>6.11.11.&nbsp;
10923     Altering an effect parameter</h3>
10924    
10925     <p>The front-end can alter the current value of an effect
10926     parameter by sending the following command:
10927     </p>
10928     <p>
10929     </p>
10930     <blockquote class="text">
10931     <p>SET EFFECT_INSTANCE_INPUT_CONTROL VALUE &lt;effect-instance&gt; &lt;input-control&gt; &lt;value&gt;
10932     </p>
10933     </blockquote><p>
10934    
10935     </p>
10936     <p>Where &lt;effect-instance&gt; is the numerical ID of the
10937     effect instance as returned by the
10938     <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
10939     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
10940     command, &lt;input-control&gt; is the index of the input
10941     control within the numerical bounds as returned by the
10942     "INPUT_CONTROLS" field of the
10943     <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>
10944     command and &lt;value&gt; is the new (optional dotted)
10945     floating point value for this effect parameter.
10946     </p>
10947     <p>Possible Answers:
10948     </p>
10949     <p>
10950     </p>
10951     <blockquote class="text">
10952     <p>"OK" -
10953     </p>
10954     <blockquote class="text">
10955     <p>in case the effect was altered successfully
10956     </p>
10957     </blockquote>
10958    
10959    
10960     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
10961     </p>
10962     <blockquote class="text">
10963     <p>in case it failed, providing an appropriate error code and
10964     error message
10965     </p>
10966     </blockquote>
10967    
10968    
10969     </blockquote><p>
10970    
10971     </p>
10972     <p>Examples:
10973     </p>
10974     <p>
10975     </p>
10976     <blockquote class="text">
10977     <p>C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5"
10978     </p>
10979     <p>S: "OK"
10980     </p>
10981     </blockquote><p>
10982    
10983     </p>
10984     <a name="GET SEND_EFFECT_CHAINS"></a><br /><hr />
10985     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10986     <a name="rfc.section.6.11.12"></a><h3>6.11.12.&nbsp;
10987     Retrieve amount of send effect chains</h3>
10988    
10989     <p>The front-end can retrieve the current amount of send
10990     effect chains of an audio output device by sending the
10991     following command:
10992     </p>
10993     <p>
10994     </p>
10995     <blockquote class="text">
10996     <p>GET SEND_EFFECT_CHAINS &lt;audio-device&gt;
10997     </p>
10998     </blockquote><p>
10999    
11000     </p>
11001     <p>Where &lt;audio-device&gt; should be replaced by the
11002     numerical ID of the audio output device as given by the
11003     <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>
11004     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>
11005     command.
11006     </p>
11007     <p>Possible Answers:
11008     </p>
11009     <p>
11010     </p>
11011     <blockquote class="text">
11012     <p>The sampler will answer by returning the current
11013     number of send effect chains of the supplied audio
11014     output device.
11015     </p>
11016     </blockquote><p>
11017    
11018     </p>
11019     <p>Examples:
11020     </p>
11021     <p>
11022     </p>
11023     <blockquote class="text">
11024     <p>C: "GET SEND_EFFECT_CHAINS 0"
11025     </p>
11026     <p>S: "4"
11027     </p>
11028     </blockquote><p>
11029    
11030     </p>
11031     <a name="LIST SEND_EFFECT_CHAINS"></a><br /><hr />
11032     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11033     <a name="rfc.section.6.11.13"></a><h3>6.11.13.&nbsp;
11034     Retrieve list of send effect chains</h3>
11035    
11036     <p>The front-end can retrieve the current list of send
11037     effect chains of an audio output device by sending the
11038     following command:
11039     </p>
11040     <p>
11041     </p>
11042     <blockquote class="text">
11043     <p>LIST SEND_EFFECT_CHAINS &lt;audio-device&gt;
11044     </p>
11045     </blockquote><p>
11046    
11047     </p>
11048     <p>Where &lt;audio-device&gt; should be replaced by the
11049     numerical ID of the audio output device as given by the
11050     <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>
11051     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>
11052     command.
11053     </p>
11054     <p>Possible Answers:
11055     </p>
11056     <p>
11057     </p>
11058     <blockquote class="text">
11059     <p>The sampler will answer by returning a comma
11060     separated list with numerical IDs of send effect
11061     chains of the supplied audio output device.
11062    
11063     </p>
11064     </blockquote><p>
11065    
11066     </p>
11067     <p>Examples:
11068     </p>
11069     <p>
11070     </p>
11071     <blockquote class="text">
11072     <p>C: "LIST SEND_EFFECT_CHAINS 0"
11073     </p>
11074     <p>S: "3,4,7"
11075     </p>
11076     </blockquote><p>
11077    
11078     </p>
11079     <a name="ADD SEND_EFFECT_CHAIN"></a><br /><hr />
11080     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11081     <a name="rfc.section.6.11.14"></a><h3>6.11.14.&nbsp;
11082     Add send effect chain</h3>
11083    
11084     <p>The front-end can add a send effect chain by sending the
11085     following command:
11086     </p>
11087     <p>
11088     </p>
11089     <blockquote class="text">
11090     <p>ADD SEND_EFFECT_CHAIN &lt;audio-device&gt;
11091     </p>
11092     </blockquote><p>
11093    
11094     </p>
11095     <p>Where &lt;audio-device&gt; should be replaced by the
11096     numerical ID of the audio output device as given by the
11097     <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>
11098     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>
11099     command.
11100     </p>
11101     <p>Possible Answers:
11102     </p>
11103     <p>
11104     </p>
11105     <blockquote class="text">
11106     <p>"OK[&lt;effect-chain&gt;]" -
11107     </p>
11108     <blockquote class="text">
11109     <p>in case the send effect chain was
11110     added successfully, where
11111     &lt;effect-chain&gt; is the numerical ID
11112     of the new send effect chain
11113     </p>
11114     </blockquote>
11115    
11116    
11117     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11118     </p>
11119     <blockquote class="text">
11120     <p>if the send effect chain could not be added
11121     </p>
11122     </blockquote>
11123    
11124    
11125     </blockquote><p>
11126    
11127     </p>
11128     <p>Examples:
11129     </p>
11130     <p>
11131     </p>
11132     <blockquote class="text">
11133     <p>C: "ADD SEND_EFFECT_CHAIN 0"
11134     </p>
11135     <p>S: "OK[2]"
11136     </p>
11137     </blockquote><p>
11138    
11139     </p>
11140     <a name="REMOVE SEND_EFFECT_CHAIN"></a><br /><hr />
11141     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11142     <a name="rfc.section.6.11.15"></a><h3>6.11.15.&nbsp;
11143     Remove send effect chain</h3>
11144    
11145     <p>The front-end can remove a send effect chain by sending
11146     the following command:
11147     </p>
11148     <p>
11149     </p>
11150     <blockquote class="text">
11151     <p>REMOVE SEND_EFFECT_CHAIN &lt;audio-device&gt; &lt;effect-chain&gt;
11152     </p>
11153     </blockquote><p>
11154    
11155     </p>
11156     <p>Where &lt;audio-device&gt; should be replaced by the
11157     numerical ID of the audio output device as given by the
11158     <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>
11159     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>
11160     command and &lt;effect-chain&gt; by the numerical ID as
11161     returned by the
11162     <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>
11163     or
11164     <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>
11165     command.
11166     </p>
11167     <p>Possible Answers:
11168     </p>
11169     <p>
11170     </p>
11171     <blockquote class="text">
11172     <p>"OK" -
11173     </p>
11174     <blockquote class="text">
11175     <p>in case the send effect chain was
11176     removed successfully
11177     </p>
11178     </blockquote>
11179    
11180    
11181     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11182     </p>
11183     <blockquote class="text">
11184     <p>if the send effect chain could not be removed
11185     </p>
11186     </blockquote>
11187    
11188    
11189     </blockquote><p>
11190    
11191     </p>
11192     <p>Examples:
11193     </p>
11194     <p>
11195     </p>
11196     <blockquote class="text">
11197     <p>C: "REMOVE SEND_EFFECT_CHAIN 0 2"
11198     </p>
11199     <p>S: "OK"
11200     </p>
11201     </blockquote><p>
11202    
11203     </p>
11204     <a name="GET SEND_EFFECT_CHAIN INFO"></a><br /><hr />
11205     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11206     <a name="rfc.section.6.11.16"></a><h3>6.11.16.&nbsp;
11207     Retrieving information about a send effect chain</h3>
11208    
11209     <p>The front-end can ask for informations of a send effect
11210     chain by sending the following command:
11211     </p>
11212     <p>
11213     </p>
11214     <blockquote class="text">
11215     <p>GET SEND_EFFECT_CHAIN INFO &lt;audio-device&gt; &lt;effect-chain&gt;
11216     </p>
11217     </blockquote><p>
11218    
11219     </p>
11220     <p>Where &lt;audio-device&gt; should be replaced by the
11221     numerical ID of the audio output device as given by the
11222     <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>
11223     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>
11224     command and &lt;effect-chain&gt; by the numerical ID as
11225     returned by the
11226     <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>
11227     or
11228     <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>
11229     command.
11230     </p>
11231     <p>Possible Answers:
11232     </p>
11233     <p>
11234     </p>
11235     <blockquote class="text">
11236     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
11237     Each answer line begins with the information
11238     category name, followed by a colon and then a space
11239     character &lt;SP&gt; and finally the info character
11240     string to that information category.
11241     At the moment the following categories are defined:
11242     </p>
11243     <p>
11244     </p>
11245     <blockquote class="text">
11246     <p>EFFECT_COUNT -
11247     </p>
11248     <blockquote class="text">
11249     <p>amount of effects in this send
11250     effect chain
11251     </p>
11252     </blockquote>
11253    
11254    
11255     <p>EFFECT_SEQUENCE -
11256     </p>
11257     <blockquote class="text">
11258     <p>comma separated list of the
11259     numerical IDs of the effect
11260     instances in this send effect chain,
11261     in the order as they are procssed in
11262     the effect chain
11263     </p>
11264     </blockquote>
11265    
11266    
11267     </blockquote>
11268    
11269    
11270     </blockquote><p>
11271    
11272     </p>
11273     <p>The mentioned fields above don't have to be in particular order.
11274     </p>
11275     <p>Example:
11276     </p>
11277     <p>
11278     </p>
11279     <blockquote class="text">
11280     <p>C: "GET SEND_EFFECT_CHAIN INFO 0 2"
11281     </p>
11282     <p>S: "EFFECT_COUNT: 3"
11283     </p>
11284     <p>&nbsp;&nbsp;&nbsp;"EFFECT_SEQUENCE: 31,4,7"
11285     </p>
11286     <p>&nbsp;&nbsp;&nbsp;"."
11287     </p>
11288     </blockquote><p>
11289    
11290     </p>
11291     <a name="APPEND SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11292     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11293     <a name="rfc.section.6.11.17"></a><h3>6.11.17.&nbsp;
11294     Append effect instance to a send effect chain</h3>
11295    
11296     <p>The front-end can add an unused effect instance to the
11297     end of a send effect chain by sending the following command:
11298     </p>
11299     <p>
11300     </p>
11301     <blockquote class="text">
11302     <p>APPEND SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;effect-instance&gt;
11303     </p>
11304     </blockquote><p>
11305    
11306     </p>
11307     <p>Where &lt;audio-device&gt; should be replaced by the
11308     numerical ID of the audio output device as given by the
11309     <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>
11310     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>
11311     command and &lt;effect-chain&gt; by the numerical ID as
11312     returned by the
11313     <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>
11314     or
11315     <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>
11316     command and &lt;effect-instance&gt; as returned by the
11317     <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
11318     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11319     command.
11320     </p>
11321     <p>Only unused effect instances can be added to the effect
11322     chain. Trying to add an effect instance which is already in
11323     use somewhere in the audio signal path of the sampler will
11324     result in an error.
11325     </p>
11326     <p>Possible Answers:
11327     </p>
11328     <p>
11329     </p>
11330     <blockquote class="text">
11331     <p>"OK" -
11332     </p>
11333     <blockquote class="text">
11334     <p>in case the effect instance was
11335     added successfully to the chain
11336     </p>
11337     </blockquote>
11338    
11339    
11340     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11341     </p>
11342     <blockquote class="text">
11343     <p>if the effect instance could not be added
11344     </p>
11345     </blockquote>
11346    
11347    
11348     </blockquote><p>
11349    
11350     </p>
11351     <p>Examples:
11352     </p>
11353     <p>
11354     </p>
11355     <blockquote class="text">
11356     <p>C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38"
11357     </p>
11358     <p>S: "OK"
11359     </p>
11360     </blockquote><p>
11361    
11362     </p>
11363     <a name="INSERT SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11364     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11365     <a name="rfc.section.6.11.18"></a><h3>6.11.18.&nbsp;
11366     Insert effect instance to a send effect chain</h3>
11367    
11368     <p>The front-end can add an unused effect instance to a
11369     certain position of a send effect chain by sending the
11370     following command:
11371     </p>
11372     <p>
11373     </p>
11374     <blockquote class="text">
11375     <p>INSERT SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt; &lt;effect-instance&gt;
11376     </p>
11377     </blockquote><p>
11378    
11379     </p>
11380     <p>Where &lt;audio-device&gt; should be replaced by the
11381     numerical ID of the audio output device as given by the
11382     <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>
11383     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>
11384     command, &lt;effect-chain&gt; by the numerical ID as
11385     returned by the
11386     <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>
11387     or
11388     <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>
11389     command, &lt;effect-instance&gt; as returned by the
11390     <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
11391     <a class='info' href='#LIST EFFECT_INSTANCES'>"LIST EFFECT_INSTANCES"<span> (</span><span class='info'>Get list of effect instances</span><span>)</span></a>
11392     command and &lt;chain-pos&gt; the exact position of the
11393     effect chain where the supplied effect shall be inserted
11394     to.
11395     </p>
11396     <p>Only unused effect instances can be added to the effect
11397     chain. Trying to add an effect instance which is already in
11398     use somewhere in the audio signal path of the sampler will
11399     result in an error.
11400     </p>
11401     <p>Possible Answers:
11402     </p>
11403     <p>
11404     </p>
11405     <blockquote class="text">
11406     <p>"OK" -
11407     </p>
11408     <blockquote class="text">
11409     <p>in case the effect instance was
11410     added successfully to the chain
11411     </p>
11412     </blockquote>
11413    
11414    
11415     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11416     </p>
11417     <blockquote class="text">
11418     <p>if the effect instance could not be added
11419     </p>
11420     </blockquote>
11421    
11422    
11423     </blockquote><p>
11424    
11425     </p>
11426     <p>Examples:
11427     </p>
11428     <p>
11429     </p>
11430     <blockquote class="text">
11431     <p>C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38"
11432     </p>
11433     <p>S: "OK"
11434     </p>
11435     </blockquote><p>
11436    
11437     </p>
11438     <a name="REMOVE SEND_EFFECT_CHAIN EFFECT"></a><br /><hr />
11439     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11440     <a name="rfc.section.6.11.19"></a><h3>6.11.19.&nbsp;
11441     Remove effect instance from send effect chain</h3>
11442    
11443     <p>The front-end can remove an effect instance from a
11444     certain position of a send effect chain by sending the
11445     following command:
11446     </p>
11447     <p>
11448     </p>
11449     <blockquote class="text">
11450     <p>REMOVE SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;
11451     </p>
11452     </blockquote><p>
11453    
11454     </p>
11455     <p>Where &lt;audio-device&gt; should be replaced by the
11456     numerical ID of the audio output device as given by the
11457     <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>
11458     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>
11459     command, &lt;effect-chain&gt; by the numerical ID as
11460     returned by the
11461     <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>
11462     or
11463     <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>
11464     command and &lt;chain-pos&gt; the exact position of the
11465     effect instance to be removed from the effect chain.
11466     </p>
11467     <p>Possible Answers:
11468     </p>
11469     <p>
11470     </p>
11471     <blockquote class="text">
11472     <p>"OK" -
11473     </p>
11474     <blockquote class="text">
11475     <p>in case the effect instance was
11476     removed successfully
11477     </p>
11478     </blockquote>
11479    
11480    
11481     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
11482     </p>
11483     <blockquote class="text">
11484     <p>if the effect instance could not be removed
11485     </p>
11486     </blockquote>
11487    
11488    
11489     </blockquote><p>
11490    
11491     </p>
11492     <p>Examples:
11493     </p>
11494     <p>
11495     </p>
11496     <blockquote class="text">
11497     <p>C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4"
11498     </p>
11499     <p>S: "OK"
11500     </p>
11501     </blockquote><p>
11502    
11503     </p>
11504 senoner 542 <a name="command_syntax"></a><br /><hr />
11505 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11506     <a name="rfc.section.7"></a><h3>7.&nbsp;
11507     Command Syntax</h3>
11508 senoner 542
11509 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>
11510     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>)
11511 schoenebeck 575 where applicable.
11512 schoenebeck 940
11513 senoner 542 </p>
11514 schoenebeck 575 <p>input =
11515     </p>
11516     <blockquote class="text">
11517     <p>line LF
11518 schoenebeck 940
11519 schoenebeck 575 </p>
11520     <p>/ line CR LF
11521 schoenebeck 940
11522 schoenebeck 575 </p>
11523 schoenebeck 708 </blockquote><p>
11524 schoenebeck 575
11525 schoenebeck 708 </p>
11526 schoenebeck 575 <p>line =
11527     </p>
11528     <blockquote class="text">
11529     <p>/* epsilon (empty line ignored) */
11530 schoenebeck 940
11531 schoenebeck 575 </p>
11532     <p>/ comment
11533 schoenebeck 940
11534 schoenebeck 575 </p>
11535     <p>/ command
11536 schoenebeck 940
11537 schoenebeck 575 </p>
11538     <p>/ error
11539 schoenebeck 940
11540 schoenebeck 575 </p>
11541 schoenebeck 708 </blockquote><p>
11542 schoenebeck 575
11543 schoenebeck 708 </p>
11544 schoenebeck 575 <p>comment =
11545     </p>
11546     <blockquote class="text">
11547     <p>'#'
11548 schoenebeck 940
11549 schoenebeck 575 </p>
11550     <p>/ comment '#'
11551 schoenebeck 940
11552 schoenebeck 575 </p>
11553     <p>/ comment SP
11554 schoenebeck 940
11555 schoenebeck 575 </p>
11556     <p>/ comment number
11557 schoenebeck 940
11558 schoenebeck 575 </p>
11559     <p>/ comment string
11560 schoenebeck 940
11561 schoenebeck 575 </p>
11562 schoenebeck 708 </blockquote><p>
11563 schoenebeck 575
11564 schoenebeck 708 </p>
11565 schoenebeck 575 <p>command =
11566     </p>
11567     <blockquote class="text">
11568 schoenebeck 974 <p>ADD SP add_instruction
11569 schoenebeck 940
11570 schoenebeck 575 </p>
11571 schoenebeck 945 <p>/ MAP SP map_instruction
11572    
11573     </p>
11574     <p>/ UNMAP SP unmap_instruction
11575    
11576     </p>
11577 schoenebeck 575 <p>/ GET SP get_instruction
11578 schoenebeck 940
11579 schoenebeck 575 </p>
11580     <p>/ CREATE SP create_instruction
11581 schoenebeck 940
11582 schoenebeck 575 </p>
11583     <p>/ DESTROY SP destroy_instruction
11584 schoenebeck 940
11585 schoenebeck 575 </p>
11586     <p>/ LIST SP list_instruction
11587 schoenebeck 940
11588 schoenebeck 575 </p>
11589     <p>/ LOAD SP load_instruction
11590 schoenebeck 940
11591 schoenebeck 575 </p>
11592 schoenebeck 945 <p>/ REMOVE SP remove_instruction
11593 schoenebeck 940
11594 schoenebeck 575 </p>
11595     <p>/ SET SP set_instruction
11596 schoenebeck 940
11597 schoenebeck 575 </p>
11598     <p>/ SUBSCRIBE SP subscribe_event
11599 schoenebeck 940
11600 schoenebeck 575 </p>
11601     <p>/ UNSUBSCRIBE SP unsubscribe_event
11602 schoenebeck 940
11603 schoenebeck 575 </p>
11604 schoenebeck 945 <p>/ RESET SP reset_instruction
11605 schoenebeck 940
11606 schoenebeck 575 </p>
11607 schoenebeck 945 <p>/ CLEAR SP clear_instruction
11608    
11609     </p>
11610 iliev 1189 <p>/ FIND SP find_instruction
11611    
11612     </p>
11613 iliev 1162 <p>/ MOVE SP move_instruction
11614    
11615     </p>
11616 iliev 1189 <p>/ COPY SP copy_instruction
11617    
11618     </p>
11619 schoenebeck 1251 <p>/ EDIT SP edit_instruction
11620    
11621     </p>
11622 schoenebeck 1363 <p>/ FORMAT SP format_instruction
11623 schoenebeck 1801
11624 iliev 1773 </p>
11625 schoenebeck 1801 <p>/ SEND SP send_instruction
11626 schoenebeck 1363
11627     </p>
11628 schoenebeck 2139 <p>/ APPEND SP append_instruction
11629    
11630     </p>
11631     <p>/ INSERT SP insert_instruction
11632    
11633     </p>
11634 schoenebeck 575 <p>/ RESET
11635 schoenebeck 940
11636 schoenebeck 575 </p>
11637     <p>/ QUIT
11638 schoenebeck 940
11639 schoenebeck 575 </p>
11640 schoenebeck 708 </blockquote><p>
11641 schoenebeck 575
11642 schoenebeck 708 </p>
11643 schoenebeck 974 <p>add_instruction =
11644     </p>
11645     <blockquote class="text">
11646     <p>CHANNEL
11647    
11648     </p>
11649 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11650 iliev 1162
11651     </p>
11652 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
11653 iliev 1162
11654     </p>
11655 schoenebeck 1801 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11656    
11657     </p>
11658 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
11659 iliev 1162
11660     </p>
11661 schoenebeck 1801 <p>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
11662    
11663     </p>
11664 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
11665 iliev 1201
11666     </p>
11667 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
11668 iliev 1201
11669     </p>
11670 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename
11671 iliev 1162
11672     </p>
11673 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
11674 iliev 1162
11675     </p>
11676 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP
11677    
11678     </p>
11679     <p>/ MIDI_INSTRUMENT_MAP SP map_name
11680    
11681     </p>
11682 schoenebeck 2139 <p>/ SEND_EFFECT_CHAIN SP device_index
11683    
11684     </p>
11685 schoenebeck 974 </blockquote><p>
11686    
11687     </p>
11688 schoenebeck 575 <p>subscribe_event =
11689     </p>
11690     <blockquote class="text">
11691 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
11692 schoenebeck 940
11693 schoenebeck 575 </p>
11694 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
11695    
11696     </p>
11697     <p>/ MIDI_INPUT_DEVICE_COUNT
11698    
11699     </p>
11700     <p>/ MIDI_INPUT_DEVICE_INFO
11701    
11702     </p>
11703     <p>/ CHANNEL_COUNT
11704    
11705     </p>
11706 schoenebeck 1685 <p>/ CHANNEL_MIDI
11707    
11708     </p>
11709 schoenebeck 1696 <p>/ DEVICE_MIDI
11710    
11711     </p>
11712 schoenebeck 575 <p>/ VOICE_COUNT
11713 schoenebeck 940
11714 schoenebeck 575 </p>
11715     <p>/ STREAM_COUNT
11716 schoenebeck 940
11717 schoenebeck 575 </p>
11718     <p>/ BUFFER_FILL
11719 schoenebeck 940
11720 schoenebeck 575 </p>
11721     <p>/ CHANNEL_INFO
11722 schoenebeck 940
11723 schoenebeck 575 </p>
11724 iliev 1110 <p>/ FX_SEND_COUNT
11725    
11726     </p>
11727     <p>/ FX_SEND_INFO
11728    
11729     </p>
11730 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
11731    
11732     </p>
11733     <p>/ MIDI_INSTRUMENT_MAP_INFO
11734    
11735     </p>
11736     <p>/ MIDI_INSTRUMENT_COUNT
11737    
11738     </p>
11739     <p>/ MIDI_INSTRUMENT_INFO
11740    
11741     </p>
11742 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11743    
11744     </p>
11745     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11746    
11747     </p>
11748     <p>/ DB_INSTRUMENT_COUNT
11749    
11750     </p>
11751     <p>/ DB_INSTRUMENT_INFO
11752    
11753     </p>
11754 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
11755    
11756     </p>
11757 schoenebeck 575 <p>/ MISCELLANEOUS
11758 schoenebeck 940
11759 schoenebeck 575 </p>
11760 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
11761    
11762     </p>
11763 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
11764    
11765     </p>
11766 iliev 1110 <p>/ GLOBAL_INFO
11767    
11768     </p>
11769 schoenebeck 708 </blockquote><p>
11770 schoenebeck 575
11771 schoenebeck 708 </p>
11772 schoenebeck 575 <p>unsubscribe_event =
11773     </p>
11774     <blockquote class="text">
11775 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
11776 schoenebeck 940
11777 schoenebeck 575 </p>
11778 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
11779    
11780     </p>
11781     <p>/ MIDI_INPUT_DEVICE_COUNT
11782    
11783     </p>
11784     <p>/ MIDI_INPUT_DEVICE_INFO
11785    
11786     </p>
11787     <p>/ CHANNEL_COUNT
11788    
11789     </p>
11790 schoenebeck 1685 <p>/ CHANNEL_MIDI
11791    
11792     </p>
11793 schoenebeck 1696 <p>/ DEVICE_MIDI
11794    
11795     </p>
11796 schoenebeck 575 <p>/ VOICE_COUNT
11797 schoenebeck 940
11798 schoenebeck 575 </p>
11799     <p>/ STREAM_COUNT
11800 schoenebeck 940
11801 schoenebeck 575 </p>
11802     <p>/ BUFFER_FILL
11803 schoenebeck 940
11804 schoenebeck 575 </p>
11805     <p>/ CHANNEL_INFO
11806 schoenebeck 940
11807 schoenebeck 575 </p>
11808 iliev 1110 <p>/ FX_SEND_COUNT
11809    
11810     </p>
11811     <p>/ FX_SEND_INFO
11812    
11813     </p>
11814 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
11815    
11816     </p>
11817     <p>/ MIDI_INSTRUMENT_MAP_INFO
11818    
11819     </p>
11820     <p>/ MIDI_INSTRUMENT_COUNT
11821    
11822     </p>
11823     <p>/ MIDI_INSTRUMENT_INFO
11824    
11825     </p>
11826 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
11827    
11828     </p>
11829     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
11830    
11831     </p>
11832     <p>/ DB_INSTRUMENT_COUNT
11833    
11834     </p>
11835     <p>/ DB_INSTRUMENT_INFO
11836    
11837     </p>
11838 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
11839    
11840     </p>
11841 schoenebeck 575 <p>/ MISCELLANEOUS
11842 schoenebeck 940
11843 schoenebeck 575 </p>
11844 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
11845    
11846     </p>
11847 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
11848    
11849     </p>
11850 iliev 1110 <p>/ GLOBAL_INFO
11851    
11852     </p>
11853 schoenebeck 708 </blockquote><p>
11854 schoenebeck 575
11855 schoenebeck 708 </p>
11856 schoenebeck 945 <p>map_instruction =
11857     </p>
11858     <blockquote class="text">
11859 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
11860 schoenebeck 945
11861     </p>
11862 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
11863 schoenebeck 945
11864     </p>
11865 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
11866 schoenebeck 945
11867     </p>
11868 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
11869 schoenebeck 945
11870     </p>
11871     </blockquote><p>
11872    
11873     </p>
11874     <p>unmap_instruction =
11875     </p>
11876     <blockquote class="text">
11877 schoenebeck 974 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
11878 schoenebeck 945
11879     </p>
11880     </blockquote><p>
11881    
11882     </p>
11883     <p>remove_instruction =
11884     </p>
11885     <blockquote class="text">
11886     <p>CHANNEL SP sampler_channel
11887    
11888     </p>
11889 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
11890    
11891     </p>
11892     <p>/ MIDI_INSTRUMENT_MAP SP ALL
11893    
11894     </p>
11895 schoenebeck 2139 <p>/ SEND_EFFECT_CHAIN SP device_index SP effect_chain
11896    
11897     </p>
11898     <p>/ SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos
11899    
11900     </p>
11901     <p>/ FX_SEND SP SEND_EFFECT SP sampler_channel SP fx_send_id
11902    
11903     </p>
11904 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
11905 iliev 1162
11906     </p>
11907 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
11908 iliev 1162
11909     </p>
11910 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path
11911 iliev 1162
11912     </p>
11913 schoenebeck 945 </blockquote><p>
11914    
11915     </p>
11916 schoenebeck 575 <p>get_instruction =
11917     </p>
11918     <blockquote class="text">
11919     <p>AVAILABLE_ENGINES
11920 schoenebeck 940
11921 schoenebeck 575 </p>
11922 schoenebeck 2139 <p>/ AVAILABLE_EFFECTS
11923    
11924     </p>
11925     <p>/ EFFECT_INSTANCES
11926    
11927     </p>
11928     <p>/ EFFECT SP INFO SP effect_index
11929    
11930     </p>
11931     <p>/ EFFECT_INSTANCE SP INFO SP effect_instance
11932    
11933     </p>
11934     <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP INFO SP effect_instance SP input_control
11935    
11936     </p>
11937     <p>/ SEND_EFFECT_CHAINS SP device_index
11938    
11939     </p>
11940     <p>/ SEND_EFFECT_CHAIN SP INFO SP device_index SP effect_chain
11941    
11942     </p>
11943 schoenebeck 575 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
11944 schoenebeck 940
11945 schoenebeck 575 </p>
11946     <p>/ MIDI_INPUT_DRIVER SP INFO SP string
11947 schoenebeck 940
11948 schoenebeck 575 </p>
11949     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
11950 schoenebeck 940
11951 schoenebeck 575 </p>
11952     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
11953 schoenebeck 940
11954 schoenebeck 575 </p>
11955     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
11956 schoenebeck 940
11957 schoenebeck 575 </p>
11958     <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
11959 schoenebeck 940
11960 schoenebeck 575 </p>
11961     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
11962 schoenebeck 940
11963 schoenebeck 575 </p>
11964     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
11965 schoenebeck 940
11966 schoenebeck 575 </p>
11967     <p>/ AUDIO_OUTPUT_DEVICES
11968 schoenebeck 940
11969 schoenebeck 575 </p>
11970     <p>/ MIDI_INPUT_DEVICES
11971 schoenebeck 940
11972 schoenebeck 575 </p>
11973     <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
11974 schoenebeck 940
11975 schoenebeck 575 </p>
11976     <p>/ MIDI_INPUT_DEVICE SP INFO SP number
11977 schoenebeck 940
11978 schoenebeck 575 </p>
11979     <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
11980 schoenebeck 940
11981 schoenebeck 575 </p>
11982     <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
11983 schoenebeck 940
11984 schoenebeck 575 </p>
11985     <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
11986 schoenebeck 940
11987 schoenebeck 575 </p>
11988     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
11989 schoenebeck 940
11990 schoenebeck 575 </p>
11991     <p>/ CHANNELS
11992 schoenebeck 940
11993 schoenebeck 575 </p>
11994     <p>/ CHANNEL SP INFO SP sampler_channel
11995 schoenebeck 940
11996 schoenebeck 575 </p>
11997     <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
11998 schoenebeck 940
11999 schoenebeck 575 </p>
12000     <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
12001 schoenebeck 940
12002 schoenebeck 575 </p>
12003     <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
12004 schoenebeck 940
12005 schoenebeck 575 </p>
12006     <p>/ ENGINE SP INFO SP engine_name
12007 schoenebeck 940
12008 schoenebeck 575 </p>
12009     <p>/ SERVER SP INFO
12010 schoenebeck 940
12011 schoenebeck 575 </p>
12012 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
12013    
12014     </p>
12015 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
12016    
12017     </p>
12018     <p>/ TOTAL_VOICE_COUNT_MAX
12019    
12020     </p>
12021 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
12022 schoenebeck 945
12023     </p>
12024 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
12025 schoenebeck 945
12026     </p>
12027 schoenebeck 974 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
12028    
12029     </p>
12030     <p>/ MIDI_INSTRUMENT_MAPS
12031    
12032     </p>
12033     <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
12034    
12035     </p>
12036 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
12037    
12038     </p>
12039     <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
12040    
12041     </p>
12042 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12043 iliev 1189
12044     </p>
12045 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12046 iliev 1162
12047     </p>
12048 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
12049 iliev 1162
12050     </p>
12051 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12052 iliev 1189
12053     </p>
12054 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
12055 iliev 1162
12056     </p>
12057 schoenebeck 1363 <p>/ DB_INSTRUMENT SP INFO SP db_path
12058 iliev 1162
12059     </p>
12060 iliev 1201 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
12061    
12062     </p>
12063 schoenebeck 1006 <p>/ VOLUME
12064    
12065     </p>
12066 schoenebeck 1801 <p>/ VOICES
12067    
12068     </p>
12069     <p>/ STREAMS
12070    
12071     </p>
12072 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
12073    
12074     </p>
12075     <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
12076    
12077     </p>
12078 schoenebeck 708 </blockquote><p>
12079 schoenebeck 575
12080 schoenebeck 708 </p>
12081 schoenebeck 575 <p>set_instruction =
12082     </p>
12083     <blockquote class="text">
12084     <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12085 schoenebeck 940
12086 schoenebeck 575 </p>
12087     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
12088 schoenebeck 940
12089 schoenebeck 575 </p>
12090     <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
12091 schoenebeck 940
12092 schoenebeck 575 </p>
12093 schoenebeck 1363 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
12094    
12095     </p>
12096 schoenebeck 575 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
12097 schoenebeck 940
12098 schoenebeck 575 </p>
12099 schoenebeck 2139 <p>/ EFFECT_INSTANCE_INPUT_CONTROL SP VALUE SP effect_instance SP input_control SP control_value
12100    
12101     </p>
12102 schoenebeck 575 <p>/ CHANNEL SP set_chan_instruction
12103 schoenebeck 940
12104 schoenebeck 575 </p>
12105 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
12106    
12107     </p>
12108 iliev 1137 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
12109    
12110     </p>
12111 schoenebeck 1002 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
12112    
12113     </p>
12114 schoenebeck 1028 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
12115    
12116     </p>
12117     <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
12118    
12119     </p>
12120 schoenebeck 2139 <p>/ FX_SEND SP SEND_EFFECT SP sampler_channel SP fx_send_id SP effect_chain SP chain_pos
12121    
12122     </p>
12123 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
12124 iliev 1162
12125     </p>
12126 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
12127 iliev 1162
12128     </p>
12129 schoenebeck 1363 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
12130 iliev 1162
12131     </p>
12132 schoenebeck 1363 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
12133 iliev 1162
12134     </p>
12135 iliev 1731 <p>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
12136    
12137     </p>
12138 schoenebeck 575 <p>/ ECHO SP boolean
12139 schoenebeck 940
12140 schoenebeck 575 </p>
12141 schoenebeck 1006 <p>/ VOLUME SP volume_value
12142    
12143     </p>
12144 schoenebeck 1801 <p>/ VOICES SP number
12145    
12146     </p>
12147     <p>/ STREAMS SP number
12148    
12149     </p>
12150 schoenebeck 708 </blockquote><p>
12151 schoenebeck 575
12152 schoenebeck 708 </p>
12153 schoenebeck 575 <p>create_instruction =
12154     </p>
12155     <blockquote class="text">
12156     <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
12157 schoenebeck 940
12158 schoenebeck 575 </p>
12159     <p>/ AUDIO_OUTPUT_DEVICE SP string
12160 schoenebeck 940
12161 schoenebeck 575 </p>
12162     <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
12163 schoenebeck 940
12164 schoenebeck 575 </p>
12165     <p>/ MIDI_INPUT_DEVICE SP string
12166 schoenebeck 940
12167 schoenebeck 575 </p>
12168 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
12169    
12170     </p>
12171     <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
12172    
12173     </p>
12174 schoenebeck 2139 <p>/ EFFECT_INSTANCE SP effect_index
12175    
12176     </p>
12177     <p>/ EFFECT_INSTANCE SP effect_system SP module SP effect_name
12178    
12179     </p>
12180 schoenebeck 708 </blockquote><p>
12181 schoenebeck 575
12182 schoenebeck 708 </p>
12183 schoenebeck 945 <p>reset_instruction =
12184     </p>
12185     <blockquote class="text">
12186     <p>CHANNEL SP sampler_channel
12187    
12188     </p>
12189     </blockquote><p>
12190    
12191     </p>
12192     <p>clear_instruction =
12193     </p>
12194     <blockquote class="text">
12195 schoenebeck 974 <p>MIDI_INSTRUMENTS SP midi_map
12196 schoenebeck 945
12197     </p>
12198 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
12199    
12200     </p>
12201 schoenebeck 945 </blockquote><p>
12202    
12203     </p>
12204 iliev 1189 <p>find_instruction =
12205     </p>
12206     <blockquote class="text">
12207 schoenebeck 1363 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
12208 iliev 1189
12209     </p>
12210 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
12211 iliev 1189
12212     </p>
12213 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
12214 iliev 1189
12215     </p>
12216 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
12217 iliev 1189
12218     </p>
12219 iliev 1731 <p>/ LOST SP DB_INSTRUMENT_FILES
12220    
12221     </p>
12222 iliev 1189 </blockquote><p>
12223    
12224     </p>
12225 iliev 1162 <p>move_instruction =
12226     </p>
12227     <blockquote class="text">
12228 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12229 iliev 1162
12230     </p>
12231 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
12232 iliev 1162
12233     </p>
12234     </blockquote><p>
12235    
12236     </p>
12237 iliev 1189 <p>copy_instruction =
12238     </p>
12239     <blockquote class="text">
12240 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
12241 iliev 1189
12242     </p>
12243 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
12244 iliev 1189
12245     </p>
12246     </blockquote><p>
12247    
12248     </p>
12249 schoenebeck 575 <p>destroy_instruction =
12250     </p>
12251     <blockquote class="text">
12252     <p>AUDIO_OUTPUT_DEVICE SP number
12253 schoenebeck 940
12254 schoenebeck 575 </p>
12255     <p>/ MIDI_INPUT_DEVICE SP number
12256 schoenebeck 940
12257 schoenebeck 575 </p>
12258 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP fx_send_id
12259    
12260     </p>
12261 schoenebeck 2139 <p>/ EFFECT_INSTANCE SP number
12262    
12263     </p>
12264 schoenebeck 708 </blockquote><p>
12265 schoenebeck 575
12266 schoenebeck 708 </p>
12267 schoenebeck 575 <p>load_instruction =
12268     </p>
12269     <blockquote class="text">
12270     <p>INSTRUMENT SP load_instr_args
12271 schoenebeck 940
12272 schoenebeck 575 </p>
12273     <p>/ ENGINE SP load_engine_args
12274 schoenebeck 940
12275 schoenebeck 575 </p>
12276 schoenebeck 708 </blockquote><p>
12277 schoenebeck 575
12278 schoenebeck 708 </p>
12279 schoenebeck 2139 <p>append_instruction =
12280     </p>
12281     <blockquote class="text">
12282     <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP effect_instance
12283    
12284     </p>
12285     </blockquote><p>
12286    
12287     </p>
12288     <p>insert_instruction =
12289     </p>
12290     <blockquote class="text">
12291     <p>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos SP effect_instance
12292    
12293     </p>
12294     </blockquote><p>
12295    
12296     </p>
12297 schoenebeck 575 <p>set_chan_instruction =
12298     </p>
12299     <blockquote class="text">
12300     <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
12301 schoenebeck 940
12302 schoenebeck 575 </p>
12303     <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
12304 schoenebeck 940
12305 schoenebeck 575 </p>
12306     <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
12307 schoenebeck 940
12308 schoenebeck 575 </p>
12309     <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
12310 schoenebeck 940
12311 schoenebeck 575 </p>
12312     <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
12313 schoenebeck 940
12314 schoenebeck 575 </p>
12315     <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
12316 schoenebeck 940
12317 schoenebeck 575 </p>
12318     <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
12319 schoenebeck 940
12320 schoenebeck 575 </p>
12321     <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
12322 schoenebeck 940
12323 schoenebeck 575 </p>
12324     <p>/ VOLUME SP sampler_channel SP volume_value
12325 schoenebeck 940
12326 schoenebeck 575 </p>
12327 schoenebeck 708 <p>/ MUTE SP sampler_channel SP boolean
12328 schoenebeck 940
12329 schoenebeck 708 </p>
12330     <p>/ SOLO SP sampler_channel SP boolean
12331 schoenebeck 940
12332 schoenebeck 708 </p>
12333 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
12334    
12335     </p>
12336     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
12337    
12338     </p>
12339     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
12340    
12341     </p>
12342 schoenebeck 708 </blockquote><p>
12343    
12344     </p>
12345 schoenebeck 1251 <p>edit_instruction =
12346     </p>
12347     <blockquote class="text">
12348 schoenebeck 1430 <p>CHANNEL SP INSTRUMENT SP sampler_channel
12349 schoenebeck 1251
12350     </p>
12351     </blockquote><p>
12352    
12353     </p>
12354 schoenebeck 1363 <p>format_instruction =
12355     </p>
12356     <blockquote class="text">
12357     <p>INSTRUMENTS_DB
12358    
12359     </p>
12360     </blockquote><p>
12361    
12362     </p>
12363 schoenebeck 1048 <p>modal_arg =
12364     </p>
12365     <blockquote class="text">
12366     <p>/* epsilon (empty argument) */
12367    
12368     </p>
12369     <p>/ NON_MODAL SP
12370    
12371     </p>
12372     </blockquote><p>
12373    
12374     </p>
12375 schoenebeck 575 <p>key_val_list =
12376     </p>
12377     <blockquote class="text">
12378     <p>string '=' param_val_list
12379 schoenebeck 940
12380 schoenebeck 575 </p>
12381     <p>/ key_val_list SP string '=' param_val_list
12382 schoenebeck 940
12383 schoenebeck 575 </p>
12384 schoenebeck 708 </blockquote><p>
12385 schoenebeck 575
12386 schoenebeck 708 </p>
12387 schoenebeck 575 <p>buffer_size_type =
12388     </p>
12389     <blockquote class="text">
12390     <p>BYTES
12391 schoenebeck 940
12392 schoenebeck 575 </p>
12393     <p>/ PERCENTAGE
12394 schoenebeck 940
12395 schoenebeck 575 </p>
12396 schoenebeck 708 </blockquote><p>
12397 schoenebeck 575
12398 schoenebeck 708 </p>
12399 schoenebeck 575 <p>list_instruction =
12400     </p>
12401     <blockquote class="text">
12402     <p>AUDIO_OUTPUT_DEVICES
12403 schoenebeck 940
12404 schoenebeck 575 </p>
12405     <p>/ MIDI_INPUT_DEVICES
12406 schoenebeck 940
12407 schoenebeck 575 </p>
12408     <p>/ CHANNELS
12409 schoenebeck 940
12410 schoenebeck 575 </p>
12411     <p>/ AVAILABLE_ENGINES
12412 schoenebeck 940
12413 schoenebeck 575 </p>
12414 schoenebeck 2139 <p>/ AVAILABLE_EFFECTS
12415    
12416     </p>
12417     <p>/ EFFECT_INSTANCES
12418    
12419     </p>
12420     <p>/ SEND_EFFECT_CHAINS SP number
12421    
12422     </p>
12423 schoenebeck 575 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
12424 schoenebeck 940
12425 schoenebeck 575 </p>
12426     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
12427 schoenebeck 940
12428 schoenebeck 575 </p>
12429 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
12430 schoenebeck 945
12431     </p>
12432 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
12433    
12434     </p>
12435     <p>/ MIDI_INSTRUMENT_MAPS
12436    
12437     </p>
12438 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
12439    
12440     </p>
12441 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
12442 iliev 1189
12443     </p>
12444 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
12445 iliev 1162
12446     </p>
12447 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
12448 iliev 1189
12449     </p>
12450 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
12451 iliev 1162
12452     </p>
12453 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
12454    
12455     </p>
12456 schoenebeck 708 </blockquote><p>
12457 schoenebeck 575
12458 schoenebeck 708 </p>
12459 iliev 1773 <p>send_instruction =
12460     </p>
12461     <blockquote class="text">
12462     <p>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
12463    
12464     </p>
12465     </blockquote><p>
12466    
12467     </p>
12468 schoenebeck 575 <p>load_instr_args =
12469     </p>
12470     <blockquote class="text">
12471     <p>filename SP instrument_index SP sampler_channel
12472 schoenebeck 940
12473 schoenebeck 575 </p>
12474     <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
12475 schoenebeck 940
12476 schoenebeck 575 </p>
12477 schoenebeck 708 </blockquote><p>
12478 schoenebeck 575
12479 schoenebeck 708 </p>
12480 schoenebeck 575 <p>load_engine_args =
12481     </p>
12482     <blockquote class="text">
12483     <p>engine_name SP sampler_channel
12484 schoenebeck 940
12485 schoenebeck 575 </p>
12486 schoenebeck 708 </blockquote><p>
12487 schoenebeck 575
12488 schoenebeck 708 </p>
12489 schoenebeck 945 <p>instr_load_mode =
12490     </p>
12491     <blockquote class="text">
12492     <p>ON_DEMAND
12493    
12494     </p>
12495     <p>/ ON_DEMAND_HOLD
12496    
12497     </p>
12498     <p>/ PERSISTENT
12499    
12500     </p>
12501     </blockquote><p>
12502    
12503     </p>
12504 schoenebeck 2139 <p>effect_instance =
12505     </p>
12506     <blockquote class="text">
12507     <p>number
12508    
12509     </p>
12510     </blockquote><p>
12511    
12512     </p>
12513 schoenebeck 575 <p>device_index =
12514     </p>
12515     <blockquote class="text">
12516     <p>number
12517 schoenebeck 940
12518 schoenebeck 575 </p>
12519 schoenebeck 708 </blockquote><p>
12520 schoenebeck 575
12521 schoenebeck 708 </p>
12522 schoenebeck 575 <p>audio_channel_index =
12523     </p>
12524     <blockquote class="text">
12525     <p>number
12526 schoenebeck 940
12527 schoenebeck 575 </p>
12528 schoenebeck 708 </blockquote><p>
12529 schoenebeck 575
12530 schoenebeck 708 </p>
12531 schoenebeck 575 <p>audio_output_type_name =
12532     </p>
12533     <blockquote class="text">
12534     <p>string
12535 schoenebeck 940
12536 schoenebeck 575 </p>
12537 schoenebeck 708 </blockquote><p>
12538 schoenebeck 575
12539 schoenebeck 708 </p>
12540 schoenebeck 575 <p>midi_input_port_index =
12541     </p>
12542     <blockquote class="text">
12543     <p>number
12544 schoenebeck 940
12545 schoenebeck 575 </p>
12546 schoenebeck 708 </blockquote><p>
12547 schoenebeck 575
12548 schoenebeck 708 </p>
12549 schoenebeck 575 <p>midi_input_channel_index =
12550     </p>
12551     <blockquote class="text">
12552     <p>number
12553 schoenebeck 940
12554 schoenebeck 575 </p>
12555     <p>/ ALL
12556 schoenebeck 940
12557 schoenebeck 575 </p>
12558 schoenebeck 708 </blockquote><p>
12559 schoenebeck 575
12560 schoenebeck 708 </p>
12561 schoenebeck 575 <p>midi_input_type_name =
12562     </p>
12563     <blockquote class="text">
12564     <p>string
12565 schoenebeck 940
12566 schoenebeck 575 </p>
12567 schoenebeck 708 </blockquote><p>
12568 schoenebeck 575
12569 schoenebeck 708 </p>
12570 schoenebeck 974 <p>midi_map =
12571 schoenebeck 945 </p>
12572     <blockquote class="text">
12573     <p>number
12574    
12575     </p>
12576     </blockquote><p>
12577    
12578     </p>
12579 schoenebeck 974 <p>midi_bank =
12580 schoenebeck 945 </p>
12581     <blockquote class="text">
12582     <p>number
12583    
12584     </p>
12585     </blockquote><p>
12586    
12587     </p>
12588     <p>midi_prog =
12589     </p>
12590     <blockquote class="text">
12591     <p>number
12592    
12593     </p>
12594     </blockquote><p>
12595    
12596     </p>
12597 schoenebeck 1002 <p>midi_ctrl =
12598     </p>
12599     <blockquote class="text">
12600     <p>number
12601    
12602     </p>
12603     </blockquote><p>
12604    
12605     </p>
12606 schoenebeck 575 <p>volume_value =
12607     </p>
12608     <blockquote class="text">
12609     <p>dotnum
12610 schoenebeck 940
12611 schoenebeck 575 </p>
12612     <p>/ number
12613 schoenebeck 940
12614 schoenebeck 575 </p>
12615 schoenebeck 708 </blockquote><p>
12616 schoenebeck 575
12617 schoenebeck 708 </p>
12618 schoenebeck 2139 <p>control_value =
12619     </p>
12620     <blockquote class="text">
12621     <p>real
12622    
12623     </p>
12624     </blockquote><p>
12625    
12626     </p>
12627 schoenebeck 575 <p>sampler_channel =
12628     </p>
12629     <blockquote class="text">
12630     <p>number
12631 schoenebeck 940
12632 schoenebeck 575 </p>
12633 schoenebeck 708 </blockquote><p>
12634 schoenebeck 575
12635 schoenebeck 708 </p>
12636 schoenebeck 575 <p>instrument_index =
12637     </p>
12638     <blockquote class="text">
12639     <p>number
12640 schoenebeck 940
12641 schoenebeck 575 </p>
12642 schoenebeck 708 </blockquote><p>
12643 schoenebeck 575
12644 schoenebeck 708 </p>
12645 schoenebeck 1002 <p>fx_send_id =
12646     </p>
12647     <blockquote class="text">
12648     <p>number
12649    
12650     </p>
12651     </blockquote><p>
12652    
12653     </p>
12654 schoenebeck 575 <p>engine_name =
12655     </p>
12656     <blockquote class="text">
12657     <p>string
12658 schoenebeck 940
12659 schoenebeck 575 </p>
12660 schoenebeck 708 </blockquote><p>
12661 schoenebeck 575
12662 schoenebeck 708 </p>
12663 schoenebeck 1363 <p>filename =
12664 iliev 1162 </p>
12665     <blockquote class="text">
12666 schoenebeck 1363 <p>path
12667 iliev 1162
12668     </p>
12669     </blockquote><p>
12670    
12671     </p>
12672 schoenebeck 1363 <p>db_path =
12673 iliev 1162 </p>
12674     <blockquote class="text">
12675 schoenebeck 1363 <p>path
12676 iliev 1162
12677     </p>
12678     </blockquote><p>
12679    
12680     </p>
12681 schoenebeck 974 <p>map_name =
12682     </p>
12683     <blockquote class="text">
12684 schoenebeck 1390 <p>stringval_escaped
12685 schoenebeck 974
12686     </p>
12687     </blockquote><p>
12688    
12689     </p>
12690 schoenebeck 945 <p>entry_name =
12691     </p>
12692     <blockquote class="text">
12693 schoenebeck 1390 <p>stringval_escaped
12694 schoenebeck 945
12695     </p>
12696     </blockquote><p>
12697    
12698     </p>
12699 schoenebeck 1002 <p>fx_send_name =
12700     </p>
12701     <blockquote class="text">
12702 schoenebeck 1390 <p>stringval_escaped
12703 schoenebeck 1002
12704     </p>
12705     </blockquote><p>
12706    
12707     </p>
12708 schoenebeck 2139 <p>effect_name =
12709     </p>
12710     <blockquote class="text">
12711     <p>stringval_escaped
12712    
12713     </p>
12714     </blockquote><p>
12715    
12716     </p>
12717     <p>effect_index =
12718     </p>
12719     <blockquote class="text">
12720     <p>number
12721    
12722     </p>
12723     </blockquote><p>
12724    
12725     </p>
12726     <p>effect_chain =
12727     </p>
12728     <blockquote class="text">
12729     <p>number
12730    
12731     </p>
12732     </blockquote><p>
12733    
12734     </p>
12735     <p>chain_pos =
12736     </p>
12737     <blockquote class="text">
12738     <p>number
12739    
12740     </p>
12741     </blockquote><p>
12742    
12743     </p>
12744     <p>input_control =
12745     </p>
12746     <blockquote class="text">
12747     <p>number
12748    
12749     </p>
12750     </blockquote><p>
12751    
12752     </p>
12753 schoenebeck 575 <p>param_val_list =
12754     </p>
12755     <blockquote class="text">
12756     <p>param_val
12757 schoenebeck 940
12758 schoenebeck 575 </p>
12759     <p>/ param_val_list','param_val
12760 schoenebeck 940
12761 schoenebeck 575 </p>
12762 schoenebeck 708 </blockquote><p>
12763 schoenebeck 575
12764 schoenebeck 708 </p>
12765 schoenebeck 575 <p>param_val =
12766     </p>
12767     <blockquote class="text">
12768     <p>string
12769 schoenebeck 940
12770 schoenebeck 575 </p>
12771 schoenebeck 940 <p>/ stringval
12772    
12773 schoenebeck 575 </p>
12774     <p>/ number
12775 schoenebeck 940
12776 schoenebeck 575 </p>
12777     <p>/ dotnum
12778 schoenebeck 940
12779 schoenebeck 575 </p>
12780 schoenebeck 708 </blockquote><p>
12781 schoenebeck 575
12782 schoenebeck 708 </p>
12783 iliev 1189 <p>query_val_list =
12784     </p>
12785     <blockquote class="text">
12786     <p>string '=' query_val
12787    
12788     </p>
12789     <p>/ query_val_list SP string '=' query_val
12790    
12791     </p>
12792     </blockquote><p>
12793    
12794     </p>
12795     <p>query_val =
12796     </p>
12797     <blockquote class="text">
12798 schoenebeck 1390 <p>text_escaped
12799 iliev 1189
12800     </p>
12801 schoenebeck 1363 <p>/ stringval_escaped
12802 iliev 1189
12803     </p>
12804     </blockquote><p>
12805    
12806     </p>
12807 iliev 1201 <p>scan_mode =
12808     </p>
12809     <blockquote class="text">
12810     <p>RECURSIVE
12811    
12812     </p>
12813     <p>/ NON_RECURSIVE
12814    
12815     </p>
12816     <p>/ FLAT
12817    
12818     </p>
12819     </blockquote><p>
12820    
12821     </p>
12822 schoenebeck 2139 <p>effect_system =
12823     </p>
12824     <blockquote class="text">
12825     <p>string
12826    
12827     </p>
12828     </blockquote><p>
12829    
12830     </p>
12831     <p>module =
12832     </p>
12833     <blockquote class="text">
12834     <p>filename
12835    
12836     </p>
12837     </blockquote><p>
12838    
12839     </p>
12840 schoenebeck 1251 <a name="character_set"></a><br /><hr />
12841     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
12842     <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
12843     Character Set and Escape Sequences</h3>
12844    
12845     <p>Older versions of this protocol up to and including v1.1 only
12846     supported the standard ASCII character set (ASCII code 0 - 127)
12847     <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
12848     however support the Extended ASCII character set (ASCII code
12849     0 - 255). The same group of younger protocols also support
12850     escape sequences, but only for certain, explicitly declared
12851     parts of the protocol. The supported escape sequences are
12852     defined as follows:
12853     </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
12854     <col align="left"><col align="left">
12855     <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
12856     <tr>
12857     <td align="left">\n</td>
12858     <td align="left">new line</td>
12859     </tr>
12860     <tr>
12861     <td align="left">\r</td>
12862     <td align="left">carriage return</td>
12863     </tr>
12864     <tr>
12865     <td align="left">\f</td>
12866     <td align="left">form feed</td>
12867     </tr>
12868     <tr>
12869     <td align="left">\t</td>
12870     <td align="left">horizontal tab</td>
12871     </tr>
12872     <tr>
12873     <td align="left">\v</td>
12874     <td align="left">vertical tab</td>
12875     </tr>
12876     <tr>
12877     <td align="left">\'</td>
12878     <td align="left">apostrophe</td>
12879     </tr>
12880     <tr>
12881     <td align="left">\"</td>
12882     <td align="left">quotation mark</td>
12883     </tr>
12884     <tr>
12885     <td align="left">\\</td>
12886     <td align="left">backslash</td>
12887     </tr>
12888     <tr>
12889     <td align="left">\OOO</td>
12890     <td align="left">three digit octal ASCII code of the character</td>
12891     </tr>
12892     <tr>
12893     <td align="left">\xHH</td>
12894     <td align="left">two digit hex ASCII code of the character</td>
12895     </tr>
12896     </table>
12897 schoenebeck 1801 <br clear="all" />
12898 schoenebeck 1251
12899     <p>Notice: due to the transition of certain parts of the
12900     protocol which now support escape sequences, a slight backward
12901     incompatibility to protocols version v1.1 and younger has been
12902     introduced. The only difference is that in parts of the protocol
12903     where escape characters are now supported, a backslash characters
12904     MUST be escaped as well (that is as double backslash), whereas
12905     in the old versions a single backslash was sufficient.
12906     </p>
12907 schoenebeck 1390 <p>The following LSCP commands support escape sequences as part
12908 schoenebeck 1400 of their filename / path based arguments and / or may contain
12909     a filename / path with escape sequences in their response:
12910 schoenebeck 1390 </p>
12911     <blockquote class="text">
12912     <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
12913     </p>
12914 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>
12915     </p>
12916 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>
12917     </p>
12918 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>
12919     </p>
12920 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>
12921     </p>
12922     <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>
12923     </p>
12924     <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>
12925     </p>
12926     <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
12927     </p>
12928     <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>
12929     </p>
12930     <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>
12931     </p>
12932     <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>
12933     </p>
12934     <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
12935     </p>
12936     <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>
12937     </p>
12938     <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>
12939     </p>
12940     <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>
12941     </p>
12942     <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>
12943     </p>
12944     <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>
12945     </p>
12946     <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>
12947     </p>
12948     <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
12949     </p>
12950     <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
12951     </p>
12952     <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
12953     </p>
12954     <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>
12955     </p>
12956     <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
12957     </p>
12958     <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>
12959     </p>
12960 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>
12961     </p>
12962     <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>
12963     </p>
12964 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>
12965     </p>
12966     <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>
12967     </p>
12968     <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>
12969     </p>
12970 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>
12971     </p>
12972     <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>
12973     </p>
12974     <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>
12975     </p>
12976 schoenebeck 1390 </blockquote><p>
12977     Note that the forward slash character ('/') has a special meaning in
12978     filename / path based arguments: it acts as separator of the nodes in
12979     the path, thus if a directory- or filename includes a forward slash
12980     (not intended as path node separator), you MUST escape that slash
12981     either with the respective hex escape sequence ("\x2f") or with the
12982     respective octal escape sequence ("\057").
12983    
12984     </p>
12985     <p>
12986 schoenebeck 1572 Note for Windows: file path arguments in LSCP are expected
12987     to use forward slashes as directory node separator similar
12988     to Unix based operating systems. In contrast to Unix however
12989     a Windows typical drive character is expected to be
12990     prefixed to the path. That is an original Windows file path
12991     like "D:\Sounds\My.gig" would become in LSCP:
12992     "D:/Sounds/My.gig".
12993    
12994     </p>
12995     <p>
12996 schoenebeck 1390 The following LSCP commands even support escape sequences as
12997     part of at least one of their text-based arguments (i.e. entity name,
12998 schoenebeck 1400 description) and / or may contain escape sequences in at least one of
12999     their text-based fields in their response:
13000 schoenebeck 1390 </p>
13001     <blockquote class="text">
13002 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>
13003     </p>
13004     <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>
13005     </p>
13006     <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
13007     </p>
13008     <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>
13009     </p>
13010     <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>
13011     </p>
13012     <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>
13013     </p>
13014     <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>
13015     </p>
13016     <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>
13017     </p>
13018 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>
13019     </p>
13020     <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>
13021     </p>
13022     <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>
13023     </p>
13024 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>
13025     </p>
13026 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>
13027     </p>
13028     <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>
13029     </p>
13030 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>
13031     </p>
13032 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>
13033     </p>
13034 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>
13035     </p>
13036     <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>
13037     </p>
13038 schoenebeck 1400 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
13039 schoenebeck 1390 </p>
13040 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>
13041     </p>
13042     <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>
13043     </p>
13044     <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>
13045     </p>
13046 schoenebeck 1390 </blockquote><p>
13047     Please note that these lists are manually maintained. If you
13048     find a command that also supports escape sequences we forgot to
13049     mention here, please report it!
13050    
13051     </p>
13052 senoner 542 <a name="events"></a><br /><hr />
13053 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13054     <a name="rfc.section.8"></a><h3>8.&nbsp;
13055     Events</h3>
13056 senoner 542
13057     <p>This chapter will describe all currently defined events supported by LinuxSampler.
13058     </p>
13059 iliev 992 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
13060 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13061     <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
13062 iliev 992 Number of audio output devices changed</h3>
13063    
13064     <p>Client may want to be notified when the total number of audio output devices on the
13065     back-end changes by issuing the following command:
13066     </p>
13067     <p>
13068     </p>
13069     <blockquote class="text">
13070     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
13071     </p>
13072     </blockquote><p>
13073    
13074     </p>
13075     <p>Server will start sending the following notification messages:
13076     </p>
13077     <p>
13078     </p>
13079     <blockquote class="text">
13080     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
13081     </p>
13082     </blockquote><p>
13083    
13084     </p>
13085     <p>where &lt;devices&gt; will be replaced by the new number
13086     of audio output devices.
13087     </p>
13088     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
13089     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13090     <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
13091     Audio output device's settings changed</h3>
13092    
13093     <p>Client may want to be notified when changes were made to audio output devices on the
13094     back-end by issuing the following command:
13095     </p>
13096     <p>
13097     </p>
13098     <blockquote class="text">
13099     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
13100     </p>
13101     </blockquote><p>
13102    
13103     </p>
13104     <p>Server will start sending the following notification messages:
13105     </p>
13106     <p>
13107     </p>
13108     <blockquote class="text">
13109     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
13110     </p>
13111     </blockquote><p>
13112    
13113     </p>
13114     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
13115     which settings has been changed. The front-end will have to send
13116     the respective command to actually get the audio output device info. Because these messages
13117     will be triggered by LSCP commands issued by other clients rather than real
13118     time events happening on the server, it is believed that an empty notification
13119     message is sufficient here.
13120     </p>
13121     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
13122     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13123     <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
13124     Number of MIDI input devices changed</h3>
13125    
13126     <p>Client may want to be notified when the total number of MIDI input devices on the
13127     back-end changes by issuing the following command:
13128     </p>
13129     <p>
13130     </p>
13131     <blockquote class="text">
13132     <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
13133     </p>
13134     </blockquote><p>
13135    
13136     </p>
13137     <p>Server will start sending the following notification messages:
13138     </p>
13139     <p>
13140     </p>
13141     <blockquote class="text">
13142     <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
13143     </p>
13144     </blockquote><p>
13145    
13146     </p>
13147     <p>where &lt;devices&gt; will be replaced by the new number
13148     of MIDI input devices.
13149     </p>
13150     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
13151     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13152     <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
13153     MIDI input device's settings changed</h3>
13154    
13155     <p>Client may want to be notified when changes were made to MIDI input devices on the
13156     back-end by issuing the following command:
13157     </p>
13158     <p>
13159     </p>
13160     <blockquote class="text">
13161     <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
13162     </p>
13163     </blockquote><p>
13164    
13165     </p>
13166     <p>Server will start sending the following notification messages:
13167     </p>
13168     <p>
13169     </p>
13170     <blockquote class="text">
13171     <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
13172     </p>
13173     </blockquote><p>
13174    
13175     </p>
13176     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
13177     which settings has been changed. The front-end will have to send
13178     the respective command to actually get the MIDI input device info. Because these messages
13179     will be triggered by LSCP commands issued by other clients rather than real
13180     time events happening on the server, it is believed that an empty notification
13181     message is sufficient here.
13182     </p>
13183     <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
13184     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13185     <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
13186 schoenebeck 974 Number of sampler channels changed</h3>
13187 senoner 542
13188     <p>Client may want to be notified when the total number of channels on the
13189     back-end changes by issuing the following command:
13190     </p>
13191 schoenebeck 708 <p>
13192     </p>
13193 senoner 542 <blockquote class="text">
13194 schoenebeck 558 <p>SUBSCRIBE CHANNEL_COUNT
13195 senoner 542 </p>
13196 schoenebeck 708 </blockquote><p>
13197 schoenebeck 940
13198 schoenebeck 708 </p>
13199 senoner 542 <p>Server will start sending the following notification messages:
13200     </p>
13201 schoenebeck 708 <p>
13202     </p>
13203 senoner 542 <blockquote class="text">
13204 schoenebeck 558 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
13205 senoner 542 </p>
13206 schoenebeck 708 </blockquote><p>
13207 schoenebeck 940
13208 schoenebeck 708 </p>
13209 senoner 542 <p>where &lt;channels&gt; will be replaced by the new number
13210     of sampler channels.
13211     </p>
13212 schoenebeck 1685 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
13213     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13214     <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
13215     MIDI data on a sampler channel arrived</h3>
13216    
13217     <p>Client may want to be notified when MIDI data arrive on sampler channels on
13218     back-end side, by issuing the following command:
13219     </p>
13220     <p>
13221     </p>
13222     <blockquote class="text">
13223     <p>SUBSCRIBE CHANNEL_MIDI
13224     </p>
13225     </blockquote><p>
13226    
13227     </p>
13228     <p>Server will start sending one of the the following notification messages:
13229     </p>
13230     <p>
13231     </p>
13232     <blockquote class="text">
13233     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13234     </p>
13235     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13236     </p>
13237     </blockquote><p>
13238    
13239     </p>
13240     <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
13241     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13242     0 .. 127, reflecting the analog meaning of the MIDI specification.
13243    
13244     </p>
13245     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13246     delivered by this mechanism! With other words: events could be lost at any time!
13247     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13248     thread unaffected by this feature.
13249     </p>
13250 schoenebeck 1696 <a name="SUBSCRIBE DEVICE_MIDI"></a><br /><hr />
13251     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13252     <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
13253     MIDI data on a MIDI input device arrived</h3>
13254    
13255     <p>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:
13256     </p>
13257     <p>
13258     </p>
13259     <blockquote class="text">
13260     <p>SUBSCRIBE DEVICE_MIDI
13261     </p>
13262     </blockquote><p>
13263    
13264     </p>
13265     <p>Server will start sending one of the the following notification messages:
13266     </p>
13267     <p>
13268     </p>
13269     <blockquote class="text">
13270 iliev 1731 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
13271 schoenebeck 1696 </p>
13272 iliev 1731 <p>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
13273 schoenebeck 1696 </p>
13274     </blockquote><p>
13275    
13276     </p>
13277     <p>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
13278     by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
13279     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
13280     0 .. 127, reflecting the analog meaning of the MIDI specification.
13281    
13282     </p>
13283     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
13284     delivered by this mechanism! With other words: events could be lost at any time!
13285     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
13286     thread unaffected by this feature.
13287     </p>
13288 schoenebeck 940 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
13289 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13290 schoenebeck 1696 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
13291 schoenebeck 974 Number of active voices changed</h3>
13292 senoner 542
13293     <p>Client may want to be notified when the number of voices on the
13294     back-end changes by issuing the following command:
13295     </p>
13296 schoenebeck 708 <p>
13297     </p>
13298 senoner 542 <blockquote class="text">
13299     <p>SUBSCRIBE VOICE_COUNT
13300     </p>
13301 schoenebeck 708 </blockquote><p>
13302 schoenebeck 940
13303 schoenebeck 708 </p>
13304 senoner 542 <p>Server will start sending the following notification messages:
13305     </p>
13306 schoenebeck 708 <p>
13307     </p>
13308 senoner 542 <blockquote class="text">
13309 iliev 1110 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
13310 senoner 542 </p>
13311 schoenebeck 708 </blockquote><p>
13312 schoenebeck 940
13313 schoenebeck 708 </p>
13314 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13315     voice count change occurred and &lt;voices&gt; by the new number of
13316     active voices on that channel.
13317     </p>
13318 schoenebeck 940 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
13319 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13320 schoenebeck 1696 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
13321 schoenebeck 974 Number of active disk streams changed</h3>
13322 senoner 542
13323     <p>Client may want to be notified when the number of streams on the back-end
13324     changes by issuing the following command: SUBSCRIBE STREAM_COUNT
13325     </p>
13326 schoenebeck 708 <p>
13327     </p>
13328 senoner 542 <blockquote class="text">
13329     <p>SUBSCRIBE STREAM_COUNT
13330     </p>
13331 schoenebeck 708 </blockquote><p>
13332 schoenebeck 940
13333 schoenebeck 708 </p>
13334 senoner 542 <p>Server will start sending the following notification messages:
13335     </p>
13336 schoenebeck 708 <p>
13337     </p>
13338 senoner 542 <blockquote class="text">
13339     <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
13340     </p>
13341 schoenebeck 708 </blockquote><p>
13342 schoenebeck 940
13343 schoenebeck 708 </p>
13344 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13345     stream count change occurred and &lt;streams&gt; by the new number of
13346     active disk streams on that channel.
13347     </p>
13348 schoenebeck 940 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
13349 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13350 schoenebeck 1696 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
13351 schoenebeck 974 Disk stream buffer fill state changed</h3>
13352 senoner 542
13353     <p>Client may want to be notified when the buffer fill state of a disk stream
13354     on the back-end changes by issuing the following command:
13355     </p>
13356 schoenebeck 708 <p>
13357     </p>
13358 senoner 542 <blockquote class="text">
13359     <p>SUBSCRIBE BUFFER_FILL
13360     </p>
13361 schoenebeck 708 </blockquote><p>
13362 schoenebeck 940
13363 schoenebeck 708 </p>
13364 senoner 542 <p>Server will start sending the following notification messages:
13365     </p>
13366 schoenebeck 708 <p>
13367     </p>
13368 senoner 542 <blockquote class="text">
13369     <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
13370     </p>
13371 schoenebeck 708 </blockquote><p>
13372 schoenebeck 940
13373 schoenebeck 708 </p>
13374 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13375     buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
13376 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>
13377     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.
13378 senoner 542 </p>
13379 iliev 992 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
13380 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13381 schoenebeck 1696 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
13382 schoenebeck 974 Channel information changed</h3>
13383 senoner 542
13384     <p>Client may want to be notified when changes were made to sampler channels on the
13385 schoenebeck 561 back-end by issuing the following command:
13386 senoner 542 </p>
13387 schoenebeck 708 <p>
13388     </p>
13389 senoner 542 <blockquote class="text">
13390 schoenebeck 558 <p>SUBSCRIBE CHANNEL_INFO
13391 senoner 542 </p>
13392 schoenebeck 708 </blockquote><p>
13393 schoenebeck 940
13394 schoenebeck 708 </p>
13395 senoner 542 <p>Server will start sending the following notification messages:
13396     </p>
13397 schoenebeck 708 <p>
13398     </p>
13399 senoner 542 <blockquote class="text">
13400 schoenebeck 558 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
13401 senoner 542 </p>
13402 schoenebeck 708 </blockquote><p>
13403 schoenebeck 940
13404 schoenebeck 708 </p>
13405 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
13406     channel info change occurred. The front-end will have to send
13407     the respective command to actually get the channel info. Because these messages
13408     will be triggered by LSCP commands issued by other clients rather than real
13409     time events happening on the server, it is believed that an empty notification
13410     message is sufficient here.
13411     </p>
13412 iliev 1110 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
13413     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13414 schoenebeck 1696 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
13415 iliev 1110 Number of effect sends changed</h3>
13416    
13417 schoenebeck 1251 <p>Client may want to be notified when the number of effect sends on
13418 iliev 1110 a particular sampler channel is changed by issuing the following command:
13419     </p>
13420     <p>
13421     </p>
13422     <blockquote class="text">
13423     <p>SUBSCRIBE FX_SEND_COUNT
13424     </p>
13425     </blockquote><p>
13426    
13427     </p>
13428     <p>Server will start sending the following notification messages:
13429     </p>
13430     <p>
13431     </p>
13432     <blockquote class="text">
13433     <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
13434     </p>
13435     </blockquote><p>
13436    
13437     </p>
13438     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13439     channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
13440     be replaced by the new number of effect sends on that channel.
13441     </p>
13442     <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
13443     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13444 schoenebeck 1696 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
13445 iliev 1110 Effect send information changed</h3>
13446    
13447     <p>Client may want to be notified when changes were made to effect sends on a
13448     a particular sampler channel by issuing the following command:
13449     </p>
13450     <p>
13451     </p>
13452     <blockquote class="text">
13453     <p>SUBSCRIBE FX_SEND_INFO
13454     </p>
13455     </blockquote><p>
13456    
13457     </p>
13458     <p>Server will start sending the following notification messages:
13459     </p>
13460     <p>
13461     </p>
13462     <blockquote class="text">
13463     <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
13464     </p>
13465     </blockquote><p>
13466    
13467     </p>
13468     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
13469     channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
13470     be replaced by the numerical ID of the changed effect send.
13471     </p>
13472 schoenebeck 940 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
13473 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13474 schoenebeck 1696 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
13475 schoenebeck 974 Total number of active voices changed</h3>
13476 senoner 542
13477 schoenebeck 940 <p>Client may want to be notified when the total number of voices on the
13478     back-end changes by issuing the following command:
13479     </p>
13480     <p>
13481     </p>
13482     <blockquote class="text">
13483     <p>SUBSCRIBE TOTAL_VOICE_COUNT
13484     </p>
13485     </blockquote><p>
13486    
13487     </p>
13488     <p>Server will start sending the following notification messages:
13489     </p>
13490     <p>
13491     </p>
13492     <blockquote class="text">
13493 iliev 1110 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
13494 schoenebeck 940 </p>
13495     </blockquote><p>
13496    
13497     </p>
13498     <p>where &lt;voices&gt; will be replaced by the new number of
13499     all currently active voices.
13500     </p>
13501 schoenebeck 1572 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
13502     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13503 schoenebeck 1696 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
13504 schoenebeck 1572 Total number of active disk streams changed</h3>
13505    
13506     <p>Client may want to be notified when the total number of disk streams on the
13507     back-end changes by issuing the following command:
13508     </p>
13509     <p>
13510     </p>
13511     <blockquote class="text">
13512     <p>SUBSCRIBE TOTAL_STREAM_COUNT
13513     </p>
13514     </blockquote><p>
13515    
13516     </p>
13517     <p>Server will start sending the following notification messages:
13518     </p>
13519     <p>
13520     </p>
13521     <blockquote class="text">
13522     <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
13523     </p>
13524     </blockquote><p>
13525    
13526     </p>
13527     <p>where &lt;streams&gt; will be replaced by the new number of
13528     all currently active disk streams.
13529     </p>
13530 iliev 992 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
13531     <table 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.16"></a><h3>8.16.&nbsp;
13533 iliev 992 Number of MIDI instrument maps changed</h3>
13534    
13535     <p>Client may want to be notified when the number of MIDI instrument maps on the
13536     back-end changes by issuing the following command:
13537     </p>
13538     <p>
13539     </p>
13540     <blockquote class="text">
13541     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_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     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
13552     </p>
13553     </blockquote><p>
13554    
13555     </p>
13556     <p>where &lt;maps&gt; will be replaced by the new number
13557     of MIDI instrument maps.
13558     </p>
13559     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></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.17"></a><h3>8.17.&nbsp;
13562 iliev 992 MIDI instrument map information changed</h3>
13563    
13564     <p>Client may want to be notified when changes were made to MIDI instrument maps on the
13565     back-end by issuing the following command:
13566     </p>
13567     <p>
13568     </p>
13569     <blockquote class="text">
13570     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
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:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
13581     </p>
13582     </blockquote><p>
13583    
13584     </p>
13585     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13586     for which information changes occurred. The front-end will have to send
13587     the respective command to actually get the MIDI instrument map info. Because these messages
13588     will be triggered by LSCP commands issued by other clients rather than real
13589     time events happening on the server, it is believed that an empty notification
13590     message is sufficient here.
13591     </p>
13592     <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
13593     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13594 schoenebeck 1696 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
13595 iliev 992 Number of MIDI instruments changed</h3>
13596    
13597     <p>Client may want to be notified when the number of MIDI instrument maps on the
13598     back-end changes by issuing the following command:
13599     </p>
13600     <p>
13601     </p>
13602     <blockquote class="text">
13603     <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
13604     </p>
13605     </blockquote><p>
13606    
13607     </p>
13608     <p>Server will start sending the following notification messages:
13609     </p>
13610     <p>
13611     </p>
13612     <blockquote class="text">
13613     <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
13614     </p>
13615     </blockquote><p>
13616    
13617     </p>
13618     <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
13619     the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
13620     the new number of MIDI instruments in the specified map.
13621     </p>
13622     <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
13623     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13624 schoenebeck 1696 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
13625 iliev 992 MIDI instrument information changed</h3>
13626    
13627     <p>Client may want to be notified when changes were made to MIDI instruments on the
13628     back-end by issuing the following command:
13629     </p>
13630     <p>
13631     </p>
13632     <blockquote class="text">
13633     <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
13634     </p>
13635     </blockquote><p>
13636    
13637     </p>
13638     <p>Server will start sending the following notification messages:
13639     </p>
13640     <p>
13641     </p>
13642     <blockquote class="text">
13643     <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
13644     </p>
13645     </blockquote><p>
13646    
13647     </p>
13648     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
13649     in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
13650     the location of the changed MIDI instrument in the map. The front-end will have to send
13651     the respective command to actually get the MIDI instrument info. Because these messages
13652     will be triggered by LSCP commands issued by other clients rather than real
13653     time events happening on the server, it is believed that an empty notification
13654     message is sufficient here.
13655     </p>
13656 iliev 1110 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
13657     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13658 schoenebeck 1696 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
13659 iliev 1110 Global settings changed</h3>
13660    
13661     <p>Client may want to be notified when changes to the global settings
13662     of the sampler were made by issuing the following command:
13663     </p>
13664     <p>
13665     </p>
13666     <blockquote class="text">
13667     <p>SUBSCRIBE GLOBAL_INFO
13668     </p>
13669     </blockquote><p>
13670    
13671     </p>
13672     <p>Server will start sending the following types of notification messages:
13673     </p>
13674     <p>
13675     </p>
13676     <blockquote class="text">
13677     <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
13678     golbal volume of the sampler is changed, where &lt;volume&gt; will be
13679     replaced by the optional dotted floating point value, reflecting the
13680     new global volume parameter.
13681     </p>
13682     </blockquote><p>
13683 schoenebeck 1801 </p>
13684     <blockquote class="text">
13685     <p>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
13686     golbal limit of the sampler for maximum voices is changed, where
13687     &lt;max-voices&gt; will be an integer value, reflecting the
13688     new global voice limit parameter.
13689     </p>
13690     </blockquote><p>
13691     </p>
13692     <blockquote class="text">
13693     <p>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
13694     golbal limit of the sampler for maximum disk streams is changed, where
13695     &lt;max-streams&gt; will be an integer value, reflecting the
13696     new global disk streams limit parameter.
13697     </p>
13698     </blockquote><p>
13699 iliev 1110
13700     </p>
13701 iliev 1162 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
13702     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13703 schoenebeck 1696 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
13704 iliev 1162 Number of database instrument directories changed</h3>
13705    
13706     <p>Client may want to be notified when the number of instrument
13707     directories in a particular directory in the instruments database
13708     is changed by issuing the following command:
13709     </p>
13710     <p>
13711     </p>
13712     <blockquote class="text">
13713     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
13714     </p>
13715     </blockquote><p>
13716    
13717     </p>
13718     <p>Server will start sending the following notification messages:
13719     </p>
13720     <p>
13721     </p>
13722     <blockquote class="text">
13723     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
13724     </p>
13725     </blockquote><p>
13726    
13727     </p>
13728     <p>where &lt;dir-path&gt; will be replaced by the absolute path
13729     name of the directory in the instruments database,
13730     in which the number of directories is changed.
13731     </p>
13732     <p>Note that when a non-empty directory is removed, this event
13733     is not sent for the subdirectories in that directory.
13734     </p>
13735     <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
13736     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13737 schoenebeck 1696 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
13738 iliev 1162 Database instrument directory information changed</h3>
13739    
13740     <p>Client may want to be notified when changes were made to directories
13741     in the instruments database by issuing the following command:
13742     </p>
13743     <p>
13744     </p>
13745     <blockquote class="text">
13746     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
13747     </p>
13748     </blockquote><p>
13749    
13750     </p>
13751     <p>Server will start sending the following notification messages:
13752     </p>
13753     <p>
13754     </p>
13755     <blockquote class="text">
13756     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
13757     </p>
13758     </blockquote><p>
13759    
13760     </p>
13761     <p>where &lt;dir-path&gt; will be replaced by the absolute path name
13762     of the directory, for which information changes occurred. The front-end will have to send
13763     the respective command to actually get the updated directory info. Because these messages
13764     will be triggered by LSCP commands issued by other clients rather than real
13765     time events happening on the server, it is believed that an empty notification
13766     message is sufficient here.
13767     </p>
13768     <p>
13769     </p>
13770     <blockquote class="text">
13771     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
13772     </p>
13773     </blockquote><p>
13774    
13775     </p>
13776     <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
13777     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13778     the new name of the directory, encapsulated into apostrophes.
13779     </p>
13780     <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
13781     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13782 schoenebeck 1696 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
13783 iliev 1162 Number of database instruments changed</h3>
13784    
13785     <p>Client may want to be notified when the number of instruments
13786     in a particular directory in the instruments database
13787     is changed by issuing the following command:
13788     </p>
13789     <p>
13790     </p>
13791     <blockquote class="text">
13792     <p>SUBSCRIBE DB_INSTRUMENT_COUNT
13793     </p>
13794     </blockquote><p>
13795    
13796     </p>
13797     <p>Server will start sending the following notification messages:
13798     </p>
13799     <p>
13800     </p>
13801     <blockquote class="text">
13802     <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
13803     </p>
13804     </blockquote><p>
13805    
13806     </p>
13807     <p>where &lt;dir-path&gt; will be replaced by the absolute path
13808     name of the directory in the instruments database,
13809     in which the number of instruments is changed.
13810     </p>
13811     <p>Note that when a non-empty directory is removed, this event
13812     is not sent for the instruments in that directory.
13813     </p>
13814     <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
13815     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13816 schoenebeck 1696 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
13817 iliev 1162 Database instrument information changed</h3>
13818    
13819     <p>Client may want to be notified when changes were made to instruments
13820     in the instruments database by issuing the following command:
13821     </p>
13822     <p>
13823     </p>
13824     <blockquote class="text">
13825     <p>SUBSCRIBE DB_INSTRUMENT_INFO
13826     </p>
13827     </blockquote><p>
13828    
13829     </p>
13830     <p>Server will start sending the following notification messages:
13831     </p>
13832     <p>
13833     </p>
13834     <blockquote class="text">
13835     <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
13836     </p>
13837     </blockquote><p>
13838    
13839     </p>
13840     <p>where &lt;instr-path&gt; will be replaced by the absolute path name
13841     of the instrument, which settings are changed. The front-end will have to send
13842     the respective command to actually get the updated directory info. Because these messages
13843     will be triggered by LSCP commands issued by other clients rather than real
13844     time events happening on the server, it is believed that an empty notification
13845     message is sufficient here.
13846     </p>
13847     <p>
13848     </p>
13849     <blockquote class="text">
13850     <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
13851     </p>
13852     </blockquote><p>
13853    
13854     </p>
13855     <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
13856     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
13857     the new name of the instrument, encapsulated into apostrophes.
13858     </p>
13859 iliev 1201 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
13860     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13861 schoenebeck 1696 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
13862 iliev 1201 Database job status information changed</h3>
13863    
13864     <p>Client may want to be notified when the status of particular database
13865     instruments job is changed by issuing the following command:
13866     </p>
13867     <p>
13868     </p>
13869     <blockquote class="text">
13870     <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
13871     </p>
13872     </blockquote><p>
13873    
13874     </p>
13875     <p>Server will start sending the following notification messages:
13876     </p>
13877     <p>
13878     </p>
13879     <blockquote class="text">
13880     <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
13881     </p>
13882     </blockquote><p>
13883    
13884     </p>
13885     <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
13886     which status is changed. The front-end will have to send the respective
13887     command to actually get the status info. Because these messages
13888     will be triggered by LSCP commands issued by other clients rather than real
13889     time events happening on the server, it is believed that an empty notification
13890     message is sufficient here.
13891     </p>
13892 schoenebeck 940 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
13893 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13894 schoenebeck 1696 <a name="rfc.section.8.26"></a><h3>8.26.&nbsp;
13895 schoenebeck 974 Miscellaneous and debugging events</h3>
13896 schoenebeck 940
13897 senoner 542 <p>Client may want to be notified of miscellaneous and debugging events occurring at
13898     the server by issuing the following command:
13899     </p>
13900 schoenebeck 708 <p>
13901     </p>
13902 senoner 542 <blockquote class="text">
13903     <p>SUBSCRIBE MISCELLANEOUS
13904     </p>
13905 schoenebeck 708 </blockquote><p>
13906 schoenebeck 940
13907 schoenebeck 708 </p>
13908 senoner 542 <p>Server will start sending the following notification messages:
13909     </p>
13910 schoenebeck 708 <p>
13911     </p>
13912 senoner 542 <blockquote class="text">
13913     <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
13914     </p>
13915 schoenebeck 708 </blockquote><p>
13916 schoenebeck 940
13917 schoenebeck 708 </p>
13918 senoner 542 <p>where &lt;string&gt; will be replaced by whatever data server
13919     wants to send to the client. Client MAY display this data to the
13920     user AS IS to facilitate debugging.
13921     </p>
13922 schoenebeck 974 <a name="anchor14"></a><br /><hr />
13923     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13924     <a name="rfc.section.9"></a><h3>9.&nbsp;
13925     Security Considerations</h3>
13926 senoner 542
13927     <p>As there is so far no method of authentication and authorization
13928     defined and so not required for a client applications to succeed to
13929     connect, running LinuxSampler might be a security risk for the host
13930     system the LinuxSampler instance is running on.
13931     </p>
13932 schoenebeck 974 <a name="anchor15"></a><br /><hr />
13933     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13934     <a name="rfc.section.10"></a><h3>10.&nbsp;
13935     Acknowledgments</h3>
13936 senoner 542
13937     <p>This document has benefited greatly from the comments of the
13938     following people, discussed on the LinuxSampler developer's mailing
13939     list:
13940     </p>
13941 schoenebeck 708 <p>
13942     </p>
13943 senoner 542 <blockquote class="text">
13944     <p>Rui Nuno Capela
13945     </p>
13946     <p>Vladimir Senkov
13947     </p>
13948     <p>Mark Knecht
13949     </p>
13950 schoenebeck 561 <p>Grigor Iliev
13951     </p>
13952 schoenebeck 708 </blockquote><p>
13953 schoenebeck 940
13954 schoenebeck 708 </p>
13955 senoner 542 <a name="rfc.references1"></a><br /><hr />
13956 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13957 schoenebeck 708 <h3>11.&nbsp;References</h3>
13958 senoner 542 <table width="99%" border="0">
13959 schoenebeck 1251 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
13960 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>
13961 senoner 542 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
13962 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>
13963 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
13964 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>
13965 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
13966 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>
13967 senoner 542 </table>
13968    
13969     <a name="rfc.authors"></a><br /><hr />
13970 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13971 senoner 542 <h3>Author's Address</h3>
13972     <table width="99%" border="0" cellpadding="0" cellspacing="0">
13973     <tr><td class="author-text">&nbsp;</td>
13974     <td class="author-text">C.
13975     Schoenebeck</td></tr>
13976     <tr><td class="author-text">&nbsp;</td>
13977     <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
13978     <tr><td class="author-text">&nbsp;</td>
13979     <td class="author-text">Max-Planck-Str. 39</td></tr>
13980     <tr><td class="author-text">&nbsp;</td>
13981     <td class="author-text">74081 Heilbronn</td></tr>
13982     <tr><td class="author-text">&nbsp;</td>
13983     <td class="author-text">Germany</td></tr>
13984 schoenebeck 708 <tr><td class="author" align="right">Email:&nbsp;</td>
13985 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>
13986     </table>
13987     <a name="rfc.copyright"></a><br /><hr />
13988 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
13989     <h3>Full Copyright Statement</h3>
13990 senoner 542 <p class='copyright'>
13991 schoenebeck 2139 Copyright &copy; The IETF Trust (2010).</p>
13992 senoner 542 <p class='copyright'>
13993 schoenebeck 974 This document is subject to the rights,
13994     licenses and restrictions contained in BCP&nbsp;78,
13995     and except as set forth therein,
13996     the authors retain all their rights.</p>
13997 senoner 542 <p class='copyright'>
13998 schoenebeck 974 This document and the information contained herein are provided
13999     on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
14000 iliev 1110 THE ORGANIZATION HE/SHE REPRESENTS
14001     OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
14002     AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
14003     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
14004     THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
14005     IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
14006     PURPOSE.</p>
14007 schoenebeck 974 <h3>Intellectual Property</h3>
14008 senoner 542 <p class='copyright'>
14009 schoenebeck 974 The IETF takes no position regarding the validity or scope of any
14010     Intellectual Property Rights or other rights that might be claimed
14011     to pertain to the implementation or use of the technology
14012     described in this document or the extent to which any license
14013     under such rights might or might not be available; nor does it
14014     represent that it has made any independent effort to identify any
14015     such rights.
14016     Information on the procedures with respect to
14017     rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
14018 senoner 542 <p class='copyright'>
14019 schoenebeck 974 Copies of IPR disclosures made to the IETF Secretariat and any
14020     assurances of licenses to be made available,
14021     or the result of an attempt made to obtain a general license or
14022     permission for the use of such proprietary rights by implementers or
14023     users of this specification can be obtained from the IETF on-line IPR
14024     repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
14025 senoner 542 <p class='copyright'>
14026 schoenebeck 974 The IETF invites any interested party to bring to its attention
14027     any copyrights,
14028     patents or patent applications,
14029     or other
14030     proprietary rights that may cover technology that may be required
14031     to implement this standard.
14032     Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
14033 senoner 542 </body></html>

  ViewVC Help
Powered by ViewVC