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

  ViewVC Help
Powered by ViewVC