/[svn]/web/trunk/www.linuxsampler.org/api/draft-linuxsampler-protocol.html
ViewVC logotype

Contents of /web/trunk/www.linuxsampler.org/api/draft-linuxsampler-protocol.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1685 - (show 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 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4 <meta name="description" content="LinuxSampler Control Protocol">
5 <meta name="keywords" content="LSCP">
6 <meta name="generator" content="xml2rfc v1.32 (http://xml.resource.org/)">
7 <style type='text/css'><!--
8 body {
9 font-family: verdana, charcoal, helvetica, arial, sans-serif;
10 font-size: small; color: #000; background-color: #FFF;
11 margin: 2em;
12 }
13 h1, h2, h3, h4, h5, h6 {
14 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
20 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
35 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
46 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
54 /* 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
77 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
82 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
88 ol.text { margin-left: 2em; margin-right: 2em; }
89 ul.text { margin-left: 2em; margin-right: 2em; }
90 li { margin-left: 3em; }
91
92 /* 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 tt, pre, pre dfn, pre em, pre cite, pre span {
99 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
115 /* 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
135 hr { height: 1px; }
136 hr.insert {
137 width: 80%; border-style: none; border-width: 0;
138 color: #CCC; background-color: #CCC;
139 }
140 --></style>
141 </head>
142 <body>
143 <table 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 <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 <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148 <tr><td class="header">Expires: August 17, 2008</td><td class="header">February 14, 2008</td></tr>
149 </table></td></tr></table>
150 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.4</h1>
151
152 <h3>Status of this Memo</h3>
153 <p>
154 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 <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 them other than as &ldquo;work in progress.&rdquo;</p>
169 <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 This Internet-Draft will expire on August 17, 2008.</p>
177
178 <h3>Copyright Notice</h3>
179 <p>
180 Copyright &copy; The IETF Trust (2008).</p>
181
182 <h3>Abstract</h3>
183
184 <p>The LinuxSampler Control Protocol (LSCP) is an
185 application-level protocol primarily intended for local and
186 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 </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 <a href="#LSCP versioning">2.</a>&nbsp;
196 Versioning of this specification<br />
197 <a href="#anchor2">3.</a>&nbsp;
198 Introduction<br />
199 <a href="#anchor3">4.</a>&nbsp;
200 Focus of this protocol<br />
201 <a href="#anchor4">5.</a>&nbsp;
202 Communication Overview<br />
203 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
204 Request/response communication method<br />
205 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
206 Result format<br />
207 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
208 Subscribe/notify communication method<br />
209 <a href="#control_commands">6.</a>&nbsp;
210 Description for control commands<br />
211 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
212 Ignored lines and comments<br />
213 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
214 Configuring audio drivers<br />
215 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
216 Getting amount of available audio output drivers<br />
217 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
218 Getting all available audio output drivers<br />
219 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
220 Getting information about a specific audio
221 output driver<br />
222 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
223 Getting information about specific audio
224 output driver parameter<br />
225 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
226 Creating an audio output device<br />
227 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
228 Destroying an audio output device<br />
229 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
230 Getting all created audio output device count<br />
231 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
232 Getting all created audio output device list<br />
233 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
234 Getting current settings of an audio output device<br />
235 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
236 Changing settings of audio output devices<br />
237 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
238 Getting information about an audio channel<br />
239 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
240 Getting information about specific audio channel parameter<br />
241 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
242 Changing settings of audio output channels<br />
243 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
244 Configuring MIDI input drivers<br />
245 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
246 Getting amount of available MIDI input drivers<br />
247 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
248 Getting all available MIDI input drivers<br />
249 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
250 Getting information about a specific MIDI input driver<br />
251 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
252 Getting information about specific MIDI input driver parameter<br />
253 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
254 Creating a MIDI input device<br />
255 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
256 Destroying a MIDI input device<br />
257 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
258 Getting all created MIDI input device count<br />
259 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
260 Getting all created MIDI input device list<br />
261 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
262 Getting current settings of a MIDI input device<br />
263 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
264 Changing settings of MIDI input devices<br />
265 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
266 Getting information about a MIDI port<br />
267 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
268 Getting information about specific MIDI port parameter<br />
269 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
270 Changing settings of MIDI input ports<br />
271 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
272 Configuring sampler channels<br />
273 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
274 Loading an instrument<br />
275 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
276 Loading a sampler engine<br />
277 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
278 Getting all created sampler channel count<br />
279 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
280 Getting all created sampler channel list<br />
281 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
282 Adding a new sampler channel<br />
283 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
284 Removing a sampler channel<br />
285 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
286 Getting amount of available engines<br />
287 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
288 Getting all available engines<br />
289 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
290 Getting information about an engine<br />
291 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
292 Getting sampler channel information<br />
293 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
294 Current number of active voices<br />
295 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
296 Current number of active disk streams<br />
297 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
298 Current fill state of disk stream buffers<br />
299 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
300 Setting audio output device<br />
301 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
302 Setting audio output type<br />
303 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
304 Setting audio output channel<br />
305 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
306 Setting MIDI input device<br />
307 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
308 Setting MIDI input type<br />
309 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
310 Setting MIDI input port<br />
311 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
312 Setting MIDI input channel<br />
313 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
314 Setting channel volume<br />
315 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
316 Muting a sampler channel<br />
317 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
318 Soloing a sampler channel<br />
319 &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 &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 &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 Altering effect send's audio routing<br />
335 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.32.</a>&nbsp;
336 Altering effect send's MIDI controller<br />
337 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.33.</a>&nbsp;
338 Altering effect send's send level<br />
339 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.34.</a>&nbsp;
340 Resetting a sampler channel<br />
341 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
342 Controlling connection<br />
343 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
344 Register front-end for receiving event messages<br />
345 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
346 Unregister front-end for not receiving event messages<br />
347 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
348 Enable or disable echo of commands<br />
349 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
350 Close client connection<br />
351 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
352 Global commands<br />
353 &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 &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 Reset sampler<br />
361 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
362 General sampler informations<br />
363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
364 Getting global volume attenuation<br />
365 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
366 Setting global volume attenuation<br />
367 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
368 MIDI Instrument Mapping<br />
369 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
370 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 Create or replace a MIDI instrument map entry<br />
383 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
384 Getting ammount of MIDI instrument map entries<br />
385 &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 Remove an entry from the MIDI instrument map<br />
389 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
390 Get current settings of MIDI instrument map entry<br />
391 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
392 Clear MIDI instrument map<br />
393 &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 &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 Changing the description of directory<br />
413 &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 Adding instruments to the instruments database<br />
417 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
418 Removing an instrument<br />
419 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
420 Getting amount of instruments<br />
421 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
422 Listing all instruments in specific directory<br />
423 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
424 Getting instrument information<br />
425 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
426 Renaming an instrument<br />
427 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
428 Moving an instrument<br />
429 &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 Changing the description of instrument<br />
433 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
434 Finding instruments<br />
435 &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 &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 &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 <a href="#command_syntax">7.</a>&nbsp;
452 Command Syntax<br />
453 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
454 Character Set and Escape Sequences<br />
455 <a href="#events">8.</a>&nbsp;
456 Events<br />
457 &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 Number of sampler channels changed<br />
467 &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 Number of active voices changed<br />
471 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.8.</a>&nbsp;
472 Number of active disk streams changed<br />
473 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.9.</a>&nbsp;
474 Disk stream buffer fill state changed<br />
475 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.10.</a>&nbsp;
476 Channel information changed<br />
477 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.11.</a>&nbsp;
478 Number of effect sends changed<br />
479 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.12.</a>&nbsp;
480 Effect send information changed<br />
481 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.13.</a>&nbsp;
482 Total number of active voices changed<br />
483 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.14.</a>&nbsp;
484 Total number of active disk streams changed<br />
485 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.15.</a>&nbsp;
486 Number of MIDI instrument maps changed<br />
487 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.16.</a>&nbsp;
488 MIDI instrument map information changed<br />
489 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.17.</a>&nbsp;
490 Number of MIDI instruments changed<br />
491 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.18.</a>&nbsp;
492 MIDI instrument information changed<br />
493 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.19.</a>&nbsp;
494 Global settings changed<br />
495 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.20.</a>&nbsp;
496 Number of database instrument directories changed<br />
497 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.21.</a>&nbsp;
498 Database instrument directory information changed<br />
499 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.22.</a>&nbsp;
500 Number of database instruments changed<br />
501 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.23.</a>&nbsp;
502 Database instrument information changed<br />
503 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.24.</a>&nbsp;
504 Database job status information changed<br />
505 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.25.</a>&nbsp;
506 Miscellaneous and debugging events<br />
507 <a href="#anchor14">9.</a>&nbsp;
508 Security Considerations<br />
509 <a href="#anchor15">10.</a>&nbsp;
510 Acknowledgments<br />
511 <a href="#rfc.references1">11.</a>&nbsp;
512 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 <table 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
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 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 </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 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 </p>
540 <p>
541 </p>
542 <blockquote class="text">
543 <p>C: "some line"
544 </p>
545 <p>&nbsp;&nbsp;&nbsp;"another line"
546 </p>
547 </blockquote><p>
548
549 </p>
550 <p>must actually be interpreted as client sending the following
551 message:
552 </p>
553 <p>
554 </p>
555 <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 </blockquote><p>
560
561 </p>
562 <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 <p>
570 </p>
571 <blockquote class="text">
572 <p>S: "abcd"
573 </p>
574 </blockquote><p>
575
576 </p>
577 <p>could also happen to be sent in three messages like in the
578 following sequence scenario:
579 </p>
580 <p>
581 </p>
582 <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 </ul><p>
598
599 </p>
600 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
601 return and line feed characters respectively.
602 </p>
603 <a name="LSCP versioning"></a><br /><hr />
604 <table 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
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
613 </p>
614 <p>
615 </p>
616 <blockquote class="text">
617 <p>"1.2"
618 </p>
619 </blockquote><p>
620
621 </p>
622 <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
631 </p>
632 <p>Compatibility:
633 </p>
634 <p>
635 </p>
636 <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 </ol><p>
644
645 </p>
646 <p>
647 Compatibility can only be claimed if both rules are true.
648 The frontend can use the
649 <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 get the version of the LSCP specification the sampler complies with.
651
652 </p>
653 <a name="anchor2"></a><br /><hr />
654 <table 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
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 channel will be associated with an instance of one of the available
670 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 <table 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
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 <table 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
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 <a name="anchor5"></a><br /><hr />
705 <table 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
709 <p>This simple communication method is based on
710 <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 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 <a name="anchor6"></a><br /><hr />
751 <table 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
755 <p>Result set could be one of the following types:
756 </p>
757 <p>
758 </p>
759 <ol class="text">
760 <li>Normal
761 </li>
762 <li>Warning
763 </li>
764 <li>Error
765 </li>
766 </ol><p>
767
768 </p>
769 <p>Warning and Error result sets MUST be single line and
770 have the following format:
771 </p>
772 <p>
773 </p>
774 <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 </ul><p>
780
781 </p>
782 <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 <p>
791 </p>
792 <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 </blockquote><p>
798
799 </p>
800 <p>
801 </p>
802 <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 </blockquote><p>
808
809 </p>
810 <p>
811 </p>
812 <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 </blockquote><p>
818
819 </p>
820 <p>Normal result sets could be:
821 </p>
822 <p>
823 </p>
824 <ol class="text">
825 <li>Empty
826 </li>
827 <li>Single line
828 </li>
829 <li>Multi-line
830 </li>
831 </ol><p>
832
833 </p>
834 <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 <p>
841 </p>
842 <blockquote class="text">
843 <p>"OK"
844 </p>
845 </blockquote><p>
846
847 </p>
848 <p>Example:
849 </p>
850 <p>
851 </p>
852 <blockquote class="text">
853 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
854 </p>
855 <p>S: "OK"
856 </p>
857 </blockquote><p>
858
859 </p>
860 <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 <p>
867 </p>
868 <blockquote class="text">
869 <p>"."
870 </p>
871 </blockquote><p>
872
873 </p>
874 <p>Example:
875 </p>
876 <p>
877 </p>
878 <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 </blockquote><p>
898
899 </p>
900 <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 <p>
905 </p>
906 <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 </ul><p>
912
913 </p>
914 <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 <p>
924 </p>
925 <blockquote class="text">
926 <p>C: "ADD CHANNEL"
927 </p>
928 <p>S: "OK[12]"
929 </p>
930 </blockquote><p>
931
932 </p>
933 <p>
934 </p>
935 <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 </blockquote><p>
941
942 </p>
943 <a name="anchor7"></a><br /><hr />
944 <table 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
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 <p>
959 </p>
960 <blockquote class="text">
961 <p>SUBSCRIBE &lt;event-id&gt;
962 </p>
963 </blockquote><p>
964
965 </p>
966 <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 <p>
976 </p>
977 <blockquote class="text">
978 <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
979 </p>
980 </blockquote><p>
981
982 </p>
983 <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 <p>
991 </p>
992 <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 </ol><p>
1007
1008 </p>
1009 <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 <p>
1014 </p>
1015 <blockquote class="text">
1016 <p>UNSUBSCRIBE &lt;event-id&gt;
1017 </p>
1018 </blockquote><p>
1019
1020 </p>
1021 <p>where &lt;event-id&gt; will be replace by the respective
1022 event that client is no longer interested in receiving. For
1023 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 </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 <p>
1031 </p>
1032 <blockquote class="text">
1033 <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1034 </p>
1035 </blockquote><p>
1036
1037 </p>
1038 <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 <a name="control_commands"></a><br /><hr />
1069 <table 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
1073 <p>This chapter will describe the available control commands
1074 that can be sent on the TCP connection in detail. Some certain
1075 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 multiple-line responses. In this case LinuxSampler signals the
1078 end of the response by a "." (single dot) line.
1079 </p>
1080 <a name="anchor8"></a><br /><hr />
1081 <table 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
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 <a name="anchor9"></a><br /><hr />
1092 <table 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
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 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1128 <table 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
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 <p>
1137 </p>
1138 <blockquote class="text">
1139 <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1140 </p>
1141 </blockquote><p>
1142
1143 </p>
1144 <p>Possible Answers:
1145 </p>
1146 <p>
1147 </p>
1148 <blockquote class="text">
1149 <p>LinuxSampler will answer by sending the
1150 number of audio output drivers.
1151 </p>
1152 </blockquote><p>
1153
1154 </p>
1155 <p>Example:
1156 </p>
1157 <p>
1158 </p>
1159 <blockquote class="text">
1160 <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1161 </p>
1162 <p>S: "2"
1163 </p>
1164 </blockquote><p>
1165
1166 </p>
1167 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1168 <table 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
1172 <p>Use the following command to list all audio output
1173 drivers currently available for the LinuxSampler
1174 instance:
1175 </p>
1176 <p>
1177 </p>
1178 <blockquote class="text">
1179 <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1180 </p>
1181 </blockquote><p>
1182
1183 </p>
1184 <p>Possible Answers:
1185 </p>
1186 <p>
1187 </p>
1188 <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 </blockquote><p>
1194
1195 </p>
1196 <p>Example:
1197 </p>
1198 <p>
1199 </p>
1200 <blockquote class="text">
1201 <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1202 </p>
1203 <p>S: "ALSA,JACK"
1204 </p>
1205 </blockquote><p>
1206
1207 </p>
1208 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1209 <table 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 output driver</h3>
1213
1214 <p>Use the following command to get detailed information
1215 about a specific audio output driver:
1216 </p>
1217 <p>
1218 </p>
1219 <blockquote class="text">
1220 <p>GET AUDIO_OUTPUT_DRIVER INFO
1221 &lt;audio-output-driver&gt;
1222 </p>
1223 </blockquote><p>
1224
1225 </p>
1226 <p>Where &lt;audio-output-driver&gt; is the name of the
1227 audio output driver, returned by the
1228 <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 </p>
1230 <p>Possible Answers:
1231 </p>
1232 <p>
1233 </p>
1234 <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 <p>
1245 </p>
1246 <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 </blockquote>
1254
1255
1256 <p>VERSION -
1257 </p>
1258 <blockquote class="text">
1259 <p>character string reflecting the
1260 driver's version
1261 </p>
1262 </blockquote>
1263
1264
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 </blockquote>
1276
1277
1278 </blockquote>
1279
1280
1281 <p>The mentioned fields above don't have to be
1282 in particular order.
1283 </p>
1284 </blockquote><p>
1285
1286 </p>
1287 <p>Example:
1288 </p>
1289 <p>
1290 </p>
1291 <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 </blockquote><p>
1306
1307 </p>
1308 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1309 <table 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 output driver parameter</h3>
1313
1314 <p>Use the following command to get detailed information
1315 about a specific audio output driver parameter:
1316 </p>
1317 <p>
1318 </p>
1319 <blockquote class="text">
1320 <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1321 </p>
1322 </blockquote><p>
1323
1324 </p>
1325 <p>Where &lt;audio&gt; is the name of the audio output
1326 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 &lt;prm&gt; a specific parameter name for which information should be
1328 obtained (as returned by the
1329 <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 &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 <p>
1341 </p>
1342 <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 </blockquote><p>
1355
1356 </p>
1357 <p>
1358 </p>
1359 <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 </blockquote>
1370
1371
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 </blockquote>
1379
1380
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 <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 command (always returned, no matter which driver parameter)
1388 </p>
1389 </blockquote>
1390
1391
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 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 command (always returned, no matter which driver parameter)
1399 </p>
1400 </blockquote>
1401
1402
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 </blockquote>
1412
1413
1414 <p>DEPENDS -
1415 </p>
1416 <blockquote class="text">
1417 <p>comma separated list of parameters this parameter depends
1418 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 </blockquote>
1429
1430
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 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 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 </blockquote>
1443
1444
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 </blockquote>
1455
1456
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 </blockquote>
1467
1468
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 </blockquote>
1478
1479
1480 </blockquote><p>
1481
1482 </p>
1483 <p>The mentioned fields above don't have to be in particular order.
1484 </p>
1485 <p>Examples:
1486 </p>
1487 <p>
1488 </p>
1489 <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 </blockquote><p>
1509
1510 </p>
1511 <p>
1512 </p>
1513 <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 </blockquote><p>
1533
1534 </p>
1535 <p>
1536 </p>
1537 <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 </blockquote><p>
1561
1562 </p>
1563 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1564 <table 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
1568 <p>Use the following command to create a new audio output device for the desired audio output system:
1569 </p>
1570 <p>
1571 </p>
1572 <blockquote class="text">
1573 <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1574 </p>
1575 </blockquote><p>
1576
1577 </p>
1578 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1579 output system as returned by the
1580 <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 command and &lt;param-list&gt; by an optional list of driver
1582 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 <p>
1591 </p>
1592 <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 </blockquote>
1600
1601
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 </blockquote>
1613
1614
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 </blockquote>
1621
1622
1623 </blockquote><p>
1624
1625 </p>
1626 <p>Examples:
1627 </p>
1628 <p>
1629 </p>
1630 <blockquote class="text">
1631 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1632 </p>
1633 <p>S: "OK[0]"
1634 </p>
1635 </blockquote><p>
1636
1637 </p>
1638 <p>
1639 </p>
1640 <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 </blockquote><p>
1646
1647 </p>
1648 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1649 <table 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
1653 <p>Use the following command to destroy a created output device:
1654 </p>
1655 <p>
1656 </p>
1657 <blockquote class="text">
1658 <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1659 </p>
1660 </blockquote><p>
1661
1662 </p>
1663 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1664 audio output device as given by the
1665 <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 command.
1668 </p>
1669 <p>Possible Answers:
1670 </p>
1671 <p>
1672 </p>
1673 <blockquote class="text">
1674 <p>"OK" -
1675 </p>
1676 <blockquote class="text">
1677 <p>in case the device was successfully destroyed
1678 </p>
1679 </blockquote>
1680
1681
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 </blockquote>
1692
1693
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 </blockquote>
1701
1702
1703 </blockquote><p>
1704
1705 </p>
1706 <p>Example:
1707 </p>
1708 <p>
1709 </p>
1710 <blockquote class="text">
1711 <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1712 </p>
1713 <p>S: "OK"
1714 </p>
1715 </blockquote><p>
1716
1717 </p>
1718 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1719 <table 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
1723 <p>Use the following command to count all created audio output devices:
1724 </p>
1725 <p>
1726 </p>
1727 <blockquote class="text">
1728 <p>GET AUDIO_OUTPUT_DEVICES
1729 </p>
1730 </blockquote><p>
1731
1732 </p>
1733 <p>Possible Answers:
1734 </p>
1735 <p>
1736 </p>
1737 <blockquote class="text">
1738 <p>LinuxSampler will answer by sending the current number of all
1739 audio output devices.
1740 </p>
1741 </blockquote><p>
1742
1743 </p>
1744 <p>Example:
1745 </p>
1746 <p>
1747 </p>
1748 <blockquote class="text">
1749 <p>C: "GET AUDIO_OUTPUT_DEVICES"
1750 </p>
1751 <p>S: "4"
1752 </p>
1753 </blockquote><p>
1754
1755 </p>
1756 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1757 <table 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
1761 <p>Use the following command to list all created audio output devices:
1762 </p>
1763 <p>
1764 </p>
1765 <blockquote class="text">
1766 <p>LIST AUDIO_OUTPUT_DEVICES
1767 </p>
1768 </blockquote><p>
1769
1770 </p>
1771 <p>Possible Answers:
1772 </p>
1773 <p>
1774 </p>
1775 <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 </blockquote><p>
1780
1781 </p>
1782 <p>Example:
1783 </p>
1784 <p>
1785 </p>
1786 <blockquote class="text">
1787 <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1788 </p>
1789 <p>S: "0,1,4,5"
1790 </p>
1791 </blockquote><p>
1792
1793 </p>
1794 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1795 <table 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
1799 <p>Use the following command to get current settings of a specific, created audio output device:
1800 </p>
1801 <p>
1802 </p>
1803 <blockquote class="text">
1804 <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1805 </p>
1806 </blockquote><p>
1807
1808 </p>
1809 <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 <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 </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 <p>
1824 </p>
1825 <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 <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 command
1833 </p>
1834 </blockquote>
1835
1836
1837 <p>CHANNELS -
1838 </p>
1839 <blockquote class="text">
1840 <p>amount of audio output channels this device currently
1841 offers
1842 </p>
1843 </blockquote>
1844
1845
1846 <p>SAMPLERATE -
1847 </p>
1848 <blockquote class="text">
1849 <p>playback sample rate the device uses
1850 </p>
1851 </blockquote>
1852
1853
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 </blockquote>
1863
1864
1865 </blockquote><p>
1866
1867 </p>
1868 <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 <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 which are also returned by this command.
1874 </p>
1875 <p>Example:
1876 </p>
1877 <p>
1878 </p>
1879 <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 </blockquote><p>
1899
1900 </p>
1901 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1902 <table 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
1906 <p>Use the following command to alter a specific setting of a created audio output device:
1907 </p>
1908 <p>
1909 </p>
1910 <blockquote class="text">
1911 <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1912 </p>
1913 </blockquote><p>
1914
1915 </p>
1916 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1917 audio output device as given by the
1918 <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 command, &lt;key&gt; by the name of the parameter to change
1921 and &lt;value&gt; by the new value for this parameter.
1922 </p>
1923 <p>Possible Answers:
1924 </p>
1925 <p>
1926 </p>
1927 <blockquote class="text">
1928 <p>"OK" -
1929 </p>
1930 <blockquote class="text">
1931 <p>in case setting was successfully changed
1932 </p>
1933 </blockquote>
1934
1935
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 </blockquote>
1944
1945
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 </blockquote>
1953
1954
1955 </blockquote><p>
1956
1957 </p>
1958 <p>Example:
1959 </p>
1960 <p>
1961 </p>
1962 <blockquote class="text">
1963 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1964 </p>
1965 <p>S: "OK"
1966 </p>
1967 </blockquote><p>
1968
1969 </p>
1970 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
1971 <table 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
1975 <p>Use the following command to get information about an audio channel:
1976 </p>
1977 <p>
1978 </p>
1979 <blockquote class="text">
1980 <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1981 </p>
1982 </blockquote><p>
1983
1984 </p>
1985 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1986 <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 command and &lt;audio-chan&gt; the audio channel number.
1989 </p>
1990 <p>Possible Answers:
1991 </p>
1992 <p>
1993 </p>
1994 <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 <p>
2002 </p>
2003 <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 </blockquote>
2011
2012
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 </blockquote>
2024
2025
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 </blockquote>
2036
2037
2038 </blockquote>
2039
2040
2041 </blockquote><p>
2042
2043 </p>
2044 <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 <p>
2054 </p>
2055 <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 </blockquote><p>
2065
2066 </p>
2067 <p>
2068 </p>
2069 <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 </blockquote><p>
2079
2080 </p>
2081 <p>
2082 </p>
2083 <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 </blockquote><p>
2095
2096 </p>
2097 <p>
2098 </p>
2099 <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 </blockquote><p>
2111
2112 </p>
2113 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2114 <table 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
2118 <p>Use the following command to get detailed information about specific audio channel parameter:
2119 </p>
2120 <p>
2121 </p>
2122 <blockquote class="text">
2123 <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2124 </p>
2125 </blockquote><p>
2126
2127 </p>
2128 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2129 <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 command, &lt;chan&gt; the audio channel number
2132 and &lt;param&gt; a specific channel parameter name for which information should
2133 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 </p>
2135 <p>Possible Answers:
2136 </p>
2137 <p>
2138 </p>
2139 <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 <p>
2150 </p>
2151 <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 </blockquote>
2161
2162
2163 <p>DESCRIPTION -
2164 </p>
2165 <blockquote class="text">
2166 <p>arbitrary text describing the purpose of the parameter (always returned)
2167 </p>
2168 </blockquote>
2169
2170
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 </blockquote>
2179
2180
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 </blockquote>
2190
2191
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 </blockquote>
2203
2204
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 </blockquote>
2216
2217
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 </blockquote>
2228
2229
2230 </blockquote>
2231
2232
2233 <p>The mentioned fields above don't have to be in particular order.
2234 </p>
2235 </blockquote><p>
2236
2237 </p>
2238 <p>Example:
2239 </p>
2240 <p>
2241 </p>
2242 <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 </blockquote><p>
2258
2259 </p>
2260 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2261 <table 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
2265 <p>Use the following command to alter a specific setting of an audio output channel:
2266 </p>
2267 <p>
2268 </p>
2269 <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 </blockquote><p>
2273
2274 </p>
2275 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2276 <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 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2279 parameter to change and &lt;value&gt; by the new value for this parameter.
2280 </p>
2281 <p>Possible Answers:
2282 </p>
2283 <p>
2284 </p>
2285 <blockquote class="text">
2286 <p>"OK" -
2287 </p>
2288 <blockquote class="text">
2289 <p>in case setting was successfully changed
2290 </p>
2291 </blockquote>
2292
2293
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 </blockquote>
2302
2303
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 </blockquote>
2311
2312
2313 </blockquote><p>
2314
2315 </p>
2316 <p>Example:
2317 </p>
2318 <p>
2319 </p>
2320 <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 </blockquote><p>
2326
2327 </p>
2328 <p>
2329 </p>
2330 <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 </blockquote><p>
2336
2337 </p>
2338 <a name="anchor10"></a><br /><hr />
2339 <table 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
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 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2370 <table 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
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 <p>
2379 </p>
2380 <blockquote class="text">
2381 <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2382 </p>
2383 </blockquote><p>
2384
2385 </p>
2386 <p>Possible Answers:
2387 </p>
2388 <p>
2389 </p>
2390 <blockquote class="text">
2391 <p>LinuxSampler will answer by sending the
2392 number of available MIDI input drivers.
2393 </p>
2394 </blockquote><p>
2395
2396 </p>
2397 <p>Example:
2398 </p>
2399 <p>
2400 </p>
2401 <blockquote class="text">
2402 <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2403 </p>
2404 <p>S: "2"
2405 </p>
2406 </blockquote><p>
2407
2408 </p>
2409 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2410 <table 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
2414 <p>Use the following command to list all MIDI input drivers currently available
2415 for the LinuxSampler instance:
2416 </p>
2417 <p>
2418 </p>
2419 <blockquote class="text">
2420 <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2421 </p>
2422 </blockquote><p>
2423
2424 </p>
2425 <p>Possible Answers:
2426 </p>
2427 <p>
2428 </p>
2429 <blockquote class="text">
2430 <p>LinuxSampler will answer by sending comma separated character
2431 strings, each symbolizing a MIDI input driver.
2432 </p>
2433 </blockquote><p>
2434
2435 </p>
2436 <p>Example:
2437 </p>
2438 <p>
2439 </p>
2440 <blockquote class="text">
2441 <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2442 </p>
2443 <p>S: "ALSA,JACK"
2444 </p>
2445 </blockquote><p>
2446
2447 </p>
2448 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2449 <table 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
2453 <p>Use the following command to get detailed information about a specific MIDI input driver:
2454 </p>
2455 <p>
2456 </p>
2457 <blockquote class="text">
2458 <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2459 </p>
2460 </blockquote><p>
2461
2462 </p>
2463 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2464 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 </p>
2466 <p>Possible Answers:
2467 </p>
2468 <p>
2469 </p>
2470 <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 <p>
2478 </p>
2479 <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 </blockquote>
2486
2487
2488 <p>VERSION -
2489 </p>
2490 <blockquote class="text">
2491 <p>arbitrary character string regarding the driver's version
2492 </p>
2493 </blockquote>
2494
2495
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 </blockquote>
2502
2503
2504 </blockquote>
2505
2506
2507 <p>The mentioned fields above don't have to be in particular order.
2508 </p>
2509 </blockquote><p>
2510
2511 </p>
2512 <p>Example:
2513 </p>
2514 <p>
2515 </p>
2516 <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 </blockquote><p>
2528
2529 </p>
2530 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2531 <table 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
2535 <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2536 </p>
2537 <p>
2538 </p>
2539 <blockquote class="text">
2540 <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2541 </p>
2542 </blockquote><p>
2543
2544 </p>
2545 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2546 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 parameter name for which information should be obtained (as returned by the
2548 <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 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 <p>
2568 </p>
2569 <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 </blockquote>
2579
2580
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 </blockquote>
2588
2589
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 <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 (always returned, no matter which driver parameter)
2597 </p>
2598 </blockquote>
2599
2600
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 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 (always returned, no matter which driver parameter)
2608 </p>
2609 </blockquote>
2610
2611
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 </blockquote>
2621
2622
2623 <p>DEPENDS -
2624 </p>
2625 <blockquote class="text">
2626 <p>comma separated list of parameters this parameter depends
2627 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 </blockquote>
2638
2639
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 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 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 </blockquote>
2652
2653
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 </blockquote>
2664
2665
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 </blockquote>
2676
2677
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 </blockquote>
2687
2688
2689 </blockquote><p>
2690
2691 </p>
2692 <p>The mentioned fields above don't have to be in particular order.
2693 </p>
2694 <p>Example:
2695 </p>
2696 <p>
2697 </p>
2698 <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 </blockquote><p>
2716
2717 </p>
2718 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2719 <table 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
2723 <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2724 </p>
2725 <p>
2726 </p>
2727 <blockquote class="text">
2728 <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2729 </p>
2730 </blockquote><p>
2731
2732 </p>
2733 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2734 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 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 <p>
2744 </p>
2745 <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 </blockquote>
2753
2754
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 </blockquote>
2764
2765
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 </blockquote>
2772
2773
2774 </blockquote><p>
2775
2776 </p>
2777 <p>Example:
2778 </p>
2779 <p>
2780 </p>
2781 <blockquote class="text">
2782 <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2783 </p>
2784 <p>S: "OK[0]"
2785 </p>
2786 </blockquote><p>
2787
2788 </p>
2789 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2790 <table 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
2794 <p>Use the following command to destroy a created MIDI input device:
2795 </p>
2796 <p>
2797 </p>
2798 <blockquote class="text">
2799 <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2800 </p>
2801 </blockquote><p>
2802
2803 </p>
2804 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2805 <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 command.
2808 </p>
2809 <p>Possible Answers:
2810 </p>
2811 <p>
2812 </p>
2813 <blockquote class="text">
2814 <p>"OK" -
2815 </p>
2816 <blockquote class="text">
2817 <p>in case the device was successfully destroyed
2818 </p>
2819 </blockquote>
2820
2821
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 </blockquote>
2830
2831
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 </blockquote>
2838
2839
2840 </blockquote><p>
2841
2842 </p>
2843 <p>Example:
2844 </p>
2845 <p>
2846 </p>
2847 <blockquote class="text">
2848 <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2849 </p>
2850 <p>S: "OK"
2851 </p>
2852 </blockquote><p>
2853
2854 </p>
2855 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2856 <table 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
2860 <p>Use the following command to count all created MIDI input devices:
2861 </p>
2862 <p>
2863 </p>
2864 <blockquote class="text">
2865 <p>GET MIDI_INPUT_DEVICES
2866 </p>
2867 </blockquote><p>
2868
2869 </p>
2870 <p>Possible Answers:
2871 </p>
2872 <p>
2873 </p>
2874 <blockquote class="text">
2875 <p>LinuxSampler will answer by sending the current number of all
2876 MIDI input devices.
2877 </p>
2878 </blockquote><p>
2879
2880 </p>
2881 <p>Example:
2882 </p>
2883 <p>
2884 </p>
2885 <blockquote class="text">
2886 <p>C: "GET MIDI_INPUT_DEVICES"
2887 </p>
2888 <p>S: "3"
2889 </p>
2890 </blockquote><p>
2891
2892 </p>
2893 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2894 <table 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
2898 <p>Use the following command to list all created MIDI input devices:
2899 </p>
2900 <p>
2901 </p>
2902 <blockquote class="text">
2903 <p>LIST MIDI_INPUT_DEVICES
2904 </p>
2905 </blockquote><p>
2906
2907 </p>
2908 <p>Possible Answers:
2909 </p>
2910 <p>
2911 </p>
2912 <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 </blockquote><p>
2917
2918 </p>
2919 <p>Examples:
2920 </p>
2921 <p>
2922 </p>
2923 <blockquote class="text">
2924 <p>C: "LIST MIDI_INPUT_DEVICES"
2925 </p>
2926 <p>S: "0,1,2"
2927 </p>
2928 </blockquote><p>
2929
2930 </p>
2931 <p>
2932 </p>
2933 <blockquote class="text">
2934 <p>C: "LIST MIDI_INPUT_DEVICES"
2935 </p>
2936 <p>S: "1,3"
2937 </p>
2938 </blockquote><p>
2939
2940 </p>
2941 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2942 <table 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
2946 <p>Use the following command to get current settings of a specific, created MIDI input device:
2947 </p>
2948 <p>
2949 </p>
2950 <blockquote class="text">
2951 <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2952 </p>
2953 </blockquote><p>
2954
2955 </p>
2956 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2957 <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 command.
2960 </p>
2961 <p>Possible Answers:
2962 </p>
2963 <p>
2964 </p>
2965 <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 <p>
2975 </p>
2976 <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 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 command
2983 </p>
2984 </blockquote>
2985
2986
2987 </blockquote>
2988
2989 <blockquote class="text">
2990 <p>ACTIVE -
2991 </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 </blockquote>
2999
3000
3001 </blockquote>
3002
3003
3004 </blockquote><p>
3005
3006 </p>
3007 <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 <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 by this command.
3013 </p>
3014 <p>Example:
3015 </p>
3016 <p>
3017 </p>
3018 <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 </blockquote><p>
3028
3029 </p>
3030 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3031 <table 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
3035 <p>Use the following command to alter a specific setting of a created MIDI input device:
3036 </p>
3037 <p>
3038 </p>
3039 <blockquote class="text">
3040 <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3041 </p>
3042 </blockquote><p>
3043
3044 </p>
3045 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3046 MIDI input device as returned by the
3047 <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 command, &lt;key&gt; by the name of the parameter to change and
3050 &lt;value&gt; by the new value for this parameter.
3051 </p>
3052 <p>Possible Answers:
3053 </p>
3054 <p>
3055 </p>
3056 <blockquote class="text">
3057 <p>"OK" -
3058 </p>
3059 <blockquote class="text">
3060 <p>in case setting was successfully changed
3061 </p>
3062 </blockquote>
3063
3064
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 </blockquote>
3073
3074
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 </blockquote>
3081
3082
3083 </blockquote><p>
3084
3085 </p>
3086 <p>Example:
3087 </p>
3088 <p>
3089 </p>
3090 <blockquote class="text">
3091 <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3092 </p>
3093 <p>S: "OK"
3094 </p>
3095 </blockquote><p>
3096
3097 </p>
3098 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3099 <table 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
3103 <p>Use the following command to get information about a MIDI port:
3104 </p>
3105 <p>
3106 </p>
3107 <blockquote class="text">
3108 <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3109 </p>
3110 </blockquote><p>
3111
3112 </p>
3113 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3114 <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 command and &lt;midi-port&gt; the MIDI input port number.
3117 </p>
3118 <p>Possible Answers:
3119 </p>
3120 <p>
3121 </p>
3122 <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 </blockquote>
3135
3136
3137 </blockquote><p>
3138
3139 </p>
3140 <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 <p>
3148 </p>
3149 <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 </blockquote><p>
3159
3160 </p>
3161 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3162 <table 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
3166 <p>Use the following command to get detailed information about specific MIDI port parameter:
3167 </p>
3168 <p>
3169 </p>
3170 <blockquote class="text">
3171 <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3172 </p>
3173 </blockquote><p>
3174
3175 </p>
3176 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3177 <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 command, &lt;port&gt; the MIDI port number and
3180 &lt;param&gt; a specific port parameter name for which information should be
3181 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 </p>
3183 <p>Possible Answers:
3184 </p>
3185 <p>
3186 </p>
3187 <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 </blockquote>
3206
3207
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 </blockquote>
3215
3216
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 </blockquote>
3225
3226
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 </blockquote>
3236
3237
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 </blockquote>
3249
3250
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 </blockquote>
3262
3263
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 </blockquote>
3274
3275
3276 </blockquote><p>
3277
3278 </p>
3279 <p>The mentioned fields above don't have to be in particular order.
3280 </p>
3281 <p>Example:
3282 </p>
3283 <p>
3284 </p>
3285 <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 </blockquote><p>
3301
3302 </p>
3303 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3304 <table 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
3308 <p>Use the following command to alter a specific setting of a MIDI input port:
3309 </p>
3310 <p>
3311 </p>
3312 <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 </blockquote><p>
3316
3317 </p>
3318 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3319 MIDI device as returned by the
3320 <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 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3323 the parameter to change and &lt;value&gt; by the new value for this
3324 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3325 for specifying no value for parameters allowing a list of values.
3326 </p>
3327 <p>Possible Answers:
3328 </p>
3329 <p>
3330 </p>
3331 <blockquote class="text">
3332 <p>"OK" -
3333 </p>
3334 <blockquote class="text">
3335 <p>in case setting was successfully changed
3336 </p>
3337 </blockquote>
3338
3339
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 </blockquote>
3348
3349
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 </blockquote>
3356
3357
3358 </blockquote><p>
3359
3360 </p>
3361 <p>Example:
3362 </p>
3363 <p>
3364 </p>
3365 <blockquote class="text">
3366 <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 <p>
3374 </p>
3375 <blockquote class="text">
3376 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3377 </p>
3378 <p>S: "OK"
3379 </p>
3380 </blockquote><p>
3381
3382 </p>
3383 <a name="anchor11"></a><br /><hr />
3384 <table 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
3388 <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 </p>
3392 <a name="LOAD INSTRUMENT"></a><br /><hr />
3393 <table 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
3397 <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3398 </p>
3399 <p>
3400 </p>
3401 <blockquote class="text">
3402 <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3403 </p>
3404 </blockquote><p>
3405
3406 </p>
3407 <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 <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 <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 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 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 <p>
3433 </p>
3434 <blockquote class="text">
3435 <p>"OK" -
3436 </p>
3437 <blockquote class="text">
3438 <p>in case the instrument was successfully loaded
3439 </p>
3440 </blockquote>
3441
3442
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 </blockquote>
3453
3454
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 </blockquote>
3461
3462
3463 </blockquote><p>
3464
3465 </p>
3466 <p>Example (Unix):
3467 </p>
3468 <p>
3469 </p>
3470 <blockquote class="text">
3471 <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 <p>
3481 </p>
3482 <blockquote class="text">
3483 <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3484 </p>
3485 <p>S: OK
3486 </p>
3487 </blockquote><p>
3488
3489 </p>
3490 <a name="LOAD ENGINE"></a><br /><hr />
3491 <table 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
3495 <p>A sampler engine type can be associated to a specific sampler
3496 channel by the following command:
3497 </p>
3498 <p>
3499 </p>
3500 <blockquote class="text">
3501 <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3502 </p>
3503 </blockquote><p>
3504
3505 </p>
3506 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3507 <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 the sampler channel as returned by the
3509 <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 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 </p>
3520 <p>Possible Answers:
3521 </p>
3522 <p>
3523 </p>
3524 <blockquote class="text">
3525 <p>"OK" -
3526 </p>
3527 <blockquote class="text">
3528 <p>in case the engine was successfully deployed
3529 </p>
3530 </blockquote>
3531
3532
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 </blockquote>
3541
3542
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 </blockquote>
3550
3551
3552 </blockquote><p>
3553
3554 </p>
3555 <p>Example:
3556 </p>
3557 <p>
3558 </p>
3559 <blockquote class="text">
3560 <p>
3561 </p>
3562 </blockquote><p>
3563
3564 </p>
3565 <a name="GET CHANNELS"></a><br /><hr />
3566 <table 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
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 <p>
3575 </p>
3576 <blockquote class="text">
3577 <p>GET CHANNELS
3578 </p>
3579 </blockquote><p>
3580
3581 </p>
3582 <p>Possible Answers:
3583 </p>
3584 <p>
3585 </p>
3586 <blockquote class="text">
3587 <p>LinuxSampler will answer by returning the current number of sampler channels.
3588 </p>
3589 </blockquote><p>
3590
3591 </p>
3592 <p>Example:
3593 </p>
3594 <p>
3595 </p>
3596 <blockquote class="text">
3597 <p>C: "GET CHANNELS"
3598 </p>
3599 <p>S: "12"
3600 </p>
3601 </blockquote><p>
3602
3603 </p>
3604 <a name="LIST CHANNELS"></a><br /><hr />
3605 <table 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
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 <p>
3614 </p>
3615 <blockquote class="text">
3616 <p>LIST CHANNELS
3617 </p>
3618 </blockquote><p>
3619
3620 </p>
3621 <p>Possible Answers:
3622 </p>
3623 <p>
3624 </p>
3625 <blockquote class="text">
3626 <p>LinuxSampler will answer by returning a comma separated list
3627 with all sampler channels numerical IDs.
3628 </p>
3629 </blockquote><p>
3630
3631 </p>
3632 <p>Example:
3633 </p>
3634 <p>
3635 </p>
3636 <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 </blockquote><p>
3642
3643 </p>
3644 <a name="ADD CHANNEL"></a><br /><hr />
3645 <table 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
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 <p>
3653 </p>
3654 <blockquote class="text">
3655 <p>ADD CHANNEL
3656 </p>
3657 </blockquote><p>
3658
3659 </p>
3660 <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 <p>
3673 </p>
3674 <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 created sampler channel which should be used to set up
3681 the sampler channel by sending subsequent initialization
3682 commands
3683 </p>
3684 </blockquote>
3685
3686
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 </blockquote>
3695
3696
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 </blockquote>
3704
3705
3706 </blockquote><p>
3707
3708 </p>
3709 <p>Example:
3710 </p>
3711 <p>
3712 </p>
3713 <blockquote class="text">
3714 <p>
3715 </p>
3716 </blockquote><p>
3717
3718 </p>
3719 <a name="REMOVE CHANNEL"></a><br /><hr />
3720 <table 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
3724 <p>A sampler channel can be removed by sending the following command:
3725 </p>
3726 <p>
3727 </p>
3728 <blockquote class="text">
3729 <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3730 </p>
3731 </blockquote><p>
3732
3733 </p>
3734 <p>Where &lt;sampler-channel&gt; should be replaced by the
3735 number of the sampler channel as given by the
3736 <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 command. The channel numbers of all subsequent sampler channels
3739 remain the same.
3740 </p>
3741 <p>Possible Answers:
3742 </p>
3743 <p>
3744 </p>
3745 <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 </blockquote>
3752
3753
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 </blockquote>
3762
3763
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 </blockquote>
3771
3772
3773 </blockquote><p>
3774
3775 </p>
3776 <p>Example:
3777 </p>
3778 <p>
3779 </p>
3780 <blockquote class="text">
3781 <p>
3782 </p>
3783 </blockquote><p>
3784
3785 </p>
3786 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3787 <table 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
3791 <p>The front-end can ask for the number of available engines by sending the following command:
3792 </p>
3793 <p>
3794 </p>
3795 <blockquote class="text">
3796 <p>GET AVAILABLE_ENGINES
3797 </p>
3798 </blockquote><p>
3799
3800 </p>
3801 <p>Possible Answers:
3802 </p>
3803 <p>
3804 </p>
3805 <blockquote class="text">
3806 <p>LinuxSampler will answer by sending the number of available engines.
3807 </p>
3808 </blockquote><p>
3809
3810 </p>
3811 <p>Example:
3812 </p>
3813 <p>
3814 </p>
3815 <blockquote class="text">
3816 <p>C: "GET AVAILABLE_ENGINES"
3817 </p>
3818 <p>S: "4"
3819 </p>
3820 </blockquote><p>
3821
3822 </p>
3823 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3824 <table 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
3828 <p>The front-end can ask for a list of all available engines by sending the following command:
3829 </p>
3830 <p>
3831 </p>
3832 <blockquote class="text">
3833 <p>LIST AVAILABLE_ENGINES
3834 </p>
3835 </blockquote><p>
3836
3837 </p>
3838 <p>Possible Answers:
3839 </p>
3840 <p>
3841 </p>
3842 <blockquote class="text">
3843 <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 </p>
3848 </blockquote><p>
3849
3850 </p>
3851 <p>Example:
3852 </p>
3853 <p>
3854 </p>
3855 <blockquote class="text">
3856 <p>C: "LIST AVAILABLE_ENGINES"
3857 </p>
3858 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3859 </p>
3860 </blockquote><p>
3861
3862 </p>
3863 <a name="GET ENGINE INFO"></a><br /><hr />
3864 <table 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
3868 <p>The front-end can ask for information about a specific engine by
3869 sending the following command:
3870 </p>
3871 <p>
3872 </p>
3873 <blockquote class="text">
3874 <p>GET ENGINE INFO &lt;engine-name&gt;
3875 </p>
3876 </blockquote><p>
3877
3878 </p>
3879 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3880 <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 </p>
3882 <p>Possible Answers:
3883 </p>
3884 <p>
3885 </p>
3886 <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 <p>
3894 </p>
3895 <blockquote class="text">
3896 <p>DESCRIPTION -
3897 </p>
3898 <blockquote class="text">
3899 <p>arbitrary description text about the engine
3900 (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 </p>
3903 </blockquote>
3904
3905
3906 <p>VERSION -
3907 </p>
3908 <blockquote class="text">
3909 <p>arbitrary character string regarding the engine's version
3910 </p>
3911 </blockquote>
3912
3913
3914 </blockquote>
3915
3916
3917 </blockquote><p>
3918
3919 </p>
3920 <p>The mentioned fields above don't have to be in particular order.
3921 </p>
3922 <p>Example:
3923 </p>
3924 <p>
3925 </p>
3926 <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 </blockquote><p>
3936
3937 </p>
3938 <a name="GET CHANNEL INFO"></a><br /><hr />
3939 <table 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
3943 <p>The front-end can ask for the current settings of a sampler channel
3944 by sending the following command:
3945 </p>
3946 <p>
3947 </p>
3948 <blockquote class="text">
3949 <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3950 </p>
3951 </blockquote><p>
3952
3953 </p>
3954 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3955 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 </p>
3958 <p>Possible Answers:
3959 </p>
3960 <p>
3961 </p>
3962 <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 <p>
3970 </p>
3971 <blockquote class="text">
3972 <p>ENGINE_NAME -
3973 </p>
3974 <blockquote class="text">
3975 <p>name of the engine that is associated with the sampler
3976 channel, "NONE" if there's no engine associated yet for
3977 this sampler channel
3978 </p>
3979 </blockquote>
3980
3981
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 </blockquote>
3991
3992
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 </blockquote>
4000
4001
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 </blockquote>
4014
4015
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 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 </p>
4024 </blockquote>
4025
4026
4027 <p>INSTRUMENT_NR -
4028 </p>
4029 <blockquote class="text">
4030 <p>the instrument index number of the loaded instrument
4031 </p>
4032 </blockquote>
4033
4034
4035 <p>INSTRUMENT_NAME -
4036 </p>
4037 <blockquote class="text">
4038 <p>the instrument name of the loaded instrument
4039 (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 </p>
4042 </blockquote>
4043
4044
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 </blockquote>
4053
4054
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 </blockquote>
4064
4065
4066 <p>MIDI_INPUT_PORT -
4067 </p>
4068 <blockquote class="text">
4069 <p>port number of the MIDI input device
4070 </p>
4071 </blockquote>
4072
4073
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 </blockquote>
4081
4082
4083 <p>VOLUME -
4084 </p>
4085 <blockquote class="text">
4086 <p>optionally dotted number for the channel volume factor
4087 (where a value &lt; 1.0 means attenuation and a value >
4088 1.0 means amplification)
4089 </p>
4090 </blockquote>
4091
4092
4093 <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 </blockquote>
4103
4104
4105 <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 </blockquote>
4112
4113
4114 <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 </blockquote>
4123
4124
4125 </blockquote>
4126
4127
4128 </blockquote><p>
4129
4130 </p>
4131 <p>The mentioned fields above don't have to be in particular order.
4132 </p>
4133 <p>Example:
4134 </p>
4135 <p>
4136 </p>
4137 <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 <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 <p>&nbsp;&nbsp;&nbsp;"."
4173 </p>
4174 </blockquote><p>
4175
4176 </p>
4177 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4178 <table 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
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 <p>
4186 </p>
4187 <blockquote class="text">
4188 <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4189 </p>
4190 </blockquote><p>
4191
4192 </p>
4193 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4194 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 </p>
4197 <p>Possible Answers:
4198 </p>
4199 <p>
4200 </p>
4201 <blockquote class="text">
4202 <p>LinuxSampler will answer by returning the number of active
4203 voices on that channel.
4204 </p>
4205 </blockquote><p>
4206
4207 </p>
4208 <p>Example:
4209 </p>
4210 <p>
4211 </p>
4212 <blockquote class="text">
4213 <p>
4214 </p>
4215 </blockquote><p>
4216
4217 </p>
4218 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4219 <table 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
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 <p>
4227 </p>
4228 <blockquote class="text">
4229 <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4230 </p>
4231 </blockquote><p>
4232
4233 </p>
4234 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4235 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 </p>
4238 <p>Possible Answers:
4239 </p>
4240 <p>
4241 </p>
4242 <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 </blockquote><p>
4249
4250 </p>
4251 <p>Example:
4252 </p>
4253 <p>
4254 </p>
4255 <blockquote class="text">
4256 <p>
4257 </p>
4258 </blockquote><p>
4259
4260 </p>
4261 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4262 <table 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
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 <p>
4270 </p>
4271 <blockquote class="text">
4272 <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4273 </p>
4274 </blockquote><p>
4275
4276 </p>
4277 <p>to get the fill state in bytes or
4278 </p>
4279 <p>
4280 </p>
4281 <blockquote class="text">
4282 <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4283 </p>
4284 </blockquote><p>
4285
4286 </p>
4287 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4288 sampler channel number the front-end is interested in
4289 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 </p>
4292 <p>Possible Answers:
4293 </p>
4294 <p>
4295 </p>
4296 <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 </blockquote><p>
4309
4310 </p>
4311 <p>Examples:
4312 </p>
4313 <p>
4314 </p>
4315 <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 </blockquote><p>
4321
4322 </p>
4323 <blockquote class="text">
4324 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4325 </p>
4326 <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4327 </p>
4328 </blockquote><p>
4329
4330 </p>
4331 <blockquote class="text">
4332 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4333 </p>
4334 <p>S: ""
4335 </p>
4336 </blockquote><p>
4337
4338 </p>
4339 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4340 <table 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
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 <p>
4348 </p>
4349 <blockquote class="text">
4350 <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4351 </p>
4352 </blockquote><p>
4353
4354 </p>
4355 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4356 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 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4359 <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 command.
4362 </p>
4363 <p>Possible Answers:
4364 </p>
4365 <p>
4366 </p>
4367 <blockquote class="text">
4368 <p>"OK" -
4369 </p>
4370 <blockquote class="text">
4371 <p>on success
4372 </p>
4373 </blockquote>
4374
4375
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 </blockquote>
4384
4385
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 </blockquote>
4392
4393
4394 </blockquote><p>
4395
4396 </p>
4397 <p>Examples:
4398 </p>
4399 <p>
4400 </p>
4401 <blockquote class="text">
4402 <p>
4403 </p>
4404 </blockquote><p>
4405
4406 </p>
4407 <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
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 <p>
4418 </p>
4419 <blockquote class="text">
4420 <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4421 </p>
4422 </blockquote><p>
4423
4424 </p>
4425 <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 <p>
4431 </p>
4432 <blockquote class="text">
4433 <p>"OK" -
4434 </p>
4435 <blockquote class="text">
4436 <p>on success
4437 </p>
4438 </blockquote>
4439
4440
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 </blockquote>
4449
4450
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 </blockquote>
4457
4458
4459 </blockquote><p>
4460
4461 </p>
4462 <p>Examples:
4463 </p>
4464 <p>
4465 </p>
4466 <blockquote class="text">
4467 <p>
4468 </p>
4469 </blockquote><p>
4470
4471 </p>
4472 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4473 <table 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
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 <p>
4481 </p>
4482 <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 </blockquote><p>
4486
4487 </p>
4488 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4489 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 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 <p>
4498 </p>
4499 <blockquote class="text">
4500 <p>"OK" -
4501 </p>
4502 <blockquote class="text">
4503 <p>on success
4504 </p>
4505 </blockquote>
4506
4507
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 </blockquote>
4516
4517
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 </blockquote>
4524
4525
4526 </blockquote><p>
4527
4528 </p>
4529 <p>Examples:
4530 </p>
4531 <p>
4532 </p>
4533 <blockquote class="text">
4534 <p>
4535 </p>
4536 </blockquote><p>
4537
4538 </p>
4539 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4540 <table 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
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 <p>
4548 </p>
4549 <blockquote class="text">
4550 <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4551 </p>
4552 </blockquote><p>
4553
4554 </p>
4555 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4556 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 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4559 <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 </p>
4562 <p>Possible Answers:
4563 </p>
4564 <p>
4565 </p>
4566 <blockquote class="text">
4567 <p>"OK" -
4568 </p>
4569 <blockquote class="text">
4570 <p>on success
4571 </p>
4572 </blockquote>
4573
4574
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 </blockquote>
4583
4584
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 </blockquote>
4591
4592
4593 </blockquote><p>
4594
4595 </p>
4596 <p>Examples:
4597 </p>
4598 <p>
4599 </p>
4600 <blockquote class="text">
4601 <p>
4602 </p>
4603 </blockquote><p>
4604
4605 </p>
4606 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4607 <table 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
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 <p>
4617 </p>
4618 <blockquote class="text">
4619 <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4620 </p>
4621 </blockquote><p>
4622
4623 </p>
4624 <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 <p>
4630 </p>
4631 <blockquote class="text">
4632 <p>"OK" -
4633 </p>
4634 <blockquote class="text">
4635 <p>on success
4636 </p>
4637 </blockquote>
4638
4639
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 </blockquote>
4648
4649
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 </blockquote>
4656
4657
4658 </blockquote><p>
4659
4660 </p>
4661 <p>Examples:
4662 </p>
4663 <p>
4664 </p>
4665 <blockquote class="text">
4666 <p>
4667 </p>
4668 </blockquote><p>
4669
4670 </p>
4671 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4672 <table 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
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 <p>
4680 </p>
4681 <blockquote class="text">
4682 <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4683 </p>
4684 </blockquote><p>
4685
4686 </p>
4687 <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 <p>
4694 </p>
4695 <blockquote class="text">
4696 <p>"OK" -
4697 </p>
4698 <blockquote class="text">
4699 <p>on success
4700 </p>
4701 </blockquote>
4702
4703
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 </blockquote>
4712
4713
4714 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4715 </p>
4716 <blockquote class="text">
4717 <p>in case it failed, providing an appropriate error code and error message
4718 </p>
4719 </blockquote>
4720
4721
4722 </blockquote><p>
4723
4724 </p>
4725 <p>Examples:
4726 </p>
4727 <p>
4728 </p>
4729 <blockquote class="text">
4730 <p>
4731 </p>
4732 </blockquote><p>
4733
4734 </p>
4735 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4736 <table 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
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 <p>
4744 </p>
4745 <blockquote class="text">
4746 <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4747 </p>
4748 </blockquote><p>
4749
4750 </p>
4751 <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 <p>
4758 </p>
4759 <blockquote class="text">
4760 <p>"OK" -
4761 </p>
4762 <blockquote class="text">
4763 <p>on success
4764 </p>
4765 </blockquote>
4766
4767
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 </blockquote>
4776
4777
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 </blockquote>
4784
4785
4786 </blockquote><p>
4787
4788 </p>
4789 <p>Examples:
4790 </p>
4791 <p>
4792 </p>
4793 <blockquote class="text">
4794 <p>
4795 </p>
4796 </blockquote><p>
4797
4798 </p>
4799 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4800 <table 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
4804 <p>The front-end can alter the volume of a sampler channel by sending
4805 the following command:
4806 </p>
4807 <p>
4808 </p>
4809 <blockquote class="text">
4810 <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4811 </p>
4812 </blockquote><p>
4813
4814 </p>
4815 <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 <p>
4823 </p>
4824 <blockquote class="text">
4825 <p>"OK" -
4826 </p>
4827 <blockquote class="text">
4828 <p>on success
4829 </p>
4830 </blockquote>
4831
4832
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 </blockquote>
4841
4842
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 </blockquote>
4849
4850
4851 </blockquote><p>
4852
4853 </p>
4854 <p>Examples:
4855 </p>
4856 <p>
4857 </p>
4858 <blockquote class="text">
4859 <p>
4860 </p>
4861 </blockquote><p>
4862
4863 </p>
4864 <a name="SET CHANNEL MUTE"></a><br /><hr />
4865 <table 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
4869 <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
4879 </p>
4880 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4881 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 &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 </blockquote>
4897
4898
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 </blockquote>
4907
4908
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 </blockquote>
4915
4916
4917 </blockquote><p>
4918
4919 </p>
4920 <p>Examples:
4921 </p>
4922 <p>
4923 </p>
4924 <blockquote class="text">
4925 <p>
4926 </p>
4927 </blockquote><p>
4928
4929 </p>
4930 <a name="SET CHANNEL SOLO"></a><br /><hr />
4931 <table 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
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
4945 </p>
4946 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4947 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 &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 </blockquote>
4963
4964
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 </blockquote>
4973
4974
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 </blockquote>
4981
4982
4983 </blockquote><p>
4984
4985 </p>
4986 <p>Examples:
4987 </p>
4988 <p>
4989 </p>
4990 <blockquote class="text">
4991 <p>
4992 </p>
4993 </blockquote><p>
4994
4995 </p>
4996 <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 <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 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 </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 (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 </p>
5390 </blockquote>
5391
5392
5393 <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 <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 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5446 </p>
5447 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5448 </p>
5449 <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 <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 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 </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 <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 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5523 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 <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 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5606 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 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5677 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 <a name="RESET CHANNEL"></a><br /><hr />
5747 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5748 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5749 Resetting a sampler channel</h3>
5750
5751 <p>The front-end can reset a particular sampler channel by sending the following command:
5752 </p>
5753 <p>
5754 </p>
5755 <blockquote class="text">
5756 <p>RESET CHANNEL &lt;sampler-channel&gt;
5757 </p>
5758 </blockquote><p>
5759
5760 </p>
5761 <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 <p>
5770 </p>
5771 <blockquote class="text">
5772 <p>"OK" -
5773 </p>
5774 <blockquote class="text">
5775 <p>on success
5776 </p>
5777 </blockquote>
5778
5779
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 </blockquote>
5788
5789
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 </blockquote>
5797
5798
5799 </blockquote><p>
5800
5801 </p>
5802 <p>Examples:
5803 </p>
5804 <p>
5805 </p>
5806 <blockquote class="text">
5807 <p>
5808 </p>
5809 </blockquote><p>
5810
5811 </p>
5812 <a name="anchor12"></a><br /><hr />
5813 <table 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
5817 <p>The following commands are used to control the connection to LinuxSampler.
5818 </p>
5819 <a name="SUBSCRIBE"></a><br /><hr />
5820 <table 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
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 <p>
5828 </p>
5829 <blockquote class="text">
5830 <p>SUBSCRIBE &lt;event-id&gt;
5831 </p>
5832 </blockquote><p>
5833
5834 </p>
5835 <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 <p>
5841 </p>
5842 <blockquote class="text">
5843 <p>"OK" -
5844 </p>
5845 <blockquote class="text">
5846 <p>on success
5847 </p>
5848 </blockquote>
5849
5850
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 </blockquote>
5859
5860
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 </blockquote>
5868
5869
5870 </blockquote><p>
5871
5872 </p>
5873 <p>Examples:
5874 </p>
5875 <p>
5876 </p>
5877 <blockquote class="text">
5878 <p>
5879 </p>
5880 </blockquote><p>
5881
5882 </p>
5883 <a name="UNSUBSCRIBE"></a><br /><hr />
5884 <table 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
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 <p>
5892 </p>
5893 <blockquote class="text">
5894 <p>UNSUBSCRIBE &lt;event-id&gt;
5895 </p>
5896 </blockquote><p>
5897
5898 </p>
5899 <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 <p>
5905 </p>
5906 <blockquote class="text">
5907 <p>"OK" -
5908 </p>
5909 <blockquote class="text">
5910 <p>on success
5911 </p>
5912 </blockquote>
5913
5914
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 </blockquote>
5923
5924
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 </blockquote>
5932
5933
5934 </blockquote><p>
5935
5936 </p>
5937 <p>Examples:
5938 </p>
5939 <p>
5940 </p>
5941 <blockquote class="text">
5942 <p>
5943 </p>
5944 </blockquote><p>
5945
5946 </p>
5947 <a name="SET ECHO"></a><br /><hr />
5948 <table 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
5952 <p>To enable or disable back sending of commands to the client the following command can be used:
5953 </p>
5954 <p>
5955 </p>
5956 <blockquote class="text">
5957 <p>SET ECHO &lt;value&gt;
5958 </p>
5959 </blockquote><p>
5960
5961 </p>
5962 <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 <p>
5973 </p>
5974 <blockquote class="text">
5975 <p>"OK" -
5976 </p>
5977 <blockquote class="text">
5978 <p>usually
5979 </p>
5980 </blockquote>
5981
5982
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 </blockquote>
5989
5990
5991 </blockquote><p>
5992
5993 </p>
5994 <p>Examples:
5995 </p>
5996 <p>
5997 </p>
5998 <blockquote class="text">
5999 <p>
6000 </p>
6001 </blockquote><p>
6002
6003 </p>
6004 <a name="QUIT"></a><br /><hr />
6005 <table 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
6009 <p>The client can close its network connection to LinuxSampler by sending the following command:
6010 </p>
6011 <p>
6012 </p>
6013 <blockquote class="text">
6014 <p>QUIT
6015 </p>
6016 </blockquote><p>
6017
6018 </p>
6019 <p>This is probably more interesting for manual telnet connections to
6020 LinuxSampler than really useful for a front-end implementation.
6021 </p>
6022 <a name="anchor13"></a><br /><hr />
6023 <table 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
6027 <p>The following commands have global impact on the sampler.
6028 </p>
6029 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6030 <table 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
6034 <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 <table 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
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 <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 <a name="RESET"></a><br /><hr />
6111 <table 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 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6113 Reset sampler</h3>
6114
6115 <p>The front-end can reset the whole sampler by sending the following command:
6116 </p>
6117 <p>
6118 </p>
6119 <blockquote class="text">
6120 <p>RESET
6121 </p>
6122 </blockquote><p>
6123
6124 </p>
6125 <p>Possible Answers:
6126 </p>
6127 <p>
6128 </p>
6129 <blockquote class="text">
6130 <p>"OK" -
6131 </p>
6132 <blockquote class="text">
6133 <p>always
6134 </p>
6135 </blockquote>
6136
6137
6138 </blockquote><p>
6139
6140 </p>
6141 <p>Examples:
6142 </p>
6143 <p>
6144 </p>
6145 <blockquote class="text">
6146 <p>
6147 </p>
6148 </blockquote><p>
6149
6150 </p>
6151 <a name="GET SERVER INFO"></a><br /><hr />
6152 <table 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 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6154 General sampler informations</h3>
6155
6156 <p>The client can ask for general informations about the LinuxSampler
6157 instance by sending the following command:
6158 </p>
6159 <p>
6160 </p>
6161 <blockquote class="text">
6162 <p>GET SERVER INFO
6163 </p>
6164 </blockquote><p>
6165
6166 </p>
6167 <p>Possible Answers:
6168 </p>
6169 <p>
6170 </p>
6171 <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
6178 </p>
6179 <p>
6180 </p>
6181 <blockquote class="text">
6182 <p>DESCRIPTION -
6183 </p>
6184 <blockquote class="text">
6185 <p>arbitrary textual description about the sampler
6186 (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 </p>
6189 </blockquote>
6190
6191
6192 <p>VERSION -
6193 </p>
6194 <blockquote class="text">
6195 <p>version of the sampler
6196 </p>
6197 </blockquote>
6198
6199
6200 <p>PROTOCOL_VERSION -
6201 </p>
6202 <blockquote class="text">
6203 <p>version of the LSCP specification the sampler
6204 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 </p>
6206 </blockquote>
6207
6208
6209 <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 </blockquote>
6216
6217
6218 </blockquote>
6219
6220
6221 </blockquote><p>
6222
6223 </p>
6224 <p>The mentioned fields above don't have to be in particular order.
6225 Other fields might be added in future.
6226 </p>
6227 <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 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6230 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 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6263 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 <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
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 <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 </p>
6330 <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 <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 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6350 <table 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 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 </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 (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 </p>
6631 </blockquote>
6632
6633
6634 <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 </blockquote>
6641
6642
6643 </blockquote>
6644
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 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
6661 </p>
6662 <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 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 </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 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
6727 <table 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
6731 <p>The front-end can create a new or replace an existing entry
6732 in a sampler's MIDI instrument map by sending the following
6733 command:
6734 </p>
6735 <p>
6736 </p>
6737 <blockquote class="text">
6738 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
6739 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
6740 &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 <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 integer value between 0..127 reflecting the MIDI program change
6751 index, &lt;engine_name&gt; a sampler engine name as returned by
6752 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 command (not encapsulated into apostrophes), &lt;filename&gt; the name
6754 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 &lt;instrument_index&gt; the index (integer value) of the instrument
6758 within the given file, &lt;volume_value&gt; reflects the master
6759 volume of the instrument as optionally dotted number (where a
6760 value &lt; 1.0 means attenuation and a value > 1.0 means
6761 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 into memory when this mapping
6805 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 <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 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 mapped instruments (using
6858 <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
6860 </p>
6861 <p>
6862 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
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 <p>when the given map or engine does not exist or a value
6894 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 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
6908 </p>
6909 <p>S: "OK"
6910 </p>
6911 </blockquote><p>
6912
6913 </p>
6914 <p>
6915 </p>
6916 <blockquote class="text">
6917 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
6918 </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 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
6932 </p>
6933 <p>S: "OK"
6934 </p>
6935 </blockquote><p>
6936
6937 </p>
6938 <p>
6939 </p>
6940 <blockquote class="text">
6941 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
6942 </p>
6943 <p>S: "OK"
6944 </p>
6945 </blockquote><p>
6946
6947 </p>
6948 <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
6949 <table 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
6953 <p>The front-end can query the amount of currently existing
6954 entries in a MIDI instrument map by sending the following
6955 command:
6956 </p>
6957 <p>
6958 </p>
6959 <blockquote class="text">
6960 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
6961 </p>
6962 </blockquote><p>
6963
6964 </p>
6965 <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 <p>Possible Answers:
6978 </p>
6979 <p>
6980 </p>
6981 <blockquote class="text">
6982 <p>The sampler will answer by sending the current number of
6983 entries in the MIDI instrument map(s).
6984 </p>
6985 </blockquote><p>
6986
6987 </p>
6988 <p>Example:
6989 </p>
6990 <p>
6991 </p>
6992 <blockquote class="text">
6993 <p>C: "GET MIDI_INSTRUMENTS 0"
6994 </p>
6995 <p>S: "234"
6996 </p>
6997 </blockquote><p>
6998
6999 </p>
7000 <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 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7011 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7012 <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
7015 <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 </p>
7019 <p>
7020 </p>
7021 <blockquote class="text">
7022 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7023 </p>
7024 </blockquote><p>
7025
7026 </p>
7027 <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 <p>Possible Answers:
7042 </p>
7043 <p>
7044 </p>
7045 <blockquote class="text">
7046 <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 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 <p>C: "LIST MIDI_INSTRUMENTS 0"
7065 </p>
7066 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7067 </p>
7068 </blockquote><p>
7069
7070 </p>
7071 <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7072 <table 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
7076 <p>The front-end can delete an entry from a MIDI instrument
7077 map by sending the following command:
7078 </p>
7079 <p>
7080 </p>
7081 <blockquote class="text">
7082 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7083 </p>
7084 </blockquote><p>
7085
7086 </p>
7087 <p>
7088 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 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 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7126 </p>
7127 <p>S: "OK"
7128 </p>
7129 </blockquote><p>
7130
7131 </p>
7132 <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7133 <table 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
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 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7144 </p>
7145 </blockquote><p>
7146
7147 </p>
7148 <p>
7149 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 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 <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 command and does not have to be unique.
7178 (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 </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 <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 </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 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 </p>
7219 </blockquote>
7220
7221
7222 <p>"LOAD_MODE" -
7223 </p>
7224 <blockquote class="text">
7225 <p>Life time of instrument
7226 (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 </p>
7228 </blockquote>
7229
7230
7231 <p>"VOLUME" -
7232 </p>
7233 <blockquote class="text">
7234 <p>master volume of the instrument as optionally
7235 dotted number (where a value &lt; 1.0 means attenuation
7236 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 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7252 </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 <table 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
7277 <p>The front-end can clear a whole MIDI instrument map, that
7278 is delete all its entries by sending the following command:
7279 </p>
7280 <p>
7281 </p>
7282 <blockquote class="text">
7283 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7284 </p>
7285 </blockquote><p>
7286
7287 </p>
7288 <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 <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 <p>Examples:
7323 </p>
7324 <p>
7325 </p>
7326 <blockquote class="text">
7327 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7328 </p>
7329 <p>S: "OK"
7330 </p>
7331 </blockquote><p>
7332
7333 </p>
7334 <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 <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 <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 <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 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7496 </p>
7497 </blockquote><p>
7498
7499 </p>
7500 <p>Where &lt;dir&gt; should be replaced by the absolute path
7501 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 </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 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7548 </p>
7549 </blockquote><p>
7550
7551 </p>
7552 <p>Where &lt;dir&gt; should be replaced by the absolute path
7553 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 </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 <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 <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 <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 </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 <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 <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 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
7867 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 &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 </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 <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 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 </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 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 </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 <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 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8053 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 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8062 </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 <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 <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 <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 <p>Possible Answers:
8126 </p>
8127 <p>
8128 </p>
8129 <blockquote class="text">
8130 <p>"OK" -
8131 </p>
8132 <blockquote class="text">
8133 <p>on success when NON_MODAL is not supplied
8134 </p>
8135 </blockquote>
8136
8137
8138 <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 <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 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8175 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 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8231 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 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8240 </p>
8241 </blockquote><p>
8242
8243 </p>
8244 <p>Where &lt;dir&gt; should be replaced by the absolute path name
8245 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 </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 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8283 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 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8292 </p>
8293 </blockquote><p>
8294
8295 </p>
8296 <p>Where &lt;dir&gt; should be replaced by the absolute path
8297 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 </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 <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 <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 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8345 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 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 </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 <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 </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 <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 </p>
8463 </blockquote>
8464
8465
8466 <p>ARTISTS -
8467 </p>
8468 <blockquote class="text">
8469 <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 </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 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 </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 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
8534 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 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
8591 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 <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 <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 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
8709 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 &lt;desc&gt; is the new description for the instrument
8724 (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 </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 <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 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 </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 <p>Restricts the search to instruments, which
8805 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 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 </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 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 </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 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 </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 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 </p>
8895 </blockquote><p>
8896
8897 </p>
8898
8899
8900 <p>IS_DRUM=true | false
8901 </p>
8902 <blockquote class="text">
8903 <p>Either true or false. Restricts the search to
8904 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 <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 <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 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9133 </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 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9200 </p>
9201 <p>S: "OK"
9202 </p>
9203 </blockquote><p>
9204
9205 </p>
9206 <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 <a name="command_syntax"></a><br /><hr />
9459 <table 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
9463 <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 where applicable.
9466
9467 </p>
9468 <p>input =
9469 </p>
9470 <blockquote class="text">
9471 <p>line LF
9472
9473 </p>
9474 <p>/ line CR LF
9475
9476 </p>
9477 </blockquote><p>
9478
9479 </p>
9480 <p>line =
9481 </p>
9482 <blockquote class="text">
9483 <p>/* epsilon (empty line ignored) */
9484
9485 </p>
9486 <p>/ comment
9487
9488 </p>
9489 <p>/ command
9490
9491 </p>
9492 <p>/ error
9493
9494 </p>
9495 </blockquote><p>
9496
9497 </p>
9498 <p>comment =
9499 </p>
9500 <blockquote class="text">
9501 <p>'#'
9502
9503 </p>
9504 <p>/ comment '#'
9505
9506 </p>
9507 <p>/ comment SP
9508
9509 </p>
9510 <p>/ comment number
9511
9512 </p>
9513 <p>/ comment string
9514
9515 </p>
9516 </blockquote><p>
9517
9518 </p>
9519 <p>command =
9520 </p>
9521 <blockquote class="text">
9522 <p>ADD SP add_instruction
9523
9524 </p>
9525 <p>/ MAP SP map_instruction
9526
9527 </p>
9528 <p>/ UNMAP SP unmap_instruction
9529
9530 </p>
9531 <p>/ GET SP get_instruction
9532
9533 </p>
9534 <p>/ CREATE SP create_instruction
9535
9536 </p>
9537 <p>/ DESTROY SP destroy_instruction
9538
9539 </p>
9540 <p>/ LIST SP list_instruction
9541
9542 </p>
9543 <p>/ LOAD SP load_instruction
9544
9545 </p>
9546 <p>/ REMOVE SP remove_instruction
9547
9548 </p>
9549 <p>/ SET SP set_instruction
9550
9551 </p>
9552 <p>/ SUBSCRIBE SP subscribe_event
9553
9554 </p>
9555 <p>/ UNSUBSCRIBE SP unsubscribe_event
9556
9557 </p>
9558 <p>/ RESET SP reset_instruction
9559
9560 </p>
9561 <p>/ CLEAR SP clear_instruction
9562
9563 </p>
9564 <p>/ FIND SP find_instruction
9565
9566 </p>
9567 <p>/ MOVE SP move_instruction
9568
9569 </p>
9570 <p>/ COPY SP copy_instruction
9571
9572 </p>
9573 <p>/ EDIT SP edit_instruction
9574
9575 </p>
9576 <p>/ FORMAT SP format_instruction
9577
9578 </p>
9579 <p>/ RESET
9580
9581 </p>
9582 <p>/ QUIT
9583
9584 </p>
9585 </blockquote><p>
9586
9587 </p>
9588 <p>add_instruction =
9589 </p>
9590 <blockquote class="text">
9591 <p>CHANNEL
9592
9593 </p>
9594 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9595
9596 </p>
9597 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
9598
9599 </p>
9600 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
9601
9602 </p>
9603 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
9604
9605 </p>
9606 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
9607
9608 </p>
9609 <p>/ DB_INSTRUMENTS SP db_path SP filename
9610
9611 </p>
9612 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
9613
9614 </p>
9615 <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 <p>subscribe_event =
9625 </p>
9626 <blockquote class="text">
9627 <p>AUDIO_OUTPUT_DEVICE_COUNT
9628
9629 </p>
9630 <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 <p>/ CHANNEL_MIDI
9643
9644 </p>
9645 <p>/ VOICE_COUNT
9646
9647 </p>
9648 <p>/ STREAM_COUNT
9649
9650 </p>
9651 <p>/ BUFFER_FILL
9652
9653 </p>
9654 <p>/ CHANNEL_INFO
9655
9656 </p>
9657 <p>/ FX_SEND_COUNT
9658
9659 </p>
9660 <p>/ FX_SEND_INFO
9661
9662 </p>
9663 <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 <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 <p>/ DB_INSTRUMENTS_JOB_INFO
9688
9689 </p>
9690 <p>/ MISCELLANEOUS
9691
9692 </p>
9693 <p>/ TOTAL_STREAM_COUNT
9694
9695 </p>
9696 <p>/ TOTAL_VOICE_COUNT
9697
9698 </p>
9699 <p>/ GLOBAL_INFO
9700
9701 </p>
9702 </blockquote><p>
9703
9704 </p>
9705 <p>unsubscribe_event =
9706 </p>
9707 <blockquote class="text">
9708 <p>AUDIO_OUTPUT_DEVICE_COUNT
9709
9710 </p>
9711 <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 <p>/ CHANNEL_MIDI
9724
9725 </p>
9726 <p>/ VOICE_COUNT
9727
9728 </p>
9729 <p>/ STREAM_COUNT
9730
9731 </p>
9732 <p>/ BUFFER_FILL
9733
9734 </p>
9735 <p>/ CHANNEL_INFO
9736
9737 </p>
9738 <p>/ FX_SEND_COUNT
9739
9740 </p>
9741 <p>/ FX_SEND_INFO
9742
9743 </p>
9744 <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 <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 <p>/ DB_INSTRUMENTS_JOB_INFO
9769
9770 </p>
9771 <p>/ MISCELLANEOUS
9772
9773 </p>
9774 <p>/ TOTAL_STREAM_COUNT
9775
9776 </p>
9777 <p>/ TOTAL_VOICE_COUNT
9778
9779 </p>
9780 <p>/ GLOBAL_INFO
9781
9782 </p>
9783 </blockquote><p>
9784
9785 </p>
9786 <p>map_instruction =
9787 </p>
9788 <blockquote class="text">
9789 <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
9791 </p>
9792 <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
9794 </p>
9795 <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
9797 </p>
9798 <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
9800 </p>
9801 </blockquote><p>
9802
9803 </p>
9804 <p>unmap_instruction =
9805 </p>
9806 <blockquote class="text">
9807 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
9808
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 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
9820
9821 </p>
9822 <p>/ MIDI_INSTRUMENT_MAP SP ALL
9823
9824 </p>
9825 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
9826
9827 </p>
9828 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9829
9830 </p>
9831 <p>/ DB_INSTRUMENT SP db_path
9832
9833 </p>
9834 </blockquote><p>
9835
9836 </p>
9837 <p>get_instruction =
9838 </p>
9839 <blockquote class="text">
9840 <p>AVAILABLE_ENGINES
9841
9842 </p>
9843 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
9844
9845 </p>
9846 <p>/ MIDI_INPUT_DRIVER SP INFO SP string
9847
9848 </p>
9849 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
9850
9851 </p>
9852 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9853
9854 </p>
9855 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
9856
9857 </p>
9858 <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
9859
9860 </p>
9861 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
9862
9863 </p>
9864 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9865
9866 </p>
9867 <p>/ AUDIO_OUTPUT_DEVICES
9868
9869 </p>
9870 <p>/ MIDI_INPUT_DEVICES
9871
9872 </p>
9873 <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
9874
9875 </p>
9876 <p>/ MIDI_INPUT_DEVICE SP INFO SP number
9877
9878 </p>
9879 <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
9880
9881 </p>
9882 <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
9883
9884 </p>
9885 <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
9886
9887 </p>
9888 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
9889
9890 </p>
9891 <p>/ CHANNELS
9892
9893 </p>
9894 <p>/ CHANNEL SP INFO SP sampler_channel
9895
9896 </p>
9897 <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
9898
9899 </p>
9900 <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
9901
9902 </p>
9903 <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
9904
9905 </p>
9906 <p>/ ENGINE SP INFO SP engine_name
9907
9908 </p>
9909 <p>/ SERVER SP INFO
9910
9911 </p>
9912 <p>/ TOTAL_STREAM_COUNT
9913
9914 </p>
9915 <p>/ TOTAL_VOICE_COUNT
9916
9917 </p>
9918 <p>/ TOTAL_VOICE_COUNT_MAX
9919
9920 </p>
9921 <p>/ MIDI_INSTRUMENTS SP midi_map
9922
9923 </p>
9924 <p>/ MIDI_INSTRUMENTS SP ALL
9925
9926 </p>
9927 <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 <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 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
9943
9944 </p>
9945 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
9946
9947 </p>
9948 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
9949
9950 </p>
9951 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
9952
9953 </p>
9954 <p>/ DB_INSTRUMENTS SP db_path
9955
9956 </p>
9957 <p>/ DB_INSTRUMENT SP INFO SP db_path
9958
9959 </p>
9960 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
9961
9962 </p>
9963 <p>/ VOLUME
9964
9965 </p>
9966 <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 </blockquote><p>
9973
9974 </p>
9975 <p>set_instruction =
9976 </p>
9977 <blockquote class="text">
9978 <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9979
9980 </p>
9981 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
9982
9983 </p>
9984 <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9985
9986 </p>
9987 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
9988
9989 </p>
9990 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
9991
9992 </p>
9993 <p>/ CHANNEL SP set_chan_instruction
9994
9995 </p>
9996 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
9997
9998 </p>
9999 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
10000
10001 </p>
10002 <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 <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 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
10012
10013 </p>
10014 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
10015
10016 </p>
10017 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
10018
10019 </p>
10020 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
10021
10022 </p>
10023 <p>/ ECHO SP boolean
10024
10025 </p>
10026 <p>/ VOLUME SP volume_value
10027
10028 </p>
10029 </blockquote><p>
10030
10031 </p>
10032 <p>create_instruction =
10033 </p>
10034 <blockquote class="text">
10035 <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
10036
10037 </p>
10038 <p>/ AUDIO_OUTPUT_DEVICE SP string
10039
10040 </p>
10041 <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
10042
10043 </p>
10044 <p>/ MIDI_INPUT_DEVICE SP string
10045
10046 </p>
10047 <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 </blockquote><p>
10054
10055 </p>
10056 <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 <p>MIDI_INSTRUMENTS SP midi_map
10069
10070 </p>
10071 <p>/ MIDI_INSTRUMENTS SP ALL
10072
10073 </p>
10074 </blockquote><p>
10075
10076 </p>
10077 <p>find_instruction =
10078 </p>
10079 <blockquote class="text">
10080 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
10081
10082 </p>
10083 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
10084
10085 </p>
10086 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
10087
10088 </p>
10089 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
10090
10091 </p>
10092 </blockquote><p>
10093
10094 </p>
10095 <p>move_instruction =
10096 </p>
10097 <blockquote class="text">
10098 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10099
10100 </p>
10101 <p>/ DB_INSTRUMENT SP db_path SP db_path
10102
10103 </p>
10104 </blockquote><p>
10105
10106 </p>
10107 <p>copy_instruction =
10108 </p>
10109 <blockquote class="text">
10110 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10111
10112 </p>
10113 <p>/ DB_INSTRUMENT SP db_path SP db_path
10114
10115 </p>
10116 </blockquote><p>
10117
10118 </p>
10119 <p>destroy_instruction =
10120 </p>
10121 <blockquote class="text">
10122 <p>AUDIO_OUTPUT_DEVICE SP number
10123
10124 </p>
10125 <p>/ MIDI_INPUT_DEVICE SP number
10126
10127 </p>
10128 <p>/ FX_SEND SP sampler_channel SP fx_send_id
10129
10130 </p>
10131 </blockquote><p>
10132
10133 </p>
10134 <p>load_instruction =
10135 </p>
10136 <blockquote class="text">
10137 <p>INSTRUMENT SP load_instr_args
10138
10139 </p>
10140 <p>/ ENGINE SP load_engine_args
10141
10142 </p>
10143 </blockquote><p>
10144
10145 </p>
10146 <p>set_chan_instruction =
10147 </p>
10148 <blockquote class="text">
10149 <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
10150
10151 </p>
10152 <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
10153
10154 </p>
10155 <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
10156
10157 </p>
10158 <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
10159
10160 </p>
10161 <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
10162
10163 </p>
10164 <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
10165
10166 </p>
10167 <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
10168
10169 </p>
10170 <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
10171
10172 </p>
10173 <p>/ VOLUME SP sampler_channel SP volume_value
10174
10175 </p>
10176 <p>/ MUTE SP sampler_channel SP boolean
10177
10178 </p>
10179 <p>/ SOLO SP sampler_channel SP boolean
10180
10181 </p>
10182 <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 </blockquote><p>
10192
10193 </p>
10194 <p>edit_instruction =
10195 </p>
10196 <blockquote class="text">
10197 <p>CHANNEL SP INSTRUMENT SP sampler_channel
10198
10199 </p>
10200 </blockquote><p>
10201
10202 </p>
10203 <p>format_instruction =
10204 </p>
10205 <blockquote class="text">
10206 <p>INSTRUMENTS_DB
10207
10208 </p>
10209 </blockquote><p>
10210
10211 </p>
10212 <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 <p>key_val_list =
10225 </p>
10226 <blockquote class="text">
10227 <p>string '=' param_val_list
10228
10229 </p>
10230 <p>/ key_val_list SP string '=' param_val_list
10231
10232 </p>
10233 </blockquote><p>
10234
10235 </p>
10236 <p>buffer_size_type =
10237 </p>
10238 <blockquote class="text">
10239 <p>BYTES
10240
10241 </p>
10242 <p>/ PERCENTAGE
10243
10244 </p>
10245 </blockquote><p>
10246
10247 </p>
10248 <p>list_instruction =
10249 </p>
10250 <blockquote class="text">
10251 <p>AUDIO_OUTPUT_DEVICES
10252
10253 </p>
10254 <p>/ MIDI_INPUT_DEVICES
10255
10256 </p>
10257 <p>/ CHANNELS
10258
10259 </p>
10260 <p>/ AVAILABLE_ENGINES
10261
10262 </p>
10263 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
10264
10265 </p>
10266 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
10267
10268 </p>
10269 <p>/ MIDI_INSTRUMENTS SP midi_map
10270
10271 </p>
10272 <p>/ MIDI_INSTRUMENTS SP ALL
10273
10274 </p>
10275 <p>/ MIDI_INSTRUMENT_MAPS
10276
10277 </p>
10278 <p>/ FX_SENDS SP sampler_channel
10279
10280 </p>
10281 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
10282
10283 </p>
10284 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
10285
10286 </p>
10287 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
10288
10289 </p>
10290 <p>/ DB_INSTRUMENTS SP db_path
10291
10292 </p>
10293 <p>/ FILE SP INSTRUMENTS SP filename
10294
10295 </p>
10296 </blockquote><p>
10297
10298 </p>
10299 <p>load_instr_args =
10300 </p>
10301 <blockquote class="text">
10302 <p>filename SP instrument_index SP sampler_channel
10303
10304 </p>
10305 <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
10306
10307 </p>
10308 </blockquote><p>
10309
10310 </p>
10311 <p>load_engine_args =
10312 </p>
10313 <blockquote class="text">
10314 <p>engine_name SP sampler_channel
10315
10316 </p>
10317 </blockquote><p>
10318
10319 </p>
10320 <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 <p>device_index =
10336 </p>
10337 <blockquote class="text">
10338 <p>number
10339
10340 </p>
10341 </blockquote><p>
10342
10343 </p>
10344 <p>audio_channel_index =
10345 </p>
10346 <blockquote class="text">
10347 <p>number
10348
10349 </p>
10350 </blockquote><p>
10351
10352 </p>
10353 <p>audio_output_type_name =
10354 </p>
10355 <blockquote class="text">
10356 <p>string
10357
10358 </p>
10359 </blockquote><p>
10360
10361 </p>
10362 <p>midi_input_port_index =
10363 </p>
10364 <blockquote class="text">
10365 <p>number
10366
10367 </p>
10368 </blockquote><p>
10369
10370 </p>
10371 <p>midi_input_channel_index =
10372 </p>
10373 <blockquote class="text">
10374 <p>number
10375
10376 </p>
10377 <p>/ ALL
10378
10379 </p>
10380 </blockquote><p>
10381
10382 </p>
10383 <p>midi_input_type_name =
10384 </p>
10385 <blockquote class="text">
10386 <p>string
10387
10388 </p>
10389 </blockquote><p>
10390
10391 </p>
10392 <p>midi_map =
10393 </p>
10394 <blockquote class="text">
10395 <p>number
10396
10397 </p>
10398 </blockquote><p>
10399
10400 </p>
10401 <p>midi_bank =
10402 </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 <p>midi_ctrl =
10420 </p>
10421 <blockquote class="text">
10422 <p>number
10423
10424 </p>
10425 </blockquote><p>
10426
10427 </p>
10428 <p>volume_value =
10429 </p>
10430 <blockquote class="text">
10431 <p>dotnum
10432
10433 </p>
10434 <p>/ number
10435
10436 </p>
10437 </blockquote><p>
10438
10439 </p>
10440 <p>sampler_channel =
10441 </p>
10442 <blockquote class="text">
10443 <p>number
10444
10445 </p>
10446 </blockquote><p>
10447
10448 </p>
10449 <p>instrument_index =
10450 </p>
10451 <blockquote class="text">
10452 <p>number
10453
10454 </p>
10455 </blockquote><p>
10456
10457 </p>
10458 <p>fx_send_id =
10459 </p>
10460 <blockquote class="text">
10461 <p>number
10462
10463 </p>
10464 </blockquote><p>
10465
10466 </p>
10467 <p>engine_name =
10468 </p>
10469 <blockquote class="text">
10470 <p>string
10471
10472 </p>
10473 </blockquote><p>
10474
10475 </p>
10476 <p>filename =
10477 </p>
10478 <blockquote class="text">
10479 <p>path
10480
10481 </p>
10482 </blockquote><p>
10483
10484 </p>
10485 <p>db_path =
10486 </p>
10487 <blockquote class="text">
10488 <p>path
10489
10490 </p>
10491 </blockquote><p>
10492
10493 </p>
10494 <p>map_name =
10495 </p>
10496 <blockquote class="text">
10497 <p>stringval_escaped
10498
10499 </p>
10500 </blockquote><p>
10501
10502 </p>
10503 <p>entry_name =
10504 </p>
10505 <blockquote class="text">
10506 <p>stringval_escaped
10507
10508 </p>
10509 </blockquote><p>
10510
10511 </p>
10512 <p>fx_send_name =
10513 </p>
10514 <blockquote class="text">
10515 <p>stringval_escaped
10516
10517 </p>
10518 </blockquote><p>
10519
10520 </p>
10521 <p>param_val_list =
10522 </p>
10523 <blockquote class="text">
10524 <p>param_val
10525
10526 </p>
10527 <p>/ param_val_list','param_val
10528
10529 </p>
10530 </blockquote><p>
10531
10532 </p>
10533 <p>param_val =
10534 </p>
10535 <blockquote class="text">
10536 <p>string
10537
10538 </p>
10539 <p>/ stringval
10540
10541 </p>
10542 <p>/ number
10543
10544 </p>
10545 <p>/ dotnum
10546
10547 </p>
10548 </blockquote><p>
10549
10550 </p>
10551 <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 <p>text_escaped
10567
10568 </p>
10569 <p>/ stringval_escaped
10570
10571 </p>
10572 </blockquote><p>
10573
10574 </p>
10575 <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 <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 <p>The following LSCP commands support escape sequences as part
10657 of their filename / path based arguments and / or may contain
10658 a filename / path with escape sequences in their response:
10659 </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 <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 <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 <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 <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 <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 </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 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 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 description) and / or may contain escape sequences in at least one of
10738 their text-based fields in their response:
10739 </p>
10740 <blockquote class="text">
10741 <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 <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 <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 <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 <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 <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 <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 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10778 </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 <a name="events"></a><br /><hr />
10786 <table 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
10790 <p>This chapter will describe all currently defined events supported by LinuxSampler.
10791 </p>
10792 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
10793 <table 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 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 Number of sampler channels changed</h3>
10920
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 <p>
10925 </p>
10926 <blockquote class="text">
10927 <p>SUBSCRIBE CHANNEL_COUNT
10928 </p>
10929 </blockquote><p>
10930
10931 </p>
10932 <p>Server will start sending the following notification messages:
10933 </p>
10934 <p>
10935 </p>
10936 <blockquote class="text">
10937 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
10938 </p>
10939 </blockquote><p>
10940
10941 </p>
10942 <p>where &lt;channels&gt; will be replaced by the new number
10943 of sampler channels.
10944 </p>
10945 <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 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
10984 <table 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 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
10986 Number of active voices changed</h3>
10987
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 <p>
10992 </p>
10993 <blockquote class="text">
10994 <p>SUBSCRIBE VOICE_COUNT
10995 </p>
10996 </blockquote><p>
10997
10998 </p>
10999 <p>Server will start sending the following notification messages:
11000 </p>
11001 <p>
11002 </p>
11003 <blockquote class="text">
11004 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
11005 </p>
11006 </blockquote><p>
11007
11008 </p>
11009 <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 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
11014 <table 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 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
11016 Number of active disk streams changed</h3>
11017
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 <p>
11022 </p>
11023 <blockquote class="text">
11024 <p>SUBSCRIBE STREAM_COUNT
11025 </p>
11026 </blockquote><p>
11027
11028 </p>
11029 <p>Server will start sending the following notification messages:
11030 </p>
11031 <p>
11032 </p>
11033 <blockquote class="text">
11034 <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
11035 </p>
11036 </blockquote><p>
11037
11038 </p>
11039 <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 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
11044 <table 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 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
11046 Disk stream buffer fill state changed</h3>
11047
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 <p>
11052 </p>
11053 <blockquote class="text">
11054 <p>SUBSCRIBE BUFFER_FILL
11055 </p>
11056 </blockquote><p>
11057
11058 </p>
11059 <p>Server will start sending the following notification messages:
11060 </p>
11061 <p>
11062 </p>
11063 <blockquote class="text">
11064 <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
11065 </p>
11066 </blockquote><p>
11067
11068 </p>
11069 <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 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 </p>
11074 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
11075 <table 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 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
11077 Channel information changed</h3>
11078
11079 <p>Client may want to be notified when changes were made to sampler channels on the
11080 back-end by issuing the following command:
11081 </p>
11082 <p>
11083 </p>
11084 <blockquote class="text">
11085 <p>SUBSCRIBE CHANNEL_INFO
11086 </p>
11087 </blockquote><p>
11088
11089 </p>
11090 <p>Server will start sending the following notification messages:
11091 </p>
11092 <p>
11093 </p>
11094 <blockquote class="text">
11095 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
11096 </p>
11097 </blockquote><p>
11098
11099 </p>
11100 <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 <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 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
11110 Number of effect sends changed</h3>
11111
11112 <p>Client may want to be notified when the number of effect sends on
11113 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 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
11140 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 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
11168 <table 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 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
11170 Total number of active voices changed</h3>
11171
11172 <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 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
11189 </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 <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 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
11199 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 <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 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
11228 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 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
11257 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 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
11290 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 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
11320 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 <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 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
11354 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 <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 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
11383 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 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
11417 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 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
11462 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 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
11496 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 <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 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
11541 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 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
11572 <table 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 <a name="rfc.section.8.25"></a><h3>8.25.&nbsp;
11574 Miscellaneous and debugging events</h3>
11575
11576 <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 <p>
11580 </p>
11581 <blockquote class="text">
11582 <p>SUBSCRIBE MISCELLANEOUS
11583 </p>
11584 </blockquote><p>
11585
11586 </p>
11587 <p>Server will start sending the following notification messages:
11588 </p>
11589 <p>
11590 </p>
11591 <blockquote class="text">
11592 <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
11593 </p>
11594 </blockquote><p>
11595
11596 </p>
11597 <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 <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
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 <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
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 <p>
11621 </p>
11622 <blockquote class="text">
11623 <p>Rui Nuno Capela
11624 </p>
11625 <p>Vladimir Senkov
11626 </p>
11627 <p>Mark Knecht
11628 </p>
11629 <p>Grigor Iliev
11630 </p>
11631 </blockquote><p>
11632
11633 </p>
11634 <a name="rfc.references1"></a><br /><hr />
11635 <table 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 <h3>11.&nbsp;References</h3>
11637 <table width="99%" border="0">
11638 <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 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
11641 <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 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
11643 <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 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
11645 <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 </table>
11647
11648 <a name="rfc.authors"></a><br /><hr />
11649 <table 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 <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 <tr><td class="author" align="right">Email:&nbsp;</td>
11664 <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 <table 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 <p class='copyright'>
11670 Copyright &copy; The IETF Trust (2008).</p>
11671 <p class='copyright'>
11672 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 <p class='copyright'>
11677 This document and the information contained herein are provided
11678 on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
11679 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 <h3>Intellectual Property</h3>
11687 <p class='copyright'>
11688 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 <p class='copyright'>
11698 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 <p class='copyright'>
11705 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 <h3>Acknowledgment</h3>
11713 <p class='copyright'>
11714 Funding for the RFC Editor function is provided by
11715 the IETF Administrative Support Activity (IASA).</p>
11716 </body></html>
11717

  ViewVC Help
Powered by ViewVC