/[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 1685 - (hide annotations) (download) (as text)
Thu Feb 14 14:41:08 2008 UTC (16 years, 2 months ago) by schoenebeck
File MIME type: text/html
File size: 412690 byte(s)
* added new "CHANNEL_MIDI" LSCP event

1 senoner 542 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 schoenebeck 1430 <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3 senoner 542 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4 schoenebeck 1430 <meta name="description" content="LinuxSampler Control Protocol">
5 senoner 542 <meta name="keywords" content="LSCP">
6 iliev 1110 <meta name="generator" content="xml2rfc v1.32 (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 1685 <tr><td class="header">Expires: August 17, 2008</td><td class="header">February 14, 2008</td></tr>
149 senoner 542 </table></td></tr></table>
150 schoenebeck 1685 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.4</h1>
151 senoner 542
152     <h3>Status of this Memo</h3>
153     <p>
154 schoenebeck 974 By submitting this Internet-Draft,
155     each author represents that any applicable patent or other IPR claims of which
156     he or she is aware have been or will be disclosed,
157     and any of which he or she becomes aware will be disclosed,
158     in accordance with Section&nbsp;6 of BCP&nbsp;79.</p>
159 senoner 542 <p>
160     Internet-Drafts are working documents of the Internet Engineering
161     Task Force (IETF), its areas, and its working groups.
162     Note that other groups may also distribute working documents as
163     Internet-Drafts.</p>
164     <p>
165     Internet-Drafts are draft documents valid for a maximum of six months
166     and may be updated, replaced, or obsoleted by other documents at any time.
167     It is inappropriate to use Internet-Drafts as reference material or to cite
168 schoenebeck 708 them other than as &ldquo;work in progress.&rdquo;</p>
169 senoner 542 <p>
170     The list of current Internet-Drafts can be accessed at
171     <a href='http://www.ietf.org/ietf/1id-abstracts.txt'>http://www.ietf.org/ietf/1id-abstracts.txt</a>.</p>
172     <p>
173     The list of Internet-Draft Shadow Directories can be accessed at
174     <a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>
175     <p>
176 schoenebeck 1685 This Internet-Draft will expire on August 17, 2008.</p>
177 senoner 542
178     <h3>Copyright Notice</h3>
179     <p>
180 schoenebeck 1685 Copyright &copy; The IETF Trust (2008).</p>
181 senoner 542
182     <h3>Abstract</h3>
183    
184     <p>The LinuxSampler Control Protocol (LSCP) is an
185     application-level protocol primarily intended for local and
186 schoenebeck 575 remote controlling the LinuxSampler backend application, which is a
187     sophisticated server-like console application essentially playing
188     back audio samples and manipulating the samples in real time to
189     certain extent.
190 senoner 542 </p><a name="toc"></a><br /><hr />
191     <h3>Table of Contents</h3>
192     <p class="toc">
193     <a href="#anchor1">1.</a>&nbsp;
194     Requirements notation<br />
195 schoenebeck 575 <a href="#LSCP versioning">2.</a>&nbsp;
196     Versioning of this specification<br />
197     <a href="#anchor2">3.</a>&nbsp;
198 senoner 542 Introduction<br />
199 schoenebeck 575 <a href="#anchor3">4.</a>&nbsp;
200 senoner 542 Focus of this protocol<br />
201 schoenebeck 575 <a href="#anchor4">5.</a>&nbsp;
202 senoner 542 Communication Overview<br />
203 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
204 senoner 542 Request/response communication method<br />
205 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
206 senoner 542 Result format<br />
207 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
208 senoner 542 Subscribe/notify communication method<br />
209 schoenebeck 575 <a href="#control_commands">6.</a>&nbsp;
210 senoner 542 Description for control commands<br />
211 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
212 senoner 542 Ignored lines and comments<br />
213 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
214 senoner 542 Configuring audio drivers<br />
215 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
216 senoner 542 Getting amount of available audio output drivers<br />
217 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
218 senoner 542 Getting all available audio output drivers<br />
219 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
220 senoner 542 Getting information about a specific audio
221     output driver<br />
222 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
223 senoner 542 Getting information about specific audio
224     output driver parameter<br />
225 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
226 senoner 542 Creating an audio output device<br />
227 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
228 senoner 542 Destroying an audio output device<br />
229 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
230 senoner 542 Getting all created audio output device count<br />
231 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
232 senoner 542 Getting all created audio output device list<br />
233 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
234 senoner 542 Getting current settings of an audio output device<br />
235 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
236 senoner 542 Changing settings of audio output devices<br />
237 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
238 senoner 542 Getting information about an audio channel<br />
239 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
240 senoner 542 Getting information about specific audio channel parameter<br />
241 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
242 senoner 542 Changing settings of audio output channels<br />
243 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
244 senoner 542 Configuring MIDI input drivers<br />
245 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
246 senoner 542 Getting amount of available MIDI input drivers<br />
247 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
248 senoner 542 Getting all available MIDI input drivers<br />
249 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
250 senoner 542 Getting information about a specific MIDI input driver<br />
251 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
252 senoner 542 Getting information about specific MIDI input driver parameter<br />
253 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
254 senoner 542 Creating a MIDI input device<br />
255 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
256 senoner 542 Destroying a MIDI input device<br />
257 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
258 senoner 542 Getting all created MIDI input device count<br />
259 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
260 senoner 542 Getting all created MIDI input device list<br />
261 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
262 senoner 542 Getting current settings of a MIDI input device<br />
263 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
264 senoner 542 Changing settings of MIDI input devices<br />
265 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
266 senoner 542 Getting information about a MIDI port<br />
267 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
268 senoner 542 Getting information about specific MIDI port parameter<br />
269 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
270 senoner 542 Changing settings of MIDI input ports<br />
271 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
272 senoner 542 Configuring sampler channels<br />
273 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
274 senoner 542 Loading an instrument<br />
275 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
276 senoner 542 Loading a sampler engine<br />
277 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
278 senoner 542 Getting all created sampler channel count<br />
279 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
280 senoner 542 Getting all created sampler channel list<br />
281 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
282 senoner 542 Adding a new sampler channel<br />
283 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
284 senoner 542 Removing a sampler channel<br />
285 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
286 senoner 542 Getting amount of available engines<br />
287 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
288 senoner 542 Getting all available engines<br />
289 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
290 senoner 542 Getting information about an engine<br />
291 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
292 senoner 542 Getting sampler channel information<br />
293 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
294 senoner 542 Current number of active voices<br />
295 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
296 senoner 542 Current number of active disk streams<br />
297 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
298 senoner 542 Current fill state of disk stream buffers<br />
299 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
300 senoner 542 Setting audio output device<br />
301 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
302 senoner 542 Setting audio output type<br />
303 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
304 senoner 542 Setting audio output channel<br />
305 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
306 senoner 542 Setting MIDI input device<br />
307 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
308 senoner 542 Setting MIDI input type<br />
309 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
310 senoner 542 Setting MIDI input port<br />
311 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
312 senoner 542 Setting MIDI input channel<br />
313 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
314 senoner 542 Setting channel volume<br />
315 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
316 schoenebeck 708 Muting a sampler channel<br />
317 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
318 schoenebeck 708 Soloing a sampler channel<br />
319 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
320     Assigning a MIDI instrument map to a sampler channel<br />
321 schoenebeck 1002 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
322     Adding an effect send to a sampler channel<br />
323     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
324     Removing an effect send from a sampler channel<br />
325     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
326     Getting amount of effect sends on a sampler channel<br />
327     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
328     Listing all effect sends on a sampler channel<br />
329     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
330     Getting effect send information<br />
331 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
332     Changing effect send's name<br />
333     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
334 schoenebeck 1002 Altering effect send's audio routing<br />
335 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.32.</a>&nbsp;
336 schoenebeck 1028 Altering effect send's MIDI controller<br />
337 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.33.</a>&nbsp;
338 schoenebeck 1028 Altering effect send's send level<br />
339 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.34.</a>&nbsp;
340 senoner 542 Resetting a sampler channel<br />
341 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
342 senoner 542 Controlling connection<br />
343 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
344 senoner 542 Register front-end for receiving event messages<br />
345 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
346 senoner 542 Unregister front-end for not receiving event messages<br />
347 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
348 senoner 542 Enable or disable echo of commands<br />
349 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
350 senoner 542 Close client connection<br />
351 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
352 senoner 542 Global commands<br />
353 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
354     Current number of active voices<br />
355     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
356     Maximum amount of active voices<br />
357 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
358     Current number of active disk streams<br />
359     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
360 senoner 542 Reset sampler<br />
361 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
362 schoenebeck 575 General sampler informations<br />
363 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
364 schoenebeck 1006 Getting global volume attenuation<br />
365 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
366 schoenebeck 1006 Setting global volume attenuation<br />
367 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
368 schoenebeck 945 MIDI Instrument Mapping<br />
369 schoenebeck 1390 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
370 schoenebeck 974 Create a new MIDI instrument map<br />
371     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
372     Delete one particular or all MIDI instrument maps<br />
373     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
374     Get amount of existing MIDI instrument maps<br />
375     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
376     Getting all created MIDI instrument maps<br />
377     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
378     Getting MIDI instrument map information<br />
379     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
380     Renaming a MIDI instrument map<br />
381     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
382 schoenebeck 945 Create or replace a MIDI instrument map entry<br />
383 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
384 schoenebeck 945 Getting ammount of MIDI instrument map entries<br />
385 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
386     Getting indeces of all entries of a MIDI instrument map<br />
387     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
388 schoenebeck 945 Remove an entry from the MIDI instrument map<br />
389 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
390 schoenebeck 945 Get current settings of MIDI instrument map entry<br />
391 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
392 schoenebeck 945 Clear MIDI instrument map<br />
393 iliev 1162 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
394     Managing Instruments Database<br />
395     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
396     Creating a new instrument directory<br />
397     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
398     Deleting an instrument directory<br />
399     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
400     Getting amount of instrument directories<br />
401     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
402     Listing all directories in specific directory<br />
403     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
404     Getting instrument directory information<br />
405     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
406     Renaming an instrument directory<br />
407     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
408     Moving an instrument directory<br />
409 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
410     Copying instrument directories<br />
411     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
412 iliev 1162 Changing the description of directory<br />
413 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
414     Finding directories<br />
415     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
416 iliev 1162 Adding instruments to the instruments database<br />
417 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
418 iliev 1162 Removing an instrument<br />
419 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
420 iliev 1162 Getting amount of instruments<br />
421 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
422 iliev 1162 Listing all instruments in specific directory<br />
423 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
424 iliev 1162 Getting instrument information<br />
425 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
426 iliev 1162 Renaming an instrument<br />
427 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
428 iliev 1162 Moving an instrument<br />
429 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
430     Copying instruments<br />
431     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
432 iliev 1162 Changing the description of instrument<br />
433 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
434     Finding instruments<br />
435 iliev 1201 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
436     Getting job status information<br />
437 schoenebeck 1363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
438     Formatting the instruments database<br />
439     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
440     Editing Instruments<br />
441     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
442     Opening an appropriate instrument editor application<br />
443 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
444     Managing Files<br />
445     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
446     Retrieving amount of instruments of a file<br />
447     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
448     Retrieving all instruments of a file<br />
449     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
450     Retrieving informations about one instrument in a file<br />
451 schoenebeck 575 <a href="#command_syntax">7.</a>&nbsp;
452 senoner 542 Command Syntax<br />
453 schoenebeck 1251 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
454     Character Set and Escape Sequences<br />
455 schoenebeck 575 <a href="#events">8.</a>&nbsp;
456 senoner 542 Events<br />
457 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
458     Number of audio output devices changed<br />
459     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
460     Audio output device's settings changed<br />
461     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
462     Number of MIDI input devices changed<br />
463     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
464     MIDI input device's settings changed<br />
465     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
466 senoner 542 Number of sampler channels changed<br />
467 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_MIDI">8.6.</a>&nbsp;
468     MIDI data on a sampler channel arrived<br />
469     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.7.</a>&nbsp;
470 senoner 542 Number of active voices changed<br />
471 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.8.</a>&nbsp;
472 senoner 542 Number of active disk streams changed<br />
473 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.9.</a>&nbsp;
474 senoner 542 Disk stream buffer fill state changed<br />
475 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.10.</a>&nbsp;
476 senoner 542 Channel information changed<br />
477 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.11.</a>&nbsp;
478 iliev 1110 Number of effect sends changed<br />
479 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.12.</a>&nbsp;
480 iliev 1110 Effect send information changed<br />
481 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.13.</a>&nbsp;
482 schoenebeck 940 Total number of active voices changed<br />
483 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.14.</a>&nbsp;
484 schoenebeck 1572 Total number of active disk streams changed<br />
485 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.15.</a>&nbsp;
486 iliev 992 Number of MIDI instrument maps changed<br />
487 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.16.</a>&nbsp;
488 iliev 992 MIDI instrument map information changed<br />
489 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.17.</a>&nbsp;
490 iliev 992 Number of MIDI instruments changed<br />
491 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.18.</a>&nbsp;
492 iliev 992 MIDI instrument information changed<br />
493 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.19.</a>&nbsp;
494 iliev 1110 Global settings changed<br />
495 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.20.</a>&nbsp;
496 iliev 1162 Number of database instrument directories changed<br />
497 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.21.</a>&nbsp;
498 iliev 1162 Database instrument directory information changed<br />
499 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.22.</a>&nbsp;
500 iliev 1162 Number of database instruments changed<br />
501 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.23.</a>&nbsp;
502 iliev 1162 Database instrument information changed<br />
503 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.24.</a>&nbsp;
504 iliev 1201 Database job status information changed<br />
505 schoenebeck 1685 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.25.</a>&nbsp;
506 senoner 542 Miscellaneous and debugging events<br />
507 schoenebeck 974 <a href="#anchor14">9.</a>&nbsp;
508 senoner 542 Security Considerations<br />
509 schoenebeck 974 <a href="#anchor15">10.</a>&nbsp;
510 senoner 542 Acknowledgments<br />
511 schoenebeck 575 <a href="#rfc.references1">11.</a>&nbsp;
512 senoner 542 References<br />
513     <a href="#rfc.authors">&#167;</a>&nbsp;
514     Author's Address<br />
515     <a href="#rfc.copyright">&#167;</a>&nbsp;
516     Intellectual Property and Copyright Statements<br />
517     </p>
518     <br clear="all" />
519    
520     <a name="anchor1"></a><br /><hr />
521 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
522     <a name="rfc.section.1"></a><h3>1.&nbsp;
523     Requirements notation</h3>
524 senoner 542
525     <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
526     "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
527     and "OPTIONAL" in this document are to be interpreted as
528 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>.
529 senoner 542 </p>
530     <p>This protocol is always case-sensitive if not explicitly
531     claimed the opposite.
532     </p>
533     <p>In examples, "C:" and "S:" indicate lines sent by the client
534     (front-end) and server (LinuxSampler) respectively. Lines in
535     examples must be interpreted as every line being CRLF
536     terminated (carriage return character followed by line feed
537 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>),
538     thus the following example:
539 senoner 542 </p>
540 schoenebeck 708 <p>
541     </p>
542 senoner 542 <blockquote class="text">
543     <p>C: "some line"
544     </p>
545     <p>&nbsp;&nbsp;&nbsp;"another line"
546     </p>
547 schoenebeck 708 </blockquote><p>
548 schoenebeck 940
549 schoenebeck 708 </p>
550 senoner 542 <p>must actually be interpreted as client sending the following
551     message:
552     </p>
553 schoenebeck 708 <p>
554     </p>
555 senoner 542 <blockquote class="text">
556     <p>"some line&lt;CR&gt;&lt;LF&gt;another
557     line&lt;CR&gt;&lt;LF&gt;"
558     </p>
559 schoenebeck 708 </blockquote><p>
560 schoenebeck 940
561 schoenebeck 708 </p>
562 senoner 542 <p>where &lt;CR&gt; symbolizes the carriage return character and
563     &lt;LF&gt; the line feed character as defined in the ASCII
564     standard.
565     </p>
566     <p>Due to technical reasons, messages can arbitrary be
567     fragmented, means the following example:
568     </p>
569 schoenebeck 708 <p>
570     </p>
571 senoner 542 <blockquote class="text">
572     <p>S: "abcd"
573     </p>
574 schoenebeck 708 </blockquote><p>
575 schoenebeck 940
576 schoenebeck 708 </p>
577 senoner 542 <p>could also happen to be sent in three messages like in the
578     following sequence scenario:
579     </p>
580 schoenebeck 708 <p>
581     </p>
582 senoner 542 <ul class="text">
583     <li>server sending message "a"
584     </li>
585     <li>followed by a delay (pause) with
586     arbitrary duration
587     </li>
588     <li>followed by server sending message
589     "bcd&lt;CR&gt;"
590     </li>
591     <li>again followed by a delay (pause) with arbitrary
592     duration
593     </li>
594     <li>followed by server sending the message
595     "&lt;LF&gt;"
596     </li>
597 schoenebeck 708 </ul><p>
598 schoenebeck 940
599 schoenebeck 708 </p>
600 senoner 542 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
601     return and line feed characters respectively.
602     </p>
603 schoenebeck 575 <a name="LSCP versioning"></a><br /><hr />
604 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
605     <a name="rfc.section.2"></a><h3>2.&nbsp;
606     Versioning of this specification</h3>
607 schoenebeck 575
608     <p>LSCP will certainly be extended and enhanced by-and-by. Each official
609     release of the LSCP specification will be tagged with a unique version
610     tuple. The version tuple consists at least of a major and minor version
611     number like:
612 schoenebeck 940
613 schoenebeck 575 </p>
614 schoenebeck 708 <p>
615     </p>
616 schoenebeck 575 <blockquote class="text">
617     <p>"1.2"
618     </p>
619 schoenebeck 708 </blockquote><p>
620 schoenebeck 940
621 schoenebeck 708 </p>
622 schoenebeck 575 <p>
623     In this example the major version number would be "1" and the minor
624     version number would be "2". Note that the version tuple might also
625     have more than two elements. The major version number defines a
626     group of backward compatible versions. That means a frontend is
627     compatible to the connected sampler if and only if the LSCP versions
628     to which each of the two parties complies to, match both of the
629     following rules:
630 schoenebeck 940
631 schoenebeck 575 </p>
632     <p>Compatibility:
633     </p>
634 schoenebeck 708 <p>
635     </p>
636 schoenebeck 575 <ol class="text">
637     <li>The frontend's LSCP major version and the sampler's LSCP
638     major version are exactly equal.
639     </li>
640     <li>The frontend's LSCP minor version is less or equal than
641     the sampler's LSCP minor version.
642     </li>
643 schoenebeck 708 </ol><p>
644 schoenebeck 940
645 schoenebeck 708 </p>
646 schoenebeck 575 <p>
647     Compatibility can only be claimed if both rules are true.
648     The frontend can use the
649 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
650 schoenebeck 575 get the version of the LSCP specification the sampler complies with.
651 schoenebeck 940
652 schoenebeck 575 </p>
653 senoner 542 <a name="anchor2"></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.3"></a><h3>3.&nbsp;
656     Introduction</h3>
657 senoner 542
658     <p>LinuxSampler is a so called software sampler application
659     capable to playback audio samples from a computer's Random
660     Access Memory (RAM) as well as directly streaming it from disk.
661     LinuxSampler is designed to be modular. It provides several so
662     called "sampler engines" where each engine is specialized for a
663     certain purpose. LinuxSampler has virtual channels which will be
664     referred in this document as "sampler channels". The channels
665     are in such way virtual as they can be connected to an
666     arbitrary MIDI input method and arbitrary MIDI channel (e.g.
667     sampler channel 17 could be connected to an ALSA sequencer
668     device 64:0 and listening to MIDI channel 1 there). Each sampler
669 schoenebeck 575 channel will be associated with an instance of one of the available
670 senoner 542 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
671     each sampler channel can be routed to an arbitrary audio output
672     method (ALSA / JACK) and an arbitrary audio output channel
673     there.
674     </p>
675     <a name="anchor3"></a><br /><hr />
676 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
677     <a name="rfc.section.4"></a><h3>4.&nbsp;
678     Focus of this protocol</h3>
679 senoner 542
680     <p>Main focus of this protocol is to provide a way to configure
681     a running LinuxSampler instance and to retrieve information
682     about it. The focus of this protocol is not to provide a way to
683     control synthesis parameters or even to trigger or release
684     notes. Or in other words; the focus are those functionalities
685     which are not covered by MIDI or which may at most be handled
686     via MIDI System Exclusive Messages.
687     </p>
688     <a name="anchor4"></a><br /><hr />
689 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
690     <a name="rfc.section.5"></a><h3>5.&nbsp;
691     Communication Overview</h3>
692 senoner 542
693     <p>There are two distinct methods of communication between a
694     running instance of LinuxSampler and one or more control
695     applications, so called "front-ends": a simple request/response
696     communication method used by the clients to give commands to the
697     server as well as to inquire about server's status and a
698     subscribe/notify communication method used by the client to
699     subscribe to and receive notifications of certain events as they
700     happen on the server. The latter needs more effort to be
701     implemented in the front-end application. The two communication
702     methods will be described next.
703     </p>
704 schoenebeck 940 <a name="anchor5"></a><br /><hr />
705 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
706     <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
707     Request/response communication method</h3>
708 senoner 542
709 schoenebeck 575 <p>This simple communication method is based on
710 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
711 senoner 542 front-end application establishes a TCP connection to the
712     LinuxSampler instance on a certain host system. Then the
713     front-end application will send certain ASCII based commands
714     as defined in this document (every command line must be CRLF
715     terminated - see "Conventions used in this document" at the
716     beginning of this document) and the LinuxSampler application
717     will response after a certain process time with an
718     appropriate ASCII based answer, also as defined in this
719     document. So this TCP communication is simply based on query
720     and answer paradigm. That way LinuxSampler is only able to
721     answer on queries from front-ends, but not able to
722     automatically send messages to the client if it's not asked
723     to. The fronted should not reconnect to LinuxSampler for
724     every single command, instead it should keep the connection
725     established and simply resend message(s) for subsequent
726     commands. To keep information in the front-end up-to-date
727     the front-end has to periodically send new requests to get
728     the current information from the LinuxSampler instance. This
729     is often referred to as "polling". While polling is simple
730     to implement and may be OK to use in some cases, there may
731     be disadvantages to polling such as network traffic overhead
732     and information being out of date.
733     It is possible for a client or several clients to open more
734     than one connection to the server at the same time. It is
735     also possible to send more than one request to the server
736     at the same time but if those requests are sent over the
737     same connection server MUST execute them sequentially. Upon
738     executing a request server will produce a result set and
739     send it to the client. Each and every request made by the
740     client MUST result in a result set being sent back to the
741     client. No other data other than a result set may be sent by
742     a server to a client. No result set may be sent to a client
743     without the client sending request to the server first. On
744     any particular connection, result sets MUST be sent in their
745     entirety without being interrupted by other result sets. If
746     several requests got queued up at the server they MUST be
747     processed in the order they were received and result sets
748     MUST be sent back in the same order.
749     </p>
750 schoenebeck 940 <a name="anchor6"></a><br /><hr />
751 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
752     <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
753     Result format</h3>
754 senoner 542
755     <p>Result set could be one of the following types:
756     </p>
757 schoenebeck 708 <p>
758     </p>
759 senoner 542 <ol class="text">
760     <li>Normal
761     </li>
762     <li>Warning
763     </li>
764     <li>Error
765     </li>
766 schoenebeck 708 </ol><p>
767 schoenebeck 940
768 schoenebeck 708 </p>
769 senoner 542 <p>Warning and Error result sets MUST be single line and
770     have the following format:
771     </p>
772 schoenebeck 708 <p>
773     </p>
774 senoner 542 <ul class="text">
775     <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
776     </li>
777     <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
778     </li>
779 schoenebeck 708 </ul><p>
780 schoenebeck 940
781 schoenebeck 708 </p>
782 senoner 542 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
783     numeric unique identifiers of the warning or error and
784     &lt;warning-message&gt; and &lt;error-message&gt; are
785     human readable descriptions of the warning or error
786     respectively.
787     </p>
788     <p>Examples:
789     </p>
790 schoenebeck 708 <p>
791     </p>
792 senoner 542 <blockquote class="text">
793     <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
794     </p>
795     <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
796     </p>
797 schoenebeck 708 </blockquote><p>
798 schoenebeck 940
799 schoenebeck 708 </p>
800     <p>
801     </p>
802 senoner 542 <blockquote class="text">
803     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
804     </p>
805     <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
806     </p>
807 schoenebeck 708 </blockquote><p>
808 schoenebeck 940
809 schoenebeck 708 </p>
810     <p>
811     </p>
812 senoner 542 <blockquote class="text">
813     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
814     </p>
815     <p>S: "ERR:9:There is no audio output device with index 123456."
816     </p>
817 schoenebeck 708 </blockquote><p>
818 schoenebeck 940
819 schoenebeck 708 </p>
820 senoner 542 <p>Normal result sets could be:
821     </p>
822 schoenebeck 708 <p>
823     </p>
824 senoner 542 <ol class="text">
825     <li>Empty
826     </li>
827     <li>Single line
828     </li>
829     <li>Multi-line
830     </li>
831 schoenebeck 708 </ol><p>
832 schoenebeck 940
833 schoenebeck 708 </p>
834 senoner 542 <p> Empty result set is issued when the server only
835     needed to acknowledge the fact that the request was
836     received and it was processed successfully and no
837     additional information is available. This result set has
838     the following format:
839     </p>
840 schoenebeck 708 <p>
841     </p>
842 senoner 542 <blockquote class="text">
843     <p>"OK"
844     </p>
845 schoenebeck 708 </blockquote><p>
846 schoenebeck 940
847 schoenebeck 708 </p>
848 senoner 542 <p>Example:
849     </p>
850 schoenebeck 708 <p>
851     </p>
852 senoner 542 <blockquote class="text">
853     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
854     </p>
855     <p>S: "OK"
856     </p>
857 schoenebeck 708 </blockquote><p>
858 schoenebeck 940
859 schoenebeck 708 </p>
860 senoner 542 <p>Single line result sets are command specific. One
861     example of a single line result set is an empty line.
862     Multi-line result sets are command specific and may
863     include one or more lines of information. They MUST
864     always end with the following line:
865     </p>
866 schoenebeck 708 <p>
867     </p>
868 senoner 542 <blockquote class="text">
869     <p>"."
870     </p>
871 schoenebeck 708 </blockquote><p>
872 schoenebeck 940
873 schoenebeck 708 </p>
874 senoner 542 <p>Example:
875     </p>
876 schoenebeck 708 <p>
877     </p>
878 senoner 542 <blockquote class="text">
879     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
880     </p>
881     <p>S: "DRIVER: ALSA"
882     </p>
883     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
884     </p>
885     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
886     </p>
887     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
888     </p>
889     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
890     </p>
891     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
892     </p>
893     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
894     </p>
895     <p>&nbsp;&nbsp;&nbsp;"."
896     </p>
897 schoenebeck 708 </blockquote><p>
898 schoenebeck 940
899 schoenebeck 708 </p>
900 senoner 542 <p>In addition to above mentioned formats, warnings and
901     empty result sets MAY be indexed. In this case, they
902     have the following formats respectively:
903     </p>
904 schoenebeck 708 <p>
905     </p>
906 senoner 542 <ul class="text">
907     <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
908     </li>
909     <li>"OK[&lt;index&gt;]"
910     </li>
911 schoenebeck 708 </ul><p>
912 schoenebeck 940
913 schoenebeck 708 </p>
914 senoner 542 <p>where &lt;index&gt; is command specific and is used
915     to indicate channel number that the result set was
916     related to or other integer value.
917     </p>
918     <p>Each line of the result set MUST end with
919     &lt;CRLF&gt;.
920     </p>
921     <p>Examples:
922     </p>
923 schoenebeck 708 <p>
924     </p>
925 senoner 542 <blockquote class="text">
926     <p>C: "ADD CHANNEL"
927     </p>
928     <p>S: "OK[12]"
929     </p>
930 schoenebeck 708 </blockquote><p>
931 schoenebeck 940
932 schoenebeck 708 </p>
933     <p>
934     </p>
935 senoner 542 <blockquote class="text">
936     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
937     </p>
938     <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
939     </p>
940 schoenebeck 708 </blockquote><p>
941 schoenebeck 940
942 schoenebeck 708 </p>
943 schoenebeck 940 <a name="anchor7"></a><br /><hr />
944 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
945     <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
946     Subscribe/notify communication method</h3>
947 senoner 542
948     <p>This more sophisticated communication method is actually
949     only an extension of the simple request/response
950     communication method. The front-end still uses a TCP
951     connection and sends the same commands on the TCP
952     connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
953     commands that allow a client to tell the server that it is
954     interested in receiving notifications about certain events
955     as they happen on the server. The SUBSCRIBE command has the
956     following syntax:
957     </p>
958 schoenebeck 708 <p>
959     </p>
960 senoner 542 <blockquote class="text">
961     <p>SUBSCRIBE &lt;event-id&gt;
962     </p>
963 schoenebeck 708 </blockquote><p>
964 schoenebeck 940
965 schoenebeck 708 </p>
966 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective
967     event that client wants to subscribe to. Upon receiving such
968     request, server SHOULD respond with OK and start sending
969     EVENT notifications when a given even has occurred to the
970     front-end when an event has occurred. It MAY be possible
971     certain events may be sent before OK response during real
972     time nature of their generation. Event messages have the
973     following format:
974     </p>
975 schoenebeck 708 <p>
976     </p>
977 senoner 542 <blockquote class="text">
978     <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
979     </p>
980 schoenebeck 708 </blockquote><p>
981 schoenebeck 940
982 schoenebeck 708 </p>
983 senoner 542 <p>where &lt;event-id&gt; uniquely identifies the event that
984     has occurred and &lt;custom-event-data&gt; is event
985     specific.
986     </p>
987     <p>Several rules must be followed by the server when
988     generating events:
989     </p>
990 schoenebeck 708 <p>
991     </p>
992 senoner 542 <ol class="text">
993     <li>Events MUST NOT be sent to any client who has not
994     issued an appropriate SUBSCRIBE command.
995     </li>
996     <li>Events MUST only be sent using the same
997     connection that was used to subscribe to them.
998     </li>
999     <li>When response is being sent to the client, event
1000     MUST be inserted in the stream before or after the
1001     response, but NOT in the middle. Same is true about
1002     the response. It should never be inserted in the
1003     middle of the event message as well as any other
1004     response.
1005     </li>
1006 schoenebeck 708 </ol><p>
1007 schoenebeck 940
1008 schoenebeck 708 </p>
1009 senoner 542 <p>If the client is not interested in a particular event
1010     anymore it MAY issue UNSUBSCRIBE command using the following
1011     syntax:
1012     </p>
1013 schoenebeck 708 <p>
1014     </p>
1015 senoner 542 <blockquote class="text">
1016     <p>UNSUBSCRIBE &lt;event-id&gt;
1017     </p>
1018 schoenebeck 708 </blockquote><p>
1019 schoenebeck 940
1020 schoenebeck 708 </p>
1021 senoner 542 <p>where &lt;event-id&gt; will be replace by the respective
1022     event that client is no longer interested in receiving. For
1023 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>.
1024 senoner 542 </p>
1025     <p>Example: the fill states of disk stream buffers have
1026     changed on sampler channel 4 and the LinuxSampler instance
1027     will react by sending the following message to all clients
1028     who subscribed to this event:
1029     </p>
1030 schoenebeck 708 <p>
1031     </p>
1032 senoner 542 <blockquote class="text">
1033     <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1034     </p>
1035 schoenebeck 708 </blockquote><p>
1036 schoenebeck 940
1037 schoenebeck 708 </p>
1038 senoner 542 <p>Which means there are currently three active streams on
1039     sampler channel 4, where the stream with ID "35" is filled
1040     by 62%, stream with ID 33 is filled by 80% and stream with
1041     ID 37 is filled by 98%.
1042     </p>
1043     <p>Clients may choose to open more than one connection to
1044     the server and use some connections to receive notifications
1045     while using other connections to issue commands to the
1046     back-end. This is entirely legal and up to the
1047     implementation. This does not change the protocol in any way
1048     and no special restrictions exist on the server to allow or
1049     disallow this or to track what connections belong to what
1050     front-ends. Server will listen on a single port, accept
1051     multiple connections and support protocol described in this
1052     specification in it's entirety on this single port on each
1053     connection that it accepted.
1054     </p>
1055     <p>Due to the fact that TCP is used for this communication,
1056     dead peers will be detected automatically by the OS TCP
1057     stack. While it may take a while to detect dead peers if no
1058     traffic is being sent from server to client (TCP keep-alive
1059     timer is set to 2 hours on many OSes) it will not be an
1060     issue here as when notifications are sent by the server,
1061     dead client will be detected quickly.
1062     </p>
1063     <p>When connection is closed for any reason server MUST
1064     forget all subscriptions that were made on this connection.
1065     If client reconnects it MUST resubscribe to all events that
1066     it wants to receive.
1067     </p>
1068 schoenebeck 575 <a name="control_commands"></a><br /><hr />
1069 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1070     <a name="rfc.section.6"></a><h3>6.&nbsp;
1071     Description for control commands</h3>
1072 senoner 542
1073     <p>This chapter will describe the available control commands
1074     that can be sent on the TCP connection in detail. Some certain
1075 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>
1076     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
1077 senoner 542 multiple-line responses. In this case LinuxSampler signals the
1078     end of the response by a "." (single dot) line.
1079     </p>
1080 schoenebeck 940 <a name="anchor8"></a><br /><hr />
1081 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1082     <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1083     Ignored lines and comments</h3>
1084 senoner 542
1085     <p>White lines, that is lines which only contain space and
1086     tabulator characters, and lines that start with a "#"
1087     character are ignored, thus it's possible for example to
1088     group commands and to place comments in a LSCP script
1089     file.
1090     </p>
1091 schoenebeck 940 <a name="anchor9"></a><br /><hr />
1092 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1093     <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1094     Configuring audio drivers</h3>
1095 senoner 542
1096     <p>Instances of drivers in LinuxSampler are called devices.
1097     You can use multiple audio devices simultaneously, e.g. to
1098     output the sound of one sampler channel using the ALSA audio
1099     output driver, and on another sampler channel you might want
1100     to use the JACK audio output driver. For particular audio
1101     output systems it's also possible to create several devices
1102     of the same audio output driver, e.g. two separate ALSA
1103     audio output devices for using two different sound cards at
1104     the same time. This chapter describes all commands to
1105     configure LinuxSampler's audio output devices and their
1106     parameters.
1107     </p>
1108     <p>Instead of defining commands and parameters for each
1109     driver individually, all possible parameters, their meanings
1110     and possible values have to be obtained at runtime. This
1111     makes the protocol a bit abstract, but has the advantage,
1112     that front-ends can be written independently of what drivers
1113     are currently implemented and what parameters these drivers
1114     are actually offering. This means front-ends can even handle
1115     drivers which are implemented somewhere in future without
1116     modifying the front-end at all.
1117     </p>
1118     <p>Note: examples in this chapter showing particular
1119     parameters of drivers are not meant as specification of the
1120     drivers' parameters. Driver implementations in LinuxSampler
1121     might have complete different parameter names and meanings
1122     than shown in these examples or might change in future, so
1123     these examples are only meant for showing how to retrieve
1124     what parameters drivers are offering, how to retrieve their
1125     possible values, etc.
1126     </p>
1127 schoenebeck 940 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1128 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1129     <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1130     Getting amount of available audio output drivers</h3>
1131 senoner 542
1132     <p>Use the following command to get the number of
1133     audio output drivers currently available for the
1134     LinuxSampler instance:
1135     </p>
1136 schoenebeck 708 <p>
1137     </p>
1138 senoner 542 <blockquote class="text">
1139     <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1140     </p>
1141 schoenebeck 708 </blockquote><p>
1142 schoenebeck 940
1143 schoenebeck 708 </p>
1144 senoner 542 <p>Possible Answers:
1145     </p>
1146 schoenebeck 708 <p>
1147     </p>
1148 senoner 542 <blockquote class="text">
1149     <p>LinuxSampler will answer by sending the
1150     number of audio output drivers.
1151     </p>
1152 schoenebeck 708 </blockquote><p>
1153 schoenebeck 940
1154 schoenebeck 708 </p>
1155 senoner 542 <p>Example:
1156     </p>
1157 schoenebeck 708 <p>
1158     </p>
1159 senoner 542 <blockquote class="text">
1160     <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1161     </p>
1162     <p>S: "2"
1163     </p>
1164 schoenebeck 708 </blockquote><p>
1165 schoenebeck 940
1166 schoenebeck 708 </p>
1167 schoenebeck 940 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1168 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1169     <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1170     Getting all available audio output drivers</h3>
1171 senoner 542
1172     <p>Use the following command to list all audio output
1173     drivers currently available for the LinuxSampler
1174     instance:
1175     </p>
1176 schoenebeck 708 <p>
1177     </p>
1178 senoner 542 <blockquote class="text">
1179     <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1180     </p>
1181 schoenebeck 708 </blockquote><p>
1182 schoenebeck 940
1183 schoenebeck 708 </p>
1184 senoner 542 <p>Possible Answers:
1185     </p>
1186 schoenebeck 708 <p>
1187     </p>
1188 senoner 542 <blockquote class="text">
1189     <p>LinuxSampler will answer by sending comma
1190     separated character strings, each symbolizing an
1191     audio output driver.
1192     </p>
1193 schoenebeck 708 </blockquote><p>
1194 schoenebeck 940
1195 schoenebeck 708 </p>
1196 senoner 542 <p>Example:
1197     </p>
1198 schoenebeck 708 <p>
1199     </p>
1200 senoner 542 <blockquote class="text">
1201     <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1202     </p>
1203     <p>S: "ALSA,JACK"
1204     </p>
1205 schoenebeck 708 </blockquote><p>
1206 schoenebeck 940
1207 schoenebeck 708 </p>
1208 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1209 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1210     <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1211     Getting information about a specific audio
1212 schoenebeck 940 output driver</h3>
1213 senoner 542
1214     <p>Use the following command to get detailed information
1215     about a specific audio output driver:
1216     </p>
1217 schoenebeck 708 <p>
1218     </p>
1219 senoner 542 <blockquote class="text">
1220     <p>GET AUDIO_OUTPUT_DRIVER INFO
1221     &lt;audio-output-driver&gt;
1222     </p>
1223 schoenebeck 708 </blockquote><p>
1224 schoenebeck 940
1225 schoenebeck 708 </p>
1226 senoner 542 <p>Where &lt;audio-output-driver&gt; is the name of the
1227     audio output driver, returned by the
1228 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.
1229 senoner 542 </p>
1230     <p>Possible Answers:
1231     </p>
1232 schoenebeck 708 <p>
1233     </p>
1234 senoner 542 <blockquote class="text">
1235     <p>LinuxSampler will answer by sending a
1236     &lt;CRLF&gt; separated list. Each answer line
1237     begins with the information category name
1238     followed by a colon and then a space character
1239     &lt;SP&gt; and finally the info character string
1240     to that info category. At the moment the
1241     following information categories are
1242     defined:
1243     </p>
1244 schoenebeck 708 <p>
1245     </p>
1246 senoner 542 <blockquote class="text">
1247     <p>DESCRIPTION -
1248     </p>
1249     <blockquote class="text">
1250     <p> character string describing the
1251     audio output driver
1252     </p>
1253 schoenebeck 940 </blockquote>
1254    
1255 senoner 542
1256     <p>VERSION -
1257     </p>
1258     <blockquote class="text">
1259     <p>character string reflecting the
1260     driver's version
1261     </p>
1262 schoenebeck 940 </blockquote>
1263    
1264 senoner 542
1265     <p>PARAMETERS -
1266     </p>
1267     <blockquote class="text">
1268     <p>comma separated list of all
1269     parameters available for the given
1270     audio output driver, at least
1271     parameters 'channels', 'samplerate'
1272     and 'active' are offered by all audio
1273     output drivers
1274     </p>
1275 schoenebeck 940 </blockquote>
1276    
1277 senoner 542
1278 schoenebeck 940 </blockquote>
1279    
1280 senoner 542
1281     <p>The mentioned fields above don't have to be
1282     in particular order.
1283     </p>
1284 schoenebeck 708 </blockquote><p>
1285 schoenebeck 940
1286 schoenebeck 708 </p>
1287 senoner 542 <p>Example:
1288     </p>
1289 schoenebeck 708 <p>
1290     </p>
1291 senoner 542 <blockquote class="text">
1292     <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1293     </p>
1294     <p>S: "DESCRIPTION: Advanced Linux Sound
1295     Architecture"
1296     </p>
1297     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1298     </p>
1299     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1300     DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1301     FRAGMENTSIZE,CARD"
1302     </p>
1303     <p>&nbsp;&nbsp;&nbsp;"."
1304     </p>
1305 schoenebeck 708 </blockquote><p>
1306 schoenebeck 940
1307 schoenebeck 708 </p>
1308 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1309 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1310     <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1311     Getting information about specific audio
1312 schoenebeck 940 output driver parameter</h3>
1313 senoner 542
1314     <p>Use the following command to get detailed information
1315     about a specific audio output driver parameter:
1316     </p>
1317 schoenebeck 708 <p>
1318     </p>
1319 senoner 542 <blockquote class="text">
1320     <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1321     </p>
1322 schoenebeck 708 </blockquote><p>
1323 schoenebeck 940
1324 schoenebeck 708 </p>
1325 senoner 542 <p>Where &lt;audio&gt; is the name of the audio output
1326 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,
1327 senoner 542 &lt;prm&gt; a specific parameter name for which information should be
1328     obtained (as returned by the
1329 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
1330 senoner 542 &lt;deplist&gt; is an optional list of parameters on which the sought
1331     parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1332     pairs in form of "key1=val1 key2=val2 ...", where character string values
1333     are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1334     which are not dependency parameters of &lt;prm&gt; will be ignored, means
1335     the front-end application can simply put all parameters into &lt;deplist&gt;
1336     with the values already selected by the user.
1337     </p>
1338     <p>Possible Answers:
1339     </p>
1340 schoenebeck 708 <p>
1341     </p>
1342 senoner 542 <blockquote class="text">
1343     <p>LinuxSampler will answer by sending a
1344     &lt;CRLF&gt; separated list.
1345     Each answer line begins with the information category name
1346     followed by a colon and then a space character &lt;SP&gt; and
1347     finally
1348     the info character string to that info category. There are
1349     information which is always returned, independently of the
1350     given driver parameter and there are optional information
1351     which is only shown dependently to given driver parameter. At
1352     the moment the following information categories are defined:
1353     </p>
1354 schoenebeck 708 </blockquote><p>
1355 schoenebeck 940
1356 schoenebeck 708 </p>
1357     <p>
1358     </p>
1359 senoner 542 <blockquote class="text">
1360     <p>TYPE -
1361     </p>
1362     <blockquote class="text">
1363     <p>either "BOOL" for boolean value(s) or
1364     "INT" for integer
1365     value(s) or "FLOAT" for dotted number(s) or "STRING" for
1366     character string(s)
1367     (always returned, no matter which driver parameter)
1368     </p>
1369 schoenebeck 940 </blockquote>
1370    
1371 senoner 542
1372     <p>DESCRIPTION -
1373     </p>
1374     <blockquote class="text">
1375     <p>arbitrary text describing the purpose of the parameter
1376     (always returned, no matter which driver parameter)
1377     </p>
1378 schoenebeck 940 </blockquote>
1379    
1380 senoner 542
1381     <p>MANDATORY -
1382     </p>
1383     <blockquote class="text">
1384     <p>either true or false, defines if this parameter must be
1385     given when the device is to be created with the
1386 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>
1387 senoner 542 command (always returned, no matter which driver parameter)
1388     </p>
1389 schoenebeck 940 </blockquote>
1390    
1391 senoner 542
1392     <p>FIX -
1393     </p>
1394     <blockquote class="text">
1395     <p>either true or false, if false then this parameter can
1396     be changed at any time, once the device is created by
1397 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>
1398 senoner 542 command (always returned, no matter which driver parameter)
1399     </p>
1400 schoenebeck 940 </blockquote>
1401    
1402 senoner 542
1403     <p>MULTIPLICITY -
1404     </p>
1405     <blockquote class="text">
1406     <p>either true or false, defines if this parameter allows
1407     only one value or a list of values, where true means
1408     multiple values and false only a single value allowed
1409     (always returned, no matter which driver parameter)
1410     </p>
1411 schoenebeck 940 </blockquote>
1412    
1413 senoner 542
1414     <p>DEPENDS -
1415     </p>
1416     <blockquote class="text">
1417 schoenebeck 561 <p>comma separated list of parameters this parameter depends
1418 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1419     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1420     listed parameters, for example assuming that an audio
1421     driver (like the ALSA driver) offers parameters 'card'
1422     and 'samplerate' then parameter 'samplerate' would
1423     depend on 'card' because the possible values for
1424     'samplerate' depends on the sound card which can be
1425     chosen by the 'card' parameter
1426     (optionally returned, dependent to driver parameter)
1427     </p>
1428 schoenebeck 940 </blockquote>
1429    
1430 senoner 542
1431     <p>DEFAULT -
1432     </p>
1433     <blockquote class="text">
1434     <p>reflects the default value for this parameter which is
1435     used when the device is created and not explicitly
1436 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,
1437 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
1438     list, that's why character strings are encapsulated into
1439     apostrophes (')
1440     (optionally returned, dependent to driver parameter)
1441     </p>
1442 schoenebeck 940 </blockquote>
1443    
1444 senoner 542
1445     <p>RANGE_MIN -
1446     </p>
1447     <blockquote class="text">
1448     <p>defines lower limit of the allowed value range for this
1449     parameter, can be an integer value as well as a dotted
1450     number, this parameter is often used in conjunction
1451     with RANGE_MAX, but may also appear without
1452     (optionally returned, dependent to driver parameter)
1453     </p>
1454 schoenebeck 940 </blockquote>
1455    
1456 senoner 542
1457     <p>RANGE_MAX -
1458     </p>
1459     <blockquote class="text">
1460     <p>defines upper limit of the allowed value range for this
1461     parameter, can be an integer value as well as a dotted
1462     number, this parameter is often used in conjunction with
1463     RANGE_MIN, but may also appear without
1464     (optionally returned, dependent to driver parameter)
1465     </p>
1466 schoenebeck 940 </blockquote>
1467    
1468 senoner 542
1469     <p>POSSIBILITIES -
1470     </p>
1471     <blockquote class="text">
1472     <p>comma separated list of possible values for this
1473     parameter, character strings are encapsulated into
1474     apostrophes
1475     (optionally returned, dependent to driver parameter)
1476     </p>
1477 schoenebeck 940 </blockquote>
1478    
1479 senoner 542
1480 schoenebeck 708 </blockquote><p>
1481 schoenebeck 940
1482 schoenebeck 708 </p>
1483 senoner 542 <p>The mentioned fields above don't have to be in particular order.
1484     </p>
1485     <p>Examples:
1486     </p>
1487 schoenebeck 708 <p>
1488     </p>
1489 senoner 542 <blockquote class="text">
1490     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1491     </p>
1492     <p>S: "DESCRIPTION: sound card to be used"
1493     </p>
1494     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1495     </p>
1496     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1497     </p>
1498     <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1499     </p>
1500     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1501     </p>
1502     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1503     </p>
1504     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1505     </p>
1506     <p>&nbsp;&nbsp;&nbsp;"."
1507     </p>
1508 schoenebeck 708 </blockquote><p>
1509 schoenebeck 940
1510 schoenebeck 708 </p>
1511     <p>
1512     </p>
1513 senoner 542 <blockquote class="text">
1514     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1515     </p>
1516     <p>S: "DESCRIPTION: output sample rate in Hz"
1517     </p>
1518     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1519     </p>
1520     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1521     </p>
1522     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1523     </p>
1524     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1525     </p>
1526     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1527     </p>
1528     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1529     </p>
1530     <p>&nbsp;&nbsp;&nbsp;"."
1531     </p>
1532 schoenebeck 708 </blockquote><p>
1533 schoenebeck 940
1534 schoenebeck 708 </p>
1535     <p>
1536     </p>
1537 senoner 542 <blockquote class="text">
1538     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1539     </p>
1540     <p>S: "DESCRIPTION: output sample rate in Hz"
1541     </p>
1542     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1543     </p>
1544     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1545     </p>
1546     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1547     </p>
1548     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1549     </p>
1550     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1551     </p>
1552     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1553     </p>
1554     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1555     </p>
1556     <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1557     </p>
1558     <p>&nbsp;&nbsp;&nbsp;"."
1559     </p>
1560 schoenebeck 708 </blockquote><p>
1561 schoenebeck 940
1562 schoenebeck 708 </p>
1563 schoenebeck 940 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1564 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1565     <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1566     Creating an audio output device</h3>
1567 senoner 542
1568     <p>Use the following command to create a new audio output device for the desired audio output system:
1569     </p>
1570 schoenebeck 708 <p>
1571     </p>
1572 senoner 542 <blockquote class="text">
1573     <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1574     </p>
1575 schoenebeck 708 </blockquote><p>
1576 schoenebeck 940
1577 schoenebeck 708 </p>
1578 senoner 542 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1579 schoenebeck 575 output system as returned by the
1580 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>
1581 schoenebeck 575 command and &lt;param-list&gt; by an optional list of driver
1582 senoner 542 specific parameters in form of "key1=val1 key2=val2 ...", where
1583     character string values should be encapsulated into apostrophes (').
1584     Note that there might be drivers which require parameter(s) to be
1585     given with this command. Use the previously described commands in
1586     this chapter to get this information.
1587     </p>
1588     <p>Possible Answers:
1589     </p>
1590 schoenebeck 708 <p>
1591     </p>
1592 senoner 542 <blockquote class="text">
1593     <p>"OK[&lt;device-id&gt;]" -
1594     </p>
1595     <blockquote class="text">
1596     <p>in case the device was successfully created, where
1597     &lt;device-id&gt; is the numerical ID of the new device
1598     </p>
1599 schoenebeck 940 </blockquote>
1600    
1601 senoner 542
1602     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1603     </p>
1604     <blockquote class="text">
1605     <p>in case the device was created successfully, where
1606     &lt;device-id&gt; is the numerical ID of the new device, but there
1607     are noteworthy issue(s) related (e.g. sound card doesn't
1608     support given hardware parameters and the driver is using
1609     fall-back values), providing an appropriate warning code and
1610     warning message
1611     </p>
1612 schoenebeck 940 </blockquote>
1613    
1614 senoner 542
1615     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1616     </p>
1617     <blockquote class="text">
1618     <p>in case it failed, providing an appropriate error code and error message
1619     </p>
1620 schoenebeck 940 </blockquote>
1621    
1622 senoner 542
1623 schoenebeck 708 </blockquote><p>
1624 schoenebeck 940
1625 schoenebeck 708 </p>
1626 senoner 542 <p>Examples:
1627     </p>
1628 schoenebeck 708 <p>
1629     </p>
1630 senoner 542 <blockquote class="text">
1631     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1632     </p>
1633     <p>S: "OK[0]"
1634     </p>
1635 schoenebeck 708 </blockquote><p>
1636 schoenebeck 940
1637 schoenebeck 708 </p>
1638     <p>
1639     </p>
1640 senoner 542 <blockquote class="text">
1641     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1642     </p>
1643     <p>S: "OK[1]"
1644     </p>
1645 schoenebeck 708 </blockquote><p>
1646 schoenebeck 940
1647 schoenebeck 708 </p>
1648 schoenebeck 940 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1649 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1650     <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1651     Destroying an audio output device</h3>
1652 senoner 542
1653     <p>Use the following command to destroy a created output device:
1654     </p>
1655 schoenebeck 708 <p>
1656     </p>
1657 senoner 542 <blockquote class="text">
1658     <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1659     </p>
1660 schoenebeck 708 </blockquote><p>
1661 schoenebeck 940
1662 schoenebeck 708 </p>
1663 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1664     audio output device as given by the
1665 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>
1666     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>
1667 senoner 542 command.
1668     </p>
1669     <p>Possible Answers:
1670     </p>
1671 schoenebeck 708 <p>
1672     </p>
1673 senoner 542 <blockquote class="text">
1674     <p>"OK" -
1675     </p>
1676     <blockquote class="text">
1677     <p>in case the device was successfully destroyed
1678     </p>
1679 schoenebeck 940 </blockquote>
1680    
1681 senoner 542
1682     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1683     </p>
1684     <blockquote class="text">
1685     <p>in case the device was destroyed successfully, but there are
1686     noteworthy issue(s) related (e.g. an audio over ethernet
1687     driver was unloaded but the other host might not be
1688     informed about this situation), providing an appropriate
1689     warning code and warning message
1690     </p>
1691 schoenebeck 940 </blockquote>
1692    
1693 senoner 542
1694     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1695     </p>
1696     <blockquote class="text">
1697     <p>in case it failed, providing an appropriate error code and
1698     error message
1699     </p>
1700 schoenebeck 940 </blockquote>
1701    
1702 senoner 542
1703 schoenebeck 708 </blockquote><p>
1704 schoenebeck 940
1705 schoenebeck 708 </p>
1706 senoner 542 <p>Example:
1707     </p>
1708 schoenebeck 708 <p>
1709     </p>
1710 senoner 542 <blockquote class="text">
1711     <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1712     </p>
1713     <p>S: "OK"
1714     </p>
1715 schoenebeck 708 </blockquote><p>
1716 schoenebeck 940
1717 schoenebeck 708 </p>
1718 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1719 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1720     <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1721     Getting all created audio output device count</h3>
1722 senoner 542
1723     <p>Use the following command to count all created audio output devices:
1724     </p>
1725 schoenebeck 708 <p>
1726     </p>
1727 senoner 542 <blockquote class="text">
1728     <p>GET AUDIO_OUTPUT_DEVICES
1729     </p>
1730 schoenebeck 708 </blockquote><p>
1731 schoenebeck 940
1732 schoenebeck 708 </p>
1733 senoner 542 <p>Possible Answers:
1734     </p>
1735 schoenebeck 708 <p>
1736     </p>
1737 senoner 542 <blockquote class="text">
1738     <p>LinuxSampler will answer by sending the current number of all
1739     audio output devices.
1740     </p>
1741 schoenebeck 708 </blockquote><p>
1742 schoenebeck 940
1743 schoenebeck 708 </p>
1744 senoner 542 <p>Example:
1745     </p>
1746 schoenebeck 708 <p>
1747     </p>
1748 senoner 542 <blockquote class="text">
1749     <p>C: "GET AUDIO_OUTPUT_DEVICES"
1750     </p>
1751     <p>S: "4"
1752     </p>
1753 schoenebeck 708 </blockquote><p>
1754 schoenebeck 940
1755 schoenebeck 708 </p>
1756 schoenebeck 940 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1757 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1758     <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1759     Getting all created audio output device list</h3>
1760 senoner 542
1761     <p>Use the following command to list all created audio output devices:
1762     </p>
1763 schoenebeck 708 <p>
1764     </p>
1765 senoner 542 <blockquote class="text">
1766     <p>LIST AUDIO_OUTPUT_DEVICES
1767     </p>
1768 schoenebeck 708 </blockquote><p>
1769 schoenebeck 940
1770 schoenebeck 708 </p>
1771 senoner 542 <p>Possible Answers:
1772     </p>
1773 schoenebeck 708 <p>
1774     </p>
1775 senoner 542 <blockquote class="text">
1776     <p>LinuxSampler will answer by sending a comma separated list with
1777     the numerical IDs of all audio output devices.
1778     </p>
1779 schoenebeck 708 </blockquote><p>
1780 schoenebeck 940
1781 schoenebeck 708 </p>
1782 senoner 542 <p>Example:
1783     </p>
1784 schoenebeck 708 <p>
1785     </p>
1786 senoner 542 <blockquote class="text">
1787     <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1788     </p>
1789     <p>S: "0,1,4,5"
1790     </p>
1791 schoenebeck 708 </blockquote><p>
1792 schoenebeck 940
1793 schoenebeck 708 </p>
1794 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1795 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1796     <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1797     Getting current settings of an audio output device</h3>
1798 senoner 542
1799     <p>Use the following command to get current settings of a specific, created audio output device:
1800     </p>
1801 schoenebeck 708 <p>
1802     </p>
1803 senoner 542 <blockquote class="text">
1804     <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1805     </p>
1806 schoenebeck 708 </blockquote><p>
1807 schoenebeck 940
1808 schoenebeck 708 </p>
1809 senoner 542 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1810     of the audio output device as e.g. returned by the
1811 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.
1812 senoner 542 </p>
1813     <p>Possible Answers:
1814     </p>
1815     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1816     Each answer line begins with the information category name
1817     followed by a colon and then a space character &lt;SP&gt; and finally
1818     the info character string to that info category. As some
1819     parameters might allow multiple values, character strings are
1820     encapsulated into apostrophes ('). At the moment the following
1821     information categories are defined (independently of device):
1822     </p>
1823 schoenebeck 708 <p>
1824     </p>
1825 senoner 542 <blockquote class="text">
1826     <p>DRIVER -
1827     </p>
1828     <blockquote class="text">
1829     <p>identifier of the used audio output driver, as also
1830     returned by the
1831 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>
1832 senoner 542 command
1833     </p>
1834 schoenebeck 940 </blockquote>
1835    
1836 senoner 542
1837     <p>CHANNELS -
1838     </p>
1839     <blockquote class="text">
1840     <p>amount of audio output channels this device currently
1841     offers
1842     </p>
1843 schoenebeck 940 </blockquote>
1844    
1845 senoner 542
1846     <p>SAMPLERATE -
1847     </p>
1848     <blockquote class="text">
1849     <p>playback sample rate the device uses
1850     </p>
1851 schoenebeck 940 </blockquote>
1852    
1853 senoner 542
1854     <p>ACTIVE -
1855     </p>
1856     <blockquote class="text">
1857     <p>either true or false, if false then the audio device is
1858     inactive and doesn't output any sound, nor do the
1859     sampler channels connected to this audio device render
1860     any audio
1861     </p>
1862 schoenebeck 940 </blockquote>
1863    
1864 senoner 542
1865 schoenebeck 708 </blockquote><p>
1866 schoenebeck 940
1867 schoenebeck 708 </p>
1868 senoner 542 <p>The mentioned fields above don't have to be in particular
1869     order. The fields above are only those fields which are
1870     returned by all audio output devices. Every audio output driver
1871     might have its own, additional driver specific parameters (see
1872 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>)
1873 senoner 542 which are also returned by this command.
1874     </p>
1875     <p>Example:
1876     </p>
1877 schoenebeck 708 <p>
1878     </p>
1879 senoner 542 <blockquote class="text">
1880     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1881     </p>
1882     <p>S: "DRIVER: ALSA"
1883     </p>
1884     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1885     </p>
1886     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1887     </p>
1888     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1889     </p>
1890     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1891     </p>
1892     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1893     </p>
1894     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1895     </p>
1896     <p>&nbsp;&nbsp;&nbsp;"."
1897     </p>
1898 schoenebeck 708 </blockquote><p>
1899 schoenebeck 940
1900 schoenebeck 708 </p>
1901 schoenebeck 940 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1902 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1903     <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1904     Changing settings of audio output devices</h3>
1905 senoner 542
1906     <p>Use the following command to alter a specific setting of a created audio output device:
1907     </p>
1908 schoenebeck 708 <p>
1909     </p>
1910 senoner 542 <blockquote class="text">
1911     <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1912     </p>
1913 schoenebeck 708 </blockquote><p>
1914 schoenebeck 940
1915 schoenebeck 708 </p>
1916 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1917 schoenebeck 575 audio output device as given by the
1918 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>
1919     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>
1920 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change
1921 senoner 542 and &lt;value&gt; by the new value for this parameter.
1922     </p>
1923     <p>Possible Answers:
1924     </p>
1925 schoenebeck 708 <p>
1926     </p>
1927 senoner 542 <blockquote class="text">
1928     <p>"OK" -
1929     </p>
1930     <blockquote class="text">
1931     <p>in case setting was successfully changed
1932     </p>
1933 schoenebeck 940 </blockquote>
1934    
1935 senoner 542
1936     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1937     </p>
1938     <blockquote class="text">
1939     <p>in case setting was changed successfully, but there are
1940     noteworthy issue(s) related, providing an appropriate
1941     warning code and warning message
1942     </p>
1943 schoenebeck 940 </blockquote>
1944    
1945 senoner 542
1946     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1947     </p>
1948     <blockquote class="text">
1949     <p>in case it failed, providing an appropriate error code and
1950     error message
1951     </p>
1952 schoenebeck 940 </blockquote>
1953    
1954 senoner 542
1955 schoenebeck 708 </blockquote><p>
1956 schoenebeck 940
1957 schoenebeck 708 </p>
1958 senoner 542 <p>Example:
1959     </p>
1960 schoenebeck 708 <p>
1961     </p>
1962 senoner 542 <blockquote class="text">
1963     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1964     </p>
1965     <p>S: "OK"
1966     </p>
1967 schoenebeck 708 </blockquote><p>
1968 schoenebeck 940
1969 schoenebeck 708 </p>
1970 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
1971 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1972     <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
1973     Getting information about an audio channel</h3>
1974 senoner 542
1975     <p>Use the following command to get information about an audio channel:
1976     </p>
1977 schoenebeck 708 <p>
1978     </p>
1979 senoner 542 <blockquote class="text">
1980     <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1981     </p>
1982 schoenebeck 708 </blockquote><p>
1983 schoenebeck 940
1984 schoenebeck 708 </p>
1985 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1986 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>
1987     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>
1988 schoenebeck 575 command and &lt;audio-chan&gt; the audio channel number.
1989 senoner 542 </p>
1990     <p>Possible Answers:
1991     </p>
1992 schoenebeck 708 <p>
1993     </p>
1994 senoner 542 <blockquote class="text">
1995     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1996     Each answer line begins with the information category name
1997     followed by a colon and then a space character &lt;SP&gt; and finally
1998     the info character string to that info category. At the moment
1999     the following information categories are defined:
2000     </p>
2001 schoenebeck 708 <p>
2002     </p>
2003 senoner 542 <blockquote class="text">
2004     <p>NAME -
2005     </p>
2006     <blockquote class="text">
2007     <p>arbitrary character string naming the channel, which
2008     doesn't have to be unique (always returned by all audio channels)
2009     </p>
2010 schoenebeck 940 </blockquote>
2011    
2012 senoner 542
2013     <p>IS_MIX_CHANNEL -
2014     </p>
2015     <blockquote class="text">
2016     <p>either true or false, a mix-channel is not a real,
2017     independent audio channel, but a virtual channel which
2018     is mixed to another real channel, this mechanism is
2019     needed for sampler engines which need more audio
2020     channels than the used audio system might be able to offer
2021     (always returned by all audio channels)
2022     </p>
2023 schoenebeck 940 </blockquote>
2024    
2025 senoner 542
2026     <p>MIX_CHANNEL_DESTINATION -
2027     </p>
2028     <blockquote class="text">
2029     <p>numerical ID (positive integer including 0)
2030     which reflects the real audio channel (of the same audio
2031     output device) this mix channel refers to, means where
2032     the audio signal actually will be routed / added to
2033     (only returned in case the audio channel is mix channel)
2034     </p>
2035 schoenebeck 940 </blockquote>
2036    
2037 senoner 542
2038 schoenebeck 940 </blockquote>
2039    
2040 senoner 542
2041 schoenebeck 708 </blockquote><p>
2042 schoenebeck 940
2043 schoenebeck 708 </p>
2044 senoner 542 <p>The mentioned fields above don't have to be in particular
2045     order. The fields above are only those fields which are
2046     generally returned for the described cases by all audio
2047     channels regardless of the audio driver. Every audio channel
2048     might have its own, additional driver and channel specific
2049     parameters.
2050     </p>
2051     <p>Examples:
2052     </p>
2053 schoenebeck 708 <p>
2054     </p>
2055 senoner 542 <blockquote class="text">
2056     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2057     </p>
2058     <p>S: "NAME: studio monitor left"
2059     </p>
2060     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2061     </p>
2062     <p>&nbsp;&nbsp;&nbsp;"."
2063     </p>
2064 schoenebeck 708 </blockquote><p>
2065 schoenebeck 940
2066 schoenebeck 708 </p>
2067     <p>
2068     </p>
2069 senoner 542 <blockquote class="text">
2070     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2071     </p>
2072     <p>S: "NAME: studio monitor right"
2073     </p>
2074     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2075     </p>
2076     <p>&nbsp;&nbsp;&nbsp;"."
2077     </p>
2078 schoenebeck 708 </blockquote><p>
2079 schoenebeck 940
2080 schoenebeck 708 </p>
2081     <p>
2082     </p>
2083 senoner 542 <blockquote class="text">
2084     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2085     </p>
2086     <p>S: "NAME: studio monitor left"
2087     </p>
2088     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2089     </p>
2090     <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2091     </p>
2092     <p>&nbsp;&nbsp;&nbsp;"."
2093     </p>
2094 schoenebeck 708 </blockquote><p>
2095 schoenebeck 940
2096 schoenebeck 708 </p>
2097     <p>
2098     </p>
2099 senoner 542 <blockquote class="text">
2100     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2101     </p>
2102     <p>S: "NAME: 'ardour (left)'"
2103     </p>
2104     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2105     </p>
2106     <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2107     </p>
2108     <p>&nbsp;&nbsp;&nbsp;"."
2109     </p>
2110 schoenebeck 708 </blockquote><p>
2111 schoenebeck 940
2112 schoenebeck 708 </p>
2113 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2114 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2115     <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2116     Getting information about specific audio channel parameter</h3>
2117 senoner 542
2118     <p>Use the following command to get detailed information about specific audio channel parameter:
2119     </p>
2120 schoenebeck 708 <p>
2121     </p>
2122 senoner 542 <blockquote class="text">
2123     <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2124     </p>
2125 schoenebeck 708 </blockquote><p>
2126 schoenebeck 940
2127 schoenebeck 708 </p>
2128 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2129 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>
2130     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>
2131 senoner 542 command, &lt;chan&gt; the audio channel number
2132     and &lt;param&gt; a specific channel parameter name for which information should
2133 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).
2134 senoner 542 </p>
2135     <p>Possible Answers:
2136     </p>
2137 schoenebeck 708 <p>
2138     </p>
2139 senoner 542 <blockquote class="text">
2140     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2141     Each answer line begins with the information category name
2142     followed by a colon and then a space character &lt;SP&gt; and finally
2143     the info character string to that info category. There are
2144     information which is always returned, independently of the
2145     given channel parameter and there is optional information
2146     which is only shown dependently to the given audio channel. At
2147     the moment the following information categories are defined:
2148     </p>
2149 schoenebeck 708 <p>
2150     </p>
2151 senoner 542 <blockquote class="text">
2152     <p>TYPE -
2153     </p>
2154     <blockquote class="text">
2155     <p>either "BOOL" for boolean value(s) or "INT" for integer
2156     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2157     character string(s)
2158     (always returned)
2159     </p>
2160 schoenebeck 940 </blockquote>
2161    
2162 senoner 542
2163     <p>DESCRIPTION -
2164     </p>
2165     <blockquote class="text">
2166     <p>arbitrary text describing the purpose of the parameter (always returned)
2167     </p>
2168 schoenebeck 940 </blockquote>
2169    
2170 senoner 542
2171     <p>FIX -
2172     </p>
2173     <blockquote class="text">
2174     <p>either true or false, if true then this parameter is
2175     read only, thus cannot be altered
2176     (always returned)
2177     </p>
2178 schoenebeck 940 </blockquote>
2179    
2180 senoner 542
2181     <p>MULTIPLICITY -
2182     </p>
2183     <blockquote class="text">
2184     <p>either true or false, defines if this parameter allows
2185     only one value or a list of values, where true means
2186     multiple values and false only a single value allowed
2187     (always returned)
2188     </p>
2189 schoenebeck 940 </blockquote>
2190    
2191 senoner 542
2192     <p>RANGE_MIN -
2193     </p>
2194     <blockquote class="text">
2195     <p>defines lower limit of the allowed value range for this
2196     parameter, can be an integer value as well as a dotted
2197     number, usually used in conjunction with 'RANGE_MAX',
2198     but may also appear without
2199     (optionally returned, dependent to driver and channel
2200     parameter)
2201     </p>
2202 schoenebeck 940 </blockquote>
2203    
2204 senoner 542
2205     <p>RANGE_MAX -
2206     </p>
2207     <blockquote class="text">
2208     <p>defines upper limit of the allowed value range for this
2209     parameter, can be an integer value as well as a dotted
2210     number, usually used in conjunction with 'RANGE_MIN',
2211     but may also appear without
2212     (optionally returned, dependent to driver and channel
2213     parameter)
2214     </p>
2215 schoenebeck 940 </blockquote>
2216    
2217 senoner 542
2218     <p>POSSIBILITIES -
2219     </p>
2220     <blockquote class="text">
2221     <p>comma separated list of possible values for this
2222     parameter, character strings are encapsulated into
2223     apostrophes
2224     (optionally returned, dependent to driver and channel
2225     parameter)
2226     </p>
2227 schoenebeck 940 </blockquote>
2228    
2229 senoner 542
2230 schoenebeck 940 </blockquote>
2231    
2232 senoner 542
2233     <p>The mentioned fields above don't have to be in particular order.
2234     </p>
2235 schoenebeck 708 </blockquote><p>
2236 schoenebeck 940
2237 schoenebeck 708 </p>
2238 senoner 542 <p>Example:
2239     </p>
2240 schoenebeck 708 <p>
2241     </p>
2242 senoner 542 <blockquote class="text">
2243     <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2244     </p>
2245     <p>S: "DESCRIPTION: bindings to other JACK clients"
2246     </p>
2247     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2248     </p>
2249     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2250     </p>
2251     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2252     </p>
2253     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2254     </p>
2255     <p>&nbsp;&nbsp;&nbsp;"."
2256     </p>
2257 schoenebeck 708 </blockquote><p>
2258 schoenebeck 940
2259 schoenebeck 708 </p>
2260 schoenebeck 940 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2261 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2262     <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2263     Changing settings of audio output channels</h3>
2264 senoner 542
2265     <p>Use the following command to alter a specific setting of an audio output channel:
2266     </p>
2267 schoenebeck 708 <p>
2268     </p>
2269 senoner 542 <blockquote class="text">
2270     <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2271     </p>
2272 schoenebeck 708 </blockquote><p>
2273 schoenebeck 940
2274 schoenebeck 708 </p>
2275 schoenebeck 575 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2276 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>
2277     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>
2278 schoenebeck 575 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2279 senoner 542 parameter to change and &lt;value&gt; by the new value for this parameter.
2280     </p>
2281     <p>Possible Answers:
2282     </p>
2283 schoenebeck 708 <p>
2284     </p>
2285 senoner 542 <blockquote class="text">
2286     <p>"OK" -
2287     </p>
2288     <blockquote class="text">
2289     <p>in case setting was successfully changed
2290     </p>
2291 schoenebeck 940 </blockquote>
2292    
2293 senoner 542
2294     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2295     </p>
2296     <blockquote class="text">
2297     <p>in case setting was changed successfully, but there are
2298     noteworthy issue(s) related, providing an appropriate
2299     warning code and warning message
2300     </p>
2301 schoenebeck 940 </blockquote>
2302    
2303 senoner 542
2304     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2305     </p>
2306     <blockquote class="text">
2307     <p>in case it failed, providing an appropriate error code and
2308     error message
2309     </p>
2310 schoenebeck 940 </blockquote>
2311    
2312 senoner 542
2313 schoenebeck 708 </blockquote><p>
2314 schoenebeck 940
2315 schoenebeck 708 </p>
2316 senoner 542 <p>Example:
2317     </p>
2318 schoenebeck 708 <p>
2319     </p>
2320 senoner 542 <blockquote class="text">
2321     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2322     </p>
2323     <p>S: "OK"
2324     </p>
2325 schoenebeck 708 </blockquote><p>
2326 schoenebeck 940
2327 schoenebeck 708 </p>
2328     <p>
2329     </p>
2330 senoner 542 <blockquote class="text">
2331     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2332     </p>
2333     <p>S: "OK"
2334     </p>
2335 schoenebeck 708 </blockquote><p>
2336 schoenebeck 940
2337 schoenebeck 708 </p>
2338 schoenebeck 940 <a name="anchor10"></a><br /><hr />
2339 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2340     <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2341     Configuring MIDI input drivers</h3>
2342 senoner 542
2343     <p>Instances of drivers in LinuxSampler are called devices. You can use
2344     multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2345     MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2346     channel. For particular MIDI input systems it's also possible to create
2347     several devices of the same MIDI input type. This chapter describes all
2348     commands to configure LinuxSampler's MIDI input devices and their parameters.
2349     </p>
2350     <p>Instead of defining commands and parameters for each driver individually,
2351     all possible parameters, their meanings and possible values have to be obtained
2352     at runtime. This makes the protocol a bit abstract, but has the advantage, that
2353     front-ends can be written independently of what drivers are currently implemented
2354     and what parameters these drivers are actually offering. This means front-ends can
2355     even handle drivers which are implemented somewhere in future without modifying
2356     the front-end at all.
2357     </p>
2358     <p>Commands for configuring MIDI input devices are pretty much the same as the
2359     commands for configuring audio output drivers, already described in the last
2360     chapter.
2361     </p>
2362     <p>Note: examples in this chapter showing particular parameters of drivers are
2363     not meant as specification of the drivers' parameters. Driver implementations in
2364     LinuxSampler might have complete different parameter names and meanings than shown
2365     in these examples or might change in future, so these examples are only meant for
2366     showing how to retrieve what parameters drivers are offering, how to retrieve their
2367     possible values, etc.
2368     </p>
2369 schoenebeck 940 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2370 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2371     <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2372     Getting amount of available MIDI input drivers</h3>
2373 senoner 542
2374     <p>Use the following command to get the number of
2375     MIDI input drivers currently available for the
2376     LinuxSampler instance:
2377     </p>
2378 schoenebeck 708 <p>
2379     </p>
2380 senoner 542 <blockquote class="text">
2381     <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2382     </p>
2383 schoenebeck 708 </blockquote><p>
2384 schoenebeck 940
2385 schoenebeck 708 </p>
2386 senoner 542 <p>Possible Answers:
2387     </p>
2388 schoenebeck 708 <p>
2389     </p>
2390 senoner 542 <blockquote class="text">
2391     <p>LinuxSampler will answer by sending the
2392     number of available MIDI input drivers.
2393     </p>
2394 schoenebeck 708 </blockquote><p>
2395 schoenebeck 940
2396 schoenebeck 708 </p>
2397 senoner 542 <p>Example:
2398     </p>
2399 schoenebeck 708 <p>
2400     </p>
2401 senoner 542 <blockquote class="text">
2402     <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2403     </p>
2404     <p>S: "2"
2405     </p>
2406 schoenebeck 708 </blockquote><p>
2407 schoenebeck 940
2408 schoenebeck 708 </p>
2409 schoenebeck 940 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2410 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2411     <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2412     Getting all available MIDI input drivers</h3>
2413 senoner 542
2414     <p>Use the following command to list all MIDI input drivers currently available
2415     for the LinuxSampler instance:
2416     </p>
2417 schoenebeck 708 <p>
2418     </p>
2419 senoner 542 <blockquote class="text">
2420     <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2421     </p>
2422 schoenebeck 708 </blockquote><p>
2423 schoenebeck 940
2424 schoenebeck 708 </p>
2425 senoner 542 <p>Possible Answers:
2426     </p>
2427 schoenebeck 708 <p>
2428     </p>
2429 senoner 542 <blockquote class="text">
2430     <p>LinuxSampler will answer by sending comma separated character
2431     strings, each symbolizing a MIDI input driver.
2432     </p>
2433 schoenebeck 708 </blockquote><p>
2434 schoenebeck 940
2435 schoenebeck 708 </p>
2436 senoner 542 <p>Example:
2437     </p>
2438 schoenebeck 708 <p>
2439     </p>
2440 senoner 542 <blockquote class="text">
2441     <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2442     </p>
2443     <p>S: "ALSA,JACK"
2444     </p>
2445 schoenebeck 708 </blockquote><p>
2446 schoenebeck 940
2447 schoenebeck 708 </p>
2448 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2449 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2450     <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2451     Getting information about a specific MIDI input driver</h3>
2452 senoner 542
2453     <p>Use the following command to get detailed information about a specific MIDI input driver:
2454     </p>
2455 schoenebeck 708 <p>
2456     </p>
2457 senoner 542 <blockquote class="text">
2458     <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2459     </p>
2460 schoenebeck 708 </blockquote><p>
2461 schoenebeck 940
2462 schoenebeck 708 </p>
2463 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2464 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.
2465 senoner 542 </p>
2466     <p>Possible Answers:
2467     </p>
2468 schoenebeck 708 <p>
2469     </p>
2470 senoner 542 <blockquote class="text">
2471     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2472     Each answer line begins with the information category name
2473     followed by a colon and then a space character &lt;SP&gt; and finally
2474     the info character string to that info category. At the moment
2475     the following information categories are defined:
2476     </p>
2477 schoenebeck 708 <p>
2478     </p>
2479 senoner 542 <blockquote class="text">
2480     <p>DESCRIPTION -
2481     </p>
2482     <blockquote class="text">
2483     <p>arbitrary description text about the MIDI input driver
2484     </p>
2485 schoenebeck 940 </blockquote>
2486    
2487 senoner 542
2488     <p>VERSION -
2489     </p>
2490     <blockquote class="text">
2491     <p>arbitrary character string regarding the driver's version
2492     </p>
2493 schoenebeck 940 </blockquote>
2494    
2495 senoner 542
2496     <p>PARAMETERS -
2497     </p>
2498     <blockquote class="text">
2499     <p>comma separated list of all parameters available for the given MIDI input driver
2500     </p>
2501 schoenebeck 940 </blockquote>
2502    
2503 senoner 542
2504 schoenebeck 940 </blockquote>
2505    
2506 senoner 542
2507     <p>The mentioned fields above don't have to be in particular order.
2508     </p>
2509 schoenebeck 708 </blockquote><p>
2510 schoenebeck 940
2511 schoenebeck 708 </p>
2512 senoner 542 <p>Example:
2513     </p>
2514 schoenebeck 708 <p>
2515     </p>
2516 senoner 542 <blockquote class="text">
2517     <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2518     </p>
2519     <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2520     </p>
2521     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2522     </p>
2523     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2524     </p>
2525     <p>&nbsp;&nbsp;&nbsp;"."
2526     </p>
2527 schoenebeck 708 </blockquote><p>
2528 schoenebeck 940
2529 schoenebeck 708 </p>
2530 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2531 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2532     <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2533     Getting information about specific MIDI input driver parameter</h3>
2534 senoner 542
2535     <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2536     </p>
2537 schoenebeck 708 <p>
2538     </p>
2539 senoner 542 <blockquote class="text">
2540     <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2541     </p>
2542 schoenebeck 708 </blockquote><p>
2543 schoenebeck 940
2544 schoenebeck 708 </p>
2545 schoenebeck 561 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2546 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
2547 senoner 542 parameter name for which information should be obtained (as returned by the
2548 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
2549 senoner 542 of parameters on which the sought parameter &lt;param&gt; depends on,
2550     &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2551     where character string values are encapsulated into apostrophes ('). Arguments
2552     given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2553     will be ignored, means the front-end application can simply put all parameters
2554     in &lt;deplist&gt; with the values selected by the user.
2555     </p>
2556     <p>Possible Answers:
2557     </p>
2558     <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2559     Each answer line begins with the information category name
2560     followed by a colon and then a space character &lt;SP> and finally
2561     the info character string to that info category. There is
2562     information which is always returned, independent of the
2563     given driver parameter and there is optional information
2564     which is only shown dependent to given driver parameter. At
2565     the moment the following information categories are defined:
2566     </p>
2567 schoenebeck 708 <p>
2568     </p>
2569 senoner 542 <blockquote class="text">
2570     <p>TYPE -
2571     </p>
2572     <blockquote class="text">
2573     <p>either "BOOL" for boolean value(s) or "INT" for integer
2574     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2575     character string(s)
2576     (always returned, no matter which driver parameter)
2577     </p>
2578 schoenebeck 940 </blockquote>
2579    
2580 senoner 542
2581     <p>DESCRIPTION -
2582     </p>
2583     <blockquote class="text">
2584     <p>arbitrary text describing the purpose of the parameter
2585     (always returned, no matter which driver parameter)
2586     </p>
2587 schoenebeck 940 </blockquote>
2588    
2589 senoner 542
2590     <p>MANDATORY -
2591     </p>
2592     <blockquote class="text">
2593     <p>either true or false, defines if this parameter must be
2594     given when the device is to be created with the
2595 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
2596 senoner 542 (always returned, no matter which driver parameter)
2597     </p>
2598 schoenebeck 940 </blockquote>
2599    
2600 senoner 542
2601     <p>FIX -
2602     </p>
2603     <blockquote class="text">
2604     <p>either true or false, if false then this parameter can
2605     be changed at any time, once the device is created by
2606 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
2607 senoner 542 (always returned, no matter which driver parameter)
2608     </p>
2609 schoenebeck 940 </blockquote>
2610    
2611 senoner 542
2612     <p>MULTIPLICITY -
2613     </p>
2614     <blockquote class="text">
2615     <p>either true or false, defines if this parameter allows
2616     only one value or a list of values, where true means
2617     multiple values and false only a single value allowed
2618     (always returned, no matter which driver parameter)
2619     </p>
2620 schoenebeck 940 </blockquote>
2621    
2622 senoner 542
2623     <p>DEPENDS -
2624     </p>
2625     <blockquote class="text">
2626 schoenebeck 561 <p>comma separated list of parameters this parameter depends
2627 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2628     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2629     listed parameters, for example assuming that an audio
2630     driver (like the ALSA driver) offers parameters 'card'
2631     and 'samplerate' then parameter 'samplerate' would
2632     depend on 'card' because the possible values for
2633     'samplerate' depends on the sound card which can be
2634     chosen by the 'card' parameter
2635     (optionally returned, dependent to driver parameter)
2636     </p>
2637 schoenebeck 940 </blockquote>
2638    
2639 senoner 542
2640     <p>DEFAULT -
2641     </p>
2642     <blockquote class="text">
2643     <p>reflects the default value for this parameter which is
2644     used when the device is created and not explicitly
2645 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,
2646 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
2647     list, that's why character strings are encapsulated into
2648     apostrophes (')
2649     (optionally returned, dependent to driver parameter)
2650     </p>
2651 schoenebeck 940 </blockquote>
2652    
2653 senoner 542
2654     <p>RANGE_MIN -
2655     </p>
2656     <blockquote class="text">
2657     <p>defines lower limit of the allowed value range for this
2658     parameter, can be an integer value as well as a dotted
2659     number, this parameter is often used in conjunction
2660     with RANGE_MAX, but may also appear without
2661     (optionally returned, dependent to driver parameter)
2662     </p>
2663 schoenebeck 940 </blockquote>
2664    
2665 senoner 542
2666     <p>RANGE_MAX -
2667     </p>
2668     <blockquote class="text">
2669     <p>defines upper limit of the allowed value range for this
2670     parameter, can be an integer value as well as a dotted
2671     number, this parameter is often used in conjunction with
2672     RANGE_MIN, but may also appear without
2673     (optionally returned, dependent to driver parameter)
2674     </p>
2675 schoenebeck 940 </blockquote>
2676    
2677 senoner 542
2678     <p>POSSIBILITIES -
2679     </p>
2680     <blockquote class="text">
2681     <p>comma separated list of possible values for this
2682     parameter, character strings are encapsulated into
2683     apostrophes
2684     (optionally returned, dependent to driver parameter)
2685     </p>
2686 schoenebeck 940 </blockquote>
2687    
2688 senoner 542
2689 schoenebeck 708 </blockquote><p>
2690 schoenebeck 940
2691 schoenebeck 708 </p>
2692 senoner 542 <p>The mentioned fields above don't have to be in particular order.
2693     </p>
2694     <p>Example:
2695     </p>
2696 schoenebeck 708 <p>
2697     </p>
2698 senoner 542 <blockquote class="text">
2699     <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2700     </p>
2701     <p>S: "DESCRIPTION: Whether device is enabled"
2702     </p>
2703     <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2704     </p>
2705     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2706     </p>
2707     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2708     </p>
2709     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2710     </p>
2711     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2712     </p>
2713     <p>&nbsp;&nbsp;&nbsp;"."
2714     </p>
2715 schoenebeck 708 </blockquote><p>
2716 schoenebeck 940
2717 schoenebeck 708 </p>
2718 schoenebeck 940 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2719 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2720     <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2721     Creating a MIDI input device</h3>
2722 senoner 542
2723     <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2724     </p>
2725 schoenebeck 708 <p>
2726     </p>
2727 senoner 542 <blockquote class="text">
2728     <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2729     </p>
2730 schoenebeck 708 </blockquote><p>
2731 schoenebeck 940
2732 schoenebeck 708 </p>
2733 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2734 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
2735 senoner 542 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2736     character string values should be encapsulated into apostrophes (').
2737     Note that there might be drivers which require parameter(s) to be
2738     given with this command. Use the previously described commands in
2739     this chapter to get that information.
2740     </p>
2741     <p>Possible Answers:
2742     </p>
2743 schoenebeck 708 <p>
2744     </p>
2745 senoner 542 <blockquote class="text">
2746     <p>"OK[&lt;device-id&gt;]" -
2747     </p>
2748     <blockquote class="text">
2749     <p>in case the device was successfully created, where
2750     &lt;device-id&gt; is the numerical ID of the new device
2751     </p>
2752 schoenebeck 940 </blockquote>
2753    
2754 senoner 542
2755     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2756     </p>
2757     <blockquote class="text">
2758     <p>in case the driver was loaded successfully, where
2759     &lt;device-id&gt; is the numerical ID of the new device, but
2760     there are noteworthy issue(s) related, providing an
2761     appropriate warning code and warning message
2762     </p>
2763 schoenebeck 940 </blockquote>
2764    
2765 senoner 542
2766     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2767     </p>
2768     <blockquote class="text">
2769     <p>in case it failed, providing an appropriate error code and error message
2770     </p>
2771 schoenebeck 940 </blockquote>
2772    
2773 senoner 542
2774 schoenebeck 708 </blockquote><p>
2775 schoenebeck 940
2776 schoenebeck 708 </p>
2777 senoner 542 <p>Example:
2778     </p>
2779 schoenebeck 708 <p>
2780     </p>
2781 senoner 542 <blockquote class="text">
2782     <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2783     </p>
2784     <p>S: "OK[0]"
2785     </p>
2786 schoenebeck 708 </blockquote><p>
2787 schoenebeck 940
2788 schoenebeck 708 </p>
2789 schoenebeck 940 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2790 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2791     <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2792     Destroying a MIDI input device</h3>
2793 senoner 542
2794     <p>Use the following command to destroy a created MIDI input device:
2795     </p>
2796 schoenebeck 708 <p>
2797     </p>
2798 senoner 542 <blockquote class="text">
2799     <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2800     </p>
2801 schoenebeck 708 </blockquote><p>
2802 schoenebeck 940
2803 schoenebeck 708 </p>
2804 schoenebeck 575 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2805 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>
2806     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>
2807 schoenebeck 575 command.
2808 senoner 542 </p>
2809     <p>Possible Answers:
2810     </p>
2811 schoenebeck 708 <p>
2812     </p>
2813 senoner 542 <blockquote class="text">
2814     <p>"OK" -
2815     </p>
2816     <blockquote class="text">
2817     <p>in case the device was successfully destroyed
2818     </p>
2819 schoenebeck 940 </blockquote>
2820    
2821 senoner 542
2822     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2823     </p>
2824     <blockquote class="text">
2825     <p>in case the device was destroyed, but there are noteworthy
2826     issue(s) related, providing an appropriate warning code and
2827     warning message
2828     </p>
2829 schoenebeck 940 </blockquote>
2830    
2831 senoner 542
2832     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2833     </p>
2834     <blockquote class="text">
2835     <p>in case it failed, providing an appropriate error code and error message
2836     </p>
2837 schoenebeck 940 </blockquote>
2838    
2839 senoner 542
2840 schoenebeck 708 </blockquote><p>
2841 schoenebeck 940
2842 schoenebeck 708 </p>
2843 senoner 542 <p>Example:
2844     </p>
2845 schoenebeck 708 <p>
2846     </p>
2847 senoner 542 <blockquote class="text">
2848     <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2849     </p>
2850     <p>S: "OK"
2851     </p>
2852 schoenebeck 708 </blockquote><p>
2853 schoenebeck 940
2854 schoenebeck 708 </p>
2855 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2856 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2857     <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2858     Getting all created MIDI input device count</h3>
2859 senoner 542
2860     <p>Use the following command to count all created MIDI input devices:
2861     </p>
2862 schoenebeck 708 <p>
2863     </p>
2864 senoner 542 <blockquote class="text">
2865     <p>GET MIDI_INPUT_DEVICES
2866     </p>
2867 schoenebeck 708 </blockquote><p>
2868 schoenebeck 940
2869 schoenebeck 708 </p>
2870 senoner 542 <p>Possible Answers:
2871     </p>
2872 schoenebeck 708 <p>
2873     </p>
2874 senoner 542 <blockquote class="text">
2875     <p>LinuxSampler will answer by sending the current number of all
2876     MIDI input devices.
2877     </p>
2878 schoenebeck 708 </blockquote><p>
2879 schoenebeck 940
2880 schoenebeck 708 </p>
2881 senoner 542 <p>Example:
2882     </p>
2883 schoenebeck 708 <p>
2884     </p>
2885 senoner 542 <blockquote class="text">
2886     <p>C: "GET MIDI_INPUT_DEVICES"
2887     </p>
2888     <p>S: "3"
2889     </p>
2890 schoenebeck 708 </blockquote><p>
2891 schoenebeck 940
2892 schoenebeck 708 </p>
2893 schoenebeck 940 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2894 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2895     <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2896     Getting all created MIDI input device list</h3>
2897 senoner 542
2898     <p>Use the following command to list all created MIDI input devices:
2899     </p>
2900 schoenebeck 708 <p>
2901     </p>
2902 senoner 542 <blockquote class="text">
2903     <p>LIST MIDI_INPUT_DEVICES
2904     </p>
2905 schoenebeck 708 </blockquote><p>
2906 schoenebeck 940
2907 schoenebeck 708 </p>
2908 senoner 542 <p>Possible Answers:
2909     </p>
2910 schoenebeck 708 <p>
2911     </p>
2912 senoner 542 <blockquote class="text">
2913     <p>LinuxSampler will answer by sending a comma separated list
2914     with the numerical Ids of all created MIDI input devices.
2915     </p>
2916 schoenebeck 708 </blockquote><p>
2917 schoenebeck 940
2918 schoenebeck 708 </p>
2919 senoner 542 <p>Examples:
2920     </p>
2921 schoenebeck 708 <p>
2922     </p>
2923 senoner 542 <blockquote class="text">
2924     <p>C: "LIST MIDI_INPUT_DEVICES"
2925     </p>
2926     <p>S: "0,1,2"
2927     </p>
2928 schoenebeck 708 </blockquote><p>
2929 schoenebeck 940
2930 schoenebeck 708 </p>
2931     <p>
2932     </p>
2933 senoner 542 <blockquote class="text">
2934     <p>C: "LIST MIDI_INPUT_DEVICES"
2935     </p>
2936     <p>S: "1,3"
2937     </p>
2938 schoenebeck 708 </blockquote><p>
2939 schoenebeck 940
2940 schoenebeck 708 </p>
2941 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2942 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2943     <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2944     Getting current settings of a MIDI input device</h3>
2945 senoner 542
2946     <p>Use the following command to get current settings of a specific, created MIDI input device:
2947     </p>
2948 schoenebeck 708 <p>
2949     </p>
2950 senoner 542 <blockquote class="text">
2951     <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2952     </p>
2953 schoenebeck 708 </blockquote><p>
2954 schoenebeck 940
2955 schoenebeck 708 </p>
2956 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2957 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>
2958     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>
2959 schoenebeck 575 command.
2960 senoner 542 </p>
2961     <p>Possible Answers:
2962     </p>
2963 schoenebeck 708 <p>
2964     </p>
2965 senoner 542 <blockquote class="text">
2966     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2967     Each answer line begins with the information category name
2968     followed by a colon and then a space character &lt;SP&gt; and finally
2969     the info character string to that info category. As some
2970     parameters might allow multiple values, character strings are
2971     encapsulated into apostrophes ('). At the moment the following
2972     information categories are defined (independent of driver):
2973     </p>
2974 schoenebeck 708 <p>
2975     </p>
2976 senoner 542 <blockquote class="text">
2977     <p>DRIVER -
2978     </p>
2979     <blockquote class="text">
2980     <p>identifier of the used MIDI input driver, as e.g.
2981 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>
2982 senoner 542 command
2983     </p>
2984 schoenebeck 940 </blockquote>
2985    
2986 senoner 542
2987 schoenebeck 940 </blockquote>
2988    
2989 senoner 542 <blockquote class="text">
2990 schoenebeck 708 <p>ACTIVE -
2991 senoner 542 </p>
2992     <blockquote class="text">
2993     <p>either true or false, if false then the MIDI device is
2994     inactive and doesn't listen to any incoming MIDI events
2995     and thus doesn't forward them to connected sampler
2996     channels
2997     </p>
2998 schoenebeck 940 </blockquote>
2999    
3000 senoner 542
3001 schoenebeck 940 </blockquote>
3002    
3003 senoner 542
3004 schoenebeck 708 </blockquote><p>
3005 schoenebeck 940
3006 schoenebeck 708 </p>
3007 senoner 542 <p>The mentioned fields above don't have to be in particular
3008     order. The fields above are only those fields which are
3009     returned by all MIDI input devices. Every MIDI input driver
3010     might have its own, additional driver specific parameters (see
3011 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
3012 senoner 542 by this command.
3013     </p>
3014     <p>Example:
3015     </p>
3016 schoenebeck 708 <p>
3017     </p>
3018 senoner 542 <blockquote class="text">
3019     <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3020     </p>
3021     <p>S: "DRIVER: ALSA"
3022     </p>
3023     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3024     </p>
3025     <p>&nbsp;&nbsp;&nbsp;"."
3026     </p>
3027 schoenebeck 708 </blockquote><p>
3028 schoenebeck 940
3029 schoenebeck 708 </p>
3030 schoenebeck 940 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3031 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3032     <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3033     Changing settings of MIDI input devices</h3>
3034 senoner 542
3035     <p>Use the following command to alter a specific setting of a created MIDI input device:
3036     </p>
3037 schoenebeck 708 <p>
3038     </p>
3039 senoner 542 <blockquote class="text">
3040     <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3041     </p>
3042 schoenebeck 708 </blockquote><p>
3043 schoenebeck 940
3044 schoenebeck 708 </p>
3045 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3046 schoenebeck 575 MIDI input device as returned by the
3047 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>
3048     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>
3049 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change and
3050 senoner 542 &lt;value&gt; by the new value for this parameter.
3051     </p>
3052     <p>Possible Answers:
3053     </p>
3054 schoenebeck 708 <p>
3055     </p>
3056 senoner 542 <blockquote class="text">
3057     <p>"OK" -
3058     </p>
3059     <blockquote class="text">
3060     <p>in case setting was successfully changed
3061     </p>
3062 schoenebeck 940 </blockquote>
3063    
3064 senoner 542
3065     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3066     </p>
3067     <blockquote class="text">
3068     <p>in case setting was changed successfully, but there are
3069     noteworthy issue(s) related, providing an appropriate
3070     warning code and warning message
3071     </p>
3072 schoenebeck 940 </blockquote>
3073    
3074 senoner 542
3075     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3076     </p>
3077     <blockquote class="text">
3078     <p>in case it failed, providing an appropriate error code and error message
3079     </p>
3080 schoenebeck 940 </blockquote>
3081    
3082 senoner 542
3083 schoenebeck 708 </blockquote><p>
3084 schoenebeck 940
3085 schoenebeck 708 </p>
3086 senoner 542 <p>Example:
3087     </p>
3088 schoenebeck 708 <p>
3089     </p>
3090 senoner 542 <blockquote class="text">
3091     <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3092     </p>
3093     <p>S: "OK"
3094     </p>
3095 schoenebeck 708 </blockquote><p>
3096 schoenebeck 940
3097 schoenebeck 708 </p>
3098 schoenebeck 940 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3099 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3100     <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3101     Getting information about a MIDI port</h3>
3102 senoner 542
3103     <p>Use the following command to get information about a MIDI port:
3104     </p>
3105 schoenebeck 708 <p>
3106     </p>
3107 senoner 542 <blockquote class="text">
3108     <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3109     </p>
3110 schoenebeck 708 </blockquote><p>
3111 schoenebeck 940
3112 schoenebeck 708 </p>
3113 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3114 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>
3115     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>
3116 schoenebeck 575 command and &lt;midi-port&gt; the MIDI input port number.
3117 senoner 542 </p>
3118     <p>Possible Answers:
3119     </p>
3120 schoenebeck 708 <p>
3121     </p>
3122 senoner 542 <blockquote class="text">
3123     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3124     Each answer line begins with the information category name
3125     followed by a colon and then a space character &lt;SP&gt; and finally
3126     the info character string to that info category. At the moment
3127     the following information categories are defined:
3128     </p>
3129     <p>NAME -
3130     </p>
3131     <blockquote class="text">
3132     <p>arbitrary character string naming the port
3133     </p>
3134 schoenebeck 940 </blockquote>
3135    
3136 senoner 542
3137 schoenebeck 708 </blockquote><p>
3138 schoenebeck 940
3139 schoenebeck 708 </p>
3140 senoner 542 <p>The field above is only the one which is returned by all MIDI
3141     ports regardless of the MIDI driver and port. Every MIDI port
3142     might have its own, additional driver and port specific
3143     parameters.
3144     </p>
3145     <p>Example:
3146     </p>
3147 schoenebeck 708 <p>
3148     </p>
3149 senoner 542 <blockquote class="text">
3150     <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3151     </p>
3152     <p>S: "NAME: 'Masterkeyboard'"
3153     </p>
3154     <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3155     </p>
3156     <p>&nbsp;&nbsp;&nbsp;"."
3157     </p>
3158 schoenebeck 708 </blockquote><p>
3159 schoenebeck 940
3160 schoenebeck 708 </p>
3161 schoenebeck 940 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3162 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3163     <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3164     Getting information about specific MIDI port parameter</h3>
3165 senoner 542
3166     <p>Use the following command to get detailed information about specific MIDI port parameter:
3167     </p>
3168 schoenebeck 708 <p>
3169     </p>
3170 senoner 542 <blockquote class="text">
3171     <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3172     </p>
3173 schoenebeck 708 </blockquote><p>
3174 schoenebeck 940
3175 schoenebeck 708 </p>
3176 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3177 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>
3178     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>
3179 schoenebeck 575 command, &lt;port&gt; the MIDI port number and
3180 senoner 542 &lt;param&gt; a specific port parameter name for which information should be
3181 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).
3182 senoner 542 </p>
3183     <p>Possible Answers:
3184     </p>
3185 schoenebeck 708 <p>
3186     </p>
3187 senoner 542 <blockquote class="text">
3188     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3189     Each answer line begins with the information category name
3190     followed by a colon and then a space character &lt;SP&gt; and finally
3191     the info character string to that info category. There is
3192     information which is always returned, independently of the
3193     given channel parameter and there is optional information
3194     which are only shown dependently to the given MIDI port. At the
3195     moment the following information categories are defined:
3196     </p>
3197     <p>TYPE -
3198     </p>
3199     <blockquote class="text">
3200     <p>either "BOOL" for boolean value(s) or "INT" for integer
3201     value(s) or "FLOAT" for dotted number(s) or "STRING" for
3202     character string(s)
3203     (always returned)
3204     </p>
3205 schoenebeck 940 </blockquote>
3206    
3207 senoner 542
3208     <p>DESCRIPTION -
3209     </p>
3210     <blockquote class="text">
3211     <p>arbitrary text describing the purpose of the parameter
3212     (always returned)
3213     </p>
3214 schoenebeck 940 </blockquote>
3215    
3216 senoner 542
3217     <p>FIX -
3218     </p>
3219     <blockquote class="text">
3220     <p>either true or false, if true then this parameter is
3221     read only, thus cannot be altered
3222     (always returned)
3223     </p>
3224 schoenebeck 940 </blockquote>
3225    
3226 senoner 542
3227     <p>MULTIPLICITY -
3228     </p>
3229     <blockquote class="text">
3230     <p>either true or false, defines if this parameter allows
3231     only one value or a list of values, where true means
3232     multiple values and false only a single value allowed
3233     (always returned)
3234     </p>
3235 schoenebeck 940 </blockquote>
3236    
3237 senoner 542
3238     <p>RANGE_MIN -
3239     </p>
3240     <blockquote class="text">
3241     <p>defines lower limit of the allowed value range for this
3242     parameter, can be an integer value as well as a dotted
3243     number, this parameter is usually used in conjunction
3244     with 'RANGE_MAX' but may also appear without
3245     (optionally returned, dependent to driver and port
3246     parameter)
3247     </p>
3248 schoenebeck 940 </blockquote>
3249    
3250 senoner 542
3251     <p>RANGE_MAX -
3252     </p>
3253     <blockquote class="text">
3254     <p>defines upper limit of the allowed value range for this
3255     parameter, can be an integer value as well as a dotted
3256     number, this parameter is usually used in conjunction
3257     with 'RANGE_MIN' but may also appear without
3258     (optionally returned, dependent to driver and port
3259     parameter)
3260     </p>
3261 schoenebeck 940 </blockquote>
3262    
3263 senoner 542
3264     <p>POSSIBILITIES -
3265     </p>
3266     <blockquote class="text">
3267     <p>comma separated list of possible values for this
3268     parameter, character strings are encapsulated into
3269     apostrophes
3270     (optionally returned, dependent to device and port
3271     parameter)
3272     </p>
3273 schoenebeck 940 </blockquote>
3274    
3275 senoner 542
3276 schoenebeck 708 </blockquote><p>
3277 schoenebeck 940
3278 schoenebeck 708 </p>
3279 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3280     </p>
3281     <p>Example:
3282     </p>
3283 schoenebeck 708 <p>
3284     </p>
3285 senoner 542 <blockquote class="text">
3286     <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3287     </p>
3288     <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3289     </p>
3290     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3291     </p>
3292     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3293     </p>
3294     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3295     </p>
3296     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3297     </p>
3298     <p>&nbsp;&nbsp;&nbsp;"."
3299     </p>
3300 schoenebeck 708 </blockquote><p>
3301 schoenebeck 940
3302 schoenebeck 708 </p>
3303 schoenebeck 940 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3304 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3305     <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3306     Changing settings of MIDI input ports</h3>
3307 senoner 542
3308     <p>Use the following command to alter a specific setting of a MIDI input port:
3309     </p>
3310 schoenebeck 708 <p>
3311     </p>
3312 senoner 542 <blockquote class="text">
3313     <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3314     </p>
3315 schoenebeck 708 </blockquote><p>
3316 schoenebeck 940
3317 schoenebeck 708 </p>
3318 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3319 schoenebeck 575 MIDI device as returned by the
3320 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>
3321     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>
3322 schoenebeck 575 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3323 senoner 542 the parameter to change and &lt;value&gt; by the new value for this
3324 schoenebeck 1363 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3325     for specifying no value for parameters allowing a list of values.
3326 senoner 542 </p>
3327     <p>Possible Answers:
3328     </p>
3329 schoenebeck 708 <p>
3330     </p>
3331 senoner 542 <blockquote class="text">
3332     <p>"OK" -
3333     </p>
3334     <blockquote class="text">
3335     <p>in case setting was successfully changed
3336     </p>
3337 schoenebeck 940 </blockquote>
3338    
3339 senoner 542
3340     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3341     </p>
3342     <blockquote class="text">
3343     <p>in case setting was changed successfully, but there are
3344     noteworthy issue(s) related, providing an appropriate
3345     warning code and warning message
3346     </p>
3347 schoenebeck 940 </blockquote>
3348    
3349 senoner 542
3350     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3351     </p>
3352     <blockquote class="text">
3353     <p>in case it failed, providing an appropriate error code and error message
3354     </p>
3355 schoenebeck 940 </blockquote>
3356    
3357 senoner 542
3358 schoenebeck 708 </blockquote><p>
3359 schoenebeck 940
3360 schoenebeck 708 </p>
3361 senoner 542 <p>Example:
3362     </p>
3363 schoenebeck 708 <p>
3364     </p>
3365 senoner 542 <blockquote class="text">
3366 schoenebeck 1363 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3367     </p>
3368     <p>S: "OK"
3369     </p>
3370     </blockquote><p>
3371    
3372     </p>
3373 senoner 542 <p>
3374 schoenebeck 1363 </p>
3375     <blockquote class="text">
3376     <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3377 senoner 542 </p>
3378 schoenebeck 1363 <p>S: "OK"
3379     </p>
3380 schoenebeck 708 </blockquote><p>
3381 schoenebeck 940
3382 schoenebeck 708 </p>
3383 schoenebeck 940 <a name="anchor11"></a><br /><hr />
3384 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3385     <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3386     Configuring sampler channels</h3>
3387 senoner 542
3388 schoenebeck 575 <p>The following commands describe how to add and remove sampler channels, associate a
3389     sampler channel with a sampler engine, load instruments and connect sampler channels to
3390     MIDI and audio devices.
3391 senoner 542 </p>
3392 schoenebeck 940 <a name="LOAD INSTRUMENT"></a><br /><hr />
3393 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3394     <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3395     Loading an instrument</h3>
3396 senoner 542
3397     <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3398     </p>
3399 schoenebeck 708 <p>
3400     </p>
3401 senoner 542 <blockquote class="text">
3402     <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3403     </p>
3404 schoenebeck 708 </blockquote><p>
3405 schoenebeck 940
3406 schoenebeck 708 </p>
3407 senoner 542 <p>Where &lt;filename&gt; is the name of the instrument file on the
3408     LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3409     instrument in the instrument file and &lt;sampler-channel> is the
3410     number of the sampler channel the instrument should be assigned to.
3411     Each sampler channel can only have one instrument.
3412     </p>
3413 schoenebeck 1251 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3414     escape characters for special characters (see chapter
3415     "<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>"
3416     for details) and accordingly backslash characters in the filename
3417     MUST now be escaped as well!
3418     </p>
3419 senoner 542 <p>The difference between regular and NON_MODAL versions of the command
3420     is that the regular command returns OK only after the instrument has been
3421     fully loaded and the channel is ready to be used while NON_MODAL version
3422     returns immediately and a background process is launched to load the instrument
3423 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>
3424 senoner 542 command can be used to obtain loading
3425     progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3426     such as making sure that the file could be read and it is of a proper format
3427     and SHOULD return ERR and SHOULD not launch the background process should any
3428     errors be detected at that point.
3429     </p>
3430     <p>Possible Answers:
3431     </p>
3432 schoenebeck 708 <p>
3433     </p>
3434 senoner 542 <blockquote class="text">
3435     <p>"OK" -
3436     </p>
3437     <blockquote class="text">
3438     <p>in case the instrument was successfully loaded
3439     </p>
3440 schoenebeck 940 </blockquote>
3441    
3442 senoner 542
3443     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3444     </p>
3445     <blockquote class="text">
3446     <p>in case the instrument was loaded successfully, but there
3447     are noteworthy issue(s) related (e.g. Engine doesn't support
3448     one or more patch parameters provided by the loaded
3449     instrument file), providing an appropriate warning code and
3450     warning message
3451     </p>
3452 schoenebeck 940 </blockquote>
3453    
3454 senoner 542
3455     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3456     </p>
3457     <blockquote class="text">
3458     <p>in case it failed, providing an appropriate error code and error message
3459     </p>
3460 schoenebeck 940 </blockquote>
3461    
3462 senoner 542
3463 schoenebeck 708 </blockquote><p>
3464 schoenebeck 940
3465 schoenebeck 708 </p>
3466 schoenebeck 1572 <p>Example (Unix):
3467 senoner 542 </p>
3468 schoenebeck 708 <p>
3469     </p>
3470 senoner 542 <blockquote class="text">
3471 schoenebeck 1572 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3472     </p>
3473     <p>S: OK
3474     </p>
3475     </blockquote><p>
3476    
3477     </p>
3478     <p>Example (Windows):
3479     </p>
3480 senoner 542 <p>
3481 schoenebeck 1572 </p>
3482     <blockquote class="text">
3483     <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3484 senoner 542 </p>
3485 schoenebeck 1572 <p>S: OK
3486     </p>
3487 schoenebeck 708 </blockquote><p>
3488 schoenebeck 940
3489 schoenebeck 708 </p>
3490 schoenebeck 940 <a name="LOAD ENGINE"></a><br /><hr />
3491 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3492     <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3493     Loading a sampler engine</h3>
3494 senoner 542
3495 schoenebeck 575 <p>A sampler engine type can be associated to a specific sampler
3496 senoner 542 channel by the following command:
3497     </p>
3498 schoenebeck 708 <p>
3499     </p>
3500 senoner 542 <blockquote class="text">
3501     <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3502     </p>
3503 schoenebeck 708 </blockquote><p>
3504 schoenebeck 940
3505 schoenebeck 708 </p>
3506 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3507 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;
3508 schoenebeck 575 the sampler channel as returned by the
3509 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
3510     <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
3511 schoenebeck 575 the engine type should be assigned to. This command should be issued
3512     after adding a new sampler channel and before any other control
3513     commands on the new sampler channel. It can also be used to change
3514     the engine type of a sampler channel. This command has (currently) no
3515     way to define or force if a new engine instance should be created and
3516     assigned to the given sampler channel or if an already existing
3517     instance of that engine type, shared with other sampler channels,
3518     should be used.
3519 senoner 542 </p>
3520     <p>Possible Answers:
3521     </p>
3522 schoenebeck 708 <p>
3523     </p>
3524 senoner 542 <blockquote class="text">
3525     <p>"OK" -
3526     </p>
3527     <blockquote class="text">
3528     <p>in case the engine was successfully deployed
3529     </p>
3530 schoenebeck 940 </blockquote>
3531    
3532 senoner 542
3533     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3534     </p>
3535     <blockquote class="text">
3536     <p>in case the engine was deployed successfully, but there
3537     are noteworthy issue(s) related, providing an appropriate
3538     warning code and warning message
3539     </p>
3540 schoenebeck 940 </blockquote>
3541    
3542 senoner 542
3543     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3544     </p>
3545     <blockquote class="text">
3546     <p>in case it failed, providing an appropriate error code and
3547     error message
3548     </p>
3549 schoenebeck 940 </blockquote>
3550    
3551 senoner 542
3552 schoenebeck 708 </blockquote><p>
3553 schoenebeck 940
3554 schoenebeck 708 </p>
3555 senoner 542 <p>Example:
3556     </p>
3557 schoenebeck 708 <p>
3558     </p>
3559 senoner 542 <blockquote class="text">
3560     <p>
3561     </p>
3562 schoenebeck 708 </blockquote><p>
3563 schoenebeck 940
3564 schoenebeck 708 </p>
3565 schoenebeck 940 <a name="GET CHANNELS"></a><br /><hr />
3566 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3567     <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3568     Getting all created sampler channel count</h3>
3569 senoner 542
3570     <p>The number of sampler channels can change on runtime. To get the
3571     current amount of sampler channels, the front-end can send the
3572     following command:
3573     </p>
3574 schoenebeck 708 <p>
3575     </p>
3576 senoner 542 <blockquote class="text">
3577     <p>GET CHANNELS
3578     </p>
3579 schoenebeck 708 </blockquote><p>
3580 schoenebeck 940
3581 schoenebeck 708 </p>
3582 senoner 542 <p>Possible Answers:
3583     </p>
3584 schoenebeck 708 <p>
3585     </p>
3586 senoner 542 <blockquote class="text">
3587     <p>LinuxSampler will answer by returning the current number of sampler channels.
3588     </p>
3589 schoenebeck 708 </blockquote><p>
3590 schoenebeck 940
3591 schoenebeck 708 </p>
3592 senoner 542 <p>Example:
3593     </p>
3594 schoenebeck 708 <p>
3595     </p>
3596 senoner 542 <blockquote class="text">
3597     <p>C: "GET CHANNELS"
3598     </p>
3599     <p>S: "12"
3600     </p>
3601 schoenebeck 708 </blockquote><p>
3602 schoenebeck 940
3603 schoenebeck 708 </p>
3604 schoenebeck 940 <a name="LIST CHANNELS"></a><br /><hr />
3605 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3606     <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3607     Getting all created sampler channel list</h3>
3608 senoner 542
3609     <p>The number of sampler channels can change on runtime. To get the
3610     current list of sampler channels, the front-end can send the
3611     following command:
3612     </p>
3613 schoenebeck 708 <p>
3614     </p>
3615 senoner 542 <blockquote class="text">
3616     <p>LIST CHANNELS
3617     </p>
3618 schoenebeck 708 </blockquote><p>
3619 schoenebeck 940
3620 schoenebeck 708 </p>
3621 senoner 542 <p>Possible Answers:
3622     </p>
3623 schoenebeck 708 <p>
3624     </p>
3625 senoner 542 <blockquote class="text">
3626     <p>LinuxSampler will answer by returning a comma separated list
3627     with all sampler channels numerical IDs.
3628     </p>
3629 schoenebeck 708 </blockquote><p>
3630 schoenebeck 940
3631 schoenebeck 708 </p>
3632 senoner 542 <p>Example:
3633     </p>
3634 schoenebeck 708 <p>
3635     </p>
3636 senoner 542 <blockquote class="text">
3637     <p>C: "LIST CHANNELS"
3638     </p>
3639     <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3640     </p>
3641 schoenebeck 708 </blockquote><p>
3642 schoenebeck 940
3643 schoenebeck 708 </p>
3644 schoenebeck 940 <a name="ADD CHANNEL"></a><br /><hr />
3645 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3646     <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3647     Adding a new sampler channel</h3>
3648 senoner 542
3649     <p>A new sampler channel can be added to the end of the sampler
3650     channel list by sending the following command:
3651     </p>
3652 schoenebeck 708 <p>
3653     </p>
3654 senoner 542 <blockquote class="text">
3655     <p>ADD CHANNEL
3656     </p>
3657 schoenebeck 708 </blockquote><p>
3658 schoenebeck 940
3659 schoenebeck 708 </p>
3660 senoner 542 <p>This will increment the sampler channel count by one and the new
3661     sampler channel will be appended to the end of the sampler channel
3662     list. The front-end should send the respective, related commands
3663     right after to e.g. load an engine, load an instrument and setting
3664     input, output method and eventually other commands to initialize
3665     the new channel. The front-end should use the sampler channel
3666     returned by the answer of this command to perform the previously
3667     recommended commands, to avoid race conditions e.g. with other
3668     front-ends that might also have sent an "ADD CHANNEL" command.
3669     </p>
3670     <p>Possible Answers:
3671     </p>
3672 schoenebeck 708 <p>
3673     </p>
3674 senoner 542 <blockquote class="text">
3675     <p>"OK[&lt;sampler-channel&gt;]" -
3676     </p>
3677     <blockquote class="text">
3678     <p>in case a new sampler channel could be added, where
3679     &lt;sampler-channel&gt; reflects the channel number of the new
3680 schoenebeck 561 created sampler channel which should be used to set up
3681     the sampler channel by sending subsequent initialization
3682 senoner 542 commands
3683     </p>
3684 schoenebeck 940 </blockquote>
3685    
3686 senoner 542
3687     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3688     </p>
3689     <blockquote class="text">
3690     <p>in case a new channel was added successfully, but there are
3691     noteworthy issue(s) related, providing an appropriate
3692     warning code and warning message
3693     </p>
3694 schoenebeck 940 </blockquote>
3695    
3696 senoner 542
3697     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3698     </p>
3699     <blockquote class="text">
3700     <p>in case it failed, providing an appropriate error code and
3701     error message
3702     </p>
3703 schoenebeck 940 </blockquote>
3704    
3705 senoner 542
3706 schoenebeck 708 </blockquote><p>
3707 schoenebeck 940
3708 schoenebeck 708 </p>
3709 senoner 542 <p>Example:
3710     </p>
3711 schoenebeck 708 <p>
3712     </p>
3713 senoner 542 <blockquote class="text">
3714     <p>
3715     </p>
3716 schoenebeck 708 </blockquote><p>
3717 schoenebeck 940
3718 schoenebeck 708 </p>
3719 schoenebeck 940 <a name="REMOVE CHANNEL"></a><br /><hr />
3720 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3721     <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3722     Removing a sampler channel</h3>
3723 senoner 542
3724     <p>A sampler channel can be removed by sending the following command:
3725     </p>
3726 schoenebeck 708 <p>
3727     </p>
3728 senoner 542 <blockquote class="text">
3729     <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3730     </p>
3731 schoenebeck 708 </blockquote><p>
3732 schoenebeck 940
3733 schoenebeck 708 </p>
3734 schoenebeck 561 <p>Where &lt;sampler-channel&gt; should be replaced by the
3735     number of the sampler channel as given by the
3736 schoenebeck 974 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3737     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3738 schoenebeck 561 command. The channel numbers of all subsequent sampler channels
3739     remain the same.
3740 senoner 542 </p>
3741     <p>Possible Answers:
3742     </p>
3743 schoenebeck 708 <p>
3744     </p>
3745 senoner 542 <blockquote class="text">
3746     <p>"OK" -
3747     </p>
3748     <blockquote class="text">
3749     <p>in case the given sampler channel could be removed
3750     </p>
3751 schoenebeck 940 </blockquote>
3752    
3753 senoner 542
3754     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3755     </p>
3756     <blockquote class="text">
3757     <p>in case the given channel was removed, but there are
3758     noteworthy issue(s) related, providing an appropriate
3759     warning code and warning message
3760     </p>
3761 schoenebeck 940 </blockquote>
3762    
3763 senoner 542
3764     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3765     </p>
3766     <blockquote class="text">
3767     <p>in case it failed, providing an appropriate error code and
3768     error message
3769     </p>
3770 schoenebeck 940 </blockquote>
3771    
3772 senoner 542
3773 schoenebeck 708 </blockquote><p>
3774 schoenebeck 940
3775 schoenebeck 708 </p>
3776 senoner 542 <p>Example:
3777     </p>
3778 schoenebeck 708 <p>
3779     </p>
3780 senoner 542 <blockquote class="text">
3781     <p>
3782     </p>
3783 schoenebeck 708 </blockquote><p>
3784 schoenebeck 940
3785 schoenebeck 708 </p>
3786 schoenebeck 940 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3787 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3788     <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3789     Getting amount of available engines</h3>
3790 senoner 542
3791     <p>The front-end can ask for the number of available engines by sending the following command:
3792     </p>
3793 schoenebeck 708 <p>
3794     </p>
3795 senoner 542 <blockquote class="text">
3796     <p>GET AVAILABLE_ENGINES
3797     </p>
3798 schoenebeck 708 </blockquote><p>
3799 schoenebeck 940
3800 schoenebeck 708 </p>
3801 senoner 542 <p>Possible Answers:
3802     </p>
3803 schoenebeck 708 <p>
3804     </p>
3805 senoner 542 <blockquote class="text">
3806     <p>LinuxSampler will answer by sending the number of available engines.
3807     </p>
3808 schoenebeck 708 </blockquote><p>
3809 schoenebeck 940
3810 schoenebeck 708 </p>
3811 senoner 542 <p>Example:
3812     </p>
3813 schoenebeck 708 <p>
3814     </p>
3815 senoner 542 <blockquote class="text">
3816     <p>C: "GET AVAILABLE_ENGINES"
3817     </p>
3818     <p>S: "4"
3819     </p>
3820 schoenebeck 708 </blockquote><p>
3821 schoenebeck 940
3822 schoenebeck 708 </p>
3823 schoenebeck 940 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3824 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3825     <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3826     Getting all available engines</h3>
3827 senoner 542
3828     <p>The front-end can ask for a list of all available engines by sending the following command:
3829     </p>
3830 schoenebeck 708 <p>
3831     </p>
3832 senoner 542 <blockquote class="text">
3833     <p>LIST AVAILABLE_ENGINES
3834     </p>
3835 schoenebeck 708 </blockquote><p>
3836 schoenebeck 940
3837 schoenebeck 708 </p>
3838 senoner 542 <p>Possible Answers:
3839     </p>
3840 schoenebeck 708 <p>
3841     </p>
3842 senoner 542 <blockquote class="text">
3843 schoenebeck 561 <p>LinuxSampler will answer by sending a comma separated list
3844     of the engines' names encapsulated into apostrophes (').
3845     Engine names can consist of lower and upper cases,
3846     digits and underlines ("_" character).
3847 senoner 542 </p>
3848 schoenebeck 708 </blockquote><p>
3849 schoenebeck 940
3850 schoenebeck 708 </p>
3851 senoner 542 <p>Example:
3852     </p>
3853 schoenebeck 708 <p>
3854     </p>
3855 senoner 542 <blockquote class="text">
3856     <p>C: "LIST AVAILABLE_ENGINES"
3857     </p>
3858 schoenebeck 561 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3859 senoner 542 </p>
3860 schoenebeck 708 </blockquote><p>
3861 schoenebeck 940
3862 schoenebeck 708 </p>
3863 schoenebeck 940 <a name="GET ENGINE INFO"></a><br /><hr />
3864 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3865     <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3866     Getting information about an engine</h3>
3867 senoner 542
3868     <p>The front-end can ask for information about a specific engine by
3869     sending the following command:
3870     </p>
3871 schoenebeck 708 <p>
3872     </p>
3873 senoner 542 <blockquote class="text">
3874     <p>GET ENGINE INFO &lt;engine-name&gt;
3875     </p>
3876 schoenebeck 708 </blockquote><p>
3877 schoenebeck 940
3878 schoenebeck 708 </p>
3879 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3880 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.
3881 senoner 542 </p>
3882     <p>Possible Answers:
3883     </p>
3884 schoenebeck 708 <p>
3885     </p>
3886 senoner 542 <blockquote class="text">
3887     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3888     Each answer line begins with the information category name
3889     followed by a colon and then a space character &lt;SP&gt; and finally
3890     the info character string to that info category. At the moment
3891     the following categories are defined:
3892     </p>
3893 schoenebeck 708 <p>
3894     </p>
3895 senoner 542 <blockquote class="text">
3896     <p>DESCRIPTION -
3897     </p>
3898     <blockquote class="text">
3899     <p>arbitrary description text about the engine
3900 schoenebeck 1400 (note that the character string may contain
3901     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3902 senoner 542 </p>
3903 schoenebeck 940 </blockquote>
3904    
3905 senoner 542
3906     <p>VERSION -
3907     </p>
3908     <blockquote class="text">
3909     <p>arbitrary character string regarding the engine's version
3910     </p>
3911 schoenebeck 940 </blockquote>
3912    
3913 senoner 542
3914 schoenebeck 940 </blockquote>
3915    
3916 senoner 542
3917 schoenebeck 708 </blockquote><p>
3918 schoenebeck 940
3919 schoenebeck 708 </p>
3920 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3921     </p>
3922     <p>Example:
3923     </p>
3924 schoenebeck 708 <p>
3925     </p>
3926 senoner 542 <blockquote class="text">
3927     <p>C: "GET ENGINE INFO JoesCustomEngine"
3928     </p>
3929     <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3930     </p>
3931     <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3932     </p>
3933     <p>&nbsp;&nbsp;&nbsp;"."
3934     </p>
3935 schoenebeck 708 </blockquote><p>
3936 schoenebeck 940
3937 schoenebeck 708 </p>
3938 schoenebeck 940 <a name="GET CHANNEL INFO"></a><br /><hr />
3939 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3940     <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3941     Getting sampler channel information</h3>
3942 senoner 542
3943     <p>The front-end can ask for the current settings of a sampler channel
3944     by sending the following command:
3945     </p>
3946 schoenebeck 708 <p>
3947     </p>
3948 senoner 542 <blockquote class="text">
3949     <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3950     </p>
3951 schoenebeck 708 </blockquote><p>
3952 schoenebeck 940
3953 schoenebeck 708 </p>
3954 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3955 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>
3956     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.
3957 senoner 542 </p>
3958     <p>Possible Answers:
3959     </p>
3960 schoenebeck 708 <p>
3961     </p>
3962 senoner 542 <blockquote class="text">
3963     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3964     Each answer line begins with the settings category name
3965     followed by a colon and then a space character &lt;SP&gt; and finally
3966     the info character string to that setting category. At the
3967     moment the following categories are defined:
3968     </p>
3969 schoenebeck 708 <p>
3970     </p>
3971 senoner 542 <blockquote class="text">
3972     <p>ENGINE_NAME -
3973     </p>
3974     <blockquote class="text">
3975 schoenebeck 575 <p>name of the engine that is associated with the sampler
3976     channel, "NONE" if there's no engine associated yet for
3977 senoner 542 this sampler channel
3978     </p>
3979 schoenebeck 940 </blockquote>
3980    
3981 senoner 542
3982     <p>AUDIO_OUTPUT_DEVICE -
3983     </p>
3984     <blockquote class="text">
3985     <p>numerical ID of the audio output device which is
3986     currently connected to this sampler channel to output
3987     the audio signal, "NONE" if there's no device
3988     connected to this sampler channel
3989     </p>
3990 schoenebeck 940 </blockquote>
3991    
3992 senoner 542
3993     <p>AUDIO_OUTPUT_CHANNELS -
3994     </p>
3995     <blockquote class="text">
3996     <p>number of output channels the sampler channel offers
3997     (dependent to used sampler engine and loaded instrument)
3998     </p>
3999 schoenebeck 940 </blockquote>
4000    
4001 senoner 542
4002     <p>AUDIO_OUTPUT_ROUTING -
4003     </p>
4004     <blockquote class="text">
4005     <p>comma separated list which reflects to which audio
4006     channel of the selected audio output device each
4007     sampler output channel is routed to, e.g. "0,3" would
4008     mean the engine's output channel 0 is routed to channel
4009     0 of the audio output device and the engine's output
4010     channel 1 is routed to the channel 3 of the audio
4011     output device
4012     </p>
4013 schoenebeck 940 </blockquote>
4014    
4015 senoner 542
4016     <p>INSTRUMENT_FILE -
4017     </p>
4018     <blockquote class="text">
4019     <p>the file name of the loaded instrument, "NONE" if
4020     there's no instrument yet loaded for this sampler
4021 schoenebeck 1400 channel (note: since LSCP 1.2 this path may contain
4022     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4023 senoner 542 </p>
4024 schoenebeck 940 </blockquote>
4025    
4026 senoner 542
4027     <p>INSTRUMENT_NR -
4028     </p>
4029     <blockquote class="text">
4030     <p>the instrument index number of the loaded instrument
4031     </p>
4032 schoenebeck 940 </blockquote>
4033    
4034 senoner 542
4035     <p>INSTRUMENT_NAME -
4036     </p>
4037     <blockquote class="text">
4038     <p>the instrument name of the loaded instrument
4039 schoenebeck 1400 (note: since LSCP 1.2 this character string may contain
4040     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4041 senoner 542 </p>
4042 schoenebeck 940 </blockquote>
4043    
4044 senoner 542
4045     <p>INSTRUMENT_STATUS -
4046     </p>
4047     <blockquote class="text">
4048     <p>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative
4049     value indicates a loading exception. Value of 100 indicates that the instrument is fully
4050     loaded.
4051     </p>
4052 schoenebeck 940 </blockquote>
4053    
4054 senoner 542
4055     <p>MIDI_INPUT_DEVICE -
4056     </p>
4057     <blockquote class="text">
4058     <p>numerical ID of the MIDI input device which is
4059     currently connected to this sampler channel to deliver
4060     MIDI input commands, "NONE" if there's no device
4061     connected to this sampler channel
4062     </p>
4063 schoenebeck 940 </blockquote>
4064    
4065 senoner 542
4066     <p>MIDI_INPUT_PORT -
4067     </p>
4068     <blockquote class="text">
4069     <p>port number of the MIDI input device
4070     </p>
4071 schoenebeck 940 </blockquote>
4072    
4073 senoner 542
4074     <p>MIDI_INPUT_CHANNEL -
4075     </p>
4076     <blockquote class="text">
4077     <p>the MIDI input channel number this sampler channel
4078     should listen to or "ALL" to listen on all MIDI channels
4079     </p>
4080 schoenebeck 940 </blockquote>
4081    
4082 senoner 542
4083     <p>VOLUME -
4084     </p>
4085     <blockquote class="text">
4086     <p>optionally dotted number for the channel volume factor
4087 schoenebeck 1028 (where a value &lt; 1.0 means attenuation and a value >
4088 senoner 542 1.0 means amplification)
4089     </p>
4090 schoenebeck 940 </blockquote>
4091    
4092 senoner 542
4093 schoenebeck 708 <p>MUTE -
4094     </p>
4095     <blockquote class="text">
4096     <p>Determines whether the channel is muted, "true" if the
4097     channel is muted, "false" if the channel is not muted, and
4098     "MUTED_BY_SOLO" if the channel is muted because of the
4099     presence of a solo channel and will be unmuted when
4100     there are no solo channels left
4101     </p>
4102 schoenebeck 940 </blockquote>
4103    
4104 senoner 542
4105 schoenebeck 708 <p>SOLO -
4106     </p>
4107     <blockquote class="text">
4108     <p>Determines whether this is a solo channel, "true" if
4109     the channel is a solo channel; "false" otherwise
4110     </p>
4111 schoenebeck 940 </blockquote>
4112    
4113 senoner 542
4114 schoenebeck 974 <p>MIDI_INSTRUMENT_MAP -
4115     </p>
4116     <blockquote class="text">
4117     <p>Determines to which MIDI instrument map this sampler
4118     channel is assigned to. Read chapter
4119     <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>
4120     for a list of possible values.
4121     </p>
4122 schoenebeck 940 </blockquote>
4123 schoenebeck 974
4124    
4125     </blockquote>
4126 schoenebeck 940
4127 schoenebeck 708
4128     </blockquote><p>
4129 schoenebeck 940
4130 schoenebeck 708 </p>
4131 senoner 542 <p>The mentioned fields above don't have to be in particular order.
4132     </p>
4133     <p>Example:
4134     </p>
4135 schoenebeck 708 <p>
4136     </p>
4137 senoner 542 <blockquote class="text">
4138     <p>C: "GET CHANNEL INFO 34"
4139     </p>
4140     <p>S: "ENGINE_NAME: GigEngine"
4141     </p>
4142     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4143     </p>
4144     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4145     </p>
4146     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4147     </p>
4148     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4149     </p>
4150     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4151     </p>
4152     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4153     </p>
4154     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4155     </p>
4156     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4157     </p>
4158     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4159     </p>
4160     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4161     </p>
4162     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4163     </p>
4164 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4165     </p>
4166     <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4167     </p>
4168     <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4169     </p>
4170     <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4171     </p>
4172 senoner 542 <p>&nbsp;&nbsp;&nbsp;"."
4173     </p>
4174 schoenebeck 708 </blockquote><p>
4175 schoenebeck 940
4176 schoenebeck 708 </p>
4177 schoenebeck 940 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4178 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4179     <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4180     Current number of active voices</h3>
4181 senoner 542
4182     <p>The front-end can ask for the current number of active voices on a
4183     sampler channel by sending the following command:
4184     </p>
4185 schoenebeck 708 <p>
4186     </p>
4187 senoner 542 <blockquote class="text">
4188     <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4189     </p>
4190 schoenebeck 708 </blockquote><p>
4191 schoenebeck 940
4192 schoenebeck 708 </p>
4193 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4194 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>
4195     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.
4196 senoner 542 </p>
4197     <p>Possible Answers:
4198     </p>
4199 schoenebeck 708 <p>
4200     </p>
4201 senoner 542 <blockquote class="text">
4202     <p>LinuxSampler will answer by returning the number of active
4203     voices on that channel.
4204     </p>
4205 schoenebeck 708 </blockquote><p>
4206 schoenebeck 940
4207 schoenebeck 708 </p>
4208 senoner 542 <p>Example:
4209     </p>
4210 schoenebeck 708 <p>
4211     </p>
4212 senoner 542 <blockquote class="text">
4213     <p>
4214     </p>
4215 schoenebeck 708 </blockquote><p>
4216 schoenebeck 940
4217 schoenebeck 708 </p>
4218 schoenebeck 940 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4219 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4220     <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4221     Current number of active disk streams</h3>
4222 senoner 542
4223     <p>The front-end can ask for the current number of active disk streams
4224     on a sampler channel by sending the following command:
4225     </p>
4226 schoenebeck 708 <p>
4227     </p>
4228 senoner 542 <blockquote class="text">
4229     <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4230     </p>
4231 schoenebeck 708 </blockquote><p>
4232 schoenebeck 940
4233 schoenebeck 708 </p>
4234 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4235 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>
4236     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.
4237 senoner 542 </p>
4238     <p>Possible Answers:
4239     </p>
4240 schoenebeck 708 <p>
4241     </p>
4242 senoner 542 <blockquote class="text">
4243     <p>LinuxSampler will answer by returning the number of active
4244     disk streams on that channel in case the engine supports disk
4245     streaming, if the engine doesn't support disk streaming it will
4246     return "NA" for not available.
4247     </p>
4248 schoenebeck 708 </blockquote><p>
4249 schoenebeck 940
4250 schoenebeck 708 </p>
4251 senoner 542 <p>Example:
4252     </p>
4253 schoenebeck 708 <p>
4254     </p>
4255 senoner 542 <blockquote class="text">
4256     <p>
4257     </p>
4258 schoenebeck 708 </blockquote><p>
4259 schoenebeck 940
4260 schoenebeck 708 </p>
4261 schoenebeck 940 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4262 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4263     <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4264     Current fill state of disk stream buffers</h3>
4265 senoner 542
4266     <p>The front-end can ask for the current fill state of all disk streams
4267     on a sampler channel by sending the following command:
4268     </p>
4269 schoenebeck 708 <p>
4270     </p>
4271 senoner 542 <blockquote class="text">
4272     <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4273     </p>
4274 schoenebeck 708 </blockquote><p>
4275 schoenebeck 940
4276 schoenebeck 708 </p>
4277 senoner 542 <p>to get the fill state in bytes or
4278     </p>
4279 schoenebeck 708 <p>
4280     </p>
4281 senoner 542 <blockquote class="text">
4282     <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4283     </p>
4284 schoenebeck 708 </blockquote><p>
4285 schoenebeck 940
4286 schoenebeck 708 </p>
4287 senoner 542 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4288 schoenebeck 575 sampler channel number the front-end is interested in
4289 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>
4290     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.
4291 senoner 542 </p>
4292     <p>Possible Answers:
4293     </p>
4294 schoenebeck 708 <p>
4295     </p>
4296 senoner 542 <blockquote class="text">
4297     <p>LinuxSampler will either answer by returning a comma separated
4298     string with the fill state of all disk stream buffers on that
4299     channel or an empty line if there are no active disk streams or
4300     "NA" for *not available* in case the engine which is deployed
4301     doesn't support disk streaming. Each entry in the answer list
4302     will begin with the stream's ID in brackets followed by the
4303     numerical representation of the fill size (either in bytes or
4304     percentage). Note: due to efficiency reasons the fill states in
4305     the response are not in particular order, thus the front-end has
4306     to sort them by itself if necessary.
4307     </p>
4308 schoenebeck 708 </blockquote><p>
4309 schoenebeck 940
4310 schoenebeck 708 </p>
4311 senoner 542 <p>Examples:
4312     </p>
4313 schoenebeck 708 <p>
4314     </p>
4315 senoner 542 <blockquote class="text">
4316     <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4317     </p>
4318     <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4319     </p>
4320 schoenebeck 708 </blockquote><p>
4321    
4322     </p>
4323 senoner 542 <blockquote class="text">
4324 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4325 senoner 542 </p>
4326     <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4327     </p>
4328 schoenebeck 708 </blockquote><p>
4329    
4330     </p>
4331 senoner 542 <blockquote class="text">
4332 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4333 senoner 542 </p>
4334     <p>S: ""
4335     </p>
4336 schoenebeck 708 </blockquote><p>
4337 schoenebeck 940
4338 schoenebeck 708 </p>
4339 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4340 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4341     <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4342     Setting audio output device</h3>
4343 senoner 542
4344     <p>The front-end can set the audio output device on a specific sampler
4345     channel by sending the following command:
4346     </p>
4347 schoenebeck 708 <p>
4348     </p>
4349 senoner 542 <blockquote class="text">
4350     <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4351     </p>
4352 schoenebeck 708 </blockquote><p>
4353 schoenebeck 940
4354 schoenebeck 708 </p>
4355 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4356 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>
4357     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
4358 schoenebeck 575 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4359 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>
4360     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>
4361 schoenebeck 575 command.
4362 senoner 542 </p>
4363     <p>Possible Answers:
4364     </p>
4365 schoenebeck 708 <p>
4366     </p>
4367 senoner 542 <blockquote class="text">
4368     <p>"OK" -
4369     </p>
4370     <blockquote class="text">
4371     <p>on success
4372     </p>
4373 schoenebeck 940 </blockquote>
4374    
4375 senoner 542
4376     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4377     </p>
4378     <blockquote class="text">
4379     <p>if audio output device was set, but there are noteworthy
4380     issue(s) related, providing an appropriate warning code and
4381     warning message
4382     </p>
4383 schoenebeck 940 </blockquote>
4384    
4385 senoner 542
4386     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4387     </p>
4388     <blockquote class="text">
4389     <p>in case it failed, providing an appropriate error code and error message
4390     </p>
4391 schoenebeck 940 </blockquote>
4392    
4393 senoner 542
4394 schoenebeck 708 </blockquote><p>
4395 schoenebeck 940
4396 schoenebeck 708 </p>
4397 senoner 542 <p>Examples:
4398     </p>
4399 schoenebeck 708 <p>
4400     </p>
4401 senoner 542 <blockquote class="text">
4402     <p>
4403     </p>
4404 schoenebeck 708 </blockquote><p>
4405 schoenebeck 940
4406 schoenebeck 708 </p>
4407 schoenebeck 974 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4408     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4409     <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4410     Setting audio output type</h3>
4411 senoner 542
4412     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4413     </p>
4414     <p>The front-end can alter the audio output type on a specific sampler
4415     channel by sending the following command:
4416     </p>
4417 schoenebeck 708 <p>
4418     </p>
4419 senoner 542 <blockquote class="text">
4420     <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4421     </p>
4422 schoenebeck 708 </blockquote><p>
4423 schoenebeck 940
4424 schoenebeck 708 </p>
4425 senoner 542 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4426     &lt;sampler-channel&gt; is the respective sampler channel number.
4427     </p>
4428     <p>Possible Answers:
4429     </p>
4430 schoenebeck 708 <p>
4431     </p>
4432 senoner 542 <blockquote class="text">
4433     <p>"OK" -
4434     </p>
4435     <blockquote class="text">
4436     <p>on success
4437     </p>
4438 schoenebeck 940 </blockquote>
4439    
4440 senoner 542
4441     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4442     </p>
4443     <blockquote class="text">
4444     <p>if audio output type was set, but there are noteworthy
4445     issue(s) related, providing an appropriate warning code and
4446     warning message
4447     </p>
4448 schoenebeck 940 </blockquote>
4449    
4450 senoner 542
4451     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4452     </p>
4453     <blockquote class="text">
4454     <p>in case it failed, providing an appropriate error code and error message
4455     </p>
4456 schoenebeck 940 </blockquote>
4457    
4458 senoner 542
4459 schoenebeck 708 </blockquote><p>
4460 schoenebeck 940
4461 schoenebeck 708 </p>
4462 senoner 542 <p>Examples:
4463     </p>
4464 schoenebeck 708 <p>
4465     </p>
4466 senoner 542 <blockquote class="text">
4467     <p>
4468     </p>
4469 schoenebeck 708 </blockquote><p>
4470 schoenebeck 940
4471 schoenebeck 708 </p>
4472 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4473 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4474     <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4475     Setting audio output channel</h3>
4476 senoner 542
4477     <p>The front-end can alter the audio output channel on a specific
4478     sampler channel by sending the following command:
4479     </p>
4480 schoenebeck 708 <p>
4481     </p>
4482 senoner 542 <blockquote class="text">
4483     <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4484     </p>
4485 schoenebeck 708 </blockquote><p>
4486 schoenebeck 940
4487 schoenebeck 708 </p>
4488 schoenebeck 575 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4489 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>
4490     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
4491 senoner 542 numerical ID of the sampler channel's audio output channel which should be
4492     rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4493     output device where &lt;audio-out&gt; should be routed to.
4494     </p>
4495     <p>Possible Answers:
4496     </p>
4497 schoenebeck 708 <p>
4498     </p>
4499 senoner 542 <blockquote class="text">
4500     <p>"OK" -
4501     </p>
4502     <blockquote class="text">
4503     <p>on success
4504     </p>
4505 schoenebeck 940 </blockquote>
4506    
4507 senoner 542
4508     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4509     </p>
4510     <blockquote class="text">
4511     <p>if audio output channel was set, but there are noteworthy
4512     issue(s) related, providing an appropriate warning code and
4513     warning message
4514     </p>
4515 schoenebeck 940 </blockquote>
4516    
4517 senoner 542
4518     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4519     </p>
4520     <blockquote class="text">
4521     <p>in case it failed, providing an appropriate error code and error message
4522     </p>
4523 schoenebeck 940 </blockquote>
4524    
4525 senoner 542
4526 schoenebeck 708 </blockquote><p>
4527 schoenebeck 940
4528 schoenebeck 708 </p>
4529 senoner 542 <p>Examples:
4530     </p>
4531 schoenebeck 708 <p>
4532     </p>
4533 senoner 542 <blockquote class="text">
4534     <p>
4535     </p>
4536 schoenebeck 708 </blockquote><p>
4537 schoenebeck 940
4538 schoenebeck 708 </p>
4539 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4540 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4541     <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4542     Setting MIDI input device</h3>
4543 senoner 542
4544     <p>The front-end can set the MIDI input device on a specific sampler
4545     channel by sending the following command:
4546     </p>
4547 schoenebeck 708 <p>
4548     </p>
4549 senoner 542 <blockquote class="text">
4550     <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4551     </p>
4552 schoenebeck 708 </blockquote><p>
4553 schoenebeck 940
4554 schoenebeck 708 </p>
4555 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4556 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>
4557     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
4558 schoenebeck 575 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4559 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>
4560     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.
4561 senoner 542 </p>
4562     <p>Possible Answers:
4563     </p>
4564 schoenebeck 708 <p>
4565     </p>
4566 senoner 542 <blockquote class="text">
4567     <p>"OK" -
4568     </p>
4569     <blockquote class="text">
4570     <p>on success
4571     </p>
4572 schoenebeck 940 </blockquote>
4573    
4574 senoner 542
4575     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4576     </p>
4577     <blockquote class="text">
4578     <p>if MIDI input device was set, but there are noteworthy
4579     issue(s) related, providing an appropriate warning code and
4580     warning message
4581     </p>
4582 schoenebeck 940 </blockquote>
4583    
4584 senoner 542
4585     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4586     </p>
4587     <blockquote class="text">
4588     <p>in case it failed, providing an appropriate error code and error message
4589     </p>
4590 schoenebeck 940 </blockquote>
4591    
4592 senoner 542
4593 schoenebeck 708 </blockquote><p>
4594 schoenebeck 940
4595 schoenebeck 708 </p>
4596 senoner 542 <p>Examples:
4597     </p>
4598 schoenebeck 708 <p>
4599     </p>
4600 senoner 542 <blockquote class="text">
4601     <p>
4602     </p>
4603 schoenebeck 708 </blockquote><p>
4604 schoenebeck 940
4605 schoenebeck 708 </p>
4606 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4607 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4608     <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4609     Setting MIDI input type</h3>
4610 senoner 542
4611     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4612     </p>
4613     <p>The front-end can alter the MIDI input type on a specific sampler
4614     channel by sending the following command:
4615     </p>
4616 schoenebeck 708 <p>
4617     </p>
4618 senoner 542 <blockquote class="text">
4619     <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4620     </p>
4621 schoenebeck 708 </blockquote><p>
4622 schoenebeck 940
4623 schoenebeck 708 </p>
4624 senoner 542 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4625     &lt;sampler-channel&gt; is the respective sampler channel number.
4626     </p>
4627     <p>Possible Answers:
4628     </p>
4629 schoenebeck 708 <p>
4630     </p>
4631 senoner 542 <blockquote class="text">
4632     <p>"OK" -
4633     </p>
4634     <blockquote class="text">
4635     <p>on success
4636     </p>
4637 schoenebeck 940 </blockquote>
4638    
4639 senoner 542
4640     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4641     </p>
4642     <blockquote class="text">
4643     <p>if MIDI input type was set, but there are noteworthy
4644     issue(s) related, providing an appropriate warning code and
4645     warning message
4646     </p>
4647 schoenebeck 940 </blockquote>
4648    
4649 senoner 542
4650     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4651     </p>
4652     <blockquote class="text">
4653     <p>in case it failed, providing an appropriate error code and error message
4654     </p>
4655 schoenebeck 940 </blockquote>
4656    
4657 senoner 542
4658 schoenebeck 708 </blockquote><p>
4659 schoenebeck 940
4660 schoenebeck 708 </p>
4661 senoner 542 <p>Examples:
4662     </p>
4663 schoenebeck 708 <p>
4664     </p>
4665 senoner 542 <blockquote class="text">
4666     <p>
4667     </p>
4668 schoenebeck 708 </blockquote><p>
4669 schoenebeck 940
4670 schoenebeck 708 </p>
4671 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4672 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4673     <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4674     Setting MIDI input port</h3>
4675 senoner 542
4676     <p>The front-end can alter the MIDI input port on a specific sampler
4677     channel by sending the following command:
4678     </p>
4679 schoenebeck 708 <p>
4680     </p>
4681 senoner 542 <blockquote class="text">
4682     <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4683     </p>
4684 schoenebeck 708 </blockquote><p>
4685 schoenebeck 940
4686 schoenebeck 708 </p>
4687 senoner 542 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4688     MIDI input device connected to the sampler channel given by
4689     &lt;sampler-channel&gt;.
4690     </p>
4691     <p>Possible Answers:
4692     </p>
4693 schoenebeck 708 <p>
4694     </p>
4695 senoner 542 <blockquote class="text">
4696     <p>"OK" -
4697     </p>
4698     <blockquote class="text">
4699     <p>on success
4700     </p>
4701 schoenebeck 940 </blockquote>
4702    
4703 senoner 542
4704     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4705     </p>
4706     <blockquote class="text">
4707     <p>if MIDI input port was set, but there are noteworthy
4708     issue(s) related, providing an appropriate warning code and
4709     warning message
4710     </p>
4711 schoenebeck 940 </blockquote>
4712    
4713 senoner 542
4714     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4715     </p>
4716     <blockquote class="text">
4717 schoenebeck 561 <p>in case it failed, providing an appropriate error code and error message
4718 senoner 542 </p>
4719 schoenebeck 940 </blockquote>
4720    
4721 senoner 542
4722 schoenebeck 708 </blockquote><p>
4723 schoenebeck 940
4724 schoenebeck 708 </p>
4725 senoner 542 <p>Examples:
4726     </p>
4727 schoenebeck 708 <p>
4728     </p>
4729 senoner 542 <blockquote class="text">
4730     <p>
4731     </p>
4732 schoenebeck 708 </blockquote><p>
4733 schoenebeck 940
4734 schoenebeck 708 </p>
4735 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4736 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4737     <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4738     Setting MIDI input channel</h3>
4739 senoner 542
4740     <p>The front-end can alter the MIDI channel a sampler channel should
4741     listen to by sending the following command:
4742     </p>
4743 schoenebeck 708 <p>
4744     </p>
4745 senoner 542 <blockquote class="text">
4746     <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4747     </p>
4748 schoenebeck 708 </blockquote><p>
4749 schoenebeck 940
4750 schoenebeck 708 </p>
4751 senoner 542 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4752     &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4753     channels.
4754     </p>
4755     <p>Possible Answers:
4756     </p>
4757 schoenebeck 708 <p>
4758     </p>
4759 senoner 542 <blockquote class="text">
4760     <p>"OK" -
4761     </p>
4762     <blockquote class="text">
4763     <p>on success
4764     </p>
4765 schoenebeck 940 </blockquote>
4766    
4767 senoner 542
4768     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4769     </p>
4770     <blockquote class="text">
4771     <p>if MIDI input channel was set, but there are noteworthy
4772     issue(s) related, providing an appropriate warning code and
4773     warning message
4774     </p>
4775 schoenebeck 940 </blockquote>
4776    
4777 senoner 542
4778     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4779     </p>
4780     <blockquote class="text">
4781     <p>in case it failed, providing an appropriate error code and error message
4782     </p>
4783 schoenebeck 940 </blockquote>
4784    
4785 senoner 542
4786 schoenebeck 708 </blockquote><p>
4787 schoenebeck 940
4788 schoenebeck 708 </p>
4789 senoner 542 <p>Examples:
4790     </p>
4791 schoenebeck 708 <p>
4792     </p>
4793 senoner 542 <blockquote class="text">
4794     <p>
4795     </p>
4796 schoenebeck 708 </blockquote><p>
4797 schoenebeck 940
4798 schoenebeck 708 </p>
4799 schoenebeck 940 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4800 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4801     <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4802     Setting channel volume</h3>
4803 senoner 542
4804     <p>The front-end can alter the volume of a sampler channel by sending
4805     the following command:
4806     </p>
4807 schoenebeck 708 <p>
4808     </p>
4809 senoner 542 <blockquote class="text">
4810     <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4811     </p>
4812 schoenebeck 708 </blockquote><p>
4813 schoenebeck 940
4814 schoenebeck 708 </p>
4815 senoner 542 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4816     smaller than 1.0 means attenuation, whereas a value greater than
4817     1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4818     channel where this volume factor should be set.
4819     </p>
4820     <p>Possible Answers:
4821     </p>
4822 schoenebeck 708 <p>
4823     </p>
4824 senoner 542 <blockquote class="text">
4825     <p>"OK" -
4826     </p>
4827     <blockquote class="text">
4828     <p>on success
4829     </p>
4830 schoenebeck 940 </blockquote>
4831    
4832 senoner 542
4833     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4834     </p>
4835     <blockquote class="text">
4836     <p>if channel volume was set, but there are noteworthy
4837     issue(s) related, providing an appropriate warning code and
4838     warning message
4839     </p>
4840 schoenebeck 940 </blockquote>
4841    
4842 senoner 542
4843     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4844     </p>
4845     <blockquote class="text">
4846     <p>in case it failed, providing an appropriate error code and error message
4847     </p>
4848 schoenebeck 940 </blockquote>
4849    
4850 senoner 542
4851 schoenebeck 708 </blockquote><p>
4852 schoenebeck 940
4853 schoenebeck 708 </p>
4854 senoner 542 <p>Examples:
4855     </p>
4856 schoenebeck 708 <p>
4857     </p>
4858 senoner 542 <blockquote class="text">
4859     <p>
4860     </p>
4861 schoenebeck 708 </blockquote><p>
4862 schoenebeck 940
4863 schoenebeck 708 </p>
4864 schoenebeck 940 <a name="SET CHANNEL MUTE"></a><br /><hr />
4865 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4866     <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4867     Muting a sampler channel</h3>
4868 senoner 542
4869 schoenebeck 708 <p>The front-end can mute/unmute a specific sampler
4870     channel by sending the following command:
4871     </p>
4872     <p>
4873     </p>
4874     <blockquote class="text">
4875     <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4876     </p>
4877     </blockquote><p>
4878 schoenebeck 940
4879 schoenebeck 708 </p>
4880     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4881 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>
4882     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
4883 schoenebeck 708 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4884     to unmute the channel.
4885     </p>
4886     <p>Possible Answers:
4887     </p>
4888     <p>
4889     </p>
4890     <blockquote class="text">
4891     <p>"OK" -
4892     </p>
4893     <blockquote class="text">
4894     <p>on success
4895     </p>
4896 schoenebeck 940 </blockquote>
4897    
4898 schoenebeck 708
4899     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4900     </p>
4901     <blockquote class="text">
4902     <p>if the channel was muted/unmuted, but there are noteworthy
4903     issue(s) related, providing an appropriate warning code and
4904     warning message
4905     </p>
4906 schoenebeck 940 </blockquote>
4907    
4908 schoenebeck 708
4909     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4910     </p>
4911     <blockquote class="text">
4912     <p>in case it failed, providing an appropriate error code and error message
4913     </p>
4914 schoenebeck 940 </blockquote>
4915    
4916 schoenebeck 708
4917     </blockquote><p>
4918 schoenebeck 940
4919 schoenebeck 708 </p>
4920     <p>Examples:
4921     </p>
4922     <p>
4923     </p>
4924     <blockquote class="text">
4925     <p>
4926     </p>
4927     </blockquote><p>
4928 schoenebeck 940
4929 schoenebeck 708 </p>
4930 schoenebeck 940 <a name="SET CHANNEL SOLO"></a><br /><hr />
4931 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4932     <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4933     Soloing a sampler channel</h3>
4934 schoenebeck 708
4935     <p>The front-end can solo/unsolo a specific sampler channel
4936     by sending the following command:
4937     </p>
4938     <p>
4939     </p>
4940     <blockquote class="text">
4941     <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4942     </p>
4943     </blockquote><p>
4944 schoenebeck 940
4945 schoenebeck 708 </p>
4946     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4947 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>
4948     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
4949 schoenebeck 708 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
4950     to unsolo the channel.
4951     </p>
4952     <p>Possible Answers:
4953     </p>
4954     <p>
4955     </p>
4956     <blockquote class="text">
4957     <p>"OK" -
4958     </p>
4959     <blockquote class="text">
4960     <p>on success
4961     </p>
4962 schoenebeck 940 </blockquote>
4963    
4964 schoenebeck 708
4965     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4966     </p>
4967     <blockquote class="text">
4968     <p>if the channel was soloed/unsoloed, but there are noteworthy
4969     issue(s) related, providing an appropriate warning code and
4970     warning message
4971     </p>
4972 schoenebeck 940 </blockquote>
4973    
4974 schoenebeck 708
4975     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4976     </p>
4977     <blockquote class="text">
4978     <p>in case it failed, providing an appropriate error code and error message
4979     </p>
4980 schoenebeck 940 </blockquote>
4981    
4982 schoenebeck 708
4983     </blockquote><p>
4984 schoenebeck 940
4985 schoenebeck 708 </p>
4986     <p>Examples:
4987     </p>
4988     <p>
4989     </p>
4990     <blockquote class="text">
4991     <p>
4992     </p>
4993     </blockquote><p>
4994 schoenebeck 940
4995 schoenebeck 708 </p>
4996 schoenebeck 974 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
4997     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4998     <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
4999     Assigning a MIDI instrument map to a sampler channel</h3>
5000    
5001     <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5002     by sending the following command:
5003     </p>
5004     <p>
5005     </p>
5006     <blockquote class="text">
5007     <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5008     </p>
5009     </blockquote><p>
5010    
5011     </p>
5012     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5013     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>
5014     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
5015     &lt;map&gt; can have the following possibilites:
5016     </p>
5017     <p>
5018     </p>
5019     <blockquote class="text">
5020     <p>"NONE" -
5021     </p>
5022     <blockquote class="text">
5023     <p>This is the default setting. In this case
5024     the sampler channel is not assigned any MIDI
5025     instrument map and thus will ignore all MIDI
5026     program change messages.
5027     </p>
5028     </blockquote>
5029    
5030    
5031     <p>"DEFAULT" -
5032     </p>
5033     <blockquote class="text">
5034     <p>The sampler channel will always use the
5035     default MIDI instrument map to handle MIDI
5036     program change messages.
5037     </p>
5038     </blockquote>
5039    
5040    
5041     <p>numeric ID -
5042     </p>
5043     <blockquote class="text">
5044     <p>You can assign a specific MIDI instrument map
5045     by replacing &lt;map&gt; with the respective numeric
5046     ID of the MIDI instrument map as returned by the
5047     <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>
5048     command. Once that map will be deleted, the sampler
5049     channel would fall back to "NONE".
5050     </p>
5051     </blockquote>
5052    
5053    
5054     </blockquote><p>
5055    
5056     </p>
5057     <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>
5058     for details regarding MIDI instrument mapping.
5059     </p>
5060     <p>Possible Answers:
5061     </p>
5062     <p>
5063     </p>
5064     <blockquote class="text">
5065     <p>"OK" -
5066     </p>
5067     <blockquote class="text">
5068     <p>on success
5069     </p>
5070     </blockquote>
5071    
5072    
5073     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5074     </p>
5075     <blockquote class="text">
5076     <p>in case it failed, providing an appropriate error code and error message
5077     </p>
5078     </blockquote>
5079    
5080    
5081     </blockquote><p>
5082    
5083     </p>
5084     <p>Examples:
5085     </p>
5086     <p>
5087     </p>
5088     <blockquote class="text">
5089     <p>
5090     </p>
5091     </blockquote><p>
5092    
5093     </p>
5094 schoenebeck 1002 <a name="CREATE FX_SEND"></a><br /><hr />
5095     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5096     <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5097     Adding an effect send to a sampler channel</h3>
5098    
5099     <p>The front-end can create an additional effect send on a specific sampler channel
5100     by sending the following command:
5101     </p>
5102     <p>
5103     </p>
5104     <blockquote class="text">
5105     <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5106     </p>
5107     </blockquote><p>
5108    
5109     </p>
5110     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5111     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>
5112     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
5113     sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5114     is a number between 0..127 defining the MIDI controller which can alter the
5115     effect send level and &lt;name&gt; is an optional argument defining a name
5116 schoenebeck 1390 for the effect send entity. The name does not have to be unique, but MUST be
5117     encapsulated into apostrophes and supports escape sequences as described in chapter
5118     "<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>".
5119 schoenebeck 1002 </p>
5120     <p>By default, that is as initial routing, the effect send's audio channels
5121     are automatically routed to the last audio channels of the sampler channel's
5122     audio output device, that way you can i.e. first increase the amount of audio
5123     channels on the audio output device for having dedicated effect send output
5124     channels and when "CREATE FX_SEND" is called, those channels will automatically
5125     be picked. You can alter the destination channels however with
5126     <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>.
5127    
5128     </p>
5129     <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5130     sends on a sampler channel will decrease runtime performance, because for implementing channel
5131     effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5132     the voices and route the audio signal afterwards to the master outputs and effect send
5133     outputs (along with their respective effect send levels). A sampler channel without effect
5134     sends however can mix its voices directly into the audio output devices's audio buffers
5135     and is thus faster.
5136    
5137     </p>
5138     <p>Possible Answers:
5139     </p>
5140     <p>
5141     </p>
5142     <blockquote class="text">
5143     <p>"OK[&lt;fx-send-id&gt;]" -
5144     </p>
5145     <blockquote class="text">
5146     <p>in case a new effect send could be added to the
5147     sampler channel, where &lt;fx-send-id&gt; reflects the
5148     unique ID of the newly created effect send entity
5149     </p>
5150     </blockquote>
5151    
5152    
5153     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5154     </p>
5155     <blockquote class="text">
5156     <p>when a new effect send could not be added, i.e.
5157     due to invalid parameters
5158     </p>
5159     </blockquote>
5160    
5161    
5162     </blockquote><p>
5163    
5164     </p>
5165     <p>Examples:
5166     </p>
5167     <p>
5168     </p>
5169     <blockquote class="text">
5170     <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5171     </p>
5172     <p>S: "OK[0]"
5173     </p>
5174     </blockquote><p>
5175    
5176     </p>
5177     <p>
5178     </p>
5179     <blockquote class="text">
5180     <p>C: "CREATE FX_SEND 0 93"
5181     </p>
5182     <p>S: "OK[1]"
5183     </p>
5184     </blockquote><p>
5185    
5186     </p>
5187     <a name="DESTROY FX_SEND"></a><br /><hr />
5188     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5189     <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5190     Removing an effect send from a sampler channel</h3>
5191    
5192     <p>The front-end can remove an existing effect send on a specific sampler channel
5193     by sending the following command:
5194     </p>
5195     <p>
5196     </p>
5197     <blockquote class="text">
5198     <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5199     </p>
5200     </blockquote><p>
5201    
5202     </p>
5203     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5204     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>
5205     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
5206     sampler channel from which the effect send should be removed from and
5207     &lt;fx-send-id&gt; is the respective effect send number as returned by the
5208     <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>
5209     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.
5210     </p>
5211     <p>Possible Answers:
5212     </p>
5213     <p>
5214     </p>
5215     <blockquote class="text">
5216     <p>"OK" -
5217     </p>
5218     <blockquote class="text">
5219     <p>on success
5220     </p>
5221     </blockquote>
5222    
5223    
5224     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5225     </p>
5226     <blockquote class="text">
5227     <p>in case it failed, providing an appropriate error code and
5228     error message
5229     </p>
5230     </blockquote>
5231    
5232    
5233     </blockquote><p>
5234    
5235     </p>
5236     <p>Example:
5237     </p>
5238     <p>
5239     </p>
5240     <blockquote class="text">
5241     <p>C: "DESTROY FX_SEND 0 0"
5242     </p>
5243     <p>S: "OK"
5244     </p>
5245     </blockquote><p>
5246    
5247     </p>
5248     <a name="GET FX_SENDS"></a><br /><hr />
5249     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5250     <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5251     Getting amount of effect sends on a sampler channel</h3>
5252    
5253     <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5254     by sending the following command:
5255     </p>
5256     <p>
5257     </p>
5258     <blockquote class="text">
5259     <p>GET FX_SENDS &lt;sampler-channel&gt;
5260     </p>
5261     </blockquote><p>
5262    
5263     </p>
5264     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5265     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>
5266     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.
5267     </p>
5268     <p>Possible Answers:
5269     </p>
5270     <p>
5271     </p>
5272     <blockquote class="text">
5273     <p>The sampler will answer by returning the number of effect
5274     sends on the given sampler channel.
5275     </p>
5276     </blockquote><p>
5277    
5278     </p>
5279     <p>Example:
5280     </p>
5281     <p>
5282     </p>
5283     <blockquote class="text">
5284     <p>C: "GET FX_SENDS 0"
5285     </p>
5286     <p>S: "2"
5287     </p>
5288     </blockquote><p>
5289    
5290     </p>
5291     <a name="LIST FX_SENDS"></a><br /><hr />
5292     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5293     <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5294     Listing all effect sends on a sampler channel</h3>
5295    
5296     <p>The front-end can ask for a list of effect sends on a specific sampler channel
5297     by sending the following command:
5298     </p>
5299     <p>
5300     </p>
5301     <blockquote class="text">
5302     <p>LIST FX_SENDS &lt;sampler-channel&gt;
5303     </p>
5304     </blockquote><p>
5305    
5306     </p>
5307     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5308     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>
5309     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.
5310     </p>
5311     <p>Possible Answers:
5312     </p>
5313     <p>
5314     </p>
5315     <blockquote class="text">
5316     <p>The sampler will answer by returning a comma separated list
5317     with all effect sends' numerical IDs on the given sampler
5318     channel.
5319     </p>
5320     </blockquote><p>
5321    
5322     </p>
5323     <p>Examples:
5324     </p>
5325     <p>
5326     </p>
5327     <blockquote class="text">
5328     <p>C: "LIST FX_SENDS 0"
5329     </p>
5330     <p>S: "0,1"
5331     </p>
5332     </blockquote><p>
5333    
5334     </p>
5335     <p>
5336     </p>
5337     <blockquote class="text">
5338     <p>C: "LIST FX_SENDS 1"
5339     </p>
5340     <p>S: ""
5341     </p>
5342     </blockquote><p>
5343    
5344     </p>
5345     <a name="GET FX_SEND INFO"></a><br /><hr />
5346     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5347     <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5348     Getting effect send information</h3>
5349    
5350     <p>The front-end can ask for the current settings of an effect send entity
5351     by sending the following command:
5352     </p>
5353     <p>
5354     </p>
5355     <blockquote class="text">
5356     <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5357     </p>
5358     </blockquote><p>
5359    
5360     </p>
5361     <p>Where &lt;sampler-channel&gt; is the sampler channel number
5362     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>
5363     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
5364     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5365     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>
5366     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.
5367    
5368     </p>
5369     <p>Possible Answers:
5370     </p>
5371     <p>
5372     </p>
5373     <blockquote class="text">
5374     <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5375     Each answer line begins with the settings category name
5376     followed by a colon and then a space character &lt;SP&gt; and finally
5377     the info character string to that setting category. At the
5378     moment the following categories are defined:
5379     </p>
5380     <p>
5381     </p>
5382     <blockquote class="text">
5383     <p>NAME -
5384     </p>
5385     <blockquote class="text">
5386     <p>name of the effect send entity
5387 schoenebeck 1400 (note that this character string may contain
5388     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5389 schoenebeck 1002 </p>
5390     </blockquote>
5391    
5392    
5393 schoenebeck 1028 <p>MIDI_CONTROLLER -
5394     </p>
5395     <blockquote class="text">
5396     <p>a value between 0 and 127 reflecting the MIDI controller
5397     which is able to modify the effect send's send level
5398     </p>
5399     </blockquote>
5400    
5401    
5402     <p>LEVEL -
5403     </p>
5404     <blockquote class="text">
5405     <p>optionally dotted number reflecting the effect send's
5406     current send level (where a value &lt; 1.0 means attenuation
5407     and a value > 1.0 means amplification)
5408     </p>
5409     </blockquote>
5410    
5411    
5412 schoenebeck 1002 <p>AUDIO_OUTPUT_ROUTING -
5413     </p>
5414     <blockquote class="text">
5415     <p>comma separated list which reflects to which audio
5416     channel of the selected audio output device each
5417     effect send output channel is routed to, e.g. "0,3" would
5418     mean the effect send's output channel 0 is routed to channel
5419     0 of the audio output device and the effect send's output
5420     channel 1 is routed to the channel 3 of the audio
5421     output device (see
5422     <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>
5423     for details)
5424     </p>
5425     </blockquote>
5426    
5427    
5428     </blockquote>
5429    
5430    
5431     </blockquote><p>
5432    
5433     </p>
5434     <p>The mentioned fields above don't have to be in particular order.
5435     </p>
5436     <p>Example:
5437     </p>
5438     <p>
5439     </p>
5440     <blockquote class="text">
5441     <p>C: "GET FX_SEND INFO 0 0"
5442     </p>
5443     <p>S: "NAME: Reverb Send"
5444     </p>
5445 schoenebeck 1028 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5446     </p>
5447     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5448     </p>
5449 schoenebeck 1002 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5450     </p>
5451     <p>&nbsp;&nbsp;&nbsp;"."
5452     </p>
5453     </blockquote><p>
5454    
5455     </p>
5456 iliev 1137 <a name="SET FX_SEND NAME"></a><br /><hr />
5457     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5458     <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5459     Changing effect send's name</h3>
5460    
5461     <p>The front-end can alter the current name of an effect
5462     send entity by sending the following command:
5463     </p>
5464     <p>
5465     </p>
5466     <blockquote class="text">
5467     <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5468     </p>
5469     </blockquote><p>
5470    
5471     </p>
5472     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5473     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>
5474     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,
5475     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5476     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>
5477     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
5478     &lt;name&gt; is the new name of the effect send entity, which
5479 schoenebeck 1390 does not have to be unique (name MUST be encapsulated into apostrophes
5480     and supports escape sequences as described in chapter
5481     "<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>").
5482    
5483 iliev 1137 </p>
5484     <p>Possible Answers:
5485     </p>
5486     <p>
5487     </p>
5488     <blockquote class="text">
5489     <p>"OK" -
5490     </p>
5491     <blockquote class="text">
5492     <p>on success
5493     </p>
5494     </blockquote>
5495    
5496    
5497     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5498     </p>
5499     <blockquote class="text">
5500     <p>in case it failed, providing an appropriate error code and error message
5501     </p>
5502     </blockquote>
5503    
5504    
5505     </blockquote><p>
5506    
5507     </p>
5508     <p>Example:
5509     </p>
5510     <p>
5511     </p>
5512     <blockquote class="text">
5513     <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5514     </p>
5515     <p>S: "OK"
5516     </p>
5517     </blockquote><p>
5518    
5519     </p>
5520 schoenebeck 1002 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5521     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5522 iliev 1137 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5523 schoenebeck 1002 Altering effect send's audio routing</h3>
5524    
5525     <p>The front-end can alter the destination of an effect send's audio channel on a specific
5526     sampler channel by sending the following command:
5527     </p>
5528     <p>
5529     </p>
5530     <blockquote class="text">
5531     <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5532     </p>
5533     </blockquote><p>
5534    
5535     </p>
5536     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5537     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>
5538     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,
5539     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5540     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>
5541     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,
5542     &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5543     which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5544     the audio channel of the selected audio output device where &lt;audio-src&gt;
5545     should be routed to.
5546     </p>
5547     <p>Note that effect sends can only route audio to the same audio output
5548     device as assigned to the effect send's sampler channel. Also note that an
5549     effect send entity does always have exactly as much audio channels as its
5550     sampler channel. So if the sampler channel is stereo, the effect send does
5551     have two audio channels as well. Also keep in mind that the amount of audio
5552     channels on a sampler channel might be dependant not only to the deployed
5553     sampler engine on the sampler channel, but also dependant to the instrument
5554     currently loaded. However you can (effectively) turn an i.e. stereo effect
5555     send into a mono one by simply altering its audio routing appropriately.
5556     </p>
5557     <p>Possible Answers:
5558     </p>
5559     <p>
5560     </p>
5561     <blockquote class="text">
5562     <p>"OK" -
5563     </p>
5564     <blockquote class="text">
5565     <p>on success
5566     </p>
5567     </blockquote>
5568    
5569    
5570     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5571     </p>
5572     <blockquote class="text">
5573     <p>if audio output channel was set, but there are noteworthy
5574     issue(s) related, providing an appropriate warning code and
5575     warning message
5576     </p>
5577     </blockquote>
5578    
5579    
5580     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5581     </p>
5582     <blockquote class="text">
5583     <p>in case it failed, providing an appropriate error code and error message
5584     </p>
5585     </blockquote>
5586    
5587    
5588     </blockquote><p>
5589    
5590     </p>
5591     <p>Example:
5592     </p>
5593     <p>
5594     </p>
5595     <blockquote class="text">
5596     <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5597     </p>
5598     <p>S: "OK"
5599     </p>
5600     </blockquote><p>
5601    
5602     </p>
5603 schoenebeck 1028 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5604     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5605 iliev 1137 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5606 schoenebeck 1028 Altering effect send's MIDI controller</h3>
5607    
5608     <p>The front-end can alter the MIDI controller of an effect
5609     send entity by sending the following command:
5610     </p>
5611     <p>
5612     </p>
5613     <blockquote class="text">
5614     <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5615     </p>
5616     </blockquote><p>
5617    
5618     </p>
5619     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5620     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>
5621     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,
5622     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5623     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>
5624     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
5625     &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5626     able to modify the effect send's send level.
5627     </p>
5628     <p>Possible Answers:
5629     </p>
5630     <p>
5631     </p>
5632     <blockquote class="text">
5633     <p>"OK" -
5634     </p>
5635     <blockquote class="text">
5636     <p>on success
5637     </p>
5638     </blockquote>
5639    
5640    
5641     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5642     </p>
5643     <blockquote class="text">
5644     <p>if MIDI controller was set, but there are noteworthy
5645     issue(s) related, providing an appropriate warning code and
5646     warning message
5647     </p>
5648     </blockquote>
5649    
5650    
5651     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5652     </p>
5653     <blockquote class="text">
5654     <p>in case it failed, providing an appropriate error code and error message
5655     </p>
5656     </blockquote>
5657    
5658    
5659     </blockquote><p>
5660    
5661     </p>
5662     <p>Example:
5663     </p>
5664     <p>
5665     </p>
5666     <blockquote class="text">
5667     <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5668     </p>
5669     <p>S: "OK"
5670     </p>
5671     </blockquote><p>
5672    
5673     </p>
5674     <a name="SET FX_SEND LEVEL"></a><br /><hr />
5675     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5676 iliev 1137 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5677 schoenebeck 1028 Altering effect send's send level</h3>
5678    
5679     <p>The front-end can alter the current send level of an effect
5680     send entity by sending the following command:
5681     </p>
5682     <p>
5683     </p>
5684     <blockquote class="text">
5685     <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5686     </p>
5687     </blockquote><p>
5688    
5689     </p>
5690     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5691     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>
5692     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,
5693     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5694     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>
5695     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
5696     &lt;volume&gt; is an optionally dotted positive number (a value
5697     smaller than 1.0 means attenuation, whereas a value greater than
5698     1.0 means amplification) reflecting the new send level.
5699     </p>
5700     <p>Possible Answers:
5701     </p>
5702     <p>
5703     </p>
5704     <blockquote class="text">
5705     <p>"OK" -
5706     </p>
5707     <blockquote class="text">
5708     <p>on success
5709     </p>
5710     </blockquote>
5711    
5712    
5713     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5714     </p>
5715     <blockquote class="text">
5716     <p>if new send level was set, but there are noteworthy
5717     issue(s) related, providing an appropriate warning code and
5718     warning message
5719     </p>
5720     </blockquote>
5721    
5722    
5723     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5724     </p>
5725     <blockquote class="text">
5726     <p>in case it failed, providing an appropriate error code and error message
5727     </p>
5728     </blockquote>
5729    
5730    
5731     </blockquote><p>
5732    
5733     </p>
5734     <p>Example:
5735     </p>
5736     <p>
5737     </p>
5738     <blockquote class="text">
5739     <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5740     </p>
5741     <p>S: "OK"
5742     </p>
5743     </blockquote><p>
5744    
5745     </p>
5746 schoenebeck 940 <a name="RESET CHANNEL"></a><br /><hr />
5747 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5748 iliev 1137 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5749 schoenebeck 974 Resetting a sampler channel</h3>
5750 schoenebeck 708
5751 senoner 542 <p>The front-end can reset a particular sampler channel by sending the following command:
5752     </p>
5753 schoenebeck 708 <p>
5754     </p>
5755 senoner 542 <blockquote class="text">
5756     <p>RESET CHANNEL &lt;sampler-channel&gt;
5757     </p>
5758 schoenebeck 708 </blockquote><p>
5759 schoenebeck 940
5760 schoenebeck 708 </p>
5761 senoner 542 <p>
5762     Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
5763     This will cause the engine on that sampler channel, its voices and
5764     eventually disk streams and all control and status variables to be
5765     reset.
5766     </p>
5767     <p>Possible Answers:
5768     </p>
5769 schoenebeck 708 <p>
5770     </p>
5771 senoner 542 <blockquote class="text">
5772     <p>"OK" -
5773     </p>
5774     <blockquote class="text">
5775     <p>on success
5776     </p>
5777 schoenebeck 940 </blockquote>
5778    
5779 senoner 542
5780     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5781     </p>
5782     <blockquote class="text">
5783     <p>if channel was reset, but there are noteworthy issue(s)
5784     related, providing an appropriate warning code and warning
5785     message
5786     </p>
5787 schoenebeck 940 </blockquote>
5788    
5789 senoner 542
5790     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5791     </p>
5792     <blockquote class="text">
5793     <p>in case it failed, providing an appropriate error code and
5794     error message
5795     </p>
5796 schoenebeck 940 </blockquote>
5797    
5798 senoner 542
5799 schoenebeck 708 </blockquote><p>
5800 schoenebeck 940
5801 schoenebeck 708 </p>
5802 senoner 542 <p>Examples:
5803     </p>
5804 schoenebeck 708 <p>
5805     </p>
5806 senoner 542 <blockquote class="text">
5807     <p>
5808     </p>
5809 schoenebeck 708 </blockquote><p>
5810 schoenebeck 940
5811 schoenebeck 708 </p>
5812 schoenebeck 940 <a name="anchor12"></a><br /><hr />
5813 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5814     <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
5815     Controlling connection</h3>
5816 senoner 542
5817     <p>The following commands are used to control the connection to LinuxSampler.
5818     </p>
5819 schoenebeck 940 <a name="SUBSCRIBE"></a><br /><hr />
5820 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5821     <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
5822     Register front-end for receiving event messages</h3>
5823 senoner 542
5824     <p>The front-end can register itself to the LinuxSampler application to
5825     be informed about noteworthy events by sending this command:
5826     </p>
5827 schoenebeck 708 <p>
5828     </p>
5829 senoner 542 <blockquote class="text">
5830     <p>SUBSCRIBE &lt;event-id&gt;
5831     </p>
5832 schoenebeck 708 </blockquote><p>
5833 schoenebeck 940
5834 schoenebeck 708 </p>
5835 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective event that
5836     client wants to subscribe to.
5837     </p>
5838     <p>Possible Answers:
5839     </p>
5840 schoenebeck 708 <p>
5841     </p>
5842 senoner 542 <blockquote class="text">
5843     <p>"OK" -
5844     </p>
5845     <blockquote class="text">
5846     <p>on success
5847     </p>
5848 schoenebeck 940 </blockquote>
5849    
5850 senoner 542
5851     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5852     </p>
5853     <blockquote class="text">
5854     <p>if registration succeeded, but there are noteworthy
5855     issue(s) related, providing an appropriate warning code and
5856     warning message
5857     </p>
5858 schoenebeck 940 </blockquote>
5859    
5860 senoner 542
5861     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5862     </p>
5863     <blockquote class="text">
5864     <p>in case it failed, providing an appropriate error code and
5865     error message
5866     </p>
5867 schoenebeck 940 </blockquote>
5868    
5869 senoner 542
5870 schoenebeck 708 </blockquote><p>
5871 schoenebeck 940
5872 schoenebeck 708 </p>
5873 senoner 542 <p>Examples:
5874     </p>
5875 schoenebeck 708 <p>
5876     </p>
5877 senoner 542 <blockquote class="text">
5878     <p>
5879     </p>
5880 schoenebeck 708 </blockquote><p>
5881 schoenebeck 940
5882 schoenebeck 708 </p>
5883 schoenebeck 940 <a name="UNSUBSCRIBE"></a><br /><hr />
5884 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5885     <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
5886     Unregister front-end for not receiving event messages</h3>
5887 senoner 542
5888     <p>The front-end can unregister itself if it doesn't want to receive event
5889     messages anymore by sending the following command:
5890     </p>
5891 schoenebeck 708 <p>
5892     </p>
5893 senoner 542 <blockquote class="text">
5894     <p>UNSUBSCRIBE &lt;event-id&gt;
5895     </p>
5896 schoenebeck 708 </blockquote><p>
5897 schoenebeck 940
5898 schoenebeck 708 </p>
5899 senoner 542 <p>Where &lt;event-id&gt; will be replaced by the respective event that
5900     client doesn't want to receive anymore.
5901     </p>
5902     <p>Possible Answers:
5903     </p>
5904 schoenebeck 708 <p>
5905     </p>
5906 senoner 542 <blockquote class="text">
5907     <p>"OK" -
5908     </p>
5909     <blockquote class="text">
5910     <p>on success
5911     </p>
5912 schoenebeck 940 </blockquote>
5913    
5914 senoner 542
5915     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5916     </p>
5917     <blockquote class="text">
5918     <p>if unregistration succeeded, but there are noteworthy
5919     issue(s) related, providing an appropriate warning code and
5920     warning message
5921     </p>
5922 schoenebeck 940 </blockquote>
5923    
5924 senoner 542
5925     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5926     </p>
5927     <blockquote class="text">
5928     <p>in case it failed, providing an appropriate error code and
5929     error message
5930     </p>
5931 schoenebeck 940 </blockquote>
5932    
5933 senoner 542
5934 schoenebeck 708 </blockquote><p>
5935 schoenebeck 940
5936 schoenebeck 708 </p>
5937 senoner 542 <p>Examples:
5938     </p>
5939 schoenebeck 708 <p>
5940     </p>
5941 senoner 542 <blockquote class="text">
5942     <p>
5943     </p>
5944 schoenebeck 708 </blockquote><p>
5945 schoenebeck 940
5946 schoenebeck 708 </p>
5947 schoenebeck 940 <a name="SET ECHO"></a><br /><hr />
5948 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5949     <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
5950     Enable or disable echo of commands</h3>
5951 senoner 542
5952     <p>To enable or disable back sending of commands to the client the following command can be used:
5953     </p>
5954 schoenebeck 708 <p>
5955     </p>
5956 senoner 542 <blockquote class="text">
5957     <p>SET ECHO &lt;value&gt;
5958     </p>
5959 schoenebeck 708 </blockquote><p>
5960 schoenebeck 940
5961 schoenebeck 708 </p>
5962 senoner 542 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
5963     or "0" to disable echo mode. When echo mode is enabled, all
5964     commands send to LinuxSampler will be immediately send back and
5965     after this echo the actual response to the command will be
5966     returned. Echo mode will only be altered for the client connection
5967     that issued the "SET ECHO" command, not globally for all client
5968     connections.
5969     </p>
5970     <p>Possible Answers:
5971     </p>
5972 schoenebeck 708 <p>
5973     </p>
5974 senoner 542 <blockquote class="text">
5975     <p>"OK" -
5976     </p>
5977     <blockquote class="text">
5978     <p>usually
5979     </p>
5980 schoenebeck 940 </blockquote>
5981    
5982 senoner 542
5983     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5984     </p>
5985     <blockquote class="text">
5986     <p>on syntax error, e.g. non boolean value
5987     </p>
5988 schoenebeck 940 </blockquote>
5989    
5990 senoner 542
5991 schoenebeck 708 </blockquote><p>
5992 schoenebeck 940
5993 schoenebeck 708 </p>
5994 senoner 542 <p>Examples:
5995     </p>
5996 schoenebeck 708 <p>
5997     </p>
5998 senoner 542 <blockquote class="text">
5999     <p>
6000     </p>
6001 schoenebeck 708 </blockquote><p>
6002 schoenebeck 940
6003 schoenebeck 708 </p>
6004 schoenebeck 940 <a name="QUIT"></a><br /><hr />
6005 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6006     <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6007     Close client connection</h3>
6008 senoner 542
6009     <p>The client can close its network connection to LinuxSampler by sending the following command:
6010     </p>
6011 schoenebeck 708 <p>
6012     </p>
6013 senoner 542 <blockquote class="text">
6014     <p>QUIT
6015     </p>
6016 schoenebeck 708 </blockquote><p>
6017 schoenebeck 940
6018 schoenebeck 708 </p>
6019 senoner 542 <p>This is probably more interesting for manual telnet connections to
6020     LinuxSampler than really useful for a front-end implementation.
6021     </p>
6022 schoenebeck 940 <a name="anchor13"></a><br /><hr />
6023 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6024     <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6025     Global commands</h3>
6026 senoner 542
6027     <p>The following commands have global impact on the sampler.
6028     </p>
6029 schoenebeck 940 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6030 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6031     <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6032     Current number of active voices</h3>
6033 senoner 542
6034 schoenebeck 940 <p>The front-end can ask for the current number of active voices on
6035     the sampler by sending the following command:
6036     </p>
6037     <p>
6038     </p>
6039     <blockquote class="text">
6040     <p>GET TOTAL_VOICE_COUNT
6041     </p>
6042     </blockquote><p>
6043    
6044     </p>
6045     <p>Possible Answers:
6046     </p>
6047     <p>
6048     </p>
6049     <blockquote class="text">
6050     <p>LinuxSampler will answer by returning the number of all active
6051     voices on the sampler.
6052     </p>
6053     </blockquote><p>
6054    
6055     </p>
6056     <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6057 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6058     <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6059     Maximum amount of active voices</h3>
6060 schoenebeck 940
6061     <p>The front-end can ask for the maximum number of active voices
6062     by sending the following command:
6063     </p>
6064     <p>
6065     </p>
6066     <blockquote class="text">
6067     <p>GET TOTAL_VOICE_COUNT_MAX
6068     </p>
6069     </blockquote><p>
6070    
6071     </p>
6072     <p>Possible Answers:
6073     </p>
6074     <p>
6075     </p>
6076     <blockquote class="text">
6077     <p>LinuxSampler will answer by returning the maximum number
6078     of active voices.
6079     </p>
6080     </blockquote><p>
6081    
6082     </p>
6083 schoenebeck 1572 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6084     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6085     <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6086     Current number of active disk streams</h3>
6087    
6088     <p>The front-end can ask for the current number of active disk streams on
6089     the sampler by sending the following command:
6090     </p>
6091     <p>
6092     </p>
6093     <blockquote class="text">
6094     <p>GET TOTAL_STREAM_COUNT
6095     </p>
6096     </blockquote><p>
6097    
6098     </p>
6099     <p>Possible Answers:
6100     </p>
6101     <p>
6102     </p>
6103     <blockquote class="text">
6104     <p>LinuxSampler will answer by returning the number of all active
6105     disk streams on the sampler.
6106     </p>
6107     </blockquote><p>
6108    
6109     </p>
6110 schoenebeck 940 <a name="RESET"></a><br /><hr />
6111 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6112 schoenebeck 1572 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6113 schoenebeck 974 Reset sampler</h3>
6114 schoenebeck 940
6115 senoner 542 <p>The front-end can reset the whole sampler by sending the following command:
6116     </p>
6117 schoenebeck 708 <p>
6118     </p>
6119 senoner 542 <blockquote class="text">
6120     <p>RESET
6121     </p>
6122 schoenebeck 708 </blockquote><p>
6123 schoenebeck 940
6124 schoenebeck 708 </p>
6125 senoner 542 <p>Possible Answers:
6126     </p>
6127 schoenebeck 708 <p>
6128     </p>
6129 senoner 542 <blockquote class="text">
6130     <p>"OK" -
6131     </p>
6132     <blockquote class="text">
6133     <p>always
6134     </p>
6135 schoenebeck 940 </blockquote>
6136    
6137 senoner 542
6138 schoenebeck 708 </blockquote><p>
6139 schoenebeck 940
6140 schoenebeck 708 </p>
6141 senoner 542 <p>Examples:
6142     </p>
6143 schoenebeck 708 <p>
6144     </p>
6145 senoner 542 <blockquote class="text">
6146     <p>
6147     </p>
6148 schoenebeck 708 </blockquote><p>
6149 schoenebeck 940
6150 schoenebeck 708 </p>
6151 schoenebeck 940 <a name="GET SERVER INFO"></a><br /><hr />
6152 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6153 schoenebeck 1572 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6154 schoenebeck 974 General sampler informations</h3>
6155 schoenebeck 575
6156     <p>The client can ask for general informations about the LinuxSampler
6157     instance by sending the following command:
6158     </p>
6159 schoenebeck 708 <p>
6160     </p>
6161 schoenebeck 575 <blockquote class="text">
6162     <p>GET SERVER INFO
6163     </p>
6164 schoenebeck 708 </blockquote><p>
6165 schoenebeck 940
6166 schoenebeck 708 </p>
6167 schoenebeck 575 <p>Possible Answers:
6168     </p>
6169 schoenebeck 708 <p>
6170     </p>
6171 schoenebeck 575 <blockquote class="text">
6172     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6173     Each answer line begins with the information category name
6174     followed by a colon and then a space character &lt;SP&gt; and finally
6175     the info character string to that information category. At the
6176     moment the following categories are defined:
6177 schoenebeck 940
6178 schoenebeck 575 </p>
6179 schoenebeck 708 <p>
6180     </p>
6181 schoenebeck 575 <blockquote class="text">
6182     <p>DESCRIPTION -
6183     </p>
6184     <blockquote class="text">
6185     <p>arbitrary textual description about the sampler
6186 schoenebeck 1390 (note that the character string may contain
6187     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6188 schoenebeck 575 </p>
6189 schoenebeck 940 </blockquote>
6190    
6191 schoenebeck 575
6192     <p>VERSION -
6193     </p>
6194     <blockquote class="text">
6195     <p>version of the sampler
6196     </p>
6197 schoenebeck 940 </blockquote>
6198    
6199 schoenebeck 575
6200     <p>PROTOCOL_VERSION -
6201     </p>
6202     <blockquote class="text">
6203     <p>version of the LSCP specification the sampler
6204 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)
6205 schoenebeck 575 </p>
6206 schoenebeck 940 </blockquote>
6207    
6208 schoenebeck 575
6209 iliev 1162 <p>INSTRUMENTS_DB_SUPPORT -
6210     </p>
6211     <blockquote class="text">
6212     <p>either yes or no, specifies whether the
6213     sampler is build with instruments database support.
6214     </p>
6215 schoenebeck 940 </blockquote>
6216 iliev 1162
6217    
6218     </blockquote>
6219 schoenebeck 940
6220 schoenebeck 575
6221 schoenebeck 708 </blockquote><p>
6222 schoenebeck 940
6223 schoenebeck 708 </p>
6224 schoenebeck 575 <p>The mentioned fields above don't have to be in particular order.
6225     Other fields might be added in future.
6226     </p>
6227 schoenebeck 1006 <a name="GET VOLUME"></a><br /><hr />
6228     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6229 schoenebeck 1572 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6230 schoenebeck 1006 Getting global volume attenuation</h3>
6231    
6232     <p>The client can ask for the current global sampler-wide volume
6233     attenuation by sending the following command:
6234     </p>
6235     <p>
6236     </p>
6237     <blockquote class="text">
6238     <p>GET VOLUME
6239     </p>
6240     </blockquote><p>
6241    
6242     </p>
6243     <p>Possible Answers:
6244     </p>
6245     <p>
6246     </p>
6247     <blockquote class="text">
6248     <p>The sampler will always answer by returning the optional
6249     dotted floating point coefficient, reflecting the current
6250     global volume attenuation.
6251    
6252     </p>
6253     </blockquote><p>
6254    
6255     </p>
6256     <p>Note: it is up to the respective sampler engine whether to obey
6257     that global volume parameter or not, but in general all engines SHOULD
6258     use this parameter.
6259     </p>
6260     <a name="SET VOLUME"></a><br /><hr />
6261     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6262 schoenebeck 1572 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6263 schoenebeck 1006 Setting global volume attenuation</h3>
6264    
6265     <p>The client can alter the current global sampler-wide volume
6266     attenuation by sending the following command:
6267     </p>
6268     <p>
6269     </p>
6270     <blockquote class="text">
6271     <p>SET VOLUME &lt;volume&gt;
6272     </p>
6273     </blockquote><p>
6274    
6275     </p>
6276     <p>Where &lt;volume&gt; should be replaced by the optional dotted
6277     floating point value, reflecting the new global volume parameter.
6278     This value might usually be in the range between 0.0 and 1.0, that
6279     is for attenuating the overall volume.
6280     </p>
6281     <p>Possible Answers:
6282     </p>
6283     <p>
6284     </p>
6285     <blockquote class="text">
6286     <p>"OK" -
6287     </p>
6288     <blockquote class="text">
6289     <p>on success
6290     </p>
6291     </blockquote>
6292    
6293    
6294     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6295     </p>
6296     <blockquote class="text">
6297     <p>if the global volume was set, but there are noteworthy
6298     issue(s) related, providing an appropriate warning code and
6299     warning message
6300     </p>
6301     </blockquote>
6302    
6303    
6304     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6305     </p>
6306     <blockquote class="text">
6307     <p>in case it failed, providing an appropriate error code and error message
6308     </p>
6309     </blockquote>
6310    
6311    
6312     </blockquote><p>
6313    
6314     </p>
6315 schoenebeck 974 <a name="MIDI Instrument Mapping"></a><br /><hr />
6316     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6317     <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6318     MIDI Instrument Mapping</h3>
6319 schoenebeck 945
6320     <p>The MIDI protocol provides a way to switch between instruments
6321     by sending so called MIDI bank select and MIDI program change
6322     messages which are essentially just numbers. The following commands
6323     allow to actually map arbitrary MIDI bank select / program change
6324     numbers with real instruments.
6325     </p>
6326 schoenebeck 974 <p>The sampler allows to manage an arbitrary amount of MIDI
6327     instrument maps which define which instrument to load on
6328     which MIDI program change message.
6329 schoenebeck 945 </p>
6330 schoenebeck 974 <p>By default, that is when the sampler is launched, there is no
6331     map, thus the sampler will simply ignore all program change
6332     messages. The front-end has to explicitly create at least one
6333     map, add entries to the map and tell the respective sampler
6334     channel(s) which MIDI instrument map to use, so the sampler
6335     knows how to react on a given program change message on the
6336     respective sampler channel, that is by switching to the
6337     respectively defined engine type and loading the respective
6338     instrument. See command
6339     <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>
6340     for how to assign a MIDI instrument map to a sampler channel.
6341     </p>
6342 schoenebeck 945 <p>Also note per MIDI specification a bank select message does not
6343     cause to switch to another instrument. Instead when receiving a
6344     bank select message the bank value will be stored and a subsequent
6345     program change message (which may occur at any time) will finally
6346     cause the sampler to switch to the respective instrument as
6347     reflected by the current MIDI instrument map.
6348     </p>
6349 schoenebeck 1390 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6350 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6351     <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6352     Create a new MIDI instrument map</h3>
6353    
6354     <p>The front-end can add a new MIDI instrument map by sending
6355     the following command:
6356     </p>
6357     <p>
6358     </p>
6359     <blockquote class="text">
6360     <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6361     </p>
6362     </blockquote><p>
6363    
6364     </p>
6365     <p>Where &lt;name&gt; is an optional argument allowing to
6366     assign a custom name to the new map. MIDI instrument Map
6367 schoenebeck 1390 names do not have to be unique, but MUST be encapsulated
6368     into apostrophes and support escape sequences as described
6369     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>".
6370    
6371 schoenebeck 974 </p>
6372     <p>Possible Answers:
6373     </p>
6374     <p>
6375     </p>
6376     <blockquote class="text">
6377     <p>"OK[&lt;map&gt;]" -
6378     </p>
6379     <blockquote class="text">
6380     <p>in case a new MIDI instrument map could
6381     be added, where &lt;map&gt; reflects the
6382     unique ID of the newly created MIDI
6383     instrument map
6384     </p>
6385     </blockquote>
6386    
6387    
6388     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6389     </p>
6390     <blockquote class="text">
6391     <p>when a new map could not be created, which
6392     might never occur in practice
6393     </p>
6394     </blockquote>
6395    
6396    
6397     </blockquote><p>
6398    
6399     </p>
6400     <p>Examples:
6401     </p>
6402     <p>
6403     </p>
6404     <blockquote class="text">
6405     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6406     </p>
6407     <p>S: "OK[0]"
6408     </p>
6409     </blockquote><p>
6410    
6411     </p>
6412     <p>
6413     </p>
6414     <blockquote class="text">
6415     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6416     </p>
6417     <p>S: "OK[1]"
6418     </p>
6419     </blockquote><p>
6420    
6421     </p>
6422     <p>
6423     </p>
6424     <blockquote class="text">
6425     <p>C: "ADD MIDI_INSTRUMENT_MAP"
6426     </p>
6427     <p>S: "OK[5]"
6428     </p>
6429     </blockquote><p>
6430    
6431     </p>
6432     <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6433     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6434     <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6435     Delete one particular or all MIDI instrument maps</h3>
6436    
6437     <p>The front-end can delete a particular MIDI instrument map
6438     by sending the following command:
6439     </p>
6440     <p>
6441     </p>
6442     <blockquote class="text">
6443     <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6444     </p>
6445     </blockquote><p>
6446    
6447     </p>
6448     <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6449     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>
6450     command.
6451     </p>
6452     <p>The front-end can delete all MIDI instrument maps by
6453     sending the following command:
6454     </p>
6455     <p>
6456     </p>
6457     <blockquote class="text">
6458     <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6459     </p>
6460     </blockquote><p>
6461    
6462     </p>
6463     <p>Possible Answers:
6464     </p>
6465     <p>
6466     </p>
6467     <blockquote class="text">
6468     <p>"OK" -
6469     </p>
6470     <blockquote class="text">
6471     <p>in case the map(s) could be deleted
6472     </p>
6473     </blockquote>
6474    
6475    
6476     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6477     </p>
6478     <blockquote class="text">
6479     <p>when the given map does not exist
6480     </p>
6481     </blockquote>
6482    
6483    
6484     </blockquote><p>
6485    
6486     </p>
6487     <p>Examples:
6488     </p>
6489     <p>
6490     </p>
6491     <blockquote class="text">
6492     <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6493     </p>
6494     <p>S: "OK"
6495     </p>
6496     </blockquote><p>
6497    
6498     </p>
6499     <p>
6500     </p>
6501     <blockquote class="text">
6502     <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
6503     </p>
6504     <p>S: "OK"
6505     </p>
6506     </blockquote><p>
6507    
6508     </p>
6509     <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6510     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6511     <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
6512     Get amount of existing MIDI instrument maps</h3>
6513    
6514     <p>The front-end can retrieve the current amount of MIDI
6515     instrument maps by sending the following command:
6516     </p>
6517     <p>
6518     </p>
6519     <blockquote class="text">
6520     <p>GET MIDI_INSTRUMENT_MAPS
6521     </p>
6522     </blockquote><p>
6523    
6524     </p>
6525     <p>Possible Answers:
6526     </p>
6527     <p>
6528     </p>
6529     <blockquote class="text">
6530     <p>The sampler will answer by returning the current
6531     number of MIDI instrument maps.
6532     </p>
6533     </blockquote><p>
6534    
6535     </p>
6536     <p>Example:
6537     </p>
6538     <p>
6539     </p>
6540     <blockquote class="text">
6541     <p>C: "GET MIDI_INSTRUMENT_MAPS"
6542     </p>
6543     <p>S: "2"
6544     </p>
6545     </blockquote><p>
6546    
6547     </p>
6548     <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6549     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6550     <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
6551     Getting all created MIDI instrument maps</h3>
6552    
6553     <p>The number of MIDI instrument maps can change on runtime. To get the
6554     current list of MIDI instrument maps, the front-end can send the
6555     following command:
6556     </p>
6557     <p>
6558     </p>
6559     <blockquote class="text">
6560     <p>LIST MIDI_INSTRUMENT_MAPS
6561     </p>
6562     </blockquote><p>
6563    
6564     </p>
6565     <p>Possible Answers:
6566     </p>
6567     <p>
6568     </p>
6569     <blockquote class="text">
6570     <p>The sampler will answer by returning a comma separated list
6571     with all MIDI instrument maps' numerical IDs.
6572     </p>
6573     </blockquote><p>
6574    
6575     </p>
6576     <p>Example:
6577     </p>
6578     <p>
6579     </p>
6580     <blockquote class="text">
6581     <p>C: "LIST MIDI_INSTRUMENT_MAPS"
6582     </p>
6583     <p>S: "0,1,5,12"
6584     </p>
6585     </blockquote><p>
6586    
6587     </p>
6588     <a name="GET MIDI_INSTRUMENT_MAP INFO"></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     <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
6591     Getting MIDI instrument map information</h3>
6592    
6593     <p>The front-end can ask for the current settings of a MIDI
6594     instrument map by sending the following command:
6595     </p>
6596     <p>
6597     </p>
6598     <blockquote class="text">
6599     <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
6600     </p>
6601     </blockquote><p>
6602    
6603     </p>
6604     <p>Where &lt;map&gt; is the numerical ID of the map the
6605     front-end is interested in as returned by the
6606     <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>
6607     command.
6608     </p>
6609     <p>Possible Answers:
6610     </p>
6611     <p>
6612     </p>
6613     <blockquote class="text">
6614     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6615     Each answer line begins with the settings category name
6616     followed by a colon and then a space character &lt;SP&gt; and finally
6617     the info character string to that setting category. At the
6618     moment the following categories are defined:
6619     </p>
6620     <p>
6621     </p>
6622     <blockquote class="text">
6623     <p>NAME -
6624     </p>
6625     <blockquote class="text">
6626     <p>custom name of the given map,
6627     which does not have to be unique
6628 schoenebeck 1400 (note that this character string may contain
6629     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6630 schoenebeck 974 </p>
6631     </blockquote>
6632    
6633    
6634 iliev 1137 <p>DEFAULT -
6635     </p>
6636     <blockquote class="text">
6637     <p>either true or false,
6638     defines whether this map is the default map
6639     </p>
6640 schoenebeck 974 </blockquote>
6641 iliev 1137
6642    
6643     </blockquote>
6644 schoenebeck 974
6645    
6646     </blockquote><p>
6647    
6648     </p>
6649     <p>The mentioned fields above don't have to be in particular order.
6650     </p>
6651     <p>Example:
6652     </p>
6653     <p>
6654     </p>
6655     <blockquote class="text">
6656     <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
6657     </p>
6658     <p>S: "NAME: Standard Map"
6659     </p>
6660 iliev 1137 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
6661     </p>
6662 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"."
6663     </p>
6664     </blockquote><p>
6665    
6666     </p>
6667     <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
6668     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6669     <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
6670     Renaming a MIDI instrument map</h3>
6671    
6672     <p>The front-end can alter the custom name of a MIDI
6673     instrument map by sending the following command:
6674     </p>
6675     <p>
6676     </p>
6677     <blockquote class="text">
6678     <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
6679     </p>
6680     </blockquote><p>
6681    
6682     </p>
6683     <p>Where &lt;map&gt; is the numerical ID of the map and
6684     &lt;name&gt; the new custom name of the map, which does not
6685 schoenebeck 1390 have to be unique (name MUST be encapsulated into apostrophes
6686     and supports escape sequences as described in chapter
6687     "<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>").
6688    
6689 schoenebeck 974 </p>
6690     <p>Possible Answers:
6691     </p>
6692     <p>
6693     </p>
6694     <blockquote class="text">
6695     <p>"OK" -
6696     </p>
6697     <blockquote class="text">
6698     <p>on success
6699     </p>
6700     </blockquote>
6701    
6702    
6703     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6704     </p>
6705     <blockquote class="text">
6706     <p>in case the given map does not exist
6707     </p>
6708     </blockquote>
6709    
6710    
6711     </blockquote><p>
6712    
6713     </p>
6714     <p>Example:
6715     </p>
6716     <p>
6717     </p>
6718     <blockquote class="text">
6719     <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
6720     </p>
6721     <p>S: "OK"
6722     </p>
6723     </blockquote><p>
6724    
6725     </p>
6726 schoenebeck 945 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
6727 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6728     <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
6729     Create or replace a MIDI instrument map entry</h3>
6730 schoenebeck 945
6731     <p>The front-end can create a new or replace an existing entry
6732 schoenebeck 974 in a sampler's MIDI instrument map by sending the following
6733 schoenebeck 945 command:
6734     </p>
6735     <p>
6736     </p>
6737     <blockquote class="text">
6738 schoenebeck 1048 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
6739 schoenebeck 974 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
6740 schoenebeck 945 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
6741     [&lt;instr_load_mode&gt;] [&lt;name&gt;]
6742     </p>
6743     </blockquote><p>
6744    
6745     </p>
6746 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
6747     &lt;midi_bank&gt; is an integer value between
6748     0..16383 reflecting the MIDI bank select index,
6749     &lt;midi_prog&gt; an
6750 schoenebeck 945 integer value between 0..127 reflecting the MIDI program change
6751     index, &lt;engine_name&gt; a sampler engine name as returned by
6752 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>
6753 schoenebeck 945 command (not encapsulated into apostrophes), &lt;filename&gt; the name
6754 schoenebeck 1251 of the instrument's file to be deployed (encapsulated into apostrophes,
6755     supporting escape sequences as described in chapter
6756     "<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>"),
6757 schoenebeck 974 &lt;instrument_index&gt; the index (integer value) of the instrument
6758 schoenebeck 945 within the given file, &lt;volume_value&gt; reflects the master
6759     volume of the instrument as optionally dotted number (where a
6760 schoenebeck 1028 value &lt; 1.0 means attenuation and a value > 1.0 means
6761 schoenebeck 945 amplification). This parameter easily allows to adjust the
6762     volume of all intruments within a custom instrument map
6763     without having to adjust their instrument files. The
6764     OPTIONAL &lt;instr_load_mode&gt; argument defines the life
6765     time of the instrument, that is when the instrument should
6766     be loaded, when freed and has exactly the following
6767     possibilities:
6768     </p>
6769     <p>
6770     </p>
6771     <blockquote class="text">
6772     <p>"ON_DEMAND" -
6773     </p>
6774     <blockquote class="text">
6775     <p>The instrument will be loaded when needed,
6776     that is when demanded by at least one sampler
6777     channel. It will immediately be freed from memory
6778     when not needed by any sampler channel anymore.
6779     </p>
6780     </blockquote>
6781    
6782    
6783     <p>"ON_DEMAND_HOLD" -
6784     </p>
6785     <blockquote class="text">
6786     <p>The instrument will be loaded when needed,
6787     that is when demanded by at least one sampler
6788     channel. It will be kept in memory even when
6789     not needed by any sampler channel anymore.
6790     Instruments with this mode are only freed
6791     when the sampler is reset or all mapping
6792     entries with this mode (and respective
6793     instrument) are explicitly changed to
6794     "ON_DEMAND" and no sampler channel is using
6795     the instrument anymore.
6796     </p>
6797     </blockquote>
6798    
6799    
6800     <p>"PERSISTENT" -
6801     </p>
6802     <blockquote class="text">
6803     <p>The instrument will immediately be loaded
6804 schoenebeck 1048 into memory when this mapping
6805 schoenebeck 945 command is sent and the instrument is kept all
6806     the time. Instruments with this mode are
6807     only freed when the sampler is reset or all
6808     mapping entries with this mode (and
6809     respective instrument) are explicitly
6810     changed to "ON_DEMAND" and no sampler
6811     channel is using the instrument anymore.
6812     </p>
6813     </blockquote>
6814    
6815    
6816     <p>not supplied -
6817     </p>
6818     <blockquote class="text">
6819     <p>In case there is no &lt;instr_load_mode&gt;
6820     argument given, it will be up to the
6821     InstrumentManager to decide which mode to use.
6822     Usually it will use "ON_DEMAND" if an entry
6823     for the given instrument does not exist in
6824     the InstrumentManager's list yet, otherwise
6825     if an entry already exists, it will simply
6826     stick with the mode currently reflected by
6827     the already existing entry, that is it will
6828     not change the mode.
6829     </p>
6830     </blockquote>
6831    
6832    
6833     </blockquote><p>
6834    
6835     </p>
6836     <p>
6837     The &lt;instr_load_mode&gt; argument thus allows to define an
6838     appropriate strategy (low memory consumption vs. fast
6839     instrument switching) for each instrument individually. Note, the
6840     following restrictions apply to this argument: "ON_DEMAND_HOLD" and
6841     "PERSISTENT" have to be supported by the respective sampler engine
6842     (which is technically the case when the engine provides an
6843     InstrumentManager for its format). If this is not the case the
6844     argument will automatically fall back to the default value
6845     "ON_DEMAND". Also the load mode of one instrument may
6846     automatically change the laod mode of other instrument(s), i.e.
6847     because the instruments are part of the same file and the
6848     engine does not allow a way to manage load modes for them
6849     individually. Due to this, in case the frontend shows the
6850     load modes of entries, the frontend should retrieve the actual
6851     mode by i.e. sending
6852 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>
6853 schoenebeck 1390 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
6854     (encapsulated into apostrophes, supporting escape sequences as described in chapter
6855     "<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
6856     mapping entry, useful for frontends for displaying an appropriate name for
6857 schoenebeck 945 mapped instruments (using
6858 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>).
6859 schoenebeck 945
6860     </p>
6861     <p>
6862 schoenebeck 1048 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
6863     completely established in the sampler. The OPTIONAL "NON_MODAL" argument
6864     however causes the respective "MAP MIDI_INSTRUMENT" command to return
6865     immediately, that is to let the sampler establish the mapping in the
6866     background. So this argument might be especially useful for mappings with
6867     a "PERSISTENT" type, because these have to load the respective instruments
6868     immediately and might thus block for a very long time. It is recommended
6869     however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
6870     because it has the following drawbacks: as "NON_MODAL" instructions return
6871     immediately, they may not necessarily return an error i.e. when the given
6872     instrument file turns out to be corrupt, beside that subsequent commands
6873     in a LSCP instruction sequence might fail, because mandatory mappings are
6874     not yet completed.
6875 schoenebeck 945
6876     </p>
6877     <p>Possible Answers:
6878     </p>
6879     <p>
6880     </p>
6881     <blockquote class="text">
6882     <p>"OK" -
6883     </p>
6884     <blockquote class="text">
6885     <p>usually
6886     </p>
6887     </blockquote>
6888    
6889    
6890     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6891     </p>
6892     <blockquote class="text">
6893 schoenebeck 974 <p>when the given map or engine does not exist or a value
6894 schoenebeck 945 is out of range
6895     </p>
6896     </blockquote>
6897    
6898    
6899     </blockquote><p>
6900    
6901     </p>
6902     <p>Examples:
6903     </p>
6904     <p>
6905     </p>
6906     <blockquote class="text">
6907 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
6908 schoenebeck 945 </p>
6909     <p>S: "OK"
6910     </p>
6911     </blockquote><p>
6912    
6913     </p>
6914     <p>
6915     </p>
6916     <blockquote class="text">
6917 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
6918 schoenebeck 945 </p>
6919     <p>S: "OK"
6920     </p>
6921     </blockquote><p>
6922    
6923     </p>
6924     <p>
6925     </p>
6926     <blockquote class="text">
6927     <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
6928     </p>
6929     <p>S: "OK"
6930     </p>
6931 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
6932 schoenebeck 945 </p>
6933     <p>S: "OK"
6934     </p>
6935     </blockquote><p>
6936    
6937     </p>
6938     <p>
6939     </p>
6940     <blockquote class="text">
6941 schoenebeck 1048 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
6942 schoenebeck 945 </p>
6943     <p>S: "OK"
6944     </p>
6945     </blockquote><p>
6946    
6947     </p>
6948     <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
6949 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6950     <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
6951     Getting ammount of MIDI instrument map entries</h3>
6952 schoenebeck 945
6953 schoenebeck 974 <p>The front-end can query the amount of currently existing
6954     entries in a MIDI instrument map by sending the following
6955 schoenebeck 945 command:
6956     </p>
6957     <p>
6958     </p>
6959     <blockquote class="text">
6960 schoenebeck 974 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
6961 schoenebeck 945 </p>
6962     </blockquote><p>
6963    
6964     </p>
6965 schoenebeck 974 <p>The front-end can query the amount of currently existing
6966     entries in all MIDI instrument maps by sending the following
6967     command:
6968     </p>
6969     <p>
6970     </p>
6971     <blockquote class="text">
6972     <p>GET MIDI_INSTRUMENTS ALL
6973     </p>
6974     </blockquote><p>
6975    
6976     </p>
6977 schoenebeck 945 <p>Possible Answers:
6978     </p>
6979     <p>
6980     </p>
6981     <blockquote class="text">
6982 schoenebeck 974 <p>The sampler will answer by sending the current number of
6983     entries in the MIDI instrument map(s).
6984 schoenebeck 945 </p>
6985     </blockquote><p>
6986    
6987     </p>
6988     <p>Example:
6989     </p>
6990     <p>
6991     </p>
6992     <blockquote class="text">
6993 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENTS 0"
6994 schoenebeck 945 </p>
6995 schoenebeck 974 <p>S: "234"
6996 schoenebeck 945 </p>
6997     </blockquote><p>
6998    
6999     </p>
7000 schoenebeck 974 <p>
7001     </p>
7002     <blockquote class="text">
7003     <p>C: "GET MIDI_INSTRUMENTS ALL"
7004     </p>
7005     <p>S: "954"
7006     </p>
7007     </blockquote><p>
7008    
7009     </p>
7010 schoenebeck 945 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7011 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7012     <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7013     Getting indeces of all entries of a MIDI instrument map</h3>
7014 schoenebeck 945
7015 schoenebeck 974 <p>The front-end can query a list of all currently existing
7016     entries in a certain MIDI instrument map by sending the following
7017     command:
7018 schoenebeck 945 </p>
7019     <p>
7020     </p>
7021     <blockquote class="text">
7022 schoenebeck 974 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7023 schoenebeck 945 </p>
7024     </blockquote><p>
7025    
7026     </p>
7027 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7028     </p>
7029     <p>The front-end can query a list of all currently existing
7030     entries of all MIDI instrument maps by sending the following
7031     command:
7032     </p>
7033     <p>
7034     </p>
7035     <blockquote class="text">
7036     <p>LIST MIDI_INSTRUMENTS ALL
7037     </p>
7038     </blockquote><p>
7039    
7040     </p>
7041 schoenebeck 945 <p>Possible Answers:
7042     </p>
7043     <p>
7044     </p>
7045     <blockquote class="text">
7046 schoenebeck 974 <p>The sampler will answer by sending a comma separated
7047     list of map ID - MIDI bank - MIDI program triples, where
7048     each triple is encapsulated into curly braces. The
7049     list is returned in one single line. Each triple
7050     just reflects the key of the respective map entry,
7051     thus subsequent
7052     <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>
7053 schoenebeck 945 command(s) are necessary to retrieve detailed informations
7054     about each entry.
7055     </p>
7056     </blockquote><p>
7057    
7058     </p>
7059     <p>Example:
7060     </p>
7061     <p>
7062     </p>
7063     <blockquote class="text">
7064 schoenebeck 974 <p>C: "LIST MIDI_INSTRUMENTS 0"
7065 schoenebeck 945 </p>
7066 schoenebeck 974 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7067 schoenebeck 945 </p>
7068     </blockquote><p>
7069    
7070     </p>
7071     <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7072 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7073     <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7074     Remove an entry from the MIDI instrument map</h3>
7075 schoenebeck 945
7076 schoenebeck 974 <p>The front-end can delete an entry from a MIDI instrument
7077 schoenebeck 945 map by sending the following command:
7078     </p>
7079     <p>
7080     </p>
7081     <blockquote class="text">
7082 schoenebeck 974 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7083 schoenebeck 945 </p>
7084     </blockquote><p>
7085    
7086     </p>
7087     <p>
7088 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7089     &lt;midi_bank&gt; is an integer value between 0..16383
7090     reflecting the MIDI bank value and
7091     &lt;midi_prog&gt; an integer value between
7092     0..127 reflecting the MIDI program value of the map's entrie's key
7093 schoenebeck 945 index triple.
7094    
7095     </p>
7096     <p>Possible Answers:
7097     </p>
7098     <p>
7099     </p>
7100     <blockquote class="text">
7101     <p>"OK" -
7102     </p>
7103     <blockquote class="text">
7104     <p>usually
7105     </p>
7106     </blockquote>
7107    
7108    
7109     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7110     </p>
7111     <blockquote class="text">
7112     <p>when index out of bounds
7113     </p>
7114     </blockquote>
7115    
7116    
7117     </blockquote><p>
7118    
7119     </p>
7120     <p>Example:
7121     </p>
7122     <p>
7123     </p>
7124     <blockquote class="text">
7125 schoenebeck 974 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7126 schoenebeck 945 </p>
7127     <p>S: "OK"
7128     </p>
7129     </blockquote><p>
7130    
7131     </p>
7132     <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7133 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7134     <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7135     Get current settings of MIDI instrument map entry</h3>
7136 schoenebeck 945
7137     <p>The front-end can retrieve the current settings of a certain
7138     instrument map entry by sending the following command:
7139     </p>
7140     <p>
7141     </p>
7142     <blockquote class="text">
7143 schoenebeck 974 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7144 schoenebeck 945 </p>
7145     </blockquote><p>
7146    
7147     </p>
7148     <p>
7149 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7150     &lt;midi_bank&gt; is an integer value between 0..16383
7151     reflecting the MIDI bank value, &lt;midi_bank&gt;
7152     and &lt;midi_prog&gt; an integer value between
7153     0..127 reflecting the MIDI program value of the map's entrie's key
7154 schoenebeck 945 index triple.
7155    
7156     </p>
7157     <p>Possible Answers:
7158     </p>
7159     <p>
7160     </p>
7161     <blockquote class="text">
7162     <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7163     separated list. Each answer line begins with the
7164     information category name followed by a colon and then
7165     a space character &lt;SP&gt; and finally the info
7166     character string to that info category. At the moment
7167     the following categories are defined:
7168     </p>
7169     <p>"NAME" -
7170     </p>
7171     <blockquote class="text">
7172     <p>Name for this MIDI instrument map entry (if defined).
7173     This name shall be used by frontends for displaying a
7174     name for this mapped instrument. It can be set and
7175     changed with the
7176 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>
7177 schoenebeck 945 command and does not have to be unique.
7178 schoenebeck 1400 (note that this character string may contain
7179     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7180 schoenebeck 945 </p>
7181     </blockquote>
7182    
7183    
7184     <p>"ENGINE_NAME" -
7185     </p>
7186     <blockquote class="text">
7187     <p>Name of the engine to be deployed for this
7188     instrument.
7189     </p>
7190     </blockquote>
7191    
7192    
7193     <p>"INSTRUMENT_FILE" -
7194     </p>
7195     <blockquote class="text">
7196 schoenebeck 1400 <p>File name of the instrument
7197     (note that this path may contain
7198     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7199 schoenebeck 945 </p>
7200     </blockquote>
7201    
7202    
7203     <p>"INSTRUMENT_NR" -
7204     </p>
7205     <blockquote class="text">
7206     <p>Index of the instrument within the file.
7207     </p>
7208     </blockquote>
7209    
7210    
7211     <p>"INSTRUMENT_NAME" -
7212     </p>
7213     <blockquote class="text">
7214     <p>Name of the loaded instrument as reflected by its file.
7215     In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7216 schoenebeck 1400 cannot be changed (note that this character string may contain
7217     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7218 schoenebeck 945 </p>
7219     </blockquote>
7220    
7221    
7222     <p>"LOAD_MODE" -
7223     </p>
7224     <blockquote class="text">
7225     <p>Life time of instrument
7226 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).
7227 schoenebeck 945 </p>
7228     </blockquote>
7229    
7230    
7231     <p>"VOLUME" -
7232     </p>
7233     <blockquote class="text">
7234     <p>master volume of the instrument as optionally
7235 schoenebeck 1028 dotted number (where a value &lt; 1.0 means attenuation
7236 schoenebeck 945 and a value > 1.0 means amplification)
7237     </p>
7238     </blockquote>
7239    
7240    
7241     <p>The mentioned fields above don't have to be in particular order.
7242     </p>
7243     </blockquote><p>
7244    
7245     </p>
7246     <p>Example:
7247     </p>
7248     <p>
7249     </p>
7250     <blockquote class="text">
7251 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7252 schoenebeck 945 </p>
7253     <p>S: "NAME: Drums for Foo Song"
7254     </p>
7255     <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7256     </p>
7257     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7258     </p>
7259     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7260     </p>
7261     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7262     </p>
7263     <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7264     </p>
7265     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7266     </p>
7267     <p>&nbsp;&nbsp;&nbsp;"."
7268     </p>
7269     </blockquote><p>
7270    
7271     </p>
7272     <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7273 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7274     <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7275     Clear MIDI instrument map</h3>
7276 schoenebeck 945
7277 schoenebeck 974 <p>The front-end can clear a whole MIDI instrument map, that
7278     is delete all its entries by sending the following command:
7279 schoenebeck 945 </p>
7280     <p>
7281     </p>
7282     <blockquote class="text">
7283 schoenebeck 974 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7284 schoenebeck 945 </p>
7285     </blockquote><p>
7286    
7287     </p>
7288 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7289     </p>
7290     <p>The front-end can clear all MIDI instrument maps, that
7291     is delete all entries of all maps by sending the following
7292     command:
7293     </p>
7294     <p>
7295     </p>
7296     <blockquote class="text">
7297     <p>CLEAR MIDI_INSTRUMENTS ALL
7298     </p>
7299     </blockquote><p>
7300    
7301     </p>
7302     <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7303     maps, only their entries, thus the map's settings like
7304     custom name will be preservevd.
7305     </p>
7306 schoenebeck 945 <p>Possible Answers:
7307     </p>
7308     <p>
7309     </p>
7310     <blockquote class="text">
7311     <p>"OK" -
7312     </p>
7313     <blockquote class="text">
7314     <p>always
7315     </p>
7316     </blockquote>
7317    
7318    
7319     </blockquote><p>
7320    
7321     </p>
7322 schoenebeck 974 <p>Examples:
7323 schoenebeck 945 </p>
7324     <p>
7325     </p>
7326     <blockquote class="text">
7327 schoenebeck 974 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7328 schoenebeck 945 </p>
7329     <p>S: "OK"
7330     </p>
7331     </blockquote><p>
7332    
7333     </p>
7334 schoenebeck 974 <p>
7335     </p>
7336     <blockquote class="text">
7337     <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7338     </p>
7339     <p>S: "OK"
7340     </p>
7341     </blockquote><p>
7342    
7343     </p>
7344 iliev 1162 <a name="Managing Instruments Database"></a><br /><hr />
7345     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7346     <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7347     Managing Instruments Database</h3>
7348    
7349     <p>The following commands describe how to use and manage
7350     the instruments database.
7351     </p>
7352 schoenebeck 1363 <p>Notice:
7353     </p>
7354     <p>
7355     </p>
7356     <blockquote class="text">
7357     <p>All command arguments representing a path or
7358     instrument/directory name support escape sequences as described in chapter
7359     "<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>".
7360    
7361     </p>
7362     <p>All occurrences of a forward slash in instrument and directory
7363     names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7364    
7365     </p>
7366     </blockquote><p>
7367    
7368     </p>
7369 iliev 1162 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7370     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7371     <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7372     Creating a new instrument directory</h3>
7373    
7374     <p>The front-end can add a new instrument directory to the
7375     instruments database by sending the following command:
7376     </p>
7377     <p>
7378     </p>
7379     <blockquote class="text">
7380     <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7381     </p>
7382     </blockquote><p>
7383    
7384     </p>
7385     <p>Where &lt;dir&gt; is the absolute path name of the directory
7386     to be created (encapsulated into apostrophes).
7387     </p>
7388     <p>Possible Answers:
7389     </p>
7390     <p>
7391     </p>
7392     <blockquote class="text">
7393     <p>"OK" -
7394     </p>
7395     <blockquote class="text">
7396     <p>on success
7397     </p>
7398     </blockquote>
7399    
7400    
7401     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7402     </p>
7403     <blockquote class="text">
7404     <p>when the directory could not be created, which
7405     can happen if the directory already exists or the
7406     name contains not allowed symbols
7407     </p>
7408     </blockquote>
7409    
7410    
7411     </blockquote><p>
7412    
7413     </p>
7414     <p>Examples:
7415     </p>
7416     <p>
7417     </p>
7418     <blockquote class="text">
7419     <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7420     </p>
7421     <p>S: "OK"
7422     </p>
7423     </blockquote><p>
7424    
7425     </p>
7426     <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7427     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7428     <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7429     Deleting an instrument directory</h3>
7430    
7431     <p>The front-end can delete a particular instrument directory
7432     from the instruments database by sending the following command:
7433     </p>
7434     <p>
7435     </p>
7436     <blockquote class="text">
7437     <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7438     </p>
7439     </blockquote><p>
7440    
7441     </p>
7442     <p>Where &lt;dir&gt; is the absolute path name of the directory
7443     to delete. The optional FORCE argument can be used to
7444     force the deletion of a non-empty directory and all its content.
7445     </p>
7446     <p>Possible Answers:
7447     </p>
7448     <p>
7449     </p>
7450     <blockquote class="text">
7451     <p>"OK" -
7452     </p>
7453     <blockquote class="text">
7454     <p>if the directory is deleted successfully
7455     </p>
7456     </blockquote>
7457    
7458    
7459     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7460     </p>
7461     <blockquote class="text">
7462     <p>if the given directory does not exist, or
7463     if trying to delete a non-empty directory,
7464     without using the FORCE argument.
7465     </p>
7466     </blockquote>
7467    
7468    
7469     </blockquote><p>
7470    
7471     </p>
7472     <p>Examples:
7473     </p>
7474     <p>
7475     </p>
7476     <blockquote class="text">
7477     <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7478     </p>
7479     <p>S: "OK"
7480     </p>
7481     </blockquote><p>
7482    
7483     </p>
7484     <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7485     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7486     <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7487     Getting amount of instrument directories</h3>
7488    
7489     <p>The front-end can retrieve the current amount of
7490     directories in a specific directory by sending the following command:
7491     </p>
7492     <p>
7493     </p>
7494     <blockquote class="text">
7495 iliev 1189 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7496 iliev 1162 </p>
7497     </blockquote><p>
7498    
7499     </p>
7500     <p>Where &lt;dir&gt; should be replaced by the absolute path
7501 iliev 1189 name of the directory. If RECURSIVE is specified, the number of
7502     all directories, including those located in subdirectories of the
7503     specified directory, will be returned.
7504 iliev 1162 </p>
7505     <p>Possible Answers:
7506     </p>
7507     <p>
7508     </p>
7509     <blockquote class="text">
7510     <p>The current number of instrument directories
7511     in the specified directory.
7512     </p>
7513     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7514     </p>
7515     <blockquote class="text">
7516     <p>if the given directory does not exist.
7517     </p>
7518     </blockquote>
7519    
7520    
7521     </blockquote><p>
7522    
7523     </p>
7524     <p>Example:
7525     </p>
7526     <p>
7527     </p>
7528     <blockquote class="text">
7529     <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
7530     </p>
7531     <p>S: "2"
7532     </p>
7533     </blockquote><p>
7534    
7535     </p>
7536     <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7537     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7538     <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
7539     Listing all directories in specific directory</h3>
7540    
7541     <p>The front-end can retrieve the current list of directories
7542     in specific directory by sending the following command:
7543     </p>
7544     <p>
7545     </p>
7546     <blockquote class="text">
7547 iliev 1189 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7548 iliev 1162 </p>
7549     </blockquote><p>
7550    
7551     </p>
7552     <p>Where &lt;dir&gt; should be replaced by the absolute path
7553 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path names
7554     of all directories, including those located in subdirectories of the
7555     specified directory, will be returned.
7556 iliev 1162 </p>
7557     <p>Possible Answers:
7558     </p>
7559     <p>
7560     </p>
7561     <blockquote class="text">
7562     <p>A comma separated list of all instrument directories
7563     (encapsulated into apostrophes) in the specified directory.
7564     </p>
7565     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7566     </p>
7567     <blockquote class="text">
7568     <p>if the given directory does not exist.
7569     </p>
7570     </blockquote>
7571    
7572    
7573     </blockquote><p>
7574    
7575     </p>
7576     <p>Example:
7577     </p>
7578     <p>
7579     </p>
7580     <blockquote class="text">
7581     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
7582     </p>
7583     <p>S: "'Piano Collection','Percussion Collection'"
7584     </p>
7585     </blockquote><p>
7586    
7587     </p>
7588 iliev 1189 <p>
7589     </p>
7590     <blockquote class="text">
7591     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
7592     </p>
7593     <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
7594     </p>
7595     </blockquote><p>
7596    
7597     </p>
7598 iliev 1162 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
7599     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7600     <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
7601     Getting instrument directory information</h3>
7602    
7603     <p>The front-end can ask for the current settings of an
7604     instrument directory by sending the following command:
7605     </p>
7606     <p>
7607     </p>
7608     <blockquote class="text">
7609     <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
7610     </p>
7611     </blockquote><p>
7612    
7613     </p>
7614     <p>Where &lt;dir&gt; should be replaced by the absolute path
7615     name of the directory the front-end is interested in.
7616     </p>
7617     <p>Possible Answers:
7618     </p>
7619     <p>
7620     </p>
7621     <blockquote class="text">
7622     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7623     Each answer line begins with the settings category name
7624     followed by a colon and then a space character &lt;SP&gt; and finally
7625     the info character string to that setting category. At the
7626     moment the following categories are defined:
7627     </p>
7628     <p>
7629     </p>
7630     <blockquote class="text">
7631     <p>DESCRIPTION -
7632     </p>
7633     <blockquote class="text">
7634 schoenebeck 1363 <p>A brief description of the directory content.
7635     Note that the character string may contain
7636     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
7637 iliev 1162 </p>
7638     </blockquote>
7639    
7640    
7641     <p>CREATED -
7642     </p>
7643     <blockquote class="text">
7644     <p>The creation date and time of the directory,
7645     represented in "YYYY-MM-DD HH:MM:SS" format
7646     </p>
7647     </blockquote>
7648    
7649    
7650     <p>MODIFIED -
7651     </p>
7652     <blockquote class="text">
7653     <p>The date and time of the last modification of the
7654     directory, represented in "YYYY-MM-DD HH:MM:SS" format
7655     </p>
7656     </blockquote>
7657    
7658    
7659     </blockquote>
7660    
7661    
7662     </blockquote><p>
7663    
7664     </p>
7665     <p>The mentioned fields above don't have to be in particular order.
7666     </p>
7667     <p>Example:
7668     </p>
7669     <p>
7670     </p>
7671     <blockquote class="text">
7672     <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
7673     </p>
7674     <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
7675     </p>
7676     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
7677     </p>
7678     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
7679     </p>
7680     <p>&nbsp;&nbsp;&nbsp;"."
7681     </p>
7682     </blockquote><p>
7683    
7684     </p>
7685     <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
7686     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7687     <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
7688     Renaming an instrument directory</h3>
7689    
7690     <p>The front-end can alter the name of a specific
7691     instrument directory by sending the following command:
7692     </p>
7693     <p>
7694     </p>
7695     <blockquote class="text">
7696     <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
7697     </p>
7698     </blockquote><p>
7699    
7700     </p>
7701     <p>Where &lt;dir&gt; is the absolute path name of the directory and
7702     &lt;name&gt; is the new name for that directory.
7703     </p>
7704     <p>Possible Answers:
7705     </p>
7706     <p>
7707     </p>
7708     <blockquote class="text">
7709     <p>"OK" -
7710     </p>
7711     <blockquote class="text">
7712     <p>on success
7713     </p>
7714     </blockquote>
7715    
7716    
7717     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7718     </p>
7719     <blockquote class="text">
7720     <p>in case the given directory does not exists,
7721     or if a directory with name equal to the new
7722     name already exists.
7723     </p>
7724     </blockquote>
7725    
7726    
7727     </blockquote><p>
7728    
7729     </p>
7730     <p>Example:
7731     </p>
7732     <p>
7733     </p>
7734     <blockquote class="text">
7735     <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
7736     </p>
7737     <p>S: "OK"
7738     </p>
7739     </blockquote><p>
7740    
7741     </p>
7742     <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7743     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7744     <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
7745     Moving an instrument directory</h3>
7746    
7747     <p>The front-end can move a specific
7748     instrument directory by sending the following command:
7749     </p>
7750     <p>
7751     </p>
7752     <blockquote class="text">
7753     <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7754     </p>
7755     </blockquote><p>
7756    
7757     </p>
7758     <p>Where &lt;dir&gt; is the absolute path name of the directory
7759     to move and &lt;dst&gt; is the location where the directory will
7760     be moved to.
7761     </p>
7762     <p>Possible Answers:
7763     </p>
7764     <p>
7765     </p>
7766     <blockquote class="text">
7767     <p>"OK" -
7768     </p>
7769     <blockquote class="text">
7770     <p>on success
7771     </p>
7772     </blockquote>
7773    
7774    
7775     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7776     </p>
7777     <blockquote class="text">
7778     <p>in case a given directory does not exists,
7779     or if a directory with name equal to the name
7780     of the specified directory already exists in
7781     the destination directory. Error is also thrown
7782     when trying to move a directory to a subdirectory
7783     of itself.
7784     </p>
7785     </blockquote>
7786    
7787    
7788     </blockquote><p>
7789    
7790     </p>
7791     <p>Example:
7792     </p>
7793     <p>
7794     </p>
7795     <blockquote class="text">
7796     <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
7797     </p>
7798     <p>S: "OK"
7799     </p>
7800     </blockquote><p>
7801    
7802     </p>
7803 iliev 1189 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7804     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7805     <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
7806     Copying instrument directories</h3>
7807    
7808     <p>The front-end can copy a specific
7809     instrument directory by sending the following command:
7810     </p>
7811     <p>
7812     </p>
7813     <blockquote class="text">
7814     <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7815     </p>
7816     </blockquote><p>
7817    
7818     </p>
7819     <p>Where &lt;dir&gt; is the absolute path name of the directory
7820     to copy and &lt;dst&gt; is the location where the directory will
7821     be copied to.
7822     </p>
7823     <p>Possible Answers:
7824     </p>
7825     <p>
7826     </p>
7827     <blockquote class="text">
7828     <p>"OK" -
7829     </p>
7830     <blockquote class="text">
7831     <p>on success
7832     </p>
7833     </blockquote>
7834    
7835    
7836     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7837     </p>
7838     <blockquote class="text">
7839     <p>in case a given directory does not exists,
7840     or if a directory with name equal to the name
7841     of the specified directory already exists in
7842     the destination directory. Error is also thrown
7843     when trying to copy a directory to a subdirectory
7844     of itself.
7845     </p>
7846     </blockquote>
7847    
7848    
7849     </blockquote><p>
7850    
7851     </p>
7852     <p>Example:
7853     </p>
7854     <p>
7855     </p>
7856     <blockquote class="text">
7857     <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
7858     </p>
7859     <p>S: "OK"
7860     </p>
7861     </blockquote><p>
7862    
7863     </p>
7864 iliev 1162 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></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 iliev 1189 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
7867 iliev 1162 Changing the description of directory</h3>
7868    
7869     <p>The front-end can alter the description of a specific
7870     instrument directory by sending the following command:
7871     </p>
7872     <p>
7873     </p>
7874     <blockquote class="text">
7875     <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
7876     </p>
7877     </blockquote><p>
7878    
7879     </p>
7880     <p>Where &lt;dir&gt; is the absolute path name of the directory and
7881 schoenebeck 1363 &lt;desc&gt; is the new description for the directory
7882     (encapsulated into apostrophes, supporting escape sequences as described in chapter
7883     "<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>").
7884 iliev 1162 </p>
7885     <p>Possible Answers:
7886     </p>
7887     <p>
7888     </p>
7889     <blockquote class="text">
7890     <p>"OK" -
7891     </p>
7892     <blockquote class="text">
7893     <p>on success
7894     </p>
7895     </blockquote>
7896    
7897    
7898     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7899     </p>
7900     <blockquote class="text">
7901     <p>in case the given directory does not exists.
7902     </p>
7903     </blockquote>
7904    
7905    
7906     </blockquote><p>
7907    
7908     </p>
7909     <p>Example:
7910     </p>
7911     <p>
7912     </p>
7913     <blockquote class="text">
7914     <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
7915     </p>
7916     <p>S: "OK"
7917     </p>
7918     </blockquote><p>
7919    
7920     </p>
7921 iliev 1189 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7922     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7923     <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
7924     Finding directories</h3>
7925    
7926     <p>The front-end can search for directories
7927     in specific directory by sending the following command:
7928     </p>
7929     <p>
7930     </p>
7931     <blockquote class="text">
7932     <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
7933     </p>
7934     </blockquote><p>
7935    
7936     </p>
7937     <p>Where &lt;dir&gt; should be replaced by the absolute path
7938     name of the directory to search in. If NON_RECURSIVE is specified, the
7939     directories located in subdirectories of the specified directory will not
7940     be searched. &lt;criteria-list&gt; is a list of search criterias
7941     in form of "key1=val1 key2=val2 ...". The following criterias are
7942     allowed:
7943     </p>
7944     <p>
7945    
7946     <p>NAME='&lt;search-string&gt;'
7947     </p>
7948     <blockquote class="text">
7949     <p>Restricts the search to directories, which names
7950 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
7951     supporting escape sequences as described in chapter
7952     "<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>").
7953 iliev 1189 </p>
7954     </blockquote><p>
7955    
7956     </p>
7957    
7958    
7959     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7960     </p>
7961     <blockquote class="text">
7962     <p>Restricts the search to directories, which creation
7963     date satisfies the specified period, where &lt;date-after&gt;
7964     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
7965     If &lt;date-after&gt; is omitted the search is restricted to
7966     directories created before &lt;date-before&gt;. If
7967     &lt;date-before&gt; is omitted, the search is restricted
7968     to directories created after &lt;date-after&gt;.
7969     </p>
7970     </blockquote><p>
7971    
7972     </p>
7973    
7974    
7975     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7976     </p>
7977     <blockquote class="text">
7978     <p>Restricts the search to directories, which
7979     date of last modification satisfies the specified period, where
7980     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
7981     format. If &lt;date-after&gt; is omitted the search is restricted to
7982     directories, which are last modified before &lt;date-before&gt;. If
7983     &lt;date-before&gt; is omitted, the search is restricted to directories,
7984     which are last modified after &lt;date-after&gt;.
7985     </p>
7986     </blockquote><p>
7987    
7988     </p>
7989    
7990    
7991     <p>DESCRIPTION='&lt;search-string&gt;'
7992     </p>
7993     <blockquote class="text">
7994     <p>Restricts the search to directories with description
7995 schoenebeck 1363 that satisfies the supplied search string
7996     (encapsulated into apostrophes, supporting escape
7997     sequences as described in chapter
7998     "<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>").
7999 iliev 1189 </p>
8000     </blockquote><p>
8001    
8002     </p>
8003    
8004    
8005     <p>Where &lt;search-string&gt; is either a regular expression, or a
8006     word list separated with spaces for OR search and with '+' for AND search.
8007     </p>
8008     <p>Possible Answers:
8009     </p>
8010     <p>
8011     </p>
8012     <blockquote class="text">
8013     <p>A comma separated list with the absolute path names (encapsulated into
8014     apostrophes) of all directories in the specified directory that satisfy
8015     the supplied search criterias.
8016     </p>
8017     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8018     </p>
8019     <blockquote class="text">
8020     <p>if the given directory does not exist.
8021     </p>
8022     </blockquote>
8023    
8024    
8025     </blockquote><p>
8026    
8027     </p>
8028     <p>Example:
8029     </p>
8030     <p>
8031     </p>
8032     <blockquote class="text">
8033     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8034     </p>
8035     <p>S: "'/Piano Collection'"
8036     </p>
8037     </blockquote><p>
8038    
8039     </p>
8040     <p>
8041     </p>
8042     <blockquote class="text">
8043     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8044     </p>
8045     <p>S: "'/Piano Collection','/Percussions'"
8046     </p>
8047     </blockquote><p>
8048    
8049     </p>
8050 iliev 1162 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8051     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8052 iliev 1189 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8053 iliev 1162 Adding instruments to the instruments database</h3>
8054    
8055     <p>The front-end can add one or more instruments
8056     to the instruments database by sending the following command:
8057     </p>
8058     <p>
8059     </p>
8060     <blockquote class="text">
8061 iliev 1201 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8062 iliev 1162 </p>
8063     </blockquote><p>
8064    
8065     </p>
8066     <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8067     (encapsulated into apostrophes) in the instruments database in which
8068     only the new instruments (that are not already in the database) will
8069     be added, &lt;file_path&gt; is the absolute path name of a file or
8070     directory in the file system (encapsulated into apostrophes). In case
8071     an instrument file is supplied, only the instruments in the specified
8072     file will be added to the instruments database. If the optional
8073     &lt;instr_index&gt; (the index of the instrument within the given file)
8074     is supplied too, then only the specified instrument will be added.
8075     In case a directory is supplied, the instruments in that directory
8076     will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8077     when a directory is provided as &lt;file_path&gt; and specifies how the
8078     scanning will be done and has exactly the following possibilities:
8079     </p>
8080     <p>
8081     </p>
8082     <blockquote class="text">
8083 iliev 1201 <p>"RECURSIVE" -
8084     </p>
8085     <blockquote class="text">
8086     <p>All instruments will be processed, including those
8087     in the subdirectories, and the respective subdirectory
8088     tree structure will be recreated in the instruments
8089     database
8090     </p>
8091     </blockquote>
8092    
8093    
8094 iliev 1162 <p>"NON_RECURSIVE" -
8095     </p>
8096     <blockquote class="text">
8097     <p>Only the instruments in the specified directory
8098     will be added, the instruments in the subdirectories
8099     will not be processed.
8100     </p>
8101     </blockquote>
8102    
8103    
8104     <p>"FLAT" -
8105     </p>
8106     <blockquote class="text">
8107     <p>All instruments will be processed, including those
8108     in the subdirectories, but the respective subdirectory
8109     structure will not be recreated in the instruments
8110     database. All instruments will be added directly in
8111     the specified database directory.
8112     </p>
8113     </blockquote>
8114    
8115    
8116     </blockquote><p>
8117    
8118     </p>
8119 iliev 1201 <p>The difference between regular and NON_MODAL versions of the command
8120     is that the regular command returns when the scanning is finished
8121     while NON_MODAL version returns immediately and a background process is launched.
8122     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>
8123     command can be used to monitor the scanning progress.
8124     </p>
8125 iliev 1162 <p>Possible Answers:
8126     </p>
8127     <p>
8128     </p>
8129     <blockquote class="text">
8130     <p>"OK" -
8131     </p>
8132     <blockquote class="text">
8133 iliev 1201 <p>on success when NON_MODAL is not supplied
8134 iliev 1162 </p>
8135     </blockquote>
8136    
8137    
8138 iliev 1201 <p>"OK[&lt;job-id&gt;]" -
8139     </p>
8140     <blockquote class="text">
8141     <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8142     is a numerical ID used to obtain status information about the job progress.
8143     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>
8144    
8145     </p>
8146     </blockquote>
8147    
8148    
8149 iliev 1162 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8150     </p>
8151     <blockquote class="text">
8152     <p>if an invalid path is specified.
8153     </p>
8154     </blockquote>
8155    
8156    
8157     </blockquote><p>
8158    
8159     </p>
8160     <p>Examples:
8161     </p>
8162     <p>
8163     </p>
8164     <blockquote class="text">
8165     <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8166     </p>
8167     <p>S: "OK"
8168     </p>
8169     </blockquote><p>
8170    
8171     </p>
8172     <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8173     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8174 iliev 1189 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8175 iliev 1162 Removing an instrument</h3>
8176    
8177     <p>The front-end can remove a particular instrument
8178     from the instruments database by sending the following command:
8179     </p>
8180     <p>
8181     </p>
8182     <blockquote class="text">
8183     <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8184     </p>
8185     </blockquote><p>
8186    
8187     </p>
8188     <p>Where &lt;instr_path&gt; is the absolute path name
8189     (in the instruments database) of the instrument to remove.
8190     </p>
8191     <p>Possible Answers:
8192     </p>
8193     <p>
8194     </p>
8195     <blockquote class="text">
8196     <p>"OK" -
8197     </p>
8198     <blockquote class="text">
8199     <p>if the instrument is removed successfully
8200     </p>
8201     </blockquote>
8202    
8203    
8204     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8205     </p>
8206     <blockquote class="text">
8207     <p>if the given path does not exist or
8208     is a directory.
8209     </p>
8210     </blockquote>
8211    
8212    
8213     </blockquote><p>
8214    
8215     </p>
8216     <p>Examples:
8217     </p>
8218     <p>
8219     </p>
8220     <blockquote class="text">
8221     <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8222     </p>
8223     <p>S: "OK"
8224     </p>
8225     </blockquote><p>
8226    
8227     </p>
8228     <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8229     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8230 iliev 1189 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8231 iliev 1162 Getting amount of instruments</h3>
8232    
8233     <p>The front-end can retrieve the current amount of
8234     instruments in a specific directory by sending the following command:
8235     </p>
8236     <p>
8237     </p>
8238     <blockquote class="text">
8239 iliev 1189 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8240 iliev 1162 </p>
8241     </blockquote><p>
8242    
8243     </p>
8244     <p>Where &lt;dir&gt; should be replaced by the absolute path name
8245 iliev 1189 of the directory. If RECURSIVE is specified, the number of all
8246     instruments, including those located in subdirectories of the
8247     specified directory, will be returned.
8248 iliev 1162 </p>
8249     <p>Possible Answers:
8250     </p>
8251     <p>
8252     </p>
8253     <blockquote class="text">
8254     <p>The current number of instruments
8255     in the specified directory.
8256     </p>
8257     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8258     </p>
8259     <blockquote class="text">
8260     <p>if the given directory does not exist.
8261     </p>
8262     </blockquote>
8263    
8264    
8265     </blockquote><p>
8266    
8267     </p>
8268     <p>Example:
8269     </p>
8270     <p>
8271     </p>
8272     <blockquote class="text">
8273     <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8274     </p>
8275     <p>S: "2"
8276     </p>
8277     </blockquote><p>
8278    
8279     </p>
8280     <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8281     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8282 iliev 1189 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8283 iliev 1162 Listing all instruments in specific directory</h3>
8284    
8285     <p>The front-end can retrieve the current list of instruments
8286     in specific directory by sending the following command:
8287     </p>
8288     <p>
8289     </p>
8290     <blockquote class="text">
8291 iliev 1189 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8292 iliev 1162 </p>
8293     </blockquote><p>
8294    
8295     </p>
8296     <p>Where &lt;dir&gt; should be replaced by the absolute path
8297 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path
8298     names of all instruments, including those located in subdirectories
8299     of the specified directory, will be returned.
8300 iliev 1162 </p>
8301     <p>Possible Answers:
8302     </p>
8303     <p>
8304     </p>
8305     <blockquote class="text">
8306     <p>A comma separated list of all instruments
8307     (encapsulated into apostrophes) in the specified directory.
8308     </p>
8309     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8310     </p>
8311     <blockquote class="text">
8312     <p>if the given directory does not exist.
8313     </p>
8314     </blockquote>
8315    
8316    
8317     </blockquote><p>
8318    
8319     </p>
8320     <p>Example:
8321     </p>
8322     <p>
8323     </p>
8324     <blockquote class="text">
8325     <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8326     </p>
8327     <p>S: "'Bosendorfer 290','Steinway D'"
8328     </p>
8329     </blockquote><p>
8330    
8331     </p>
8332 iliev 1189 <p>
8333     </p>
8334     <blockquote class="text">
8335     <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8336     </p>
8337     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8338     </p>
8339     </blockquote><p>
8340    
8341     </p>
8342 iliev 1162 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8343     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8344 iliev 1189 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8345 iliev 1162 Getting instrument information</h3>
8346    
8347     <p>The front-end can ask for the current settings of an
8348     instrument by sending the following command:
8349     </p>
8350     <p>
8351     </p>
8352     <blockquote class="text">
8353     <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8354     </p>
8355     </blockquote><p>
8356    
8357     </p>
8358     <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8359     name of the instrument the front-end is interested in.
8360     </p>
8361     <p>Possible Answers:
8362     </p>
8363     <p>
8364     </p>
8365     <blockquote class="text">
8366     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8367     Each answer line begins with the settings category name
8368     followed by a colon and then a space character &lt;SP&gt; and finally
8369     the info character string to that setting category. At the
8370     moment the following categories are defined:
8371     </p>
8372     <p>
8373     </p>
8374     <blockquote class="text">
8375     <p>INSTRUMENT_FILE -
8376     </p>
8377     <blockquote class="text">
8378     <p>File name of the instrument.
8379 schoenebeck 1363 Note that the character string may contain
8380     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8381 iliev 1162 </p>
8382     </blockquote>
8383    
8384    
8385     <p>INSTRUMENT_NR -
8386     </p>
8387     <blockquote class="text">
8388     <p>Index of the instrument within the file.
8389     </p>
8390     </blockquote>
8391    
8392    
8393     <p>FORMAT_FAMILY -
8394     </p>
8395     <blockquote class="text">
8396     <p>The format family of the instrument.
8397     </p>
8398     </blockquote>
8399    
8400    
8401     <p>FORMAT_VERSION -
8402     </p>
8403     <blockquote class="text">
8404     <p>The format version of the instrument.
8405     </p>
8406     </blockquote>
8407    
8408    
8409     <p>SIZE -
8410     </p>
8411     <blockquote class="text">
8412     <p>The size of the instrument in bytes.
8413     </p>
8414     </blockquote>
8415    
8416    
8417     <p>CREATED -
8418     </p>
8419     <blockquote class="text">
8420     <p>The date and time when the instrument is added
8421     in the instruments database, represented in
8422     "YYYY-MM-DD HH:MM:SS" format
8423     </p>
8424     </blockquote>
8425    
8426    
8427     <p>MODIFIED -
8428     </p>
8429     <blockquote class="text">
8430     <p>The date and time of the last modification of the
8431     instrument's database settings, represented in
8432     "YYYY-MM-DD HH:MM:SS" format
8433     </p>
8434     </blockquote>
8435    
8436    
8437     <p>DESCRIPTION -
8438     </p>
8439     <blockquote class="text">
8440 schoenebeck 1363 <p>A brief description of the instrument.
8441     Note that the character string may contain
8442     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8443 iliev 1162 </p>
8444     </blockquote>
8445    
8446    
8447     <p>IS_DRUM -
8448     </p>
8449     <blockquote class="text">
8450     <p>either true or false, determines whether the
8451     instrument is a drumkit or a chromatic instrument
8452     </p>
8453     </blockquote>
8454    
8455    
8456     <p>PRODUCT -
8457     </p>
8458     <blockquote class="text">
8459 schoenebeck 1363 <p>The product title of the instrument.
8460     Note that the character string may contain
8461     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8462 iliev 1162 </p>
8463     </blockquote>
8464    
8465    
8466     <p>ARTISTS -
8467     </p>
8468     <blockquote class="text">
8469 schoenebeck 1363 <p>Lists the artist names.
8470     Note that the character string may contain
8471     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8472 iliev 1162 </p>
8473     </blockquote>
8474    
8475    
8476     <p>KEYWORDS -
8477     </p>
8478     <blockquote class="text">
8479     <p>Provides a list of keywords that refer to the instrument.
8480     Keywords are separated with semicolon and blank.
8481 schoenebeck 1363 Note that the character string may contain
8482     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8483 iliev 1162 </p>
8484     </blockquote>
8485    
8486    
8487     </blockquote>
8488    
8489    
8490     </blockquote><p>
8491    
8492     </p>
8493     <p>The mentioned fields above don't have to be in particular order.
8494     </p>
8495     <p>Example:
8496     </p>
8497     <p>
8498     </p>
8499     <blockquote class="text">
8500     <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
8501     </p>
8502     <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
8503     </p>
8504     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8505     </p>
8506     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
8507     </p>
8508     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
8509     </p>
8510     <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
8511     </p>
8512     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8513     </p>
8514     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8515     </p>
8516     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
8517     </p>
8518     <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
8519     </p>
8520     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
8521     </p>
8522     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
8523     </p>
8524     <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
8525     </p>
8526     <p>&nbsp;&nbsp;&nbsp;"."
8527     </p>
8528     </blockquote><p>
8529    
8530     </p>
8531     <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
8532     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8533 iliev 1189 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
8534 iliev 1162 Renaming an instrument</h3>
8535    
8536     <p>The front-end can alter the name of a specific
8537     instrument by sending the following command:
8538     </p>
8539     <p>
8540     </p>
8541     <blockquote class="text">
8542     <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
8543     </p>
8544     </blockquote><p>
8545    
8546     </p>
8547     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8548     &lt;name&gt; is the new name for that instrument.
8549     </p>
8550     <p>Possible Answers:
8551     </p>
8552     <p>
8553     </p>
8554     <blockquote class="text">
8555     <p>"OK" -
8556     </p>
8557     <blockquote class="text">
8558     <p>on success
8559     </p>
8560     </blockquote>
8561    
8562    
8563     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8564     </p>
8565     <blockquote class="text">
8566     <p>in case the given instrument does not exists,
8567     or if an instrument with name equal to the new
8568     name already exists.
8569     </p>
8570     </blockquote>
8571    
8572    
8573     </blockquote><p>
8574    
8575     </p>
8576     <p>Example:
8577     </p>
8578     <p>
8579     </p>
8580     <blockquote class="text">
8581     <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
8582     </p>
8583     <p>S: "OK"
8584     </p>
8585     </blockquote><p>
8586    
8587     </p>
8588     <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
8589     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8590 iliev 1189 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
8591 iliev 1162 Moving an instrument</h3>
8592    
8593     <p>The front-end can move a specific instrument to another directory by
8594     sending the following command:
8595     </p>
8596     <p>
8597     </p>
8598     <blockquote class="text">
8599     <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8600     </p>
8601     </blockquote><p>
8602    
8603     </p>
8604     <p>Where &lt;instr&gt; is the absolute path name of the instrument
8605     to move and &lt;dst&gt; is the directory where the instrument will
8606     be moved to.
8607     </p>
8608     <p>Possible Answers:
8609     </p>
8610     <p>
8611     </p>
8612     <blockquote class="text">
8613     <p>"OK" -
8614     </p>
8615     <blockquote class="text">
8616     <p>on success
8617     </p>
8618     </blockquote>
8619    
8620    
8621     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8622     </p>
8623     <blockquote class="text">
8624     <p>in case the given instrument does not exists,
8625     or if an instrument with name equal to the name of the
8626     specified instrument already exists in the destination
8627     directory.
8628     </p>
8629     </blockquote>
8630    
8631    
8632     </blockquote><p>
8633    
8634     </p>
8635     <p>Example:
8636     </p>
8637     <p>
8638     </p>
8639     <blockquote class="text">
8640     <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
8641     </p>
8642     <p>S: "OK"
8643     </p>
8644     </blockquote><p>
8645    
8646     </p>
8647 iliev 1189 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
8648     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8649     <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
8650     Copying instruments</h3>
8651    
8652     <p>The front-end can copy a specific instrument to another directory by
8653     sending the following command:
8654     </p>
8655     <p>
8656     </p>
8657     <blockquote class="text">
8658     <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8659     </p>
8660     </blockquote><p>
8661    
8662     </p>
8663     <p>Where &lt;instr&gt; is the absolute path name of the instrument
8664     to copy and &lt;dst&gt; is the directory where the instrument will
8665     be copied to.
8666     </p>
8667     <p>Possible Answers:
8668     </p>
8669     <p>
8670     </p>
8671     <blockquote class="text">
8672     <p>"OK" -
8673     </p>
8674     <blockquote class="text">
8675     <p>on success
8676     </p>
8677     </blockquote>
8678    
8679    
8680     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8681     </p>
8682     <blockquote class="text">
8683     <p>in case the given instrument does not exists,
8684     or if an instrument with name equal to the name of the
8685     specified instrument already exists in the destination
8686     directory.
8687     </p>
8688     </blockquote>
8689    
8690    
8691     </blockquote><p>
8692    
8693     </p>
8694     <p>Example:
8695     </p>
8696     <p>
8697     </p>
8698     <blockquote class="text">
8699     <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
8700     </p>
8701     <p>S: "OK"
8702     </p>
8703     </blockquote><p>
8704    
8705     </p>
8706 iliev 1162 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
8707     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8708 iliev 1189 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
8709 iliev 1162 Changing the description of instrument</h3>
8710    
8711     <p>The front-end can alter the description of a specific
8712     instrument by sending the following command:
8713     </p>
8714     <p>
8715     </p>
8716     <blockquote class="text">
8717     <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
8718     </p>
8719     </blockquote><p>
8720    
8721     </p>
8722     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8723 schoenebeck 1572 &lt;desc&gt; is the new description for the instrument
8724 schoenebeck 1363 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8725     "<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>").
8726 iliev 1162 </p>
8727     <p>Possible Answers:
8728     </p>
8729     <p>
8730     </p>
8731     <blockquote class="text">
8732     <p>"OK" -
8733     </p>
8734     <blockquote class="text">
8735     <p>on success
8736     </p>
8737     </blockquote>
8738    
8739    
8740     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8741     </p>
8742     <blockquote class="text">
8743     <p>in case the given instrument does not exists.
8744     </p>
8745     </blockquote>
8746    
8747    
8748     </blockquote><p>
8749    
8750     </p>
8751     <p>Example:
8752     </p>
8753     <p>
8754     </p>
8755     <blockquote class="text">
8756     <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
8757     </p>
8758     <p>S: "OK"
8759     </p>
8760     </blockquote><p>
8761    
8762     </p>
8763 iliev 1189 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
8764     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8765     <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
8766     Finding instruments</h3>
8767    
8768     <p>The front-end can search for instruments
8769     in specific directory by sending the following command:
8770     </p>
8771     <p>
8772     </p>
8773     <blockquote class="text">
8774     <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8775     </p>
8776     </blockquote><p>
8777    
8778     </p>
8779     <p>Where &lt;dir&gt; should be replaced by the absolute path
8780     name of the directory to search in. If NON_RECURSIVE is specified, the
8781     directories located in subdirectories of the specified directory will not
8782     be searched. &lt;criteria-list&gt; is a list of search criterias
8783     in form of "key1=val1 key2=val2 ...". The following criterias are
8784     allowed:
8785     </p>
8786     <p>
8787    
8788     <p>NAME='&lt;search-string&gt;'
8789     </p>
8790     <blockquote class="text">
8791     <p>Restricts the search to instruments, which names
8792 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
8793     supporting escape sequences as described in chapter
8794     "<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>").
8795 iliev 1189 </p>
8796     </blockquote><p>
8797    
8798     </p>
8799    
8800    
8801     <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
8802     </p>
8803     <blockquote class="text">
8804 schoenebeck 1251 <p>Restricts the search to instruments, which
8805 iliev 1189 size is in the specified range. If &lt;min&gt; is omitted,
8806     the search results are restricted to instruments with size less then
8807     or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
8808     search is restricted to instruments with size greater then
8809     or equal to &lt;min&gt;.
8810     </p>
8811     </blockquote><p>
8812    
8813     </p>
8814    
8815    
8816     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8817     </p>
8818     <blockquote class="text">
8819     <p>Restricts the search to instruments, which creation
8820     date satisfies the specified period, where &lt;date-after&gt;
8821     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8822     If &lt;date-after&gt; is omitted the search is restricted to
8823     instruments created before &lt;date-before&gt;. If
8824     &lt;date-before&gt; is omitted, the search is restricted
8825     to instruments created after &lt;date-after&gt;.
8826     </p>
8827     </blockquote><p>
8828    
8829     </p>
8830    
8831    
8832     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8833     </p>
8834     <blockquote class="text">
8835     <p>Restricts the search to instruments, which
8836     date of last modification satisfies the specified period, where
8837     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8838     format. If &lt;date-after&gt; is omitted the search is restricted to
8839     instruments, which are last modified before &lt;date-before&gt;. If
8840     &lt;date-before&gt; is omitted, the search is restricted to instruments,
8841     which are last modified after &lt;date-after&gt;.
8842     </p>
8843     </blockquote><p>
8844    
8845     </p>
8846    
8847    
8848     <p>DESCRIPTION='&lt;search-string&gt;'
8849     </p>
8850     <blockquote class="text">
8851     <p>Restricts the search to instruments with description
8852 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8853     supporting escape sequences as described in chapter
8854     "<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>").
8855 iliev 1189 </p>
8856     </blockquote><p>
8857    
8858     </p>
8859    
8860    
8861     <p>PRODUCT='&lt;search-string&gt;'
8862     </p>
8863     <blockquote class="text">
8864     <p>Restricts the search to instruments with product info
8865 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8866     supporting escape sequences as described in chapter
8867     "<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>").
8868 iliev 1189 </p>
8869     </blockquote><p>
8870    
8871     </p>
8872    
8873    
8874     <p>ARTISTS='&lt;search-string&gt;'
8875     </p>
8876     <blockquote class="text">
8877     <p>Restricts the search to instruments with artists info
8878 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8879     supporting escape sequences as described in chapter
8880     "<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>").
8881 iliev 1189 </p>
8882     </blockquote><p>
8883    
8884     </p>
8885    
8886    
8887     <p>KEYWORDS='&lt;search-string&gt;'
8888     </p>
8889     <blockquote class="text">
8890     <p>Restricts the search to instruments with keyword list
8891 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8892     supporting escape sequences as described in chapter
8893     "<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>").
8894 iliev 1189 </p>
8895     </blockquote><p>
8896    
8897     </p>
8898    
8899    
8900     <p>IS_DRUM=true | false
8901     </p>
8902     <blockquote class="text">
8903 schoenebeck 1251 <p>Either true or false. Restricts the search to
8904 iliev 1189 drum kits or chromatic instruments.
8905     </p>
8906     </blockquote><p>
8907    
8908     </p>
8909    
8910    
8911     <p>FORMAT_FAMILIES='&lt;format-list&gt;'
8912     </p>
8913     <blockquote class="text">
8914     <p>Restricts the search to instruments of the supplied format families,
8915     where &lt;format-list&gt; is a comma separated list of format families.
8916     </p>
8917     </blockquote><p>
8918    
8919     </p>
8920    
8921    
8922     <p>Where &lt;search-string&gt; is either a regular expression, or a
8923     word list separated with spaces for OR search and with '+' for AND search.
8924     </p>
8925     <p>Possible Answers:
8926     </p>
8927     <p>
8928     </p>
8929     <blockquote class="text">
8930     <p>A comma separated list with the absolute path names (encapsulated into
8931     apostrophes) of all instruments in the specified directory that satisfy
8932     the supplied search criterias.
8933     </p>
8934     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8935     </p>
8936     <blockquote class="text">
8937     <p>if the given directory does not exist.
8938     </p>
8939     </blockquote>
8940    
8941    
8942     </blockquote><p>
8943    
8944     </p>
8945     <p>Example:
8946     </p>
8947     <p>
8948     </p>
8949     <blockquote class="text">
8950     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
8951     </p>
8952     <p>S: "'/Piano Collection/Bosendorfer 290'"
8953     </p>
8954     </blockquote><p>
8955    
8956     </p>
8957     <p>
8958     </p>
8959     <blockquote class="text">
8960     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
8961     </p>
8962     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
8963     </p>
8964     </blockquote><p>
8965    
8966     </p>
8967 iliev 1201 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
8968     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8969     <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
8970     Getting job status information</h3>
8971    
8972     <p>The front-end can ask for the current status of a
8973     particular database instruments job by sending the following command:
8974     </p>
8975     <p>
8976     </p>
8977     <blockquote class="text">
8978     <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
8979     </p>
8980     </blockquote><p>
8981    
8982     </p>
8983     <p>Where &lt;job-id&gt; should be replaced by the numerical ID
8984     of the job the front-end is interested in.
8985     </p>
8986     <p>Possible Answers:
8987     </p>
8988     <p>
8989     </p>
8990     <blockquote class="text">
8991     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8992     Each answer line begins with the settings category name
8993     followed by a colon and then a space character &lt;SP&gt; and finally
8994     the info character string to that setting category. At the
8995     moment the following categories are defined:
8996     </p>
8997     <p>
8998     </p>
8999     <blockquote class="text">
9000     <p>FILES_TOTAL -
9001     </p>
9002     <blockquote class="text">
9003     <p>The total number of files scheduled for scanning
9004     </p>
9005     </blockquote>
9006    
9007    
9008     <p>FILES_SCANNED -
9009     </p>
9010     <blockquote class="text">
9011     <p>The current number of scanned files
9012     </p>
9013     </blockquote>
9014    
9015    
9016     <p>SCANNING -
9017     </p>
9018     <blockquote class="text">
9019     <p>The absolute path name of the file which is currently
9020     being scanned
9021     </p>
9022     </blockquote>
9023    
9024    
9025     <p>STATUS -
9026     </p>
9027     <blockquote class="text">
9028     <p>An integer value between 0 and 100 indicating the
9029     scanning progress percentage of the file which is
9030     currently being scanned
9031     </p>
9032     </blockquote>
9033    
9034    
9035     </blockquote>
9036    
9037    
9038     </blockquote><p>
9039    
9040     </p>
9041     <p>The mentioned fields above don't have to be in particular order.
9042     </p>
9043     <p>Example:
9044     </p>
9045     <p>
9046     </p>
9047     <blockquote class="text">
9048     <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9049     </p>
9050     <p>S: "FILES_TOTAL: 12"
9051     </p>
9052     <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9053     </p>
9054     <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9055     </p>
9056     <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9057     </p>
9058     <p>&nbsp;&nbsp;&nbsp;"."
9059     </p>
9060     </blockquote><p>
9061    
9062     </p>
9063 schoenebeck 1363 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9064     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9065     <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9066     Formatting the instruments database</h3>
9067    
9068     <p>The front-end can remove all instruments and directories and re-create
9069     the instruments database structure (e.g., in case of a database corruption)
9070     by sending the following command:
9071     </p>
9072     <p>
9073     </p>
9074     <blockquote class="text">
9075     <p>FORMAT INSTRUMENTS_DB
9076     </p>
9077     </blockquote><p>
9078    
9079     </p>
9080     <p>Possible Answers:
9081     </p>
9082     <p>
9083     </p>
9084     <blockquote class="text">
9085     <p>"OK" -
9086     </p>
9087     <blockquote class="text">
9088     <p>on success
9089     </p>
9090     </blockquote>
9091    
9092    
9093     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9094     </p>
9095     <blockquote class="text">
9096     <p>If the formatting of the instruments database
9097     failed.
9098     </p>
9099     </blockquote>
9100    
9101    
9102     </blockquote><p>
9103    
9104     </p>
9105     <a name="editing_instruments"></a><br /><hr />
9106     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9107     <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9108     Editing Instruments</h3>
9109    
9110     <p>The sampler allows to edit instruments while playing with the
9111     sampler by spawning an external (3rd party) instrument editor
9112     application for a given instrument. The 3rd party instrument
9113     editor applications have to place a respective plugin DLL file
9114     into the sampler's plugins directory. The sampler will
9115     automatically try to load all plugin DLLs in that directory on
9116     startup and only on startup!
9117     </p>
9118     <p>At the moment there is only one command for this feature set,
9119     but this will most probably change in future.
9120     </p>
9121     <a name="EDIT INSTRUMENT"></a><br /><hr />
9122     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9123     <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9124     Opening an appropriate instrument editor application</h3>
9125    
9126     <p>The front-end can request to open an appropriate instrument
9127     editor application by sending the following command:
9128     </p>
9129     <p>
9130     </p>
9131     <blockquote class="text">
9132 schoenebeck 1430 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9133 schoenebeck 1363 </p>
9134     </blockquote><p>
9135    
9136     </p>
9137     <p>Where &lt;sampler-channel&gt; should be replaced by the
9138     number of the sampler channel as given by the
9139     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9140     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9141     command.
9142     </p>
9143     <p>The sampler will try to ask all registered instrument
9144     editors (or to be more specific: their sampler plugins)
9145     whether they are capable to handle the instrument on the
9146     given sampler channel. The sampler will simply use the first
9147     instrument editor application which replied with a positive
9148     answer and spawn that instrument editor application within
9149     the sampler's process and provide that application access
9150     to the instrument's data structures, so both applications
9151     can share and access the same instruments data at the same
9152     time, thus allowing to immediately hear changes with the
9153     sampler made by the instrument editor.
9154     </p>
9155     <p>Note: consequently instrument editors are always spawned
9156     locally on the same machine where the sampler is running
9157     on!
9158     </p>
9159     <p>Possible Answers:
9160     </p>
9161     <p>
9162     </p>
9163     <blockquote class="text">
9164     <p>"OK" -
9165     </p>
9166     <blockquote class="text">
9167     <p>when an appropriate instrument editor was
9168     launched
9169     </p>
9170     </blockquote>
9171    
9172    
9173     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9174     </p>
9175     <blockquote class="text">
9176     <p>when an appropriate instrument editor was
9177     launched, but there are noteworthy issues
9178     </p>
9179     </blockquote>
9180    
9181    
9182     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9183     </p>
9184     <blockquote class="text">
9185     <p>when an appropriate instrument editor
9186     could not be launched
9187     </p>
9188     </blockquote>
9189    
9190    
9191     </blockquote><p>
9192    
9193     </p>
9194     <p>Examples:
9195     </p>
9196     <p>
9197     </p>
9198     <blockquote class="text">
9199 schoenebeck 1430 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9200 schoenebeck 1363 </p>
9201     <p>S: "OK"
9202     </p>
9203     </blockquote><p>
9204    
9205     </p>
9206 schoenebeck 1572 <a name="file_management"></a><br /><hr />
9207     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9208     <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9209     Managing Files</h3>
9210    
9211     <p>You can query detailed informations about files located
9212     at the same system where the sampler instance is running on.
9213     Using this command set allows to retrieve file informations
9214     even remotely from another machine.
9215     </p>
9216     <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9217     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9218     <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9219     Retrieving amount of instruments of a file</h3>
9220    
9221     <p>The front-end can retrieve the amount of instruments
9222     within a given instrument file by sending the
9223     following command:
9224     </p>
9225     <p>
9226     </p>
9227     <blockquote class="text">
9228     <p>GET FILE INSTRUMENTS &lt;filename&gt;
9229     </p>
9230     </blockquote><p>
9231    
9232     </p>
9233     <p>Where &lt;filename&gt; is the name of the instrument
9234     file (encapsulated into apostrophes, supporting escape
9235     sequences as described in chapter
9236     "<a class='info' href='#character_set'>Character Set and Escape
9237     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9238     </p>
9239     <p>The sampler will try to ask all sampler engines,
9240     whether they support the given file and ask the first
9241     engine with a positive answer for the amount of
9242     instruments.
9243     </p>
9244     <p>Possible Answers:
9245     </p>
9246     <p>
9247     </p>
9248     <blockquote class="text">
9249     <p>On success, the sampler will answer by
9250     returning the amount of instruments.
9251    
9252     </p>
9253     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9254     </p>
9255     <blockquote class="text">
9256     <p>if the file could not be handled
9257     </p>
9258     </blockquote>
9259    
9260    
9261     </blockquote><p>
9262    
9263     </p>
9264     <p>Examples:
9265     </p>
9266     <p>
9267     </p>
9268     <blockquote class="text">
9269     <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9270     </p>
9271     <p>S: "10"
9272     </p>
9273     </blockquote><p>
9274    
9275     </p>
9276     <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9277     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9278     <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9279     Retrieving all instruments of a file</h3>
9280    
9281     <p>The front-end can retrieve a list of all instruments
9282     within a given instrument file by sending the
9283     following command:
9284     </p>
9285     <p>
9286     </p>
9287     <blockquote class="text">
9288     <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9289     </p>
9290     </blockquote><p>
9291    
9292     </p>
9293     <p>Where &lt;filename&gt; is the name of the instrument
9294     file (encapsulated into apostrophes, supporting escape
9295     sequences as described in chapter
9296     "<a class='info' href='#character_set'>Character Set and Escape
9297     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9298     </p>
9299     <p>The sampler will try to ask all sampler engines,
9300     whether they support the given file and ask the first
9301     engine with a positive answer for a list of IDs for the
9302     instruments in the given file.
9303     </p>
9304     <p>Possible Answers:
9305     </p>
9306     <p>
9307     </p>
9308     <blockquote class="text">
9309     <p>On success, the sampler will answer by
9310     returning a comma separated list of
9311     instrument IDs.
9312    
9313     </p>
9314     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9315     </p>
9316     <blockquote class="text">
9317     <p>if the file could not be handled
9318     </p>
9319     </blockquote>
9320    
9321    
9322     </blockquote><p>
9323    
9324     </p>
9325     <p>Examples:
9326     </p>
9327     <p>
9328     </p>
9329     <blockquote class="text">
9330     <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9331     </p>
9332     <p>S: "0,1,2,3,4,5,6,7,8,9"
9333     </p>
9334     </blockquote><p>
9335    
9336     </p>
9337     <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9338     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9339     <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9340     Retrieving informations about one instrument in a file</h3>
9341    
9342     <p>The front-end can retrieve detailed informations
9343     about a specific instrument within a given instrument
9344     file by sending the following command:
9345     </p>
9346     <p>
9347     </p>
9348     <blockquote class="text">
9349     <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9350     &lt;instr-id&gt;
9351     </p>
9352     </blockquote><p>
9353    
9354     </p>
9355     <p>Where &lt;filename&gt; is the name of the instrument
9356     file (encapsulated into apostrophes, supporting escape
9357     sequences as described in chapter
9358     "<a class='info' href='#character_set'>Character Set and Escape
9359     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
9360     instrument ID as returned by the
9361     <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.
9362     </p>
9363     <p>The sampler will try to ask all sampler engines,
9364     whether they support the given file and ask the first
9365     engine with a positive answer for informations about the
9366     specific instrument in the given file.
9367     </p>
9368     <p>Possible Answers:
9369     </p>
9370     <p>
9371     </p>
9372     <blockquote class="text">
9373     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9374     Each answer line begins with the settings category name
9375     followed by a colon and then a space character &lt;SP&gt; and finally
9376     the info character string to that setting category. At the
9377     moment the following categories are defined:
9378     </p>
9379     <p>
9380     </p>
9381     <blockquote class="text">
9382     <p>NAME -
9383     </p>
9384     <blockquote class="text">
9385     <p>name of the instrument as
9386     stored in the instrument file
9387     </p>
9388     </blockquote>
9389    
9390    
9391     <p>FORMAT_FAMILY -
9392     </p>
9393     <blockquote class="text">
9394     <p>name of the sampler format
9395     of the given instrument
9396     </p>
9397     </blockquote>
9398    
9399    
9400     <p>FORMAT_VERSION -
9401     </p>
9402     <blockquote class="text">
9403     <p>version of the sampler format
9404     the instrumen is stored as
9405     </p>
9406     </blockquote>
9407    
9408    
9409     <p>PRODUCT -
9410     </p>
9411     <blockquote class="text">
9412     <p>official product name of the
9413     instrument as stored in the file
9414    
9415     </p>
9416     </blockquote>
9417    
9418    
9419     <p>ARTISTS -
9420     </p>
9421     <blockquote class="text">
9422     <p>artists / sample library
9423     vendor of the instrument
9424     </p>
9425     </blockquote>
9426    
9427    
9428     </blockquote>
9429    
9430    
9431     </blockquote><p>
9432    
9433     </p>
9434     <p>The mentioned fields above don't have to be in particular order.
9435     </p>
9436     <p>Example:
9437     </p>
9438     <p>
9439     </p>
9440     <blockquote class="text">
9441     <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
9442     </p>
9443     <p>S: "NAME: Lunatic Loops"
9444     </p>
9445     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9446     </p>
9447     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
9448     </p>
9449     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
9450     </p>
9451     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
9452     </p>
9453     <p>&nbsp;&nbsp;&nbsp;"."
9454     </p>
9455     </blockquote><p>
9456    
9457     </p>
9458 senoner 542 <a name="command_syntax"></a><br /><hr />
9459 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9460     <a name="rfc.section.7"></a><h3>7.&nbsp;
9461     Command Syntax</h3>
9462 senoner 542
9463 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>
9464     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>)
9465 schoenebeck 575 where applicable.
9466 schoenebeck 940
9467 senoner 542 </p>
9468 schoenebeck 575 <p>input =
9469     </p>
9470     <blockquote class="text">
9471     <p>line LF
9472 schoenebeck 940
9473 schoenebeck 575 </p>
9474     <p>/ line CR LF
9475 schoenebeck 940
9476 schoenebeck 575 </p>
9477 schoenebeck 708 </blockquote><p>
9478 schoenebeck 575
9479 schoenebeck 708 </p>
9480 schoenebeck 575 <p>line =
9481     </p>
9482     <blockquote class="text">
9483     <p>/* epsilon (empty line ignored) */
9484 schoenebeck 940
9485 schoenebeck 575 </p>
9486     <p>/ comment
9487 schoenebeck 940
9488 schoenebeck 575 </p>
9489     <p>/ command
9490 schoenebeck 940
9491 schoenebeck 575 </p>
9492     <p>/ error
9493 schoenebeck 940
9494 schoenebeck 575 </p>
9495 schoenebeck 708 </blockquote><p>
9496 schoenebeck 575
9497 schoenebeck 708 </p>
9498 schoenebeck 575 <p>comment =
9499     </p>
9500     <blockquote class="text">
9501     <p>'#'
9502 schoenebeck 940
9503 schoenebeck 575 </p>
9504     <p>/ comment '#'
9505 schoenebeck 940
9506 schoenebeck 575 </p>
9507     <p>/ comment SP
9508 schoenebeck 940
9509 schoenebeck 575 </p>
9510     <p>/ comment number
9511 schoenebeck 940
9512 schoenebeck 575 </p>
9513     <p>/ comment string
9514 schoenebeck 940
9515 schoenebeck 575 </p>
9516 schoenebeck 708 </blockquote><p>
9517 schoenebeck 575
9518 schoenebeck 708 </p>
9519 schoenebeck 575 <p>command =
9520     </p>
9521     <blockquote class="text">
9522 schoenebeck 974 <p>ADD SP add_instruction
9523 schoenebeck 940
9524 schoenebeck 575 </p>
9525 schoenebeck 945 <p>/ MAP SP map_instruction
9526    
9527     </p>
9528     <p>/ UNMAP SP unmap_instruction
9529    
9530     </p>
9531 schoenebeck 575 <p>/ GET SP get_instruction
9532 schoenebeck 940
9533 schoenebeck 575 </p>
9534     <p>/ CREATE SP create_instruction
9535 schoenebeck 940
9536 schoenebeck 575 </p>
9537     <p>/ DESTROY SP destroy_instruction
9538 schoenebeck 940
9539 schoenebeck 575 </p>
9540     <p>/ LIST SP list_instruction
9541 schoenebeck 940
9542 schoenebeck 575 </p>
9543     <p>/ LOAD SP load_instruction
9544 schoenebeck 940
9545 schoenebeck 575 </p>
9546 schoenebeck 945 <p>/ REMOVE SP remove_instruction
9547 schoenebeck 940
9548 schoenebeck 575 </p>
9549     <p>/ SET SP set_instruction
9550 schoenebeck 940
9551 schoenebeck 575 </p>
9552     <p>/ SUBSCRIBE SP subscribe_event
9553 schoenebeck 940
9554 schoenebeck 575 </p>
9555     <p>/ UNSUBSCRIBE SP unsubscribe_event
9556 schoenebeck 940
9557 schoenebeck 575 </p>
9558 schoenebeck 945 <p>/ RESET SP reset_instruction
9559 schoenebeck 940
9560 schoenebeck 575 </p>
9561 schoenebeck 945 <p>/ CLEAR SP clear_instruction
9562    
9563     </p>
9564 iliev 1189 <p>/ FIND SP find_instruction
9565    
9566     </p>
9567 iliev 1162 <p>/ MOVE SP move_instruction
9568    
9569     </p>
9570 iliev 1189 <p>/ COPY SP copy_instruction
9571    
9572     </p>
9573 schoenebeck 1251 <p>/ EDIT SP edit_instruction
9574    
9575     </p>
9576 schoenebeck 1363 <p>/ FORMAT SP format_instruction
9577    
9578     </p>
9579 schoenebeck 575 <p>/ RESET
9580 schoenebeck 940
9581 schoenebeck 575 </p>
9582     <p>/ QUIT
9583 schoenebeck 940
9584 schoenebeck 575 </p>
9585 schoenebeck 708 </blockquote><p>
9586 schoenebeck 575
9587 schoenebeck 708 </p>
9588 schoenebeck 974 <p>add_instruction =
9589     </p>
9590     <blockquote class="text">
9591     <p>CHANNEL
9592    
9593     </p>
9594 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9595 iliev 1162
9596     </p>
9597 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
9598 iliev 1162
9599     </p>
9600 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
9601 iliev 1162
9602     </p>
9603 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
9604 iliev 1201
9605     </p>
9606 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
9607 iliev 1201
9608     </p>
9609 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename
9610 iliev 1162
9611     </p>
9612 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
9613 iliev 1162
9614     </p>
9615 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP
9616    
9617     </p>
9618     <p>/ MIDI_INSTRUMENT_MAP SP map_name
9619    
9620     </p>
9621     </blockquote><p>
9622    
9623     </p>
9624 schoenebeck 575 <p>subscribe_event =
9625     </p>
9626     <blockquote class="text">
9627 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
9628 schoenebeck 940
9629 schoenebeck 575 </p>
9630 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9631    
9632     </p>
9633     <p>/ MIDI_INPUT_DEVICE_COUNT
9634    
9635     </p>
9636     <p>/ MIDI_INPUT_DEVICE_INFO
9637    
9638     </p>
9639     <p>/ CHANNEL_COUNT
9640    
9641     </p>
9642 schoenebeck 1685 <p>/ CHANNEL_MIDI
9643    
9644     </p>
9645 schoenebeck 575 <p>/ VOICE_COUNT
9646 schoenebeck 940
9647 schoenebeck 575 </p>
9648     <p>/ STREAM_COUNT
9649 schoenebeck 940
9650 schoenebeck 575 </p>
9651     <p>/ BUFFER_FILL
9652 schoenebeck 940
9653 schoenebeck 575 </p>
9654     <p>/ CHANNEL_INFO
9655 schoenebeck 940
9656 schoenebeck 575 </p>
9657 iliev 1110 <p>/ FX_SEND_COUNT
9658    
9659     </p>
9660     <p>/ FX_SEND_INFO
9661    
9662     </p>
9663 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9664    
9665     </p>
9666     <p>/ MIDI_INSTRUMENT_MAP_INFO
9667    
9668     </p>
9669     <p>/ MIDI_INSTRUMENT_COUNT
9670    
9671     </p>
9672     <p>/ MIDI_INSTRUMENT_INFO
9673    
9674     </p>
9675 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9676    
9677     </p>
9678     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9679    
9680     </p>
9681     <p>/ DB_INSTRUMENT_COUNT
9682    
9683     </p>
9684     <p>/ DB_INSTRUMENT_INFO
9685    
9686     </p>
9687 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
9688    
9689     </p>
9690 schoenebeck 575 <p>/ MISCELLANEOUS
9691 schoenebeck 940
9692 schoenebeck 575 </p>
9693 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
9694    
9695     </p>
9696 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
9697    
9698     </p>
9699 iliev 1110 <p>/ GLOBAL_INFO
9700    
9701     </p>
9702 schoenebeck 708 </blockquote><p>
9703 schoenebeck 575
9704 schoenebeck 708 </p>
9705 schoenebeck 575 <p>unsubscribe_event =
9706     </p>
9707     <blockquote class="text">
9708 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
9709 schoenebeck 940
9710 schoenebeck 575 </p>
9711 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9712    
9713     </p>
9714     <p>/ MIDI_INPUT_DEVICE_COUNT
9715    
9716     </p>
9717     <p>/ MIDI_INPUT_DEVICE_INFO
9718    
9719     </p>
9720     <p>/ CHANNEL_COUNT
9721    
9722     </p>
9723 schoenebeck 1685 <p>/ CHANNEL_MIDI
9724    
9725     </p>
9726 schoenebeck 575 <p>/ VOICE_COUNT
9727 schoenebeck 940
9728 schoenebeck 575 </p>
9729     <p>/ STREAM_COUNT
9730 schoenebeck 940
9731 schoenebeck 575 </p>
9732     <p>/ BUFFER_FILL
9733 schoenebeck 940
9734 schoenebeck 575 </p>
9735     <p>/ CHANNEL_INFO
9736 schoenebeck 940
9737 schoenebeck 575 </p>
9738 iliev 1110 <p>/ FX_SEND_COUNT
9739    
9740     </p>
9741     <p>/ FX_SEND_INFO
9742    
9743     </p>
9744 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9745    
9746     </p>
9747     <p>/ MIDI_INSTRUMENT_MAP_INFO
9748    
9749     </p>
9750     <p>/ MIDI_INSTRUMENT_COUNT
9751    
9752     </p>
9753     <p>/ MIDI_INSTRUMENT_INFO
9754    
9755     </p>
9756 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9757    
9758     </p>
9759     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9760    
9761     </p>
9762     <p>/ DB_INSTRUMENT_COUNT
9763    
9764     </p>
9765     <p>/ DB_INSTRUMENT_INFO
9766    
9767     </p>
9768 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
9769    
9770     </p>
9771 schoenebeck 575 <p>/ MISCELLANEOUS
9772 schoenebeck 940
9773 schoenebeck 575 </p>
9774 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
9775    
9776     </p>
9777 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
9778    
9779     </p>
9780 iliev 1110 <p>/ GLOBAL_INFO
9781    
9782     </p>
9783 schoenebeck 708 </blockquote><p>
9784 schoenebeck 575
9785 schoenebeck 708 </p>
9786 schoenebeck 945 <p>map_instruction =
9787     </p>
9788     <blockquote class="text">
9789 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
9790 schoenebeck 945
9791     </p>
9792 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
9793 schoenebeck 945
9794     </p>
9795 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
9796 schoenebeck 945
9797     </p>
9798 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
9799 schoenebeck 945
9800     </p>
9801     </blockquote><p>
9802    
9803     </p>
9804     <p>unmap_instruction =
9805     </p>
9806     <blockquote class="text">
9807 schoenebeck 974 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
9808 schoenebeck 945
9809     </p>
9810     </blockquote><p>
9811    
9812     </p>
9813     <p>remove_instruction =
9814     </p>
9815     <blockquote class="text">
9816     <p>CHANNEL SP sampler_channel
9817    
9818     </p>
9819 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
9820    
9821     </p>
9822     <p>/ MIDI_INSTRUMENT_MAP SP ALL
9823    
9824     </p>
9825 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
9826 iliev 1162
9827     </p>
9828 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9829 iliev 1162
9830     </p>
9831 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path
9832 iliev 1162
9833     </p>
9834 schoenebeck 945 </blockquote><p>
9835    
9836     </p>
9837 schoenebeck 575 <p>get_instruction =
9838     </p>
9839     <blockquote class="text">
9840     <p>AVAILABLE_ENGINES
9841 schoenebeck 940
9842 schoenebeck 575 </p>
9843     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
9844 schoenebeck 940
9845 schoenebeck 575 </p>
9846     <p>/ MIDI_INPUT_DRIVER SP INFO SP string
9847 schoenebeck 940
9848 schoenebeck 575 </p>
9849     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
9850 schoenebeck 940
9851 schoenebeck 575 </p>
9852     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9853 schoenebeck 940
9854 schoenebeck 575 </p>
9855     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
9856 schoenebeck 940
9857 schoenebeck 575 </p>
9858     <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
9859 schoenebeck 940
9860 schoenebeck 575 </p>
9861     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
9862 schoenebeck 940
9863 schoenebeck 575 </p>
9864     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9865 schoenebeck 940
9866 schoenebeck 575 </p>
9867     <p>/ AUDIO_OUTPUT_DEVICES
9868 schoenebeck 940
9869 schoenebeck 575 </p>
9870     <p>/ MIDI_INPUT_DEVICES
9871 schoenebeck 940
9872 schoenebeck 575 </p>
9873     <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
9874 schoenebeck 940
9875 schoenebeck 575 </p>
9876     <p>/ MIDI_INPUT_DEVICE SP INFO SP number
9877 schoenebeck 940
9878 schoenebeck 575 </p>
9879     <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
9880 schoenebeck 940
9881 schoenebeck 575 </p>
9882     <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
9883 schoenebeck 940
9884 schoenebeck 575 </p>
9885     <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
9886 schoenebeck 940
9887 schoenebeck 575 </p>
9888     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
9889 schoenebeck 940
9890 schoenebeck 575 </p>
9891     <p>/ CHANNELS
9892 schoenebeck 940
9893 schoenebeck 575 </p>
9894     <p>/ CHANNEL SP INFO SP sampler_channel
9895 schoenebeck 940
9896 schoenebeck 575 </p>
9897     <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
9898 schoenebeck 940
9899 schoenebeck 575 </p>
9900     <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
9901 schoenebeck 940
9902 schoenebeck 575 </p>
9903     <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
9904 schoenebeck 940
9905 schoenebeck 575 </p>
9906     <p>/ ENGINE SP INFO SP engine_name
9907 schoenebeck 940
9908 schoenebeck 575 </p>
9909     <p>/ SERVER SP INFO
9910 schoenebeck 940
9911 schoenebeck 575 </p>
9912 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
9913    
9914     </p>
9915 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
9916    
9917     </p>
9918     <p>/ TOTAL_VOICE_COUNT_MAX
9919    
9920     </p>
9921 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
9922 schoenebeck 945
9923     </p>
9924 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
9925 schoenebeck 945
9926     </p>
9927 schoenebeck 974 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
9928    
9929     </p>
9930     <p>/ MIDI_INSTRUMENT_MAPS
9931    
9932     </p>
9933     <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
9934    
9935     </p>
9936 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
9937    
9938     </p>
9939     <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
9940    
9941     </p>
9942 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
9943 iliev 1189
9944     </p>
9945 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
9946 iliev 1162
9947     </p>
9948 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
9949 iliev 1162
9950     </p>
9951 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
9952 iliev 1189
9953     </p>
9954 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
9955 iliev 1162
9956     </p>
9957 schoenebeck 1363 <p>/ DB_INSTRUMENT SP INFO SP db_path
9958 iliev 1162
9959     </p>
9960 iliev 1201 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
9961    
9962     </p>
9963 schoenebeck 1006 <p>/ VOLUME
9964    
9965     </p>
9966 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
9967    
9968     </p>
9969     <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
9970    
9971     </p>
9972 schoenebeck 708 </blockquote><p>
9973 schoenebeck 575
9974 schoenebeck 708 </p>
9975 schoenebeck 575 <p>set_instruction =
9976     </p>
9977     <blockquote class="text">
9978     <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9979 schoenebeck 940
9980 schoenebeck 575 </p>
9981     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
9982 schoenebeck 940
9983 schoenebeck 575 </p>
9984     <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9985 schoenebeck 940
9986 schoenebeck 575 </p>
9987 schoenebeck 1363 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
9988    
9989     </p>
9990 schoenebeck 575 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
9991 schoenebeck 940
9992 schoenebeck 575 </p>
9993     <p>/ CHANNEL SP set_chan_instruction
9994 schoenebeck 940
9995 schoenebeck 575 </p>
9996 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
9997    
9998     </p>
9999 iliev 1137 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
10000    
10001     </p>
10002 schoenebeck 1002 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
10003    
10004     </p>
10005 schoenebeck 1028 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
10006    
10007     </p>
10008     <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
10009    
10010     </p>
10011 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
10012 iliev 1162
10013     </p>
10014 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
10015 iliev 1162
10016     </p>
10017 schoenebeck 1363 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
10018 iliev 1162
10019     </p>
10020 schoenebeck 1363 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
10021 iliev 1162
10022     </p>
10023 schoenebeck 575 <p>/ ECHO SP boolean
10024 schoenebeck 940
10025 schoenebeck 575 </p>
10026 schoenebeck 1006 <p>/ VOLUME SP volume_value
10027    
10028     </p>
10029 schoenebeck 708 </blockquote><p>
10030 schoenebeck 575
10031 schoenebeck 708 </p>
10032 schoenebeck 575 <p>create_instruction =
10033     </p>
10034     <blockquote class="text">
10035     <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
10036 schoenebeck 940
10037 schoenebeck 575 </p>
10038     <p>/ AUDIO_OUTPUT_DEVICE SP string
10039 schoenebeck 940
10040 schoenebeck 575 </p>
10041     <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
10042 schoenebeck 940
10043 schoenebeck 575 </p>
10044     <p>/ MIDI_INPUT_DEVICE SP string
10045 schoenebeck 940
10046 schoenebeck 575 </p>
10047 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
10048    
10049     </p>
10050     <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
10051    
10052     </p>
10053 schoenebeck 708 </blockquote><p>
10054 schoenebeck 575
10055 schoenebeck 708 </p>
10056 schoenebeck 945 <p>reset_instruction =
10057     </p>
10058     <blockquote class="text">
10059     <p>CHANNEL SP sampler_channel
10060    
10061     </p>
10062     </blockquote><p>
10063    
10064     </p>
10065     <p>clear_instruction =
10066     </p>
10067     <blockquote class="text">
10068 schoenebeck 974 <p>MIDI_INSTRUMENTS SP midi_map
10069 schoenebeck 945
10070     </p>
10071 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
10072    
10073     </p>
10074 schoenebeck 945 </blockquote><p>
10075    
10076     </p>
10077 iliev 1189 <p>find_instruction =
10078     </p>
10079     <blockquote class="text">
10080 schoenebeck 1363 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
10081 iliev 1189
10082     </p>
10083 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
10084 iliev 1189
10085     </p>
10086 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
10087 iliev 1189
10088     </p>
10089 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
10090 iliev 1189
10091     </p>
10092     </blockquote><p>
10093    
10094     </p>
10095 iliev 1162 <p>move_instruction =
10096     </p>
10097     <blockquote class="text">
10098 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10099 iliev 1162
10100     </p>
10101 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
10102 iliev 1162
10103     </p>
10104     </blockquote><p>
10105    
10106     </p>
10107 iliev 1189 <p>copy_instruction =
10108     </p>
10109     <blockquote class="text">
10110 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10111 iliev 1189
10112     </p>
10113 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
10114 iliev 1189
10115     </p>
10116     </blockquote><p>
10117    
10118     </p>
10119 schoenebeck 575 <p>destroy_instruction =
10120     </p>
10121     <blockquote class="text">
10122     <p>AUDIO_OUTPUT_DEVICE SP number
10123 schoenebeck 940
10124 schoenebeck 575 </p>
10125     <p>/ MIDI_INPUT_DEVICE SP number
10126 schoenebeck 940
10127 schoenebeck 575 </p>
10128 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP fx_send_id
10129    
10130     </p>
10131 schoenebeck 708 </blockquote><p>
10132 schoenebeck 575
10133 schoenebeck 708 </p>
10134 schoenebeck 575 <p>load_instruction =
10135     </p>
10136     <blockquote class="text">
10137     <p>INSTRUMENT SP load_instr_args
10138 schoenebeck 940
10139 schoenebeck 575 </p>
10140     <p>/ ENGINE SP load_engine_args
10141 schoenebeck 940
10142 schoenebeck 575 </p>
10143 schoenebeck 708 </blockquote><p>
10144 schoenebeck 575
10145 schoenebeck 708 </p>
10146 schoenebeck 575 <p>set_chan_instruction =
10147     </p>
10148     <blockquote class="text">
10149     <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
10150 schoenebeck 940
10151 schoenebeck 575 </p>
10152     <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
10153 schoenebeck 940
10154 schoenebeck 575 </p>
10155     <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
10156 schoenebeck 940
10157 schoenebeck 575 </p>
10158     <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
10159 schoenebeck 940
10160 schoenebeck 575 </p>
10161     <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
10162 schoenebeck 940
10163 schoenebeck 575 </p>
10164     <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
10165 schoenebeck 940
10166 schoenebeck 575 </p>
10167     <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
10168 schoenebeck 940
10169 schoenebeck 575 </p>
10170     <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
10171 schoenebeck 940
10172 schoenebeck 575 </p>
10173     <p>/ VOLUME SP sampler_channel SP volume_value
10174 schoenebeck 940
10175 schoenebeck 575 </p>
10176 schoenebeck 708 <p>/ MUTE SP sampler_channel SP boolean
10177 schoenebeck 940
10178 schoenebeck 708 </p>
10179     <p>/ SOLO SP sampler_channel SP boolean
10180 schoenebeck 940
10181 schoenebeck 708 </p>
10182 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
10183    
10184     </p>
10185     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
10186    
10187     </p>
10188     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
10189    
10190     </p>
10191 schoenebeck 708 </blockquote><p>
10192    
10193     </p>
10194 schoenebeck 1251 <p>edit_instruction =
10195     </p>
10196     <blockquote class="text">
10197 schoenebeck 1430 <p>CHANNEL SP INSTRUMENT SP sampler_channel
10198 schoenebeck 1251
10199     </p>
10200     </blockquote><p>
10201    
10202     </p>
10203 schoenebeck 1363 <p>format_instruction =
10204     </p>
10205     <blockquote class="text">
10206     <p>INSTRUMENTS_DB
10207    
10208     </p>
10209     </blockquote><p>
10210    
10211     </p>
10212 schoenebeck 1048 <p>modal_arg =
10213     </p>
10214     <blockquote class="text">
10215     <p>/* epsilon (empty argument) */
10216    
10217     </p>
10218     <p>/ NON_MODAL SP
10219    
10220     </p>
10221     </blockquote><p>
10222    
10223     </p>
10224 schoenebeck 575 <p>key_val_list =
10225     </p>
10226     <blockquote class="text">
10227     <p>string '=' param_val_list
10228 schoenebeck 940
10229 schoenebeck 575 </p>
10230     <p>/ key_val_list SP string '=' param_val_list
10231 schoenebeck 940
10232 schoenebeck 575 </p>
10233 schoenebeck 708 </blockquote><p>
10234 schoenebeck 575
10235 schoenebeck 708 </p>
10236 schoenebeck 575 <p>buffer_size_type =
10237     </p>
10238     <blockquote class="text">
10239     <p>BYTES
10240 schoenebeck 940
10241 schoenebeck 575 </p>
10242     <p>/ PERCENTAGE
10243 schoenebeck 940
10244 schoenebeck 575 </p>
10245 schoenebeck 708 </blockquote><p>
10246 schoenebeck 575
10247 schoenebeck 708 </p>
10248 schoenebeck 575 <p>list_instruction =
10249     </p>
10250     <blockquote class="text">
10251     <p>AUDIO_OUTPUT_DEVICES
10252 schoenebeck 940
10253 schoenebeck 575 </p>
10254     <p>/ MIDI_INPUT_DEVICES
10255 schoenebeck 940
10256 schoenebeck 575 </p>
10257     <p>/ CHANNELS
10258 schoenebeck 940
10259 schoenebeck 575 </p>
10260     <p>/ AVAILABLE_ENGINES
10261 schoenebeck 940
10262 schoenebeck 575 </p>
10263     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
10264 schoenebeck 940
10265 schoenebeck 575 </p>
10266     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
10267 schoenebeck 940
10268 schoenebeck 575 </p>
10269 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
10270 schoenebeck 945
10271     </p>
10272 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
10273    
10274     </p>
10275     <p>/ MIDI_INSTRUMENT_MAPS
10276    
10277     </p>
10278 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
10279    
10280     </p>
10281 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
10282 iliev 1189
10283     </p>
10284 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
10285 iliev 1162
10286     </p>
10287 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
10288 iliev 1189
10289     </p>
10290 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
10291 iliev 1162
10292     </p>
10293 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
10294    
10295     </p>
10296 schoenebeck 708 </blockquote><p>
10297 schoenebeck 575
10298 schoenebeck 708 </p>
10299 schoenebeck 575 <p>load_instr_args =
10300     </p>
10301     <blockquote class="text">
10302     <p>filename SP instrument_index SP sampler_channel
10303 schoenebeck 940
10304 schoenebeck 575 </p>
10305     <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
10306 schoenebeck 940
10307 schoenebeck 575 </p>
10308 schoenebeck 708 </blockquote><p>
10309 schoenebeck 575
10310 schoenebeck 708 </p>
10311 schoenebeck 575 <p>load_engine_args =
10312     </p>
10313     <blockquote class="text">
10314     <p>engine_name SP sampler_channel
10315 schoenebeck 940
10316 schoenebeck 575 </p>
10317 schoenebeck 708 </blockquote><p>
10318 schoenebeck 575
10319 schoenebeck 708 </p>
10320 schoenebeck 945 <p>instr_load_mode =
10321     </p>
10322     <blockquote class="text">
10323     <p>ON_DEMAND
10324    
10325     </p>
10326     <p>/ ON_DEMAND_HOLD
10327    
10328     </p>
10329     <p>/ PERSISTENT
10330    
10331     </p>
10332     </blockquote><p>
10333    
10334     </p>
10335 schoenebeck 575 <p>device_index =
10336     </p>
10337     <blockquote class="text">
10338     <p>number
10339 schoenebeck 940
10340 schoenebeck 575 </p>
10341 schoenebeck 708 </blockquote><p>
10342 schoenebeck 575
10343 schoenebeck 708 </p>
10344 schoenebeck 575 <p>audio_channel_index =
10345     </p>
10346     <blockquote class="text">
10347     <p>number
10348 schoenebeck 940
10349 schoenebeck 575 </p>
10350 schoenebeck 708 </blockquote><p>
10351 schoenebeck 575
10352 schoenebeck 708 </p>
10353 schoenebeck 575 <p>audio_output_type_name =
10354     </p>
10355     <blockquote class="text">
10356     <p>string
10357 schoenebeck 940
10358 schoenebeck 575 </p>
10359 schoenebeck 708 </blockquote><p>
10360 schoenebeck 575
10361 schoenebeck 708 </p>
10362 schoenebeck 575 <p>midi_input_port_index =
10363     </p>
10364     <blockquote class="text">
10365     <p>number
10366 schoenebeck 940
10367 schoenebeck 575 </p>
10368 schoenebeck 708 </blockquote><p>
10369 schoenebeck 575
10370 schoenebeck 708 </p>
10371 schoenebeck 575 <p>midi_input_channel_index =
10372     </p>
10373     <blockquote class="text">
10374     <p>number
10375 schoenebeck 940
10376 schoenebeck 575 </p>
10377     <p>/ ALL
10378 schoenebeck 940
10379 schoenebeck 575 </p>
10380 schoenebeck 708 </blockquote><p>
10381 schoenebeck 575
10382 schoenebeck 708 </p>
10383 schoenebeck 575 <p>midi_input_type_name =
10384     </p>
10385     <blockquote class="text">
10386     <p>string
10387 schoenebeck 940
10388 schoenebeck 575 </p>
10389 schoenebeck 708 </blockquote><p>
10390 schoenebeck 575
10391 schoenebeck 708 </p>
10392 schoenebeck 974 <p>midi_map =
10393 schoenebeck 945 </p>
10394     <blockquote class="text">
10395     <p>number
10396    
10397     </p>
10398     </blockquote><p>
10399    
10400     </p>
10401 schoenebeck 974 <p>midi_bank =
10402 schoenebeck 945 </p>
10403     <blockquote class="text">
10404     <p>number
10405    
10406     </p>
10407     </blockquote><p>
10408    
10409     </p>
10410     <p>midi_prog =
10411     </p>
10412     <blockquote class="text">
10413     <p>number
10414    
10415     </p>
10416     </blockquote><p>
10417    
10418     </p>
10419 schoenebeck 1002 <p>midi_ctrl =
10420     </p>
10421     <blockquote class="text">
10422     <p>number
10423    
10424     </p>
10425     </blockquote><p>
10426    
10427     </p>
10428 schoenebeck 575 <p>volume_value =
10429     </p>
10430     <blockquote class="text">
10431     <p>dotnum
10432 schoenebeck 940
10433 schoenebeck 575 </p>
10434     <p>/ number
10435 schoenebeck 940
10436 schoenebeck 575 </p>
10437 schoenebeck 708 </blockquote><p>
10438 schoenebeck 575
10439 schoenebeck 708 </p>
10440 schoenebeck 575 <p>sampler_channel =
10441     </p>
10442     <blockquote class="text">
10443     <p>number
10444 schoenebeck 940
10445 schoenebeck 575 </p>
10446 schoenebeck 708 </blockquote><p>
10447 schoenebeck 575
10448 schoenebeck 708 </p>
10449 schoenebeck 575 <p>instrument_index =
10450     </p>
10451     <blockquote class="text">
10452     <p>number
10453 schoenebeck 940
10454 schoenebeck 575 </p>
10455 schoenebeck 708 </blockquote><p>
10456 schoenebeck 575
10457 schoenebeck 708 </p>
10458 schoenebeck 1002 <p>fx_send_id =
10459     </p>
10460     <blockquote class="text">
10461     <p>number
10462    
10463     </p>
10464     </blockquote><p>
10465    
10466     </p>
10467 schoenebeck 575 <p>engine_name =
10468     </p>
10469     <blockquote class="text">
10470     <p>string
10471 schoenebeck 940
10472 schoenebeck 575 </p>
10473 schoenebeck 708 </blockquote><p>
10474 schoenebeck 575
10475 schoenebeck 708 </p>
10476 schoenebeck 1363 <p>filename =
10477 iliev 1162 </p>
10478     <blockquote class="text">
10479 schoenebeck 1363 <p>path
10480 iliev 1162
10481     </p>
10482     </blockquote><p>
10483    
10484     </p>
10485 schoenebeck 1363 <p>db_path =
10486 iliev 1162 </p>
10487     <blockquote class="text">
10488 schoenebeck 1363 <p>path
10489 iliev 1162
10490     </p>
10491     </blockquote><p>
10492    
10493     </p>
10494 schoenebeck 974 <p>map_name =
10495     </p>
10496     <blockquote class="text">
10497 schoenebeck 1390 <p>stringval_escaped
10498 schoenebeck 974
10499     </p>
10500     </blockquote><p>
10501    
10502     </p>
10503 schoenebeck 945 <p>entry_name =
10504     </p>
10505     <blockquote class="text">
10506 schoenebeck 1390 <p>stringval_escaped
10507 schoenebeck 945
10508     </p>
10509     </blockquote><p>
10510    
10511     </p>
10512 schoenebeck 1002 <p>fx_send_name =
10513     </p>
10514     <blockquote class="text">
10515 schoenebeck 1390 <p>stringval_escaped
10516 schoenebeck 1002
10517     </p>
10518     </blockquote><p>
10519    
10520     </p>
10521 schoenebeck 575 <p>param_val_list =
10522     </p>
10523     <blockquote class="text">
10524     <p>param_val
10525 schoenebeck 940
10526 schoenebeck 575 </p>
10527     <p>/ param_val_list','param_val
10528 schoenebeck 940
10529 schoenebeck 575 </p>
10530 schoenebeck 708 </blockquote><p>
10531 schoenebeck 575
10532 schoenebeck 708 </p>
10533 schoenebeck 575 <p>param_val =
10534     </p>
10535     <blockquote class="text">
10536     <p>string
10537 schoenebeck 940
10538 schoenebeck 575 </p>
10539 schoenebeck 940 <p>/ stringval
10540    
10541 schoenebeck 575 </p>
10542     <p>/ number
10543 schoenebeck 940
10544 schoenebeck 575 </p>
10545     <p>/ dotnum
10546 schoenebeck 940
10547 schoenebeck 575 </p>
10548 schoenebeck 708 </blockquote><p>
10549 schoenebeck 575
10550 schoenebeck 708 </p>
10551 iliev 1189 <p>query_val_list =
10552     </p>
10553     <blockquote class="text">
10554     <p>string '=' query_val
10555    
10556     </p>
10557     <p>/ query_val_list SP string '=' query_val
10558    
10559     </p>
10560     </blockquote><p>
10561    
10562     </p>
10563     <p>query_val =
10564     </p>
10565     <blockquote class="text">
10566 schoenebeck 1390 <p>text_escaped
10567 iliev 1189
10568     </p>
10569 schoenebeck 1363 <p>/ stringval_escaped
10570 iliev 1189
10571     </p>
10572     </blockquote><p>
10573    
10574     </p>
10575 iliev 1201 <p>scan_mode =
10576     </p>
10577     <blockquote class="text">
10578     <p>RECURSIVE
10579    
10580     </p>
10581     <p>/ NON_RECURSIVE
10582    
10583     </p>
10584     <p>/ FLAT
10585    
10586     </p>
10587     </blockquote><p>
10588    
10589     </p>
10590 schoenebeck 1251 <a name="character_set"></a><br /><hr />
10591     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10592     <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
10593     Character Set and Escape Sequences</h3>
10594    
10595     <p>Older versions of this protocol up to and including v1.1 only
10596     supported the standard ASCII character set (ASCII code 0 - 127)
10597     <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
10598     however support the Extended ASCII character set (ASCII code
10599     0 - 255). The same group of younger protocols also support
10600     escape sequences, but only for certain, explicitly declared
10601     parts of the protocol. The supported escape sequences are
10602     defined as follows:
10603     </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
10604     <col align="left"><col align="left">
10605     <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
10606     <tr>
10607     <td align="left">\n</td>
10608     <td align="left">new line</td>
10609     </tr>
10610     <tr>
10611     <td align="left">\r</td>
10612     <td align="left">carriage return</td>
10613     </tr>
10614     <tr>
10615     <td align="left">\f</td>
10616     <td align="left">form feed</td>
10617     </tr>
10618     <tr>
10619     <td align="left">\t</td>
10620     <td align="left">horizontal tab</td>
10621     </tr>
10622     <tr>
10623     <td align="left">\v</td>
10624     <td align="left">vertical tab</td>
10625     </tr>
10626     <tr>
10627     <td align="left">\'</td>
10628     <td align="left">apostrophe</td>
10629     </tr>
10630     <tr>
10631     <td align="left">\"</td>
10632     <td align="left">quotation mark</td>
10633     </tr>
10634     <tr>
10635     <td align="left">\\</td>
10636     <td align="left">backslash</td>
10637     </tr>
10638     <tr>
10639     <td align="left">\OOO</td>
10640     <td align="left">three digit octal ASCII code of the character</td>
10641     </tr>
10642     <tr>
10643     <td align="left">\xHH</td>
10644     <td align="left">two digit hex ASCII code of the character</td>
10645     </tr>
10646     </table>
10647    
10648     <p>Notice: due to the transition of certain parts of the
10649     protocol which now support escape sequences, a slight backward
10650     incompatibility to protocols version v1.1 and younger has been
10651     introduced. The only difference is that in parts of the protocol
10652     where escape characters are now supported, a backslash characters
10653     MUST be escaped as well (that is as double backslash), whereas
10654     in the old versions a single backslash was sufficient.
10655     </p>
10656 schoenebeck 1390 <p>The following LSCP commands support escape sequences as part
10657 schoenebeck 1400 of their filename / path based arguments and / or may contain
10658     a filename / path with escape sequences in their response:
10659 schoenebeck 1390 </p>
10660     <blockquote class="text">
10661     <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
10662     </p>
10663 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>
10664     </p>
10665 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>
10666     </p>
10667 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>
10668     </p>
10669 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>
10670     </p>
10671     <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>
10672     </p>
10673     <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>
10674     </p>
10675     <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
10676     </p>
10677     <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>
10678     </p>
10679     <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>
10680     </p>
10681     <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>
10682     </p>
10683     <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
10684     </p>
10685     <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>
10686     </p>
10687     <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>
10688     </p>
10689     <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>
10690     </p>
10691     <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>
10692     </p>
10693     <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>
10694     </p>
10695     <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>
10696     </p>
10697     <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10698     </p>
10699     <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10700     </p>
10701     <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
10702     </p>
10703     <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>
10704     </p>
10705     <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
10706     </p>
10707     <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>
10708     </p>
10709 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>
10710     </p>
10711     <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>
10712     </p>
10713     <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>
10714     </p>
10715 schoenebeck 1390 </blockquote><p>
10716     Note that the forward slash character ('/') has a special meaning in
10717     filename / path based arguments: it acts as separator of the nodes in
10718     the path, thus if a directory- or filename includes a forward slash
10719     (not intended as path node separator), you MUST escape that slash
10720     either with the respective hex escape sequence ("\x2f") or with the
10721     respective octal escape sequence ("\057").
10722    
10723     </p>
10724     <p>
10725 schoenebeck 1572 Note for Windows: file path arguments in LSCP are expected
10726     to use forward slashes as directory node separator similar
10727     to Unix based operating systems. In contrast to Unix however
10728     a Windows typical drive character is expected to be
10729     prefixed to the path. That is an original Windows file path
10730     like "D:\Sounds\My.gig" would become in LSCP:
10731     "D:/Sounds/My.gig".
10732    
10733     </p>
10734     <p>
10735 schoenebeck 1390 The following LSCP commands even support escape sequences as
10736     part of at least one of their text-based arguments (i.e. entity name,
10737 schoenebeck 1400 description) and / or may contain escape sequences in at least one of
10738     their text-based fields in their response:
10739 schoenebeck 1390 </p>
10740     <blockquote class="text">
10741 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>
10742     </p>
10743     <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>
10744     </p>
10745     <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10746     </p>
10747     <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>
10748     </p>
10749     <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>
10750     </p>
10751     <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>
10752     </p>
10753     <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>
10754     </p>
10755     <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>
10756     </p>
10757 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>
10758     </p>
10759     <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>
10760     </p>
10761     <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>
10762     </p>
10763 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>
10764     </p>
10765 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>
10766     </p>
10767     <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>
10768     </p>
10769 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>
10770     </p>
10771 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>
10772     </p>
10773 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>
10774     </p>
10775     <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>
10776     </p>
10777 schoenebeck 1400 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10778 schoenebeck 1390 </p>
10779     </blockquote><p>
10780     Please note that these lists are manually maintained. If you
10781     find a command that also supports escape sequences we forgot to
10782     mention here, please report it!
10783    
10784     </p>
10785 senoner 542 <a name="events"></a><br /><hr />
10786 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10787     <a name="rfc.section.8"></a><h3>8.&nbsp;
10788     Events</h3>
10789 senoner 542
10790     <p>This chapter will describe all currently defined events supported by LinuxSampler.
10791     </p>
10792 iliev 992 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
10793 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10794     <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
10795 iliev 992 Number of audio output devices changed</h3>
10796    
10797     <p>Client may want to be notified when the total number of audio output devices on the
10798     back-end changes by issuing the following command:
10799     </p>
10800     <p>
10801     </p>
10802     <blockquote class="text">
10803     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
10804     </p>
10805     </blockquote><p>
10806    
10807     </p>
10808     <p>Server will start sending the following notification messages:
10809     </p>
10810     <p>
10811     </p>
10812     <blockquote class="text">
10813     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
10814     </p>
10815     </blockquote><p>
10816    
10817     </p>
10818     <p>where &lt;devices&gt; will be replaced by the new number
10819     of audio output devices.
10820     </p>
10821     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
10822     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10823     <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
10824     Audio output device's settings changed</h3>
10825    
10826     <p>Client may want to be notified when changes were made to audio output devices on the
10827     back-end by issuing the following command:
10828     </p>
10829     <p>
10830     </p>
10831     <blockquote class="text">
10832     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
10833     </p>
10834     </blockquote><p>
10835    
10836     </p>
10837     <p>Server will start sending the following notification messages:
10838     </p>
10839     <p>
10840     </p>
10841     <blockquote class="text">
10842     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
10843     </p>
10844     </blockquote><p>
10845    
10846     </p>
10847     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
10848     which settings has been changed. The front-end will have to send
10849     the respective command to actually get the audio output device info. Because these messages
10850     will be triggered by LSCP commands issued by other clients rather than real
10851     time events happening on the server, it is believed that an empty notification
10852     message is sufficient here.
10853     </p>
10854     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
10855     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10856     <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
10857     Number of MIDI input devices changed</h3>
10858    
10859     <p>Client may want to be notified when the total number of MIDI input devices on the
10860     back-end changes by issuing the following command:
10861     </p>
10862     <p>
10863     </p>
10864     <blockquote class="text">
10865     <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
10866     </p>
10867     </blockquote><p>
10868    
10869     </p>
10870     <p>Server will start sending the following notification messages:
10871     </p>
10872     <p>
10873     </p>
10874     <blockquote class="text">
10875     <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
10876     </p>
10877     </blockquote><p>
10878    
10879     </p>
10880     <p>where &lt;devices&gt; will be replaced by the new number
10881     of MIDI input devices.
10882     </p>
10883     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
10884     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10885     <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
10886     MIDI input device's settings changed</h3>
10887    
10888     <p>Client may want to be notified when changes were made to MIDI input devices on the
10889     back-end by issuing the following command:
10890     </p>
10891     <p>
10892     </p>
10893     <blockquote class="text">
10894     <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
10895     </p>
10896     </blockquote><p>
10897    
10898     </p>
10899     <p>Server will start sending the following notification messages:
10900     </p>
10901     <p>
10902     </p>
10903     <blockquote class="text">
10904     <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
10905     </p>
10906     </blockquote><p>
10907    
10908     </p>
10909     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
10910     which settings has been changed. The front-end will have to send
10911     the respective command to actually get the MIDI input device info. Because these messages
10912     will be triggered by LSCP commands issued by other clients rather than real
10913     time events happening on the server, it is believed that an empty notification
10914     message is sufficient here.
10915     </p>
10916     <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
10917     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10918     <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
10919 schoenebeck 974 Number of sampler channels changed</h3>
10920 senoner 542
10921     <p>Client may want to be notified when the total number of channels on the
10922     back-end changes by issuing the following command:
10923     </p>
10924 schoenebeck 708 <p>
10925     </p>
10926 senoner 542 <blockquote class="text">
10927 schoenebeck 558 <p>SUBSCRIBE CHANNEL_COUNT
10928 senoner 542 </p>
10929 schoenebeck 708 </blockquote><p>
10930 schoenebeck 940
10931 schoenebeck 708 </p>
10932 senoner 542 <p>Server will start sending the following notification messages:
10933     </p>
10934 schoenebeck 708 <p>
10935     </p>
10936 senoner 542 <blockquote class="text">
10937 schoenebeck 558 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
10938 senoner 542 </p>
10939 schoenebeck 708 </blockquote><p>
10940 schoenebeck 940
10941 schoenebeck 708 </p>
10942 senoner 542 <p>where &lt;channels&gt; will be replaced by the new number
10943     of sampler channels.
10944     </p>
10945 schoenebeck 1685 <a name="SUBSCRIBE CHANNEL_MIDI"></a><br /><hr />
10946     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10947     <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
10948     MIDI data on a sampler channel arrived</h3>
10949    
10950     <p>Client may want to be notified when MIDI data arrive on sampler channels on
10951     back-end side, by issuing the following command:
10952     </p>
10953     <p>
10954     </p>
10955     <blockquote class="text">
10956     <p>SUBSCRIBE CHANNEL_MIDI
10957     </p>
10958     </blockquote><p>
10959    
10960     </p>
10961     <p>Server will start sending one of the the following notification messages:
10962     </p>
10963     <p>
10964     </p>
10965     <blockquote class="text">
10966     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"
10967     </p>
10968     <p>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"
10969     </p>
10970     </blockquote><p>
10971    
10972     </p>
10973     <p>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
10974     data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
10975     0 .. 127, reflecting the analog meaning of the MIDI specification.
10976    
10977     </p>
10978     <p>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
10979     delivered by this mechanism! With other words: events could be lost at any time!
10980     This restriction was made to keep the RT-safeness of the backend's MIDI and audio
10981     thread unaffected by this feature.
10982     </p>
10983 schoenebeck 940 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
10984 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10985 schoenebeck 1685 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
10986 schoenebeck 974 Number of active voices changed</h3>
10987 senoner 542
10988     <p>Client may want to be notified when the number of voices on the
10989     back-end changes by issuing the following command:
10990     </p>
10991 schoenebeck 708 <p>
10992     </p>
10993 senoner 542 <blockquote class="text">
10994     <p>SUBSCRIBE VOICE_COUNT
10995     </p>
10996 schoenebeck 708 </blockquote><p>
10997 schoenebeck 940
10998 schoenebeck 708 </p>
10999 senoner 542 <p>Server will start sending the following notification messages:
11000     </p>
11001 schoenebeck 708 <p>
11002     </p>
11003 senoner 542 <blockquote class="text">
11004 iliev 1110 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
11005 senoner 542 </p>
11006 schoenebeck 708 </blockquote><p>
11007 schoenebeck 940
11008 schoenebeck 708 </p>
11009 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11010     voice count change occurred and &lt;voices&gt; by the new number of
11011     active voices on that channel.
11012     </p>
11013 schoenebeck 940 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
11014 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11015 schoenebeck 1685 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
11016 schoenebeck 974 Number of active disk streams changed</h3>
11017 senoner 542
11018     <p>Client may want to be notified when the number of streams on the back-end
11019     changes by issuing the following command: SUBSCRIBE STREAM_COUNT
11020     </p>
11021 schoenebeck 708 <p>
11022     </p>
11023 senoner 542 <blockquote class="text">
11024     <p>SUBSCRIBE STREAM_COUNT
11025     </p>
11026 schoenebeck 708 </blockquote><p>
11027 schoenebeck 940
11028 schoenebeck 708 </p>
11029 senoner 542 <p>Server will start sending the following notification messages:
11030     </p>
11031 schoenebeck 708 <p>
11032     </p>
11033 senoner 542 <blockquote class="text">
11034     <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
11035     </p>
11036 schoenebeck 708 </blockquote><p>
11037 schoenebeck 940
11038 schoenebeck 708 </p>
11039 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11040     stream count change occurred and &lt;streams&gt; by the new number of
11041     active disk streams on that channel.
11042     </p>
11043 schoenebeck 940 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
11044 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11045 schoenebeck 1685 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
11046 schoenebeck 974 Disk stream buffer fill state changed</h3>
11047 senoner 542
11048     <p>Client may want to be notified when the buffer fill state of a disk stream
11049     on the back-end changes by issuing the following command:
11050     </p>
11051 schoenebeck 708 <p>
11052     </p>
11053 senoner 542 <blockquote class="text">
11054     <p>SUBSCRIBE BUFFER_FILL
11055     </p>
11056 schoenebeck 708 </blockquote><p>
11057 schoenebeck 940
11058 schoenebeck 708 </p>
11059 senoner 542 <p>Server will start sending the following notification messages:
11060     </p>
11061 schoenebeck 708 <p>
11062     </p>
11063 senoner 542 <blockquote class="text">
11064     <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
11065     </p>
11066 schoenebeck 708 </blockquote><p>
11067 schoenebeck 940
11068 schoenebeck 708 </p>
11069 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11070     buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
11071 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>
11072     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.
11073 senoner 542 </p>
11074 iliev 992 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
11075 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11076 schoenebeck 1685 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
11077 schoenebeck 974 Channel information changed</h3>
11078 senoner 542
11079     <p>Client may want to be notified when changes were made to sampler channels on the
11080 schoenebeck 561 back-end by issuing the following command:
11081 senoner 542 </p>
11082 schoenebeck 708 <p>
11083     </p>
11084 senoner 542 <blockquote class="text">
11085 schoenebeck 558 <p>SUBSCRIBE CHANNEL_INFO
11086 senoner 542 </p>
11087 schoenebeck 708 </blockquote><p>
11088 schoenebeck 940
11089 schoenebeck 708 </p>
11090 senoner 542 <p>Server will start sending the following notification messages:
11091     </p>
11092 schoenebeck 708 <p>
11093     </p>
11094 senoner 542 <blockquote class="text">
11095 schoenebeck 558 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
11096 senoner 542 </p>
11097 schoenebeck 708 </blockquote><p>
11098 schoenebeck 940
11099 schoenebeck 708 </p>
11100 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11101     channel info change occurred. The front-end will have to send
11102     the respective command to actually get the channel info. Because these messages
11103     will be triggered by LSCP commands issued by other clients rather than real
11104     time events happening on the server, it is believed that an empty notification
11105     message is sufficient here.
11106     </p>
11107 iliev 1110 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
11108     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11109 schoenebeck 1685 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
11110 iliev 1110 Number of effect sends changed</h3>
11111    
11112 schoenebeck 1251 <p>Client may want to be notified when the number of effect sends on
11113 iliev 1110 a particular sampler channel is changed by issuing the following command:
11114     </p>
11115     <p>
11116     </p>
11117     <blockquote class="text">
11118     <p>SUBSCRIBE FX_SEND_COUNT
11119     </p>
11120     </blockquote><p>
11121    
11122     </p>
11123     <p>Server will start sending the following notification messages:
11124     </p>
11125     <p>
11126     </p>
11127     <blockquote class="text">
11128     <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
11129     </p>
11130     </blockquote><p>
11131    
11132     </p>
11133     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11134     channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
11135     be replaced by the new number of effect sends on that channel.
11136     </p>
11137     <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
11138     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11139 schoenebeck 1685 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
11140 iliev 1110 Effect send information changed</h3>
11141    
11142     <p>Client may want to be notified when changes were made to effect sends on a
11143     a particular sampler channel by issuing the following command:
11144     </p>
11145     <p>
11146     </p>
11147     <blockquote class="text">
11148     <p>SUBSCRIBE FX_SEND_INFO
11149     </p>
11150     </blockquote><p>
11151    
11152     </p>
11153     <p>Server will start sending the following notification messages:
11154     </p>
11155     <p>
11156     </p>
11157     <blockquote class="text">
11158     <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
11159     </p>
11160     </blockquote><p>
11161    
11162     </p>
11163     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11164     channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
11165     be replaced by the numerical ID of the changed effect send.
11166     </p>
11167 schoenebeck 940 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
11168 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11169 schoenebeck 1685 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
11170 schoenebeck 974 Total number of active voices changed</h3>
11171 senoner 542
11172 schoenebeck 940 <p>Client may want to be notified when the total number of voices on the
11173     back-end changes by issuing the following command:
11174     </p>
11175     <p>
11176     </p>
11177     <blockquote class="text">
11178     <p>SUBSCRIBE TOTAL_VOICE_COUNT
11179     </p>
11180     </blockquote><p>
11181    
11182     </p>
11183     <p>Server will start sending the following notification messages:
11184     </p>
11185     <p>
11186     </p>
11187     <blockquote class="text">
11188 iliev 1110 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
11189 schoenebeck 940 </p>
11190     </blockquote><p>
11191    
11192     </p>
11193     <p>where &lt;voices&gt; will be replaced by the new number of
11194     all currently active voices.
11195     </p>
11196 schoenebeck 1572 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
11197     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11198 schoenebeck 1685 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
11199 schoenebeck 1572 Total number of active disk streams changed</h3>
11200    
11201     <p>Client may want to be notified when the total number of disk streams on the
11202     back-end changes by issuing the following command:
11203     </p>
11204     <p>
11205     </p>
11206     <blockquote class="text">
11207     <p>SUBSCRIBE TOTAL_STREAM_COUNT
11208     </p>
11209     </blockquote><p>
11210    
11211     </p>
11212     <p>Server will start sending the following notification messages:
11213     </p>
11214     <p>
11215     </p>
11216     <blockquote class="text">
11217     <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
11218     </p>
11219     </blockquote><p>
11220    
11221     </p>
11222     <p>where &lt;streams&gt; will be replaced by the new number of
11223     all currently active disk streams.
11224     </p>
11225 iliev 992 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
11226     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11227 schoenebeck 1685 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
11228 iliev 992 Number of MIDI instrument maps changed</h3>
11229    
11230     <p>Client may want to be notified when the number of MIDI instrument maps on the
11231     back-end changes by issuing the following command:
11232     </p>
11233     <p>
11234     </p>
11235     <blockquote class="text">
11236     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
11237     </p>
11238     </blockquote><p>
11239    
11240     </p>
11241     <p>Server will start sending the following notification messages:
11242     </p>
11243     <p>
11244     </p>
11245     <blockquote class="text">
11246     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
11247     </p>
11248     </blockquote><p>
11249    
11250     </p>
11251     <p>where &lt;maps&gt; will be replaced by the new number
11252     of MIDI instrument maps.
11253     </p>
11254     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
11255     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11256 schoenebeck 1685 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
11257 iliev 992 MIDI instrument map information changed</h3>
11258    
11259     <p>Client may want to be notified when changes were made to MIDI instrument maps on the
11260     back-end by issuing the following command:
11261     </p>
11262     <p>
11263     </p>
11264     <blockquote class="text">
11265     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
11266     </p>
11267     </blockquote><p>
11268    
11269     </p>
11270     <p>Server will start sending the following notification messages:
11271     </p>
11272     <p>
11273     </p>
11274     <blockquote class="text">
11275     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
11276     </p>
11277     </blockquote><p>
11278    
11279     </p>
11280     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11281     for which information changes occurred. The front-end will have to send
11282     the respective command to actually get the MIDI instrument map info. Because these messages
11283     will be triggered by LSCP commands issued by other clients rather than real
11284     time events happening on the server, it is believed that an empty notification
11285     message is sufficient here.
11286     </p>
11287     <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
11288     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11289 schoenebeck 1685 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
11290 iliev 992 Number of MIDI instruments changed</h3>
11291    
11292     <p>Client may want to be notified when the number of MIDI instrument maps on the
11293     back-end changes by issuing the following command:
11294     </p>
11295     <p>
11296     </p>
11297     <blockquote class="text">
11298     <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
11299     </p>
11300     </blockquote><p>
11301    
11302     </p>
11303     <p>Server will start sending the following notification messages:
11304     </p>
11305     <p>
11306     </p>
11307     <blockquote class="text">
11308     <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
11309     </p>
11310     </blockquote><p>
11311    
11312     </p>
11313     <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
11314     the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
11315     the new number of MIDI instruments in the specified map.
11316     </p>
11317     <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
11318     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11319 schoenebeck 1685 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
11320 iliev 992 MIDI instrument information changed</h3>
11321    
11322     <p>Client may want to be notified when changes were made to MIDI instruments on the
11323     back-end by issuing the following command:
11324     </p>
11325     <p>
11326     </p>
11327     <blockquote class="text">
11328     <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
11329     </p>
11330     </blockquote><p>
11331    
11332     </p>
11333     <p>Server will start sending the following notification messages:
11334     </p>
11335     <p>
11336     </p>
11337     <blockquote class="text">
11338     <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
11339     </p>
11340     </blockquote><p>
11341    
11342     </p>
11343     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11344     in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
11345     the location of the changed MIDI instrument in the map. The front-end will have to send
11346     the respective command to actually get the MIDI instrument info. Because these messages
11347     will be triggered by LSCP commands issued by other clients rather than real
11348     time events happening on the server, it is believed that an empty notification
11349     message is sufficient here.
11350     </p>
11351 iliev 1110 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
11352     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11353 schoenebeck 1685 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
11354 iliev 1110 Global settings changed</h3>
11355    
11356     <p>Client may want to be notified when changes to the global settings
11357     of the sampler were made by issuing the following command:
11358     </p>
11359     <p>
11360     </p>
11361     <blockquote class="text">
11362     <p>SUBSCRIBE GLOBAL_INFO
11363     </p>
11364     </blockquote><p>
11365    
11366     </p>
11367     <p>Server will start sending the following types of notification messages:
11368     </p>
11369     <p>
11370     </p>
11371     <blockquote class="text">
11372     <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
11373     golbal volume of the sampler is changed, where &lt;volume&gt; will be
11374     replaced by the optional dotted floating point value, reflecting the
11375     new global volume parameter.
11376     </p>
11377     </blockquote><p>
11378    
11379     </p>
11380 iliev 1162 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
11381     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11382 schoenebeck 1685 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
11383 iliev 1162 Number of database instrument directories changed</h3>
11384    
11385     <p>Client may want to be notified when the number of instrument
11386     directories in a particular directory in the instruments database
11387     is changed by issuing the following command:
11388     </p>
11389     <p>
11390     </p>
11391     <blockquote class="text">
11392     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
11393     </p>
11394     </blockquote><p>
11395    
11396     </p>
11397     <p>Server will start sending the following notification messages:
11398     </p>
11399     <p>
11400     </p>
11401     <blockquote class="text">
11402     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
11403     </p>
11404     </blockquote><p>
11405    
11406     </p>
11407     <p>where &lt;dir-path&gt; will be replaced by the absolute path
11408     name of the directory in the instruments database,
11409     in which the number of directories is changed.
11410     </p>
11411     <p>Note that when a non-empty directory is removed, this event
11412     is not sent for the subdirectories in that directory.
11413     </p>
11414     <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
11415     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11416 schoenebeck 1685 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
11417 iliev 1162 Database instrument directory information changed</h3>
11418    
11419     <p>Client may want to be notified when changes were made to directories
11420     in the instruments database by issuing the following command:
11421     </p>
11422     <p>
11423     </p>
11424     <blockquote class="text">
11425     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
11426     </p>
11427     </blockquote><p>
11428    
11429     </p>
11430     <p>Server will start sending the following notification messages:
11431     </p>
11432     <p>
11433     </p>
11434     <blockquote class="text">
11435     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
11436     </p>
11437     </blockquote><p>
11438    
11439     </p>
11440     <p>where &lt;dir-path&gt; will be replaced by the absolute path name
11441     of the directory, for which information changes occurred. The front-end will have to send
11442     the respective command to actually get the updated directory info. Because these messages
11443     will be triggered by LSCP commands issued by other clients rather than real
11444     time events happening on the server, it is believed that an empty notification
11445     message is sufficient here.
11446     </p>
11447     <p>
11448     </p>
11449     <blockquote class="text">
11450     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
11451     </p>
11452     </blockquote><p>
11453    
11454     </p>
11455     <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
11456     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11457     the new name of the directory, encapsulated into apostrophes.
11458     </p>
11459     <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
11460     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11461 schoenebeck 1685 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
11462 iliev 1162 Number of database instruments changed</h3>
11463    
11464     <p>Client may want to be notified when the number of instruments
11465     in a particular directory in the instruments database
11466     is changed by issuing the following command:
11467     </p>
11468     <p>
11469     </p>
11470     <blockquote class="text">
11471     <p>SUBSCRIBE DB_INSTRUMENT_COUNT
11472     </p>
11473     </blockquote><p>
11474    
11475     </p>
11476     <p>Server will start sending the following notification messages:
11477     </p>
11478     <p>
11479     </p>
11480     <blockquote class="text">
11481     <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
11482     </p>
11483     </blockquote><p>
11484    
11485     </p>
11486     <p>where &lt;dir-path&gt; will be replaced by the absolute path
11487     name of the directory in the instruments database,
11488     in which the number of instruments is changed.
11489     </p>
11490     <p>Note that when a non-empty directory is removed, this event
11491     is not sent for the instruments in that directory.
11492     </p>
11493     <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
11494     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11495 schoenebeck 1685 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
11496 iliev 1162 Database instrument information changed</h3>
11497    
11498     <p>Client may want to be notified when changes were made to instruments
11499     in the instruments database by issuing the following command:
11500     </p>
11501     <p>
11502     </p>
11503     <blockquote class="text">
11504     <p>SUBSCRIBE DB_INSTRUMENT_INFO
11505     </p>
11506     </blockquote><p>
11507    
11508     </p>
11509     <p>Server will start sending the following notification messages:
11510     </p>
11511     <p>
11512     </p>
11513     <blockquote class="text">
11514     <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
11515     </p>
11516     </blockquote><p>
11517    
11518     </p>
11519     <p>where &lt;instr-path&gt; will be replaced by the absolute path name
11520     of the instrument, which settings are changed. The front-end will have to send
11521     the respective command to actually get the updated directory info. Because these messages
11522     will be triggered by LSCP commands issued by other clients rather than real
11523     time events happening on the server, it is believed that an empty notification
11524     message is sufficient here.
11525     </p>
11526     <p>
11527     </p>
11528     <blockquote class="text">
11529     <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
11530     </p>
11531     </blockquote><p>
11532    
11533     </p>
11534     <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
11535     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11536     the new name of the instrument, encapsulated into apostrophes.
11537     </p>
11538 iliev 1201 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
11539     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11540 schoenebeck 1685 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
11541 iliev 1201 Database job status information changed</h3>
11542    
11543     <p>Client may want to be notified when the status of particular database
11544     instruments job is changed by issuing the following command:
11545     </p>
11546     <p>
11547     </p>
11548     <blockquote class="text">
11549     <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
11550     </p>
11551     </blockquote><p>
11552    
11553     </p>
11554     <p>Server will start sending the following notification messages:
11555     </p>
11556     <p>
11557     </p>
11558     <blockquote class="text">
11559     <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
11560     </p>
11561     </blockquote><p>
11562    
11563     </p>
11564     <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
11565     which status is changed. The front-end will have to send the respective
11566     command to actually get the status info. Because these messages
11567     will be triggered by LSCP commands issued by other clients rather than real
11568     time events happening on the server, it is believed that an empty notification
11569     message is sufficient here.
11570     </p>
11571 schoenebeck 940 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
11572 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11573 schoenebeck 1685 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
11574 schoenebeck 974 Miscellaneous and debugging events</h3>
11575 schoenebeck 940
11576 senoner 542 <p>Client may want to be notified of miscellaneous and debugging events occurring at
11577     the server by issuing the following command:
11578     </p>
11579 schoenebeck 708 <p>
11580     </p>
11581 senoner 542 <blockquote class="text">
11582     <p>SUBSCRIBE MISCELLANEOUS
11583     </p>
11584 schoenebeck 708 </blockquote><p>
11585 schoenebeck 940
11586 schoenebeck 708 </p>
11587 senoner 542 <p>Server will start sending the following notification messages:
11588     </p>
11589 schoenebeck 708 <p>
11590     </p>
11591 senoner 542 <blockquote class="text">
11592     <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
11593     </p>
11594 schoenebeck 708 </blockquote><p>
11595 schoenebeck 940
11596 schoenebeck 708 </p>
11597 senoner 542 <p>where &lt;string&gt; will be replaced by whatever data server
11598     wants to send to the client. Client MAY display this data to the
11599     user AS IS to facilitate debugging.
11600     </p>
11601 schoenebeck 974 <a name="anchor14"></a><br /><hr />
11602     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11603     <a name="rfc.section.9"></a><h3>9.&nbsp;
11604     Security Considerations</h3>
11605 senoner 542
11606     <p>As there is so far no method of authentication and authorization
11607     defined and so not required for a client applications to succeed to
11608     connect, running LinuxSampler might be a security risk for the host
11609     system the LinuxSampler instance is running on.
11610     </p>
11611 schoenebeck 974 <a name="anchor15"></a><br /><hr />
11612     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11613     <a name="rfc.section.10"></a><h3>10.&nbsp;
11614     Acknowledgments</h3>
11615 senoner 542
11616     <p>This document has benefited greatly from the comments of the
11617     following people, discussed on the LinuxSampler developer's mailing
11618     list:
11619     </p>
11620 schoenebeck 708 <p>
11621     </p>
11622 senoner 542 <blockquote class="text">
11623     <p>Rui Nuno Capela
11624     </p>
11625     <p>Vladimir Senkov
11626     </p>
11627     <p>Mark Knecht
11628     </p>
11629 schoenebeck 561 <p>Grigor Iliev
11630     </p>
11631 schoenebeck 708 </blockquote><p>
11632 schoenebeck 940
11633 schoenebeck 708 </p>
11634 senoner 542 <a name="rfc.references1"></a><br /><hr />
11635 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11636 schoenebeck 708 <h3>11.&nbsp;References</h3>
11637 senoner 542 <table width="99%" border="0">
11638 schoenebeck 1251 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
11639     <td class="author-text">UCLA, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc20.txt">ASCII format for Network Interchange</a>,&rdquo; RFC&nbsp;20, 1969.</td></tr>
11640 senoner 542 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
11641 schoenebeck 708 <td class="author-text">Bradner, S., &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2119.txt">Key words for use in RFCs to Indicate Requirement Levels</a>,&rdquo; RFC&nbsp;2119, 1997.</td></tr>
11642 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
11643 schoenebeck 708 <td class="author-text">Crocker, D. and P. Overell, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2234.txt">Augmented BNF for Syntax Specifications</a>,&rdquo; RFC&nbsp;2234, 1997.</td></tr>
11644 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
11645 schoenebeck 708 <td class="author-text">Defense Advanced Research Projects Agency, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc793.txt">TRANSMISSION CONTROL PROTOCOL</a>,&rdquo; RFC&nbsp;793, 1981.</td></tr>
11646 senoner 542 </table>
11647    
11648     <a name="rfc.authors"></a><br /><hr />
11649 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11650 senoner 542 <h3>Author's Address</h3>
11651     <table width="99%" border="0" cellpadding="0" cellspacing="0">
11652     <tr><td class="author-text">&nbsp;</td>
11653     <td class="author-text">C.
11654     Schoenebeck</td></tr>
11655     <tr><td class="author-text">&nbsp;</td>
11656     <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
11657     <tr><td class="author-text">&nbsp;</td>
11658     <td class="author-text">Max-Planck-Str. 39</td></tr>
11659     <tr><td class="author-text">&nbsp;</td>
11660     <td class="author-text">74081 Heilbronn</td></tr>
11661     <tr><td class="author-text">&nbsp;</td>
11662     <td class="author-text">Germany</td></tr>
11663 schoenebeck 708 <tr><td class="author" align="right">Email:&nbsp;</td>
11664 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>
11665     </table>
11666     <a name="rfc.copyright"></a><br /><hr />
11667 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11668     <h3>Full Copyright Statement</h3>
11669 senoner 542 <p class='copyright'>
11670 schoenebeck 1685 Copyright &copy; The IETF Trust (2008).</p>
11671 senoner 542 <p class='copyright'>
11672 schoenebeck 974 This document is subject to the rights,
11673     licenses and restrictions contained in BCP&nbsp;78,
11674     and except as set forth therein,
11675     the authors retain all their rights.</p>
11676 senoner 542 <p class='copyright'>
11677 schoenebeck 974 This document and the information contained herein are provided
11678     on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
11679 iliev 1110 THE ORGANIZATION HE/SHE REPRESENTS
11680     OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
11681     AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
11682     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
11683     THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
11684     IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
11685     PURPOSE.</p>
11686 schoenebeck 974 <h3>Intellectual Property</h3>
11687 senoner 542 <p class='copyright'>
11688 schoenebeck 974 The IETF takes no position regarding the validity or scope of any
11689     Intellectual Property Rights or other rights that might be claimed
11690     to pertain to the implementation or use of the technology
11691     described in this document or the extent to which any license
11692     under such rights might or might not be available; nor does it
11693     represent that it has made any independent effort to identify any
11694     such rights.
11695     Information on the procedures with respect to
11696     rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
11697 senoner 542 <p class='copyright'>
11698 schoenebeck 974 Copies of IPR disclosures made to the IETF Secretariat and any
11699     assurances of licenses to be made available,
11700     or the result of an attempt made to obtain a general license or
11701     permission for the use of such proprietary rights by implementers or
11702     users of this specification can be obtained from the IETF on-line IPR
11703     repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
11704 senoner 542 <p class='copyright'>
11705 schoenebeck 974 The IETF invites any interested party to bring to its attention
11706     any copyrights,
11707     patents or patent applications,
11708     or other
11709     proprietary rights that may cover technology that may be required
11710     to implement this standard.
11711     Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
11712 senoner 542 <h3>Acknowledgment</h3>
11713     <p class='copyright'>
11714 schoenebeck 974 Funding for the RFC Editor function is provided by
11715     the IETF Administrative Support Activity (IASA).</p>
11716 senoner 542 </body></html>
11717 schoenebeck 1363

  ViewVC Help
Powered by ViewVC