/[svn]/web/trunk/www.linuxsampler.org/api/lscp-1.3.html
ViewVC logotype

Contents of /web/trunk/www.linuxsampler.org/api/lscp-1.3.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1556 - (show annotations) (download) (as text)
Thu Dec 6 01:46:03 2007 UTC (16 years, 3 months ago) by schoenebeck
File MIME type: text/html
File size: 410947 byte(s)
- commited LSCP 1.3 specs of the next upcoming LS release

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: June 7, 2008</td><td class="header">December 5, 2007</td></tr>
149 </table></td></tr></table>
150 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.3</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 June 7, 2008.</p>
177
178 <h3>Copyright Notice</h3>
179 <p>
180 Copyright &copy; The IETF Trust (2007).</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 VOICE_COUNT">8.6.</a>&nbsp;
468 Number of active voices changed<br />
469 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.7.</a>&nbsp;
470 Number of active disk streams changed<br />
471 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.8.</a>&nbsp;
472 Disk stream buffer fill state changed<br />
473 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.9.</a>&nbsp;
474 Channel information changed<br />
475 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.10.</a>&nbsp;
476 Number of effect sends changed<br />
477 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.11.</a>&nbsp;
478 Effect send information changed<br />
479 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.12.</a>&nbsp;
480 Total number of active voices changed<br />
481 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.13.</a>&nbsp;
482 Total number of active disk streams changed<br />
483 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.14.</a>&nbsp;
484 Number of MIDI instrument maps changed<br />
485 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.15.</a>&nbsp;
486 MIDI instrument map information changed<br />
487 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.16.</a>&nbsp;
488 Number of MIDI instruments changed<br />
489 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.17.</a>&nbsp;
490 MIDI instrument information changed<br />
491 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.18.</a>&nbsp;
492 Global settings changed<br />
493 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.19.</a>&nbsp;
494 Number of database instrument directories changed<br />
495 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.20.</a>&nbsp;
496 Database instrument directory information changed<br />
497 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.21.</a>&nbsp;
498 Number of database instruments changed<br />
499 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.22.</a>&nbsp;
500 Database instrument information changed<br />
501 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.23.</a>&nbsp;
502 Database job status information changed<br />
503 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.24.</a>&nbsp;
504 Miscellaneous and debugging events<br />
505 <a href="#anchor14">9.</a>&nbsp;
506 Security Considerations<br />
507 <a href="#anchor15">10.</a>&nbsp;
508 Acknowledgments<br />
509 <a href="#rfc.references1">11.</a>&nbsp;
510 References<br />
511 <a href="#rfc.authors">&#167;</a>&nbsp;
512 Author's Address<br />
513 <a href="#rfc.copyright">&#167;</a>&nbsp;
514 Intellectual Property and Copyright Statements<br />
515 </p>
516 <br clear="all" />
517
518 <a name="anchor1"></a><br /><hr />
519 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
520 <a name="rfc.section.1"></a><h3>1.&nbsp;
521 Requirements notation</h3>
522
523 <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
524 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
525 and "OPTIONAL" in this document are to be interpreted as
526 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>.
527 </p>
528 <p>This protocol is always case-sensitive if not explicitly
529 claimed the opposite.
530 </p>
531 <p>In examples, "C:" and "S:" indicate lines sent by the client
532 (front-end) and server (LinuxSampler) respectively. Lines in
533 examples must be interpreted as every line being CRLF
534 terminated (carriage return character followed by line feed
535 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>),
536 thus the following example:
537 </p>
538 <p>
539 </p>
540 <blockquote class="text">
541 <p>C: "some line"
542 </p>
543 <p>&nbsp;&nbsp;&nbsp;"another line"
544 </p>
545 </blockquote><p>
546
547 </p>
548 <p>must actually be interpreted as client sending the following
549 message:
550 </p>
551 <p>
552 </p>
553 <blockquote class="text">
554 <p>"some line&lt;CR&gt;&lt;LF&gt;another
555 line&lt;CR&gt;&lt;LF&gt;"
556 </p>
557 </blockquote><p>
558
559 </p>
560 <p>where &lt;CR&gt; symbolizes the carriage return character and
561 &lt;LF&gt; the line feed character as defined in the ASCII
562 standard.
563 </p>
564 <p>Due to technical reasons, messages can arbitrary be
565 fragmented, means the following example:
566 </p>
567 <p>
568 </p>
569 <blockquote class="text">
570 <p>S: "abcd"
571 </p>
572 </blockquote><p>
573
574 </p>
575 <p>could also happen to be sent in three messages like in the
576 following sequence scenario:
577 </p>
578 <p>
579 </p>
580 <ul class="text">
581 <li>server sending message "a"
582 </li>
583 <li>followed by a delay (pause) with
584 arbitrary duration
585 </li>
586 <li>followed by server sending message
587 "bcd&lt;CR&gt;"
588 </li>
589 <li>again followed by a delay (pause) with arbitrary
590 duration
591 </li>
592 <li>followed by server sending the message
593 "&lt;LF&gt;"
594 </li>
595 </ul><p>
596
597 </p>
598 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
599 return and line feed characters respectively.
600 </p>
601 <a name="LSCP versioning"></a><br /><hr />
602 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
603 <a name="rfc.section.2"></a><h3>2.&nbsp;
604 Versioning of this specification</h3>
605
606 <p>LSCP will certainly be extended and enhanced by-and-by. Each official
607 release of the LSCP specification will be tagged with a unique version
608 tuple. The version tuple consists at least of a major and minor version
609 number like:
610
611 </p>
612 <p>
613 </p>
614 <blockquote class="text">
615 <p>"1.2"
616 </p>
617 </blockquote><p>
618
619 </p>
620 <p>
621 In this example the major version number would be "1" and the minor
622 version number would be "2". Note that the version tuple might also
623 have more than two elements. The major version number defines a
624 group of backward compatible versions. That means a frontend is
625 compatible to the connected sampler if and only if the LSCP versions
626 to which each of the two parties complies to, match both of the
627 following rules:
628
629 </p>
630 <p>Compatibility:
631 </p>
632 <p>
633 </p>
634 <ol class="text">
635 <li>The frontend's LSCP major version and the sampler's LSCP
636 major version are exactly equal.
637 </li>
638 <li>The frontend's LSCP minor version is less or equal than
639 the sampler's LSCP minor version.
640 </li>
641 </ol><p>
642
643 </p>
644 <p>
645 Compatibility can only be claimed if both rules are true.
646 The frontend can use the
647 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
648 get the version of the LSCP specification the sampler complies with.
649
650 </p>
651 <a name="anchor2"></a><br /><hr />
652 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
653 <a name="rfc.section.3"></a><h3>3.&nbsp;
654 Introduction</h3>
655
656 <p>LinuxSampler is a so called software sampler application
657 capable to playback audio samples from a computer's Random
658 Access Memory (RAM) as well as directly streaming it from disk.
659 LinuxSampler is designed to be modular. It provides several so
660 called "sampler engines" where each engine is specialized for a
661 certain purpose. LinuxSampler has virtual channels which will be
662 referred in this document as "sampler channels". The channels
663 are in such way virtual as they can be connected to an
664 arbitrary MIDI input method and arbitrary MIDI channel (e.g.
665 sampler channel 17 could be connected to an ALSA sequencer
666 device 64:0 and listening to MIDI channel 1 there). Each sampler
667 channel will be associated with an instance of one of the available
668 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
669 each sampler channel can be routed to an arbitrary audio output
670 method (ALSA / JACK) and an arbitrary audio output channel
671 there.
672 </p>
673 <a name="anchor3"></a><br /><hr />
674 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
675 <a name="rfc.section.4"></a><h3>4.&nbsp;
676 Focus of this protocol</h3>
677
678 <p>Main focus of this protocol is to provide a way to configure
679 a running LinuxSampler instance and to retrieve information
680 about it. The focus of this protocol is not to provide a way to
681 control synthesis parameters or even to trigger or release
682 notes. Or in other words; the focus are those functionalities
683 which are not covered by MIDI or which may at most be handled
684 via MIDI System Exclusive Messages.
685 </p>
686 <a name="anchor4"></a><br /><hr />
687 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
688 <a name="rfc.section.5"></a><h3>5.&nbsp;
689 Communication Overview</h3>
690
691 <p>There are two distinct methods of communication between a
692 running instance of LinuxSampler and one or more control
693 applications, so called "front-ends": a simple request/response
694 communication method used by the clients to give commands to the
695 server as well as to inquire about server's status and a
696 subscribe/notify communication method used by the client to
697 subscribe to and receive notifications of certain events as they
698 happen on the server. The latter needs more effort to be
699 implemented in the front-end application. The two communication
700 methods will be described next.
701 </p>
702 <a name="anchor5"></a><br /><hr />
703 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
704 <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
705 Request/response communication method</h3>
706
707 <p>This simple communication method is based on
708 <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
709 front-end application establishes a TCP connection to the
710 LinuxSampler instance on a certain host system. Then the
711 front-end application will send certain ASCII based commands
712 as defined in this document (every command line must be CRLF
713 terminated - see "Conventions used in this document" at the
714 beginning of this document) and the LinuxSampler application
715 will response after a certain process time with an
716 appropriate ASCII based answer, also as defined in this
717 document. So this TCP communication is simply based on query
718 and answer paradigm. That way LinuxSampler is only able to
719 answer on queries from front-ends, but not able to
720 automatically send messages to the client if it's not asked
721 to. The fronted should not reconnect to LinuxSampler for
722 every single command, instead it should keep the connection
723 established and simply resend message(s) for subsequent
724 commands. To keep information in the front-end up-to-date
725 the front-end has to periodically send new requests to get
726 the current information from the LinuxSampler instance. This
727 is often referred to as "polling". While polling is simple
728 to implement and may be OK to use in some cases, there may
729 be disadvantages to polling such as network traffic overhead
730 and information being out of date.
731 It is possible for a client or several clients to open more
732 than one connection to the server at the same time. It is
733 also possible to send more than one request to the server
734 at the same time but if those requests are sent over the
735 same connection server MUST execute them sequentially. Upon
736 executing a request server will produce a result set and
737 send it to the client. Each and every request made by the
738 client MUST result in a result set being sent back to the
739 client. No other data other than a result set may be sent by
740 a server to a client. No result set may be sent to a client
741 without the client sending request to the server first. On
742 any particular connection, result sets MUST be sent in their
743 entirety without being interrupted by other result sets. If
744 several requests got queued up at the server they MUST be
745 processed in the order they were received and result sets
746 MUST be sent back in the same order.
747 </p>
748 <a name="anchor6"></a><br /><hr />
749 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
750 <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
751 Result format</h3>
752
753 <p>Result set could be one of the following types:
754 </p>
755 <p>
756 </p>
757 <ol class="text">
758 <li>Normal
759 </li>
760 <li>Warning
761 </li>
762 <li>Error
763 </li>
764 </ol><p>
765
766 </p>
767 <p>Warning and Error result sets MUST be single line and
768 have the following format:
769 </p>
770 <p>
771 </p>
772 <ul class="text">
773 <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
774 </li>
775 <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
776 </li>
777 </ul><p>
778
779 </p>
780 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
781 numeric unique identifiers of the warning or error and
782 &lt;warning-message&gt; and &lt;error-message&gt; are
783 human readable descriptions of the warning or error
784 respectively.
785 </p>
786 <p>Examples:
787 </p>
788 <p>
789 </p>
790 <blockquote class="text">
791 <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
792 </p>
793 <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
794 </p>
795 </blockquote><p>
796
797 </p>
798 <p>
799 </p>
800 <blockquote class="text">
801 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
802 </p>
803 <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
804 </p>
805 </blockquote><p>
806
807 </p>
808 <p>
809 </p>
810 <blockquote class="text">
811 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
812 </p>
813 <p>S: "ERR:9:There is no audio output device with index 123456."
814 </p>
815 </blockquote><p>
816
817 </p>
818 <p>Normal result sets could be:
819 </p>
820 <p>
821 </p>
822 <ol class="text">
823 <li>Empty
824 </li>
825 <li>Single line
826 </li>
827 <li>Multi-line
828 </li>
829 </ol><p>
830
831 </p>
832 <p> Empty result set is issued when the server only
833 needed to acknowledge the fact that the request was
834 received and it was processed successfully and no
835 additional information is available. This result set has
836 the following format:
837 </p>
838 <p>
839 </p>
840 <blockquote class="text">
841 <p>"OK"
842 </p>
843 </blockquote><p>
844
845 </p>
846 <p>Example:
847 </p>
848 <p>
849 </p>
850 <blockquote class="text">
851 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
852 </p>
853 <p>S: "OK"
854 </p>
855 </blockquote><p>
856
857 </p>
858 <p>Single line result sets are command specific. One
859 example of a single line result set is an empty line.
860 Multi-line result sets are command specific and may
861 include one or more lines of information. They MUST
862 always end with the following line:
863 </p>
864 <p>
865 </p>
866 <blockquote class="text">
867 <p>"."
868 </p>
869 </blockquote><p>
870
871 </p>
872 <p>Example:
873 </p>
874 <p>
875 </p>
876 <blockquote class="text">
877 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
878 </p>
879 <p>S: "DRIVER: ALSA"
880 </p>
881 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
882 </p>
883 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
884 </p>
885 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
886 </p>
887 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
888 </p>
889 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
890 </p>
891 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
892 </p>
893 <p>&nbsp;&nbsp;&nbsp;"."
894 </p>
895 </blockquote><p>
896
897 </p>
898 <p>In addition to above mentioned formats, warnings and
899 empty result sets MAY be indexed. In this case, they
900 have the following formats respectively:
901 </p>
902 <p>
903 </p>
904 <ul class="text">
905 <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
906 </li>
907 <li>"OK[&lt;index&gt;]"
908 </li>
909 </ul><p>
910
911 </p>
912 <p>where &lt;index&gt; is command specific and is used
913 to indicate channel number that the result set was
914 related to or other integer value.
915 </p>
916 <p>Each line of the result set MUST end with
917 &lt;CRLF&gt;.
918 </p>
919 <p>Examples:
920 </p>
921 <p>
922 </p>
923 <blockquote class="text">
924 <p>C: "ADD CHANNEL"
925 </p>
926 <p>S: "OK[12]"
927 </p>
928 </blockquote><p>
929
930 </p>
931 <p>
932 </p>
933 <blockquote class="text">
934 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
935 </p>
936 <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
937 </p>
938 </blockquote><p>
939
940 </p>
941 <a name="anchor7"></a><br /><hr />
942 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
943 <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
944 Subscribe/notify communication method</h3>
945
946 <p>This more sophisticated communication method is actually
947 only an extension of the simple request/response
948 communication method. The front-end still uses a TCP
949 connection and sends the same commands on the TCP
950 connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
951 commands that allow a client to tell the server that it is
952 interested in receiving notifications about certain events
953 as they happen on the server. The SUBSCRIBE command has the
954 following syntax:
955 </p>
956 <p>
957 </p>
958 <blockquote class="text">
959 <p>SUBSCRIBE &lt;event-id&gt;
960 </p>
961 </blockquote><p>
962
963 </p>
964 <p>where &lt;event-id&gt; will be replaced by the respective
965 event that client wants to subscribe to. Upon receiving such
966 request, server SHOULD respond with OK and start sending
967 EVENT notifications when a given even has occurred to the
968 front-end when an event has occurred. It MAY be possible
969 certain events may be sent before OK response during real
970 time nature of their generation. Event messages have the
971 following format:
972 </p>
973 <p>
974 </p>
975 <blockquote class="text">
976 <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
977 </p>
978 </blockquote><p>
979
980 </p>
981 <p>where &lt;event-id&gt; uniquely identifies the event that
982 has occurred and &lt;custom-event-data&gt; is event
983 specific.
984 </p>
985 <p>Several rules must be followed by the server when
986 generating events:
987 </p>
988 <p>
989 </p>
990 <ol class="text">
991 <li>Events MUST NOT be sent to any client who has not
992 issued an appropriate SUBSCRIBE command.
993 </li>
994 <li>Events MUST only be sent using the same
995 connection that was used to subscribe to them.
996 </li>
997 <li>When response is being sent to the client, event
998 MUST be inserted in the stream before or after the
999 response, but NOT in the middle. Same is true about
1000 the response. It should never be inserted in the
1001 middle of the event message as well as any other
1002 response.
1003 </li>
1004 </ol><p>
1005
1006 </p>
1007 <p>If the client is not interested in a particular event
1008 anymore it MAY issue UNSUBSCRIBE command using the following
1009 syntax:
1010 </p>
1011 <p>
1012 </p>
1013 <blockquote class="text">
1014 <p>UNSUBSCRIBE &lt;event-id&gt;
1015 </p>
1016 </blockquote><p>
1017
1018 </p>
1019 <p>where &lt;event-id&gt; will be replace by the respective
1020 event that client is no longer interested in receiving. For
1021 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1022 </p>
1023 <p>Example: the fill states of disk stream buffers have
1024 changed on sampler channel 4 and the LinuxSampler instance
1025 will react by sending the following message to all clients
1026 who subscribed to this event:
1027 </p>
1028 <p>
1029 </p>
1030 <blockquote class="text">
1031 <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1032 </p>
1033 </blockquote><p>
1034
1035 </p>
1036 <p>Which means there are currently three active streams on
1037 sampler channel 4, where the stream with ID "35" is filled
1038 by 62%, stream with ID 33 is filled by 80% and stream with
1039 ID 37 is filled by 98%.
1040 </p>
1041 <p>Clients may choose to open more than one connection to
1042 the server and use some connections to receive notifications
1043 while using other connections to issue commands to the
1044 back-end. This is entirely legal and up to the
1045 implementation. This does not change the protocol in any way
1046 and no special restrictions exist on the server to allow or
1047 disallow this or to track what connections belong to what
1048 front-ends. Server will listen on a single port, accept
1049 multiple connections and support protocol described in this
1050 specification in it's entirety on this single port on each
1051 connection that it accepted.
1052 </p>
1053 <p>Due to the fact that TCP is used for this communication,
1054 dead peers will be detected automatically by the OS TCP
1055 stack. While it may take a while to detect dead peers if no
1056 traffic is being sent from server to client (TCP keep-alive
1057 timer is set to 2 hours on many OSes) it will not be an
1058 issue here as when notifications are sent by the server,
1059 dead client will be detected quickly.
1060 </p>
1061 <p>When connection is closed for any reason server MUST
1062 forget all subscriptions that were made on this connection.
1063 If client reconnects it MUST resubscribe to all events that
1064 it wants to receive.
1065 </p>
1066 <a name="control_commands"></a><br /><hr />
1067 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1068 <a name="rfc.section.6"></a><h3>6.&nbsp;
1069 Description for control commands</h3>
1070
1071 <p>This chapter will describe the available control commands
1072 that can be sent on the TCP connection in detail. Some certain
1073 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>
1074 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
1075 multiple-line responses. In this case LinuxSampler signals the
1076 end of the response by a "." (single dot) line.
1077 </p>
1078 <a name="anchor8"></a><br /><hr />
1079 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1080 <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1081 Ignored lines and comments</h3>
1082
1083 <p>White lines, that is lines which only contain space and
1084 tabulator characters, and lines that start with a "#"
1085 character are ignored, thus it's possible for example to
1086 group commands and to place comments in a LSCP script
1087 file.
1088 </p>
1089 <a name="anchor9"></a><br /><hr />
1090 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1091 <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1092 Configuring audio drivers</h3>
1093
1094 <p>Instances of drivers in LinuxSampler are called devices.
1095 You can use multiple audio devices simultaneously, e.g. to
1096 output the sound of one sampler channel using the ALSA audio
1097 output driver, and on another sampler channel you might want
1098 to use the JACK audio output driver. For particular audio
1099 output systems it's also possible to create several devices
1100 of the same audio output driver, e.g. two separate ALSA
1101 audio output devices for using two different sound cards at
1102 the same time. This chapter describes all commands to
1103 configure LinuxSampler's audio output devices and their
1104 parameters.
1105 </p>
1106 <p>Instead of defining commands and parameters for each
1107 driver individually, all possible parameters, their meanings
1108 and possible values have to be obtained at runtime. This
1109 makes the protocol a bit abstract, but has the advantage,
1110 that front-ends can be written independently of what drivers
1111 are currently implemented and what parameters these drivers
1112 are actually offering. This means front-ends can even handle
1113 drivers which are implemented somewhere in future without
1114 modifying the front-end at all.
1115 </p>
1116 <p>Note: examples in this chapter showing particular
1117 parameters of drivers are not meant as specification of the
1118 drivers' parameters. Driver implementations in LinuxSampler
1119 might have complete different parameter names and meanings
1120 than shown in these examples or might change in future, so
1121 these examples are only meant for showing how to retrieve
1122 what parameters drivers are offering, how to retrieve their
1123 possible values, etc.
1124 </p>
1125 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1126 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1127 <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1128 Getting amount of available audio output drivers</h3>
1129
1130 <p>Use the following command to get the number of
1131 audio output drivers currently available for the
1132 LinuxSampler instance:
1133 </p>
1134 <p>
1135 </p>
1136 <blockquote class="text">
1137 <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1138 </p>
1139 </blockquote><p>
1140
1141 </p>
1142 <p>Possible Answers:
1143 </p>
1144 <p>
1145 </p>
1146 <blockquote class="text">
1147 <p>LinuxSampler will answer by sending the
1148 number of audio output drivers.
1149 </p>
1150 </blockquote><p>
1151
1152 </p>
1153 <p>Example:
1154 </p>
1155 <p>
1156 </p>
1157 <blockquote class="text">
1158 <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1159 </p>
1160 <p>S: "2"
1161 </p>
1162 </blockquote><p>
1163
1164 </p>
1165 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1166 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1167 <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1168 Getting all available audio output drivers</h3>
1169
1170 <p>Use the following command to list all audio output
1171 drivers currently available for the LinuxSampler
1172 instance:
1173 </p>
1174 <p>
1175 </p>
1176 <blockquote class="text">
1177 <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1178 </p>
1179 </blockquote><p>
1180
1181 </p>
1182 <p>Possible Answers:
1183 </p>
1184 <p>
1185 </p>
1186 <blockquote class="text">
1187 <p>LinuxSampler will answer by sending comma
1188 separated character strings, each symbolizing an
1189 audio output driver.
1190 </p>
1191 </blockquote><p>
1192
1193 </p>
1194 <p>Example:
1195 </p>
1196 <p>
1197 </p>
1198 <blockquote class="text">
1199 <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1200 </p>
1201 <p>S: "ALSA,JACK"
1202 </p>
1203 </blockquote><p>
1204
1205 </p>
1206 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1207 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1208 <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1209 Getting information about a specific audio
1210 output driver</h3>
1211
1212 <p>Use the following command to get detailed information
1213 about a specific audio output driver:
1214 </p>
1215 <p>
1216 </p>
1217 <blockquote class="text">
1218 <p>GET AUDIO_OUTPUT_DRIVER INFO
1219 &lt;audio-output-driver&gt;
1220 </p>
1221 </blockquote><p>
1222
1223 </p>
1224 <p>Where &lt;audio-output-driver&gt; is the name of the
1225 audio output driver, returned by the
1226 <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.
1227 </p>
1228 <p>Possible Answers:
1229 </p>
1230 <p>
1231 </p>
1232 <blockquote class="text">
1233 <p>LinuxSampler will answer by sending a
1234 &lt;CRLF&gt; separated list. Each answer line
1235 begins with the information category name
1236 followed by a colon and then a space character
1237 &lt;SP&gt; and finally the info character string
1238 to that info category. At the moment the
1239 following information categories are
1240 defined:
1241 </p>
1242 <p>
1243 </p>
1244 <blockquote class="text">
1245 <p>DESCRIPTION -
1246 </p>
1247 <blockquote class="text">
1248 <p> character string describing the
1249 audio output driver
1250 </p>
1251 </blockquote>
1252
1253
1254 <p>VERSION -
1255 </p>
1256 <blockquote class="text">
1257 <p>character string reflecting the
1258 driver's version
1259 </p>
1260 </blockquote>
1261
1262
1263 <p>PARAMETERS -
1264 </p>
1265 <blockquote class="text">
1266 <p>comma separated list of all
1267 parameters available for the given
1268 audio output driver, at least
1269 parameters 'channels', 'samplerate'
1270 and 'active' are offered by all audio
1271 output drivers
1272 </p>
1273 </blockquote>
1274
1275
1276 </blockquote>
1277
1278
1279 <p>The mentioned fields above don't have to be
1280 in particular order.
1281 </p>
1282 </blockquote><p>
1283
1284 </p>
1285 <p>Example:
1286 </p>
1287 <p>
1288 </p>
1289 <blockquote class="text">
1290 <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1291 </p>
1292 <p>S: "DESCRIPTION: Advanced Linux Sound
1293 Architecture"
1294 </p>
1295 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1296 </p>
1297 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1298 DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1299 FRAGMENTSIZE,CARD"
1300 </p>
1301 <p>&nbsp;&nbsp;&nbsp;"."
1302 </p>
1303 </blockquote><p>
1304
1305 </p>
1306 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1307 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1308 <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1309 Getting information about specific audio
1310 output driver parameter</h3>
1311
1312 <p>Use the following command to get detailed information
1313 about a specific audio output driver parameter:
1314 </p>
1315 <p>
1316 </p>
1317 <blockquote class="text">
1318 <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1319 </p>
1320 </blockquote><p>
1321
1322 </p>
1323 <p>Where &lt;audio&gt; is the name of the audio output
1324 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,
1325 &lt;prm&gt; a specific parameter name for which information should be
1326 obtained (as returned by the
1327 <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
1328 &lt;deplist&gt; is an optional list of parameters on which the sought
1329 parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1330 pairs in form of "key1=val1 key2=val2 ...", where character string values
1331 are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1332 which are not dependency parameters of &lt;prm&gt; will be ignored, means
1333 the front-end application can simply put all parameters into &lt;deplist&gt;
1334 with the values already selected by the user.
1335 </p>
1336 <p>Possible Answers:
1337 </p>
1338 <p>
1339 </p>
1340 <blockquote class="text">
1341 <p>LinuxSampler will answer by sending a
1342 &lt;CRLF&gt; separated list.
1343 Each answer line begins with the information category name
1344 followed by a colon and then a space character &lt;SP&gt; and
1345 finally
1346 the info character string to that info category. There are
1347 information which is always returned, independently of the
1348 given driver parameter and there are optional information
1349 which is only shown dependently to given driver parameter. At
1350 the moment the following information categories are defined:
1351 </p>
1352 </blockquote><p>
1353
1354 </p>
1355 <p>
1356 </p>
1357 <blockquote class="text">
1358 <p>TYPE -
1359 </p>
1360 <blockquote class="text">
1361 <p>either "BOOL" for boolean value(s) or
1362 "INT" for integer
1363 value(s) or "FLOAT" for dotted number(s) or "STRING" for
1364 character string(s)
1365 (always returned, no matter which driver parameter)
1366 </p>
1367 </blockquote>
1368
1369
1370 <p>DESCRIPTION -
1371 </p>
1372 <blockquote class="text">
1373 <p>arbitrary text describing the purpose of the parameter
1374 (always returned, no matter which driver parameter)
1375 </p>
1376 </blockquote>
1377
1378
1379 <p>MANDATORY -
1380 </p>
1381 <blockquote class="text">
1382 <p>either true or false, defines if this parameter must be
1383 given when the device is to be created with the
1384 <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>
1385 command (always returned, no matter which driver parameter)
1386 </p>
1387 </blockquote>
1388
1389
1390 <p>FIX -
1391 </p>
1392 <blockquote class="text">
1393 <p>either true or false, if false then this parameter can
1394 be changed at any time, once the device is created by
1395 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>
1396 command (always returned, no matter which driver parameter)
1397 </p>
1398 </blockquote>
1399
1400
1401 <p>MULTIPLICITY -
1402 </p>
1403 <blockquote class="text">
1404 <p>either true or false, defines if this parameter allows
1405 only one value or a list of values, where true means
1406 multiple values and false only a single value allowed
1407 (always returned, no matter which driver parameter)
1408 </p>
1409 </blockquote>
1410
1411
1412 <p>DEPENDS -
1413 </p>
1414 <blockquote class="text">
1415 <p>comma separated list of parameters this parameter depends
1416 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1417 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1418 listed parameters, for example assuming that an audio
1419 driver (like the ALSA driver) offers parameters 'card'
1420 and 'samplerate' then parameter 'samplerate' would
1421 depend on 'card' because the possible values for
1422 'samplerate' depends on the sound card which can be
1423 chosen by the 'card' parameter
1424 (optionally returned, dependent to driver parameter)
1425 </p>
1426 </blockquote>
1427
1428
1429 <p>DEFAULT -
1430 </p>
1431 <blockquote class="text">
1432 <p>reflects the default value for this parameter which is
1433 used when the device is created and not explicitly
1434 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,
1435 in case of MULTIPLCITY=true, this is a comma separated
1436 list, that's why character strings are encapsulated into
1437 apostrophes (')
1438 (optionally returned, dependent to driver parameter)
1439 </p>
1440 </blockquote>
1441
1442
1443 <p>RANGE_MIN -
1444 </p>
1445 <blockquote class="text">
1446 <p>defines lower limit of the allowed value range for this
1447 parameter, can be an integer value as well as a dotted
1448 number, this parameter is often used in conjunction
1449 with RANGE_MAX, but may also appear without
1450 (optionally returned, dependent to driver parameter)
1451 </p>
1452 </blockquote>
1453
1454
1455 <p>RANGE_MAX -
1456 </p>
1457 <blockquote class="text">
1458 <p>defines upper limit of the allowed value range for this
1459 parameter, can be an integer value as well as a dotted
1460 number, this parameter is often used in conjunction with
1461 RANGE_MIN, but may also appear without
1462 (optionally returned, dependent to driver parameter)
1463 </p>
1464 </blockquote>
1465
1466
1467 <p>POSSIBILITIES -
1468 </p>
1469 <blockquote class="text">
1470 <p>comma separated list of possible values for this
1471 parameter, character strings are encapsulated into
1472 apostrophes
1473 (optionally returned, dependent to driver parameter)
1474 </p>
1475 </blockquote>
1476
1477
1478 </blockquote><p>
1479
1480 </p>
1481 <p>The mentioned fields above don't have to be in particular order.
1482 </p>
1483 <p>Examples:
1484 </p>
1485 <p>
1486 </p>
1487 <blockquote class="text">
1488 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1489 </p>
1490 <p>S: "DESCRIPTION: sound card to be used"
1491 </p>
1492 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1493 </p>
1494 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1495 </p>
1496 <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1497 </p>
1498 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1499 </p>
1500 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1501 </p>
1502 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1503 </p>
1504 <p>&nbsp;&nbsp;&nbsp;"."
1505 </p>
1506 </blockquote><p>
1507
1508 </p>
1509 <p>
1510 </p>
1511 <blockquote class="text">
1512 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1513 </p>
1514 <p>S: "DESCRIPTION: output sample rate in Hz"
1515 </p>
1516 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1517 </p>
1518 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1519 </p>
1520 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1521 </p>
1522 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1523 </p>
1524 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1525 </p>
1526 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1527 </p>
1528 <p>&nbsp;&nbsp;&nbsp;"."
1529 </p>
1530 </blockquote><p>
1531
1532 </p>
1533 <p>
1534 </p>
1535 <blockquote class="text">
1536 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1537 </p>
1538 <p>S: "DESCRIPTION: output sample rate in Hz"
1539 </p>
1540 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1541 </p>
1542 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1543 </p>
1544 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1545 </p>
1546 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1547 </p>
1548 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1549 </p>
1550 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1551 </p>
1552 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1553 </p>
1554 <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1555 </p>
1556 <p>&nbsp;&nbsp;&nbsp;"."
1557 </p>
1558 </blockquote><p>
1559
1560 </p>
1561 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1562 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1563 <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1564 Creating an audio output device</h3>
1565
1566 <p>Use the following command to create a new audio output device for the desired audio output system:
1567 </p>
1568 <p>
1569 </p>
1570 <blockquote class="text">
1571 <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1572 </p>
1573 </blockquote><p>
1574
1575 </p>
1576 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1577 output system as returned by the
1578 <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>
1579 command and &lt;param-list&gt; by an optional list of driver
1580 specific parameters in form of "key1=val1 key2=val2 ...", where
1581 character string values should be encapsulated into apostrophes (').
1582 Note that there might be drivers which require parameter(s) to be
1583 given with this command. Use the previously described commands in
1584 this chapter to get this information.
1585 </p>
1586 <p>Possible Answers:
1587 </p>
1588 <p>
1589 </p>
1590 <blockquote class="text">
1591 <p>"OK[&lt;device-id&gt;]" -
1592 </p>
1593 <blockquote class="text">
1594 <p>in case the device was successfully created, where
1595 &lt;device-id&gt; is the numerical ID of the new device
1596 </p>
1597 </blockquote>
1598
1599
1600 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1601 </p>
1602 <blockquote class="text">
1603 <p>in case the device was created successfully, where
1604 &lt;device-id&gt; is the numerical ID of the new device, but there
1605 are noteworthy issue(s) related (e.g. sound card doesn't
1606 support given hardware parameters and the driver is using
1607 fall-back values), providing an appropriate warning code and
1608 warning message
1609 </p>
1610 </blockquote>
1611
1612
1613 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1614 </p>
1615 <blockquote class="text">
1616 <p>in case it failed, providing an appropriate error code and error message
1617 </p>
1618 </blockquote>
1619
1620
1621 </blockquote><p>
1622
1623 </p>
1624 <p>Examples:
1625 </p>
1626 <p>
1627 </p>
1628 <blockquote class="text">
1629 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1630 </p>
1631 <p>S: "OK[0]"
1632 </p>
1633 </blockquote><p>
1634
1635 </p>
1636 <p>
1637 </p>
1638 <blockquote class="text">
1639 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1640 </p>
1641 <p>S: "OK[1]"
1642 </p>
1643 </blockquote><p>
1644
1645 </p>
1646 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1647 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1648 <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1649 Destroying an audio output device</h3>
1650
1651 <p>Use the following command to destroy a created output device:
1652 </p>
1653 <p>
1654 </p>
1655 <blockquote class="text">
1656 <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1657 </p>
1658 </blockquote><p>
1659
1660 </p>
1661 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1662 audio output device as given by the
1663 <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>
1664 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>
1665 command.
1666 </p>
1667 <p>Possible Answers:
1668 </p>
1669 <p>
1670 </p>
1671 <blockquote class="text">
1672 <p>"OK" -
1673 </p>
1674 <blockquote class="text">
1675 <p>in case the device was successfully destroyed
1676 </p>
1677 </blockquote>
1678
1679
1680 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1681 </p>
1682 <blockquote class="text">
1683 <p>in case the device was destroyed successfully, but there are
1684 noteworthy issue(s) related (e.g. an audio over ethernet
1685 driver was unloaded but the other host might not be
1686 informed about this situation), providing an appropriate
1687 warning code and warning message
1688 </p>
1689 </blockquote>
1690
1691
1692 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1693 </p>
1694 <blockquote class="text">
1695 <p>in case it failed, providing an appropriate error code and
1696 error message
1697 </p>
1698 </blockquote>
1699
1700
1701 </blockquote><p>
1702
1703 </p>
1704 <p>Example:
1705 </p>
1706 <p>
1707 </p>
1708 <blockquote class="text">
1709 <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1710 </p>
1711 <p>S: "OK"
1712 </p>
1713 </blockquote><p>
1714
1715 </p>
1716 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1717 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1718 <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1719 Getting all created audio output device count</h3>
1720
1721 <p>Use the following command to count all created audio output devices:
1722 </p>
1723 <p>
1724 </p>
1725 <blockquote class="text">
1726 <p>GET AUDIO_OUTPUT_DEVICES
1727 </p>
1728 </blockquote><p>
1729
1730 </p>
1731 <p>Possible Answers:
1732 </p>
1733 <p>
1734 </p>
1735 <blockquote class="text">
1736 <p>LinuxSampler will answer by sending the current number of all
1737 audio output devices.
1738 </p>
1739 </blockquote><p>
1740
1741 </p>
1742 <p>Example:
1743 </p>
1744 <p>
1745 </p>
1746 <blockquote class="text">
1747 <p>C: "GET AUDIO_OUTPUT_DEVICES"
1748 </p>
1749 <p>S: "4"
1750 </p>
1751 </blockquote><p>
1752
1753 </p>
1754 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1755 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1756 <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1757 Getting all created audio output device list</h3>
1758
1759 <p>Use the following command to list all created audio output devices:
1760 </p>
1761 <p>
1762 </p>
1763 <blockquote class="text">
1764 <p>LIST AUDIO_OUTPUT_DEVICES
1765 </p>
1766 </blockquote><p>
1767
1768 </p>
1769 <p>Possible Answers:
1770 </p>
1771 <p>
1772 </p>
1773 <blockquote class="text">
1774 <p>LinuxSampler will answer by sending a comma separated list with
1775 the numerical IDs of all audio output devices.
1776 </p>
1777 </blockquote><p>
1778
1779 </p>
1780 <p>Example:
1781 </p>
1782 <p>
1783 </p>
1784 <blockquote class="text">
1785 <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1786 </p>
1787 <p>S: "0,1,4,5"
1788 </p>
1789 </blockquote><p>
1790
1791 </p>
1792 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1793 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1794 <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1795 Getting current settings of an audio output device</h3>
1796
1797 <p>Use the following command to get current settings of a specific, created audio output device:
1798 </p>
1799 <p>
1800 </p>
1801 <blockquote class="text">
1802 <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1803 </p>
1804 </blockquote><p>
1805
1806 </p>
1807 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1808 of the audio output device as e.g. returned by the
1809 <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.
1810 </p>
1811 <p>Possible Answers:
1812 </p>
1813 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1814 Each answer line begins with the information category name
1815 followed by a colon and then a space character &lt;SP&gt; and finally
1816 the info character string to that info category. As some
1817 parameters might allow multiple values, character strings are
1818 encapsulated into apostrophes ('). At the moment the following
1819 information categories are defined (independently of device):
1820 </p>
1821 <p>
1822 </p>
1823 <blockquote class="text">
1824 <p>DRIVER -
1825 </p>
1826 <blockquote class="text">
1827 <p>identifier of the used audio output driver, as also
1828 returned by the
1829 <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>
1830 command
1831 </p>
1832 </blockquote>
1833
1834
1835 <p>CHANNELS -
1836 </p>
1837 <blockquote class="text">
1838 <p>amount of audio output channels this device currently
1839 offers
1840 </p>
1841 </blockquote>
1842
1843
1844 <p>SAMPLERATE -
1845 </p>
1846 <blockquote class="text">
1847 <p>playback sample rate the device uses
1848 </p>
1849 </blockquote>
1850
1851
1852 <p>ACTIVE -
1853 </p>
1854 <blockquote class="text">
1855 <p>either true or false, if false then the audio device is
1856 inactive and doesn't output any sound, nor do the
1857 sampler channels connected to this audio device render
1858 any audio
1859 </p>
1860 </blockquote>
1861
1862
1863 </blockquote><p>
1864
1865 </p>
1866 <p>The mentioned fields above don't have to be in particular
1867 order. The fields above are only those fields which are
1868 returned by all audio output devices. Every audio output driver
1869 might have its own, additional driver specific parameters (see
1870 <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>)
1871 which are also returned by this command.
1872 </p>
1873 <p>Example:
1874 </p>
1875 <p>
1876 </p>
1877 <blockquote class="text">
1878 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1879 </p>
1880 <p>S: "DRIVER: ALSA"
1881 </p>
1882 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1883 </p>
1884 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1885 </p>
1886 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1887 </p>
1888 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1889 </p>
1890 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1891 </p>
1892 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1893 </p>
1894 <p>&nbsp;&nbsp;&nbsp;"."
1895 </p>
1896 </blockquote><p>
1897
1898 </p>
1899 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1900 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1901 <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1902 Changing settings of audio output devices</h3>
1903
1904 <p>Use the following command to alter a specific setting of a created audio output device:
1905 </p>
1906 <p>
1907 </p>
1908 <blockquote class="text">
1909 <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1910 </p>
1911 </blockquote><p>
1912
1913 </p>
1914 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1915 audio output device as given by the
1916 <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>
1917 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>
1918 command, &lt;key&gt; by the name of the parameter to change
1919 and &lt;value&gt; by the new value for this parameter.
1920 </p>
1921 <p>Possible Answers:
1922 </p>
1923 <p>
1924 </p>
1925 <blockquote class="text">
1926 <p>"OK" -
1927 </p>
1928 <blockquote class="text">
1929 <p>in case setting was successfully changed
1930 </p>
1931 </blockquote>
1932
1933
1934 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1935 </p>
1936 <blockquote class="text">
1937 <p>in case setting was changed successfully, but there are
1938 noteworthy issue(s) related, providing an appropriate
1939 warning code and warning message
1940 </p>
1941 </blockquote>
1942
1943
1944 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1945 </p>
1946 <blockquote class="text">
1947 <p>in case it failed, providing an appropriate error code and
1948 error message
1949 </p>
1950 </blockquote>
1951
1952
1953 </blockquote><p>
1954
1955 </p>
1956 <p>Example:
1957 </p>
1958 <p>
1959 </p>
1960 <blockquote class="text">
1961 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1962 </p>
1963 <p>S: "OK"
1964 </p>
1965 </blockquote><p>
1966
1967 </p>
1968 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
1969 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1970 <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
1971 Getting information about an audio channel</h3>
1972
1973 <p>Use the following command to get information about an audio channel:
1974 </p>
1975 <p>
1976 </p>
1977 <blockquote class="text">
1978 <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1979 </p>
1980 </blockquote><p>
1981
1982 </p>
1983 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1984 <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>
1985 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>
1986 command and &lt;audio-chan&gt; the audio channel number.
1987 </p>
1988 <p>Possible Answers:
1989 </p>
1990 <p>
1991 </p>
1992 <blockquote class="text">
1993 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1994 Each answer line begins with the information category name
1995 followed by a colon and then a space character &lt;SP&gt; and finally
1996 the info character string to that info category. At the moment
1997 the following information categories are defined:
1998 </p>
1999 <p>
2000 </p>
2001 <blockquote class="text">
2002 <p>NAME -
2003 </p>
2004 <blockquote class="text">
2005 <p>arbitrary character string naming the channel, which
2006 doesn't have to be unique (always returned by all audio channels)
2007 </p>
2008 </blockquote>
2009
2010
2011 <p>IS_MIX_CHANNEL -
2012 </p>
2013 <blockquote class="text">
2014 <p>either true or false, a mix-channel is not a real,
2015 independent audio channel, but a virtual channel which
2016 is mixed to another real channel, this mechanism is
2017 needed for sampler engines which need more audio
2018 channels than the used audio system might be able to offer
2019 (always returned by all audio channels)
2020 </p>
2021 </blockquote>
2022
2023
2024 <p>MIX_CHANNEL_DESTINATION -
2025 </p>
2026 <blockquote class="text">
2027 <p>numerical ID (positive integer including 0)
2028 which reflects the real audio channel (of the same audio
2029 output device) this mix channel refers to, means where
2030 the audio signal actually will be routed / added to
2031 (only returned in case the audio channel is mix channel)
2032 </p>
2033 </blockquote>
2034
2035
2036 </blockquote>
2037
2038
2039 </blockquote><p>
2040
2041 </p>
2042 <p>The mentioned fields above don't have to be in particular
2043 order. The fields above are only those fields which are
2044 generally returned for the described cases by all audio
2045 channels regardless of the audio driver. Every audio channel
2046 might have its own, additional driver and channel specific
2047 parameters.
2048 </p>
2049 <p>Examples:
2050 </p>
2051 <p>
2052 </p>
2053 <blockquote class="text">
2054 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2055 </p>
2056 <p>S: "NAME: studio monitor left"
2057 </p>
2058 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2059 </p>
2060 <p>&nbsp;&nbsp;&nbsp;"."
2061 </p>
2062 </blockquote><p>
2063
2064 </p>
2065 <p>
2066 </p>
2067 <blockquote class="text">
2068 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2069 </p>
2070 <p>S: "NAME: studio monitor right"
2071 </p>
2072 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2073 </p>
2074 <p>&nbsp;&nbsp;&nbsp;"."
2075 </p>
2076 </blockquote><p>
2077
2078 </p>
2079 <p>
2080 </p>
2081 <blockquote class="text">
2082 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2083 </p>
2084 <p>S: "NAME: studio monitor left"
2085 </p>
2086 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2087 </p>
2088 <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2089 </p>
2090 <p>&nbsp;&nbsp;&nbsp;"."
2091 </p>
2092 </blockquote><p>
2093
2094 </p>
2095 <p>
2096 </p>
2097 <blockquote class="text">
2098 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2099 </p>
2100 <p>S: "NAME: 'ardour (left)'"
2101 </p>
2102 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2103 </p>
2104 <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2105 </p>
2106 <p>&nbsp;&nbsp;&nbsp;"."
2107 </p>
2108 </blockquote><p>
2109
2110 </p>
2111 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2112 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2113 <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2114 Getting information about specific audio channel parameter</h3>
2115
2116 <p>Use the following command to get detailed information about specific audio channel parameter:
2117 </p>
2118 <p>
2119 </p>
2120 <blockquote class="text">
2121 <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2122 </p>
2123 </blockquote><p>
2124
2125 </p>
2126 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2127 <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>
2128 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>
2129 command, &lt;chan&gt; the audio channel number
2130 and &lt;param&gt; a specific channel parameter name for which information should
2131 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).
2132 </p>
2133 <p>Possible Answers:
2134 </p>
2135 <p>
2136 </p>
2137 <blockquote class="text">
2138 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2139 Each answer line begins with the information category name
2140 followed by a colon and then a space character &lt;SP&gt; and finally
2141 the info character string to that info category. There are
2142 information which is always returned, independently of the
2143 given channel parameter and there is optional information
2144 which is only shown dependently to the given audio channel. At
2145 the moment the following information categories are defined:
2146 </p>
2147 <p>
2148 </p>
2149 <blockquote class="text">
2150 <p>TYPE -
2151 </p>
2152 <blockquote class="text">
2153 <p>either "BOOL" for boolean value(s) or "INT" for integer
2154 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2155 character string(s)
2156 (always returned)
2157 </p>
2158 </blockquote>
2159
2160
2161 <p>DESCRIPTION -
2162 </p>
2163 <blockquote class="text">
2164 <p>arbitrary text describing the purpose of the parameter (always returned)
2165 </p>
2166 </blockquote>
2167
2168
2169 <p>FIX -
2170 </p>
2171 <blockquote class="text">
2172 <p>either true or false, if true then this parameter is
2173 read only, thus cannot be altered
2174 (always returned)
2175 </p>
2176 </blockquote>
2177
2178
2179 <p>MULTIPLICITY -
2180 </p>
2181 <blockquote class="text">
2182 <p>either true or false, defines if this parameter allows
2183 only one value or a list of values, where true means
2184 multiple values and false only a single value allowed
2185 (always returned)
2186 </p>
2187 </blockquote>
2188
2189
2190 <p>RANGE_MIN -
2191 </p>
2192 <blockquote class="text">
2193 <p>defines lower limit of the allowed value range for this
2194 parameter, can be an integer value as well as a dotted
2195 number, usually used in conjunction with 'RANGE_MAX',
2196 but may also appear without
2197 (optionally returned, dependent to driver and channel
2198 parameter)
2199 </p>
2200 </blockquote>
2201
2202
2203 <p>RANGE_MAX -
2204 </p>
2205 <blockquote class="text">
2206 <p>defines upper limit of the allowed value range for this
2207 parameter, can be an integer value as well as a dotted
2208 number, usually used in conjunction with 'RANGE_MIN',
2209 but may also appear without
2210 (optionally returned, dependent to driver and channel
2211 parameter)
2212 </p>
2213 </blockquote>
2214
2215
2216 <p>POSSIBILITIES -
2217 </p>
2218 <blockquote class="text">
2219 <p>comma separated list of possible values for this
2220 parameter, character strings are encapsulated into
2221 apostrophes
2222 (optionally returned, dependent to driver and channel
2223 parameter)
2224 </p>
2225 </blockquote>
2226
2227
2228 </blockquote>
2229
2230
2231 <p>The mentioned fields above don't have to be in particular order.
2232 </p>
2233 </blockquote><p>
2234
2235 </p>
2236 <p>Example:
2237 </p>
2238 <p>
2239 </p>
2240 <blockquote class="text">
2241 <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2242 </p>
2243 <p>S: "DESCRIPTION: bindings to other JACK clients"
2244 </p>
2245 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2246 </p>
2247 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2248 </p>
2249 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2250 </p>
2251 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2252 </p>
2253 <p>&nbsp;&nbsp;&nbsp;"."
2254 </p>
2255 </blockquote><p>
2256
2257 </p>
2258 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2259 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2260 <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2261 Changing settings of audio output channels</h3>
2262
2263 <p>Use the following command to alter a specific setting of an audio output channel:
2264 </p>
2265 <p>
2266 </p>
2267 <blockquote class="text">
2268 <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2269 </p>
2270 </blockquote><p>
2271
2272 </p>
2273 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2274 <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>
2275 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>
2276 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2277 parameter to change and &lt;value&gt; by the new value for this parameter.
2278 </p>
2279 <p>Possible Answers:
2280 </p>
2281 <p>
2282 </p>
2283 <blockquote class="text">
2284 <p>"OK" -
2285 </p>
2286 <blockquote class="text">
2287 <p>in case setting was successfully changed
2288 </p>
2289 </blockquote>
2290
2291
2292 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2293 </p>
2294 <blockquote class="text">
2295 <p>in case setting was changed successfully, but there are
2296 noteworthy issue(s) related, providing an appropriate
2297 warning code and warning message
2298 </p>
2299 </blockquote>
2300
2301
2302 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2303 </p>
2304 <blockquote class="text">
2305 <p>in case it failed, providing an appropriate error code and
2306 error message
2307 </p>
2308 </blockquote>
2309
2310
2311 </blockquote><p>
2312
2313 </p>
2314 <p>Example:
2315 </p>
2316 <p>
2317 </p>
2318 <blockquote class="text">
2319 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2320 </p>
2321 <p>S: "OK"
2322 </p>
2323 </blockquote><p>
2324
2325 </p>
2326 <p>
2327 </p>
2328 <blockquote class="text">
2329 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2330 </p>
2331 <p>S: "OK"
2332 </p>
2333 </blockquote><p>
2334
2335 </p>
2336 <a name="anchor10"></a><br /><hr />
2337 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2338 <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2339 Configuring MIDI input drivers</h3>
2340
2341 <p>Instances of drivers in LinuxSampler are called devices. You can use
2342 multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2343 MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2344 channel. For particular MIDI input systems it's also possible to create
2345 several devices of the same MIDI input type. This chapter describes all
2346 commands to configure LinuxSampler's MIDI input devices and their parameters.
2347 </p>
2348 <p>Instead of defining commands and parameters for each driver individually,
2349 all possible parameters, their meanings and possible values have to be obtained
2350 at runtime. This makes the protocol a bit abstract, but has the advantage, that
2351 front-ends can be written independently of what drivers are currently implemented
2352 and what parameters these drivers are actually offering. This means front-ends can
2353 even handle drivers which are implemented somewhere in future without modifying
2354 the front-end at all.
2355 </p>
2356 <p>Commands for configuring MIDI input devices are pretty much the same as the
2357 commands for configuring audio output drivers, already described in the last
2358 chapter.
2359 </p>
2360 <p>Note: examples in this chapter showing particular parameters of drivers are
2361 not meant as specification of the drivers' parameters. Driver implementations in
2362 LinuxSampler might have complete different parameter names and meanings than shown
2363 in these examples or might change in future, so these examples are only meant for
2364 showing how to retrieve what parameters drivers are offering, how to retrieve their
2365 possible values, etc.
2366 </p>
2367 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2368 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2369 <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2370 Getting amount of available MIDI input drivers</h3>
2371
2372 <p>Use the following command to get the number of
2373 MIDI input drivers currently available for the
2374 LinuxSampler instance:
2375 </p>
2376 <p>
2377 </p>
2378 <blockquote class="text">
2379 <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2380 </p>
2381 </blockquote><p>
2382
2383 </p>
2384 <p>Possible Answers:
2385 </p>
2386 <p>
2387 </p>
2388 <blockquote class="text">
2389 <p>LinuxSampler will answer by sending the
2390 number of available MIDI input drivers.
2391 </p>
2392 </blockquote><p>
2393
2394 </p>
2395 <p>Example:
2396 </p>
2397 <p>
2398 </p>
2399 <blockquote class="text">
2400 <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2401 </p>
2402 <p>S: "2"
2403 </p>
2404 </blockquote><p>
2405
2406 </p>
2407 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2408 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2409 <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2410 Getting all available MIDI input drivers</h3>
2411
2412 <p>Use the following command to list all MIDI input drivers currently available
2413 for the LinuxSampler instance:
2414 </p>
2415 <p>
2416 </p>
2417 <blockquote class="text">
2418 <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2419 </p>
2420 </blockquote><p>
2421
2422 </p>
2423 <p>Possible Answers:
2424 </p>
2425 <p>
2426 </p>
2427 <blockquote class="text">
2428 <p>LinuxSampler will answer by sending comma separated character
2429 strings, each symbolizing a MIDI input driver.
2430 </p>
2431 </blockquote><p>
2432
2433 </p>
2434 <p>Example:
2435 </p>
2436 <p>
2437 </p>
2438 <blockquote class="text">
2439 <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2440 </p>
2441 <p>S: "ALSA,JACK"
2442 </p>
2443 </blockquote><p>
2444
2445 </p>
2446 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2447 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2448 <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2449 Getting information about a specific MIDI input driver</h3>
2450
2451 <p>Use the following command to get detailed information about a specific MIDI input driver:
2452 </p>
2453 <p>
2454 </p>
2455 <blockquote class="text">
2456 <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2457 </p>
2458 </blockquote><p>
2459
2460 </p>
2461 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2462 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.
2463 </p>
2464 <p>Possible Answers:
2465 </p>
2466 <p>
2467 </p>
2468 <blockquote class="text">
2469 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2470 Each answer line begins with the information category name
2471 followed by a colon and then a space character &lt;SP&gt; and finally
2472 the info character string to that info category. At the moment
2473 the following information categories are defined:
2474 </p>
2475 <p>
2476 </p>
2477 <blockquote class="text">
2478 <p>DESCRIPTION -
2479 </p>
2480 <blockquote class="text">
2481 <p>arbitrary description text about the MIDI input driver
2482 </p>
2483 </blockquote>
2484
2485
2486 <p>VERSION -
2487 </p>
2488 <blockquote class="text">
2489 <p>arbitrary character string regarding the driver's version
2490 </p>
2491 </blockquote>
2492
2493
2494 <p>PARAMETERS -
2495 </p>
2496 <blockquote class="text">
2497 <p>comma separated list of all parameters available for the given MIDI input driver
2498 </p>
2499 </blockquote>
2500
2501
2502 </blockquote>
2503
2504
2505 <p>The mentioned fields above don't have to be in particular order.
2506 </p>
2507 </blockquote><p>
2508
2509 </p>
2510 <p>Example:
2511 </p>
2512 <p>
2513 </p>
2514 <blockquote class="text">
2515 <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2516 </p>
2517 <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2518 </p>
2519 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2520 </p>
2521 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2522 </p>
2523 <p>&nbsp;&nbsp;&nbsp;"."
2524 </p>
2525 </blockquote><p>
2526
2527 </p>
2528 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2529 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2530 <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2531 Getting information about specific MIDI input driver parameter</h3>
2532
2533 <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2534 </p>
2535 <p>
2536 </p>
2537 <blockquote class="text">
2538 <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2539 </p>
2540 </blockquote><p>
2541
2542 </p>
2543 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2544 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
2545 parameter name for which information should be obtained (as returned by the
2546 <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
2547 of parameters on which the sought parameter &lt;param&gt; depends on,
2548 &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2549 where character string values are encapsulated into apostrophes ('). Arguments
2550 given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2551 will be ignored, means the front-end application can simply put all parameters
2552 in &lt;deplist&gt; with the values selected by the user.
2553 </p>
2554 <p>Possible Answers:
2555 </p>
2556 <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2557 Each answer line begins with the information category name
2558 followed by a colon and then a space character &lt;SP> and finally
2559 the info character string to that info category. There is
2560 information which is always returned, independent of the
2561 given driver parameter and there is optional information
2562 which is only shown dependent to given driver parameter. At
2563 the moment the following information categories are defined:
2564 </p>
2565 <p>
2566 </p>
2567 <blockquote class="text">
2568 <p>TYPE -
2569 </p>
2570 <blockquote class="text">
2571 <p>either "BOOL" for boolean value(s) or "INT" for integer
2572 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2573 character string(s)
2574 (always returned, no matter which driver parameter)
2575 </p>
2576 </blockquote>
2577
2578
2579 <p>DESCRIPTION -
2580 </p>
2581 <blockquote class="text">
2582 <p>arbitrary text describing the purpose of the parameter
2583 (always returned, no matter which driver parameter)
2584 </p>
2585 </blockquote>
2586
2587
2588 <p>MANDATORY -
2589 </p>
2590 <blockquote class="text">
2591 <p>either true or false, defines if this parameter must be
2592 given when the device is to be created with the
2593 <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
2594 (always returned, no matter which driver parameter)
2595 </p>
2596 </blockquote>
2597
2598
2599 <p>FIX -
2600 </p>
2601 <blockquote class="text">
2602 <p>either true or false, if false then this parameter can
2603 be changed at any time, once the device is created by
2604 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
2605 (always returned, no matter which driver parameter)
2606 </p>
2607 </blockquote>
2608
2609
2610 <p>MULTIPLICITY -
2611 </p>
2612 <blockquote class="text">
2613 <p>either true or false, defines if this parameter allows
2614 only one value or a list of values, where true means
2615 multiple values and false only a single value allowed
2616 (always returned, no matter which driver parameter)
2617 </p>
2618 </blockquote>
2619
2620
2621 <p>DEPENDS -
2622 </p>
2623 <blockquote class="text">
2624 <p>comma separated list of parameters this parameter depends
2625 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2626 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2627 listed parameters, for example assuming that an audio
2628 driver (like the ALSA driver) offers parameters 'card'
2629 and 'samplerate' then parameter 'samplerate' would
2630 depend on 'card' because the possible values for
2631 'samplerate' depends on the sound card which can be
2632 chosen by the 'card' parameter
2633 (optionally returned, dependent to driver parameter)
2634 </p>
2635 </blockquote>
2636
2637
2638 <p>DEFAULT -
2639 </p>
2640 <blockquote class="text">
2641 <p>reflects the default value for this parameter which is
2642 used when the device is created and not explicitly
2643 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,
2644 in case of MULTIPLCITY=true, this is a comma separated
2645 list, that's why character strings are encapsulated into
2646 apostrophes (')
2647 (optionally returned, dependent to driver parameter)
2648 </p>
2649 </blockquote>
2650
2651
2652 <p>RANGE_MIN -
2653 </p>
2654 <blockquote class="text">
2655 <p>defines lower limit of the allowed value range for this
2656 parameter, can be an integer value as well as a dotted
2657 number, this parameter is often used in conjunction
2658 with RANGE_MAX, but may also appear without
2659 (optionally returned, dependent to driver parameter)
2660 </p>
2661 </blockquote>
2662
2663
2664 <p>RANGE_MAX -
2665 </p>
2666 <blockquote class="text">
2667 <p>defines upper limit of the allowed value range for this
2668 parameter, can be an integer value as well as a dotted
2669 number, this parameter is often used in conjunction with
2670 RANGE_MIN, but may also appear without
2671 (optionally returned, dependent to driver parameter)
2672 </p>
2673 </blockquote>
2674
2675
2676 <p>POSSIBILITIES -
2677 </p>
2678 <blockquote class="text">
2679 <p>comma separated list of possible values for this
2680 parameter, character strings are encapsulated into
2681 apostrophes
2682 (optionally returned, dependent to driver parameter)
2683 </p>
2684 </blockquote>
2685
2686
2687 </blockquote><p>
2688
2689 </p>
2690 <p>The mentioned fields above don't have to be in particular order.
2691 </p>
2692 <p>Example:
2693 </p>
2694 <p>
2695 </p>
2696 <blockquote class="text">
2697 <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2698 </p>
2699 <p>S: "DESCRIPTION: Whether device is enabled"
2700 </p>
2701 <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2702 </p>
2703 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2704 </p>
2705 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2706 </p>
2707 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2708 </p>
2709 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2710 </p>
2711 <p>&nbsp;&nbsp;&nbsp;"."
2712 </p>
2713 </blockquote><p>
2714
2715 </p>
2716 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2717 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2718 <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2719 Creating a MIDI input device</h3>
2720
2721 <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2722 </p>
2723 <p>
2724 </p>
2725 <blockquote class="text">
2726 <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2727 </p>
2728 </blockquote><p>
2729
2730 </p>
2731 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2732 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
2733 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2734 character string values should be encapsulated into apostrophes (').
2735 Note that there might be drivers which require parameter(s) to be
2736 given with this command. Use the previously described commands in
2737 this chapter to get that information.
2738 </p>
2739 <p>Possible Answers:
2740 </p>
2741 <p>
2742 </p>
2743 <blockquote class="text">
2744 <p>"OK[&lt;device-id&gt;]" -
2745 </p>
2746 <blockquote class="text">
2747 <p>in case the device was successfully created, where
2748 &lt;device-id&gt; is the numerical ID of the new device
2749 </p>
2750 </blockquote>
2751
2752
2753 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2754 </p>
2755 <blockquote class="text">
2756 <p>in case the driver was loaded successfully, where
2757 &lt;device-id&gt; is the numerical ID of the new device, but
2758 there are noteworthy issue(s) related, providing an
2759 appropriate warning code and warning message
2760 </p>
2761 </blockquote>
2762
2763
2764 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2765 </p>
2766 <blockquote class="text">
2767 <p>in case it failed, providing an appropriate error code and error message
2768 </p>
2769 </blockquote>
2770
2771
2772 </blockquote><p>
2773
2774 </p>
2775 <p>Example:
2776 </p>
2777 <p>
2778 </p>
2779 <blockquote class="text">
2780 <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2781 </p>
2782 <p>S: "OK[0]"
2783 </p>
2784 </blockquote><p>
2785
2786 </p>
2787 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2788 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2789 <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2790 Destroying a MIDI input device</h3>
2791
2792 <p>Use the following command to destroy a created MIDI input device:
2793 </p>
2794 <p>
2795 </p>
2796 <blockquote class="text">
2797 <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2798 </p>
2799 </blockquote><p>
2800
2801 </p>
2802 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2803 <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>
2804 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>
2805 command.
2806 </p>
2807 <p>Possible Answers:
2808 </p>
2809 <p>
2810 </p>
2811 <blockquote class="text">
2812 <p>"OK" -
2813 </p>
2814 <blockquote class="text">
2815 <p>in case the device was successfully destroyed
2816 </p>
2817 </blockquote>
2818
2819
2820 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2821 </p>
2822 <blockquote class="text">
2823 <p>in case the device was destroyed, but there are noteworthy
2824 issue(s) related, providing an appropriate warning code and
2825 warning message
2826 </p>
2827 </blockquote>
2828
2829
2830 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2831 </p>
2832 <blockquote class="text">
2833 <p>in case it failed, providing an appropriate error code and error message
2834 </p>
2835 </blockquote>
2836
2837
2838 </blockquote><p>
2839
2840 </p>
2841 <p>Example:
2842 </p>
2843 <p>
2844 </p>
2845 <blockquote class="text">
2846 <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2847 </p>
2848 <p>S: "OK"
2849 </p>
2850 </blockquote><p>
2851
2852 </p>
2853 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2854 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2855 <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2856 Getting all created MIDI input device count</h3>
2857
2858 <p>Use the following command to count all created MIDI input devices:
2859 </p>
2860 <p>
2861 </p>
2862 <blockquote class="text">
2863 <p>GET MIDI_INPUT_DEVICES
2864 </p>
2865 </blockquote><p>
2866
2867 </p>
2868 <p>Possible Answers:
2869 </p>
2870 <p>
2871 </p>
2872 <blockquote class="text">
2873 <p>LinuxSampler will answer by sending the current number of all
2874 MIDI input devices.
2875 </p>
2876 </blockquote><p>
2877
2878 </p>
2879 <p>Example:
2880 </p>
2881 <p>
2882 </p>
2883 <blockquote class="text">
2884 <p>C: "GET MIDI_INPUT_DEVICES"
2885 </p>
2886 <p>S: "3"
2887 </p>
2888 </blockquote><p>
2889
2890 </p>
2891 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2892 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2893 <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2894 Getting all created MIDI input device list</h3>
2895
2896 <p>Use the following command to list all created MIDI input devices:
2897 </p>
2898 <p>
2899 </p>
2900 <blockquote class="text">
2901 <p>LIST MIDI_INPUT_DEVICES
2902 </p>
2903 </blockquote><p>
2904
2905 </p>
2906 <p>Possible Answers:
2907 </p>
2908 <p>
2909 </p>
2910 <blockquote class="text">
2911 <p>LinuxSampler will answer by sending a comma separated list
2912 with the numerical Ids of all created MIDI input devices.
2913 </p>
2914 </blockquote><p>
2915
2916 </p>
2917 <p>Examples:
2918 </p>
2919 <p>
2920 </p>
2921 <blockquote class="text">
2922 <p>C: "LIST MIDI_INPUT_DEVICES"
2923 </p>
2924 <p>S: "0,1,2"
2925 </p>
2926 </blockquote><p>
2927
2928 </p>
2929 <p>
2930 </p>
2931 <blockquote class="text">
2932 <p>C: "LIST MIDI_INPUT_DEVICES"
2933 </p>
2934 <p>S: "1,3"
2935 </p>
2936 </blockquote><p>
2937
2938 </p>
2939 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2940 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2941 <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2942 Getting current settings of a MIDI input device</h3>
2943
2944 <p>Use the following command to get current settings of a specific, created MIDI input device:
2945 </p>
2946 <p>
2947 </p>
2948 <blockquote class="text">
2949 <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2950 </p>
2951 </blockquote><p>
2952
2953 </p>
2954 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2955 <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>
2956 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>
2957 command.
2958 </p>
2959 <p>Possible Answers:
2960 </p>
2961 <p>
2962 </p>
2963 <blockquote class="text">
2964 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2965 Each answer line begins with the information category name
2966 followed by a colon and then a space character &lt;SP&gt; and finally
2967 the info character string to that info category. As some
2968 parameters might allow multiple values, character strings are
2969 encapsulated into apostrophes ('). At the moment the following
2970 information categories are defined (independent of driver):
2971 </p>
2972 <p>
2973 </p>
2974 <blockquote class="text">
2975 <p>DRIVER -
2976 </p>
2977 <blockquote class="text">
2978 <p>identifier of the used MIDI input driver, as e.g.
2979 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>
2980 command
2981 </p>
2982 </blockquote>
2983
2984
2985 </blockquote>
2986
2987 <blockquote class="text">
2988 <p>ACTIVE -
2989 </p>
2990 <blockquote class="text">
2991 <p>either true or false, if false then the MIDI device is
2992 inactive and doesn't listen to any incoming MIDI events
2993 and thus doesn't forward them to connected sampler
2994 channels
2995 </p>
2996 </blockquote>
2997
2998
2999 </blockquote>
3000
3001
3002 </blockquote><p>
3003
3004 </p>
3005 <p>The mentioned fields above don't have to be in particular
3006 order. The fields above are only those fields which are
3007 returned by all MIDI input devices. Every MIDI input driver
3008 might have its own, additional driver specific parameters (see
3009 <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
3010 by this command.
3011 </p>
3012 <p>Example:
3013 </p>
3014 <p>
3015 </p>
3016 <blockquote class="text">
3017 <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3018 </p>
3019 <p>S: "DRIVER: ALSA"
3020 </p>
3021 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3022 </p>
3023 <p>&nbsp;&nbsp;&nbsp;"."
3024 </p>
3025 </blockquote><p>
3026
3027 </p>
3028 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3029 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3030 <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3031 Changing settings of MIDI input devices</h3>
3032
3033 <p>Use the following command to alter a specific setting of a created MIDI input device:
3034 </p>
3035 <p>
3036 </p>
3037 <blockquote class="text">
3038 <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3039 </p>
3040 </blockquote><p>
3041
3042 </p>
3043 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3044 MIDI input device as returned by the
3045 <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>
3046 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>
3047 command, &lt;key&gt; by the name of the parameter to change and
3048 &lt;value&gt; by the new value for this parameter.
3049 </p>
3050 <p>Possible Answers:
3051 </p>
3052 <p>
3053 </p>
3054 <blockquote class="text">
3055 <p>"OK" -
3056 </p>
3057 <blockquote class="text">
3058 <p>in case setting was successfully changed
3059 </p>
3060 </blockquote>
3061
3062
3063 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3064 </p>
3065 <blockquote class="text">
3066 <p>in case setting was changed successfully, but there are
3067 noteworthy issue(s) related, providing an appropriate
3068 warning code and warning message
3069 </p>
3070 </blockquote>
3071
3072
3073 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3074 </p>
3075 <blockquote class="text">
3076 <p>in case it failed, providing an appropriate error code and error message
3077 </p>
3078 </blockquote>
3079
3080
3081 </blockquote><p>
3082
3083 </p>
3084 <p>Example:
3085 </p>
3086 <p>
3087 </p>
3088 <blockquote class="text">
3089 <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3090 </p>
3091 <p>S: "OK"
3092 </p>
3093 </blockquote><p>
3094
3095 </p>
3096 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3097 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3098 <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3099 Getting information about a MIDI port</h3>
3100
3101 <p>Use the following command to get information about a MIDI port:
3102 </p>
3103 <p>
3104 </p>
3105 <blockquote class="text">
3106 <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3107 </p>
3108 </blockquote><p>
3109
3110 </p>
3111 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3112 <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>
3113 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>
3114 command and &lt;midi-port&gt; the MIDI input port number.
3115 </p>
3116 <p>Possible Answers:
3117 </p>
3118 <p>
3119 </p>
3120 <blockquote class="text">
3121 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3122 Each answer line begins with the information category name
3123 followed by a colon and then a space character &lt;SP&gt; and finally
3124 the info character string to that info category. At the moment
3125 the following information categories are defined:
3126 </p>
3127 <p>NAME -
3128 </p>
3129 <blockquote class="text">
3130 <p>arbitrary character string naming the port
3131 </p>
3132 </blockquote>
3133
3134
3135 </blockquote><p>
3136
3137 </p>
3138 <p>The field above is only the one which is returned by all MIDI
3139 ports regardless of the MIDI driver and port. Every MIDI port
3140 might have its own, additional driver and port specific
3141 parameters.
3142 </p>
3143 <p>Example:
3144 </p>
3145 <p>
3146 </p>
3147 <blockquote class="text">
3148 <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3149 </p>
3150 <p>S: "NAME: 'Masterkeyboard'"
3151 </p>
3152 <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3153 </p>
3154 <p>&nbsp;&nbsp;&nbsp;"."
3155 </p>
3156 </blockquote><p>
3157
3158 </p>
3159 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3160 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3161 <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3162 Getting information about specific MIDI port parameter</h3>
3163
3164 <p>Use the following command to get detailed information about specific MIDI port parameter:
3165 </p>
3166 <p>
3167 </p>
3168 <blockquote class="text">
3169 <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3170 </p>
3171 </blockquote><p>
3172
3173 </p>
3174 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3175 <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>
3176 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>
3177 command, &lt;port&gt; the MIDI port number and
3178 &lt;param&gt; a specific port parameter name for which information should be
3179 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).
3180 </p>
3181 <p>Possible Answers:
3182 </p>
3183 <p>
3184 </p>
3185 <blockquote class="text">
3186 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3187 Each answer line begins with the information category name
3188 followed by a colon and then a space character &lt;SP&gt; and finally
3189 the info character string to that info category. There is
3190 information which is always returned, independently of the
3191 given channel parameter and there is optional information
3192 which are only shown dependently to the given MIDI port. At the
3193 moment the following information categories are defined:
3194 </p>
3195 <p>TYPE -
3196 </p>
3197 <blockquote class="text">
3198 <p>either "BOOL" for boolean value(s) or "INT" for integer
3199 value(s) or "FLOAT" for dotted number(s) or "STRING" for
3200 character string(s)
3201 (always returned)
3202 </p>
3203 </blockquote>
3204
3205
3206 <p>DESCRIPTION -
3207 </p>
3208 <blockquote class="text">
3209 <p>arbitrary text describing the purpose of the parameter
3210 (always returned)
3211 </p>
3212 </blockquote>
3213
3214
3215 <p>FIX -
3216 </p>
3217 <blockquote class="text">
3218 <p>either true or false, if true then this parameter is
3219 read only, thus cannot be altered
3220 (always returned)
3221 </p>
3222 </blockquote>
3223
3224
3225 <p>MULTIPLICITY -
3226 </p>
3227 <blockquote class="text">
3228 <p>either true or false, defines if this parameter allows
3229 only one value or a list of values, where true means
3230 multiple values and false only a single value allowed
3231 (always returned)
3232 </p>
3233 </blockquote>
3234
3235
3236 <p>RANGE_MIN -
3237 </p>
3238 <blockquote class="text">
3239 <p>defines lower limit of the allowed value range for this
3240 parameter, can be an integer value as well as a dotted
3241 number, this parameter is usually used in conjunction
3242 with 'RANGE_MAX' but may also appear without
3243 (optionally returned, dependent to driver and port
3244 parameter)
3245 </p>
3246 </blockquote>
3247
3248
3249 <p>RANGE_MAX -
3250 </p>
3251 <blockquote class="text">
3252 <p>defines upper limit of the allowed value range for this
3253 parameter, can be an integer value as well as a dotted
3254 number, this parameter is usually used in conjunction
3255 with 'RANGE_MIN' but may also appear without
3256 (optionally returned, dependent to driver and port
3257 parameter)
3258 </p>
3259 </blockquote>
3260
3261
3262 <p>POSSIBILITIES -
3263 </p>
3264 <blockquote class="text">
3265 <p>comma separated list of possible values for this
3266 parameter, character strings are encapsulated into
3267 apostrophes
3268 (optionally returned, dependent to device and port
3269 parameter)
3270 </p>
3271 </blockquote>
3272
3273
3274 </blockquote><p>
3275
3276 </p>
3277 <p>The mentioned fields above don't have to be in particular order.
3278 </p>
3279 <p>Example:
3280 </p>
3281 <p>
3282 </p>
3283 <blockquote class="text">
3284 <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3285 </p>
3286 <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3287 </p>
3288 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3289 </p>
3290 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3291 </p>
3292 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3293 </p>
3294 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3295 </p>
3296 <p>&nbsp;&nbsp;&nbsp;"."
3297 </p>
3298 </blockquote><p>
3299
3300 </p>
3301 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3302 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3303 <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3304 Changing settings of MIDI input ports</h3>
3305
3306 <p>Use the following command to alter a specific setting of a MIDI input port:
3307 </p>
3308 <p>
3309 </p>
3310 <blockquote class="text">
3311 <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3312 </p>
3313 </blockquote><p>
3314
3315 </p>
3316 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3317 MIDI device as returned by the
3318 <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>
3319 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>
3320 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3321 the parameter to change and &lt;value&gt; by the new value for this
3322 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3323 for specifying no value for parameters allowing a list of values.
3324 </p>
3325 <p>Possible Answers:
3326 </p>
3327 <p>
3328 </p>
3329 <blockquote class="text">
3330 <p>"OK" -
3331 </p>
3332 <blockquote class="text">
3333 <p>in case setting was successfully changed
3334 </p>
3335 </blockquote>
3336
3337
3338 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3339 </p>
3340 <blockquote class="text">
3341 <p>in case setting was changed successfully, but there are
3342 noteworthy issue(s) related, providing an appropriate
3343 warning code and warning message
3344 </p>
3345 </blockquote>
3346
3347
3348 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3349 </p>
3350 <blockquote class="text">
3351 <p>in case it failed, providing an appropriate error code and error message
3352 </p>
3353 </blockquote>
3354
3355
3356 </blockquote><p>
3357
3358 </p>
3359 <p>Example:
3360 </p>
3361 <p>
3362 </p>
3363 <blockquote class="text">
3364 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3365 </p>
3366 <p>S: "OK"
3367 </p>
3368 </blockquote><p>
3369
3370 </p>
3371 <p>
3372 </p>
3373 <blockquote class="text">
3374 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3375 </p>
3376 <p>S: "OK"
3377 </p>
3378 </blockquote><p>
3379
3380 </p>
3381 <a name="anchor11"></a><br /><hr />
3382 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3383 <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3384 Configuring sampler channels</h3>
3385
3386 <p>The following commands describe how to add and remove sampler channels, associate a
3387 sampler channel with a sampler engine, load instruments and connect sampler channels to
3388 MIDI and audio devices.
3389 </p>
3390 <a name="LOAD INSTRUMENT"></a><br /><hr />
3391 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3392 <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3393 Loading an instrument</h3>
3394
3395 <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3396 </p>
3397 <p>
3398 </p>
3399 <blockquote class="text">
3400 <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3401 </p>
3402 </blockquote><p>
3403
3404 </p>
3405 <p>Where &lt;filename&gt; is the name of the instrument file on the
3406 LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3407 instrument in the instrument file and &lt;sampler-channel> is the
3408 number of the sampler channel the instrument should be assigned to.
3409 Each sampler channel can only have one instrument.
3410 </p>
3411 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3412 escape characters for special characters (see chapter
3413 "<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>"
3414 for details) and accordingly backslash characters in the filename
3415 MUST now be escaped as well!
3416 </p>
3417 <p>The difference between regular and NON_MODAL versions of the command
3418 is that the regular command returns OK only after the instrument has been
3419 fully loaded and the channel is ready to be used while NON_MODAL version
3420 returns immediately and a background process is launched to load the instrument
3421 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>
3422 command can be used to obtain loading
3423 progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3424 such as making sure that the file could be read and it is of a proper format
3425 and SHOULD return ERR and SHOULD not launch the background process should any
3426 errors be detected at that point.
3427 </p>
3428 <p>Possible Answers:
3429 </p>
3430 <p>
3431 </p>
3432 <blockquote class="text">
3433 <p>"OK" -
3434 </p>
3435 <blockquote class="text">
3436 <p>in case the instrument was successfully loaded
3437 </p>
3438 </blockquote>
3439
3440
3441 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3442 </p>
3443 <blockquote class="text">
3444 <p>in case the instrument was loaded successfully, but there
3445 are noteworthy issue(s) related (e.g. Engine doesn't support
3446 one or more patch parameters provided by the loaded
3447 instrument file), providing an appropriate warning code and
3448 warning message
3449 </p>
3450 </blockquote>
3451
3452
3453 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3454 </p>
3455 <blockquote class="text">
3456 <p>in case it failed, providing an appropriate error code and error message
3457 </p>
3458 </blockquote>
3459
3460
3461 </blockquote><p>
3462
3463 </p>
3464 <p>Example (Unix):
3465 </p>
3466 <p>
3467 </p>
3468 <blockquote class="text">
3469 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3470 </p>
3471 <p>S: OK
3472 </p>
3473 </blockquote><p>
3474
3475 </p>
3476 <p>Example (Windows):
3477 </p>
3478 <p>
3479 </p>
3480 <blockquote class="text">
3481 <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3482 </p>
3483 <p>S: OK
3484 </p>
3485 </blockquote><p>
3486
3487 </p>
3488 <a name="LOAD ENGINE"></a><br /><hr />
3489 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3490 <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3491 Loading a sampler engine</h3>
3492
3493 <p>A sampler engine type can be associated to a specific sampler
3494 channel by the following command:
3495 </p>
3496 <p>
3497 </p>
3498 <blockquote class="text">
3499 <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3500 </p>
3501 </blockquote><p>
3502
3503 </p>
3504 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3505 <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;
3506 the sampler channel as returned by the
3507 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3508 <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
3509 the engine type should be assigned to. This command should be issued
3510 after adding a new sampler channel and before any other control
3511 commands on the new sampler channel. It can also be used to change
3512 the engine type of a sampler channel. This command has (currently) no
3513 way to define or force if a new engine instance should be created and
3514 assigned to the given sampler channel or if an already existing
3515 instance of that engine type, shared with other sampler channels,
3516 should be used.
3517 </p>
3518 <p>Possible Answers:
3519 </p>
3520 <p>
3521 </p>
3522 <blockquote class="text">
3523 <p>"OK" -
3524 </p>
3525 <blockquote class="text">
3526 <p>in case the engine was successfully deployed
3527 </p>
3528 </blockquote>
3529
3530
3531 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3532 </p>
3533 <blockquote class="text">
3534 <p>in case the engine was deployed successfully, but there
3535 are noteworthy issue(s) related, providing an appropriate
3536 warning code and warning message
3537 </p>
3538 </blockquote>
3539
3540
3541 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3542 </p>
3543 <blockquote class="text">
3544 <p>in case it failed, providing an appropriate error code and
3545 error message
3546 </p>
3547 </blockquote>
3548
3549
3550 </blockquote><p>
3551
3552 </p>
3553 <p>Example:
3554 </p>
3555 <p>
3556 </p>
3557 <blockquote class="text">
3558 <p>
3559 </p>
3560 </blockquote><p>
3561
3562 </p>
3563 <a name="GET CHANNELS"></a><br /><hr />
3564 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3565 <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3566 Getting all created sampler channel count</h3>
3567
3568 <p>The number of sampler channels can change on runtime. To get the
3569 current amount of sampler channels, the front-end can send the
3570 following command:
3571 </p>
3572 <p>
3573 </p>
3574 <blockquote class="text">
3575 <p>GET CHANNELS
3576 </p>
3577 </blockquote><p>
3578
3579 </p>
3580 <p>Possible Answers:
3581 </p>
3582 <p>
3583 </p>
3584 <blockquote class="text">
3585 <p>LinuxSampler will answer by returning the current number of sampler channels.
3586 </p>
3587 </blockquote><p>
3588
3589 </p>
3590 <p>Example:
3591 </p>
3592 <p>
3593 </p>
3594 <blockquote class="text">
3595 <p>C: "GET CHANNELS"
3596 </p>
3597 <p>S: "12"
3598 </p>
3599 </blockquote><p>
3600
3601 </p>
3602 <a name="LIST CHANNELS"></a><br /><hr />
3603 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3604 <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3605 Getting all created sampler channel list</h3>
3606
3607 <p>The number of sampler channels can change on runtime. To get the
3608 current list of sampler channels, the front-end can send the
3609 following command:
3610 </p>
3611 <p>
3612 </p>
3613 <blockquote class="text">
3614 <p>LIST CHANNELS
3615 </p>
3616 </blockquote><p>
3617
3618 </p>
3619 <p>Possible Answers:
3620 </p>
3621 <p>
3622 </p>
3623 <blockquote class="text">
3624 <p>LinuxSampler will answer by returning a comma separated list
3625 with all sampler channels numerical IDs.
3626 </p>
3627 </blockquote><p>
3628
3629 </p>
3630 <p>Example:
3631 </p>
3632 <p>
3633 </p>
3634 <blockquote class="text">
3635 <p>C: "LIST CHANNELS"
3636 </p>
3637 <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3638 </p>
3639 </blockquote><p>
3640
3641 </p>
3642 <a name="ADD CHANNEL"></a><br /><hr />
3643 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3644 <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3645 Adding a new sampler channel</h3>
3646
3647 <p>A new sampler channel can be added to the end of the sampler
3648 channel list by sending the following command:
3649 </p>
3650 <p>
3651 </p>
3652 <blockquote class="text">
3653 <p>ADD CHANNEL
3654 </p>
3655 </blockquote><p>
3656
3657 </p>
3658 <p>This will increment the sampler channel count by one and the new
3659 sampler channel will be appended to the end of the sampler channel
3660 list. The front-end should send the respective, related commands
3661 right after to e.g. load an engine, load an instrument and setting
3662 input, output method and eventually other commands to initialize
3663 the new channel. The front-end should use the sampler channel
3664 returned by the answer of this command to perform the previously
3665 recommended commands, to avoid race conditions e.g. with other
3666 front-ends that might also have sent an "ADD CHANNEL" command.
3667 </p>
3668 <p>Possible Answers:
3669 </p>
3670 <p>
3671 </p>
3672 <blockquote class="text">
3673 <p>"OK[&lt;sampler-channel&gt;]" -
3674 </p>
3675 <blockquote class="text">
3676 <p>in case a new sampler channel could be added, where
3677 &lt;sampler-channel&gt; reflects the channel number of the new
3678 created sampler channel which should be used to set up
3679 the sampler channel by sending subsequent initialization
3680 commands
3681 </p>
3682 </blockquote>
3683
3684
3685 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3686 </p>
3687 <blockquote class="text">
3688 <p>in case a new channel was added successfully, but there are
3689 noteworthy issue(s) related, providing an appropriate
3690 warning code and warning message
3691 </p>
3692 </blockquote>
3693
3694
3695 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3696 </p>
3697 <blockquote class="text">
3698 <p>in case it failed, providing an appropriate error code and
3699 error message
3700 </p>
3701 </blockquote>
3702
3703
3704 </blockquote><p>
3705
3706 </p>
3707 <p>Example:
3708 </p>
3709 <p>
3710 </p>
3711 <blockquote class="text">
3712 <p>
3713 </p>
3714 </blockquote><p>
3715
3716 </p>
3717 <a name="REMOVE CHANNEL"></a><br /><hr />
3718 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3719 <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3720 Removing a sampler channel</h3>
3721
3722 <p>A sampler channel can be removed by sending the following command:
3723 </p>
3724 <p>
3725 </p>
3726 <blockquote class="text">
3727 <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3728 </p>
3729 </blockquote><p>
3730
3731 </p>
3732 <p>Where &lt;sampler-channel&gt; should be replaced by the
3733 number of the sampler channel as given by the
3734 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3735 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3736 command. The channel numbers of all subsequent sampler channels
3737 remain the same.
3738 </p>
3739 <p>Possible Answers:
3740 </p>
3741 <p>
3742 </p>
3743 <blockquote class="text">
3744 <p>"OK" -
3745 </p>
3746 <blockquote class="text">
3747 <p>in case the given sampler channel could be removed
3748 </p>
3749 </blockquote>
3750
3751
3752 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3753 </p>
3754 <blockquote class="text">
3755 <p>in case the given channel was removed, but there are
3756 noteworthy issue(s) related, providing an appropriate
3757 warning code and warning message
3758 </p>
3759 </blockquote>
3760
3761
3762 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3763 </p>
3764 <blockquote class="text">
3765 <p>in case it failed, providing an appropriate error code and
3766 error message
3767 </p>
3768 </blockquote>
3769
3770
3771 </blockquote><p>
3772
3773 </p>
3774 <p>Example:
3775 </p>
3776 <p>
3777 </p>
3778 <blockquote class="text">
3779 <p>
3780 </p>
3781 </blockquote><p>
3782
3783 </p>
3784 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3785 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3786 <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3787 Getting amount of available engines</h3>
3788
3789 <p>The front-end can ask for the number of available engines by sending the following command:
3790 </p>
3791 <p>
3792 </p>
3793 <blockquote class="text">
3794 <p>GET AVAILABLE_ENGINES
3795 </p>
3796 </blockquote><p>
3797
3798 </p>
3799 <p>Possible Answers:
3800 </p>
3801 <p>
3802 </p>
3803 <blockquote class="text">
3804 <p>LinuxSampler will answer by sending the number of available engines.
3805 </p>
3806 </blockquote><p>
3807
3808 </p>
3809 <p>Example:
3810 </p>
3811 <p>
3812 </p>
3813 <blockquote class="text">
3814 <p>C: "GET AVAILABLE_ENGINES"
3815 </p>
3816 <p>S: "4"
3817 </p>
3818 </blockquote><p>
3819
3820 </p>
3821 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3822 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3823 <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3824 Getting all available engines</h3>
3825
3826 <p>The front-end can ask for a list of all available engines by sending the following command:
3827 </p>
3828 <p>
3829 </p>
3830 <blockquote class="text">
3831 <p>LIST AVAILABLE_ENGINES
3832 </p>
3833 </blockquote><p>
3834
3835 </p>
3836 <p>Possible Answers:
3837 </p>
3838 <p>
3839 </p>
3840 <blockquote class="text">
3841 <p>LinuxSampler will answer by sending a comma separated list
3842 of the engines' names encapsulated into apostrophes (').
3843 Engine names can consist of lower and upper cases,
3844 digits and underlines ("_" character).
3845 </p>
3846 </blockquote><p>
3847
3848 </p>
3849 <p>Example:
3850 </p>
3851 <p>
3852 </p>
3853 <blockquote class="text">
3854 <p>C: "LIST AVAILABLE_ENGINES"
3855 </p>
3856 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3857 </p>
3858 </blockquote><p>
3859
3860 </p>
3861 <a name="GET ENGINE INFO"></a><br /><hr />
3862 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3863 <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3864 Getting information about an engine</h3>
3865
3866 <p>The front-end can ask for information about a specific engine by
3867 sending the following command:
3868 </p>
3869 <p>
3870 </p>
3871 <blockquote class="text">
3872 <p>GET ENGINE INFO &lt;engine-name&gt;
3873 </p>
3874 </blockquote><p>
3875
3876 </p>
3877 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3878 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3879 </p>
3880 <p>Possible Answers:
3881 </p>
3882 <p>
3883 </p>
3884 <blockquote class="text">
3885 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3886 Each answer line begins with the information category name
3887 followed by a colon and then a space character &lt;SP&gt; and finally
3888 the info character string to that info category. At the moment
3889 the following categories are defined:
3890 </p>
3891 <p>
3892 </p>
3893 <blockquote class="text">
3894 <p>DESCRIPTION -
3895 </p>
3896 <blockquote class="text">
3897 <p>arbitrary description text about the engine
3898 (note that the character string may contain
3899 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3900 </p>
3901 </blockquote>
3902
3903
3904 <p>VERSION -
3905 </p>
3906 <blockquote class="text">
3907 <p>arbitrary character string regarding the engine's version
3908 </p>
3909 </blockquote>
3910
3911
3912 </blockquote>
3913
3914
3915 </blockquote><p>
3916
3917 </p>
3918 <p>The mentioned fields above don't have to be in particular order.
3919 </p>
3920 <p>Example:
3921 </p>
3922 <p>
3923 </p>
3924 <blockquote class="text">
3925 <p>C: "GET ENGINE INFO JoesCustomEngine"
3926 </p>
3927 <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3928 </p>
3929 <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3930 </p>
3931 <p>&nbsp;&nbsp;&nbsp;"."
3932 </p>
3933 </blockquote><p>
3934
3935 </p>
3936 <a name="GET CHANNEL INFO"></a><br /><hr />
3937 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3938 <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3939 Getting sampler channel information</h3>
3940
3941 <p>The front-end can ask for the current settings of a sampler channel
3942 by sending the following command:
3943 </p>
3944 <p>
3945 </p>
3946 <blockquote class="text">
3947 <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3948 </p>
3949 </blockquote><p>
3950
3951 </p>
3952 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3953 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>
3954 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.
3955 </p>
3956 <p>Possible Answers:
3957 </p>
3958 <p>
3959 </p>
3960 <blockquote class="text">
3961 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3962 Each answer line begins with the settings category name
3963 followed by a colon and then a space character &lt;SP&gt; and finally
3964 the info character string to that setting category. At the
3965 moment the following categories are defined:
3966 </p>
3967 <p>
3968 </p>
3969 <blockquote class="text">
3970 <p>ENGINE_NAME -
3971 </p>
3972 <blockquote class="text">
3973 <p>name of the engine that is associated with the sampler
3974 channel, "NONE" if there's no engine associated yet for
3975 this sampler channel
3976 </p>
3977 </blockquote>
3978
3979
3980 <p>AUDIO_OUTPUT_DEVICE -
3981 </p>
3982 <blockquote class="text">
3983 <p>numerical ID of the audio output device which is
3984 currently connected to this sampler channel to output
3985 the audio signal, "NONE" if there's no device
3986 connected to this sampler channel
3987 </p>
3988 </blockquote>
3989
3990
3991 <p>AUDIO_OUTPUT_CHANNELS -
3992 </p>
3993 <blockquote class="text">
3994 <p>number of output channels the sampler channel offers
3995 (dependent to used sampler engine and loaded instrument)
3996 </p>
3997 </blockquote>
3998
3999
4000 <p>AUDIO_OUTPUT_ROUTING -
4001 </p>
4002 <blockquote class="text">
4003 <p>comma separated list which reflects to which audio
4004 channel of the selected audio output device each
4005 sampler output channel is routed to, e.g. "0,3" would
4006 mean the engine's output channel 0 is routed to channel
4007 0 of the audio output device and the engine's output
4008 channel 1 is routed to the channel 3 of the audio
4009 output device
4010 </p>
4011 </blockquote>
4012
4013
4014 <p>INSTRUMENT_FILE -
4015 </p>
4016 <blockquote class="text">
4017 <p>the file name of the loaded instrument, "NONE" if
4018 there's no instrument yet loaded for this sampler
4019 channel (note: since LSCP 1.2 this path may contain
4020 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4021 </p>
4022 </blockquote>
4023
4024
4025 <p>INSTRUMENT_NR -
4026 </p>
4027 <blockquote class="text">
4028 <p>the instrument index number of the loaded instrument
4029 </p>
4030 </blockquote>
4031
4032
4033 <p>INSTRUMENT_NAME -
4034 </p>
4035 <blockquote class="text">
4036 <p>the instrument name of the loaded instrument
4037 (note: since LSCP 1.2 this character string may contain
4038 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4039 </p>
4040 </blockquote>
4041
4042
4043 <p>INSTRUMENT_STATUS -
4044 </p>
4045 <blockquote class="text">
4046 <p>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative
4047 value indicates a loading exception. Value of 100 indicates that the instrument is fully
4048 loaded.
4049 </p>
4050 </blockquote>
4051
4052
4053 <p>MIDI_INPUT_DEVICE -
4054 </p>
4055 <blockquote class="text">
4056 <p>numerical ID of the MIDI input device which is
4057 currently connected to this sampler channel to deliver
4058 MIDI input commands, "NONE" if there's no device
4059 connected to this sampler channel
4060 </p>
4061 </blockquote>
4062
4063
4064 <p>MIDI_INPUT_PORT -
4065 </p>
4066 <blockquote class="text">
4067 <p>port number of the MIDI input device
4068 </p>
4069 </blockquote>
4070
4071
4072 <p>MIDI_INPUT_CHANNEL -
4073 </p>
4074 <blockquote class="text">
4075 <p>the MIDI input channel number this sampler channel
4076 should listen to or "ALL" to listen on all MIDI channels
4077 </p>
4078 </blockquote>
4079
4080
4081 <p>VOLUME -
4082 </p>
4083 <blockquote class="text">
4084 <p>optionally dotted number for the channel volume factor
4085 (where a value &lt; 1.0 means attenuation and a value >
4086 1.0 means amplification)
4087 </p>
4088 </blockquote>
4089
4090
4091 <p>MUTE -
4092 </p>
4093 <blockquote class="text">
4094 <p>Determines whether the channel is muted, "true" if the
4095 channel is muted, "false" if the channel is not muted, and
4096 "MUTED_BY_SOLO" if the channel is muted because of the
4097 presence of a solo channel and will be unmuted when
4098 there are no solo channels left
4099 </p>
4100 </blockquote>
4101
4102
4103 <p>SOLO -
4104 </p>
4105 <blockquote class="text">
4106 <p>Determines whether this is a solo channel, "true" if
4107 the channel is a solo channel; "false" otherwise
4108 </p>
4109 </blockquote>
4110
4111
4112 <p>MIDI_INSTRUMENT_MAP -
4113 </p>
4114 <blockquote class="text">
4115 <p>Determines to which MIDI instrument map this sampler
4116 channel is assigned to. Read chapter
4117 <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>
4118 for a list of possible values.
4119 </p>
4120 </blockquote>
4121
4122
4123 </blockquote>
4124
4125
4126 </blockquote><p>
4127
4128 </p>
4129 <p>The mentioned fields above don't have to be in particular order.
4130 </p>
4131 <p>Example:
4132 </p>
4133 <p>
4134 </p>
4135 <blockquote class="text">
4136 <p>C: "GET CHANNEL INFO 34"
4137 </p>
4138 <p>S: "ENGINE_NAME: GigEngine"
4139 </p>
4140 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4141 </p>
4142 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4143 </p>
4144 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4145 </p>
4146 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4147 </p>
4148 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4149 </p>
4150 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4151 </p>
4152 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4153 </p>
4154 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4155 </p>
4156 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4157 </p>
4158 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4159 </p>
4160 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4161 </p>
4162 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4163 </p>
4164 <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4165 </p>
4166 <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4167 </p>
4168 <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4169 </p>
4170 <p>&nbsp;&nbsp;&nbsp;"."
4171 </p>
4172 </blockquote><p>
4173
4174 </p>
4175 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4176 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4177 <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4178 Current number of active voices</h3>
4179
4180 <p>The front-end can ask for the current number of active voices on a
4181 sampler channel by sending the following command:
4182 </p>
4183 <p>
4184 </p>
4185 <blockquote class="text">
4186 <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4187 </p>
4188 </blockquote><p>
4189
4190 </p>
4191 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4192 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>
4193 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.
4194 </p>
4195 <p>Possible Answers:
4196 </p>
4197 <p>
4198 </p>
4199 <blockquote class="text">
4200 <p>LinuxSampler will answer by returning the number of active
4201 voices on that channel.
4202 </p>
4203 </blockquote><p>
4204
4205 </p>
4206 <p>Example:
4207 </p>
4208 <p>
4209 </p>
4210 <blockquote class="text">
4211 <p>
4212 </p>
4213 </blockquote><p>
4214
4215 </p>
4216 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4217 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4218 <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4219 Current number of active disk streams</h3>
4220
4221 <p>The front-end can ask for the current number of active disk streams
4222 on a sampler channel by sending the following command:
4223 </p>
4224 <p>
4225 </p>
4226 <blockquote class="text">
4227 <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4228 </p>
4229 </blockquote><p>
4230
4231 </p>
4232 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4233 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>
4234 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.
4235 </p>
4236 <p>Possible Answers:
4237 </p>
4238 <p>
4239 </p>
4240 <blockquote class="text">
4241 <p>LinuxSampler will answer by returning the number of active
4242 disk streams on that channel in case the engine supports disk
4243 streaming, if the engine doesn't support disk streaming it will
4244 return "NA" for not available.
4245 </p>
4246 </blockquote><p>
4247
4248 </p>
4249 <p>Example:
4250 </p>
4251 <p>
4252 </p>
4253 <blockquote class="text">
4254 <p>
4255 </p>
4256 </blockquote><p>
4257
4258 </p>
4259 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4260 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4261 <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4262 Current fill state of disk stream buffers</h3>
4263
4264 <p>The front-end can ask for the current fill state of all disk streams
4265 on a sampler channel by sending the following command:
4266 </p>
4267 <p>
4268 </p>
4269 <blockquote class="text">
4270 <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4271 </p>
4272 </blockquote><p>
4273
4274 </p>
4275 <p>to get the fill state in bytes or
4276 </p>
4277 <p>
4278 </p>
4279 <blockquote class="text">
4280 <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4281 </p>
4282 </blockquote><p>
4283
4284 </p>
4285 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4286 sampler channel number the front-end is interested in
4287 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>
4288 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.
4289 </p>
4290 <p>Possible Answers:
4291 </p>
4292 <p>
4293 </p>
4294 <blockquote class="text">
4295 <p>LinuxSampler will either answer by returning a comma separated
4296 string with the fill state of all disk stream buffers on that
4297 channel or an empty line if there are no active disk streams or
4298 "NA" for *not available* in case the engine which is deployed
4299 doesn't support disk streaming. Each entry in the answer list
4300 will begin with the stream's ID in brackets followed by the
4301 numerical representation of the fill size (either in bytes or
4302 percentage). Note: due to efficiency reasons the fill states in
4303 the response are not in particular order, thus the front-end has
4304 to sort them by itself if necessary.
4305 </p>
4306 </blockquote><p>
4307
4308 </p>
4309 <p>Examples:
4310 </p>
4311 <p>
4312 </p>
4313 <blockquote class="text">
4314 <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4315 </p>
4316 <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4317 </p>
4318 </blockquote><p>
4319
4320 </p>
4321 <blockquote class="text">
4322 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4323 </p>
4324 <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4325 </p>
4326 </blockquote><p>
4327
4328 </p>
4329 <blockquote class="text">
4330 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4331 </p>
4332 <p>S: ""
4333 </p>
4334 </blockquote><p>
4335
4336 </p>
4337 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4338 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4339 <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4340 Setting audio output device</h3>
4341
4342 <p>The front-end can set the audio output device on a specific sampler
4343 channel by sending the following command:
4344 </p>
4345 <p>
4346 </p>
4347 <blockquote class="text">
4348 <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4349 </p>
4350 </blockquote><p>
4351
4352 </p>
4353 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4354 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>
4355 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
4356 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4357 <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>
4358 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>
4359 command.
4360 </p>
4361 <p>Possible Answers:
4362 </p>
4363 <p>
4364 </p>
4365 <blockquote class="text">
4366 <p>"OK" -
4367 </p>
4368 <blockquote class="text">
4369 <p>on success
4370 </p>
4371 </blockquote>
4372
4373
4374 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4375 </p>
4376 <blockquote class="text">
4377 <p>if audio output device was set, but there are noteworthy
4378 issue(s) related, providing an appropriate warning code and
4379 warning message
4380 </p>
4381 </blockquote>
4382
4383
4384 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4385 </p>
4386 <blockquote class="text">
4387 <p>in case it failed, providing an appropriate error code and error message
4388 </p>
4389 </blockquote>
4390
4391
4392 </blockquote><p>
4393
4394 </p>
4395 <p>Examples:
4396 </p>
4397 <p>
4398 </p>
4399 <blockquote class="text">
4400 <p>
4401 </p>
4402 </blockquote><p>
4403
4404 </p>
4405 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4406 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4407 <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4408 Setting audio output type</h3>
4409
4410 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4411 </p>
4412 <p>The front-end can alter the audio output type on a specific sampler
4413 channel by sending the following command:
4414 </p>
4415 <p>
4416 </p>
4417 <blockquote class="text">
4418 <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4419 </p>
4420 </blockquote><p>
4421
4422 </p>
4423 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4424 &lt;sampler-channel&gt; is the respective sampler channel number.
4425 </p>
4426 <p>Possible Answers:
4427 </p>
4428 <p>
4429 </p>
4430 <blockquote class="text">
4431 <p>"OK" -
4432 </p>
4433 <blockquote class="text">
4434 <p>on success
4435 </p>
4436 </blockquote>
4437
4438
4439 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4440 </p>
4441 <blockquote class="text">
4442 <p>if audio output type was set, but there are noteworthy
4443 issue(s) related, providing an appropriate warning code and
4444 warning message
4445 </p>
4446 </blockquote>
4447
4448
4449 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4450 </p>
4451 <blockquote class="text">
4452 <p>in case it failed, providing an appropriate error code and error message
4453 </p>
4454 </blockquote>
4455
4456
4457 </blockquote><p>
4458
4459 </p>
4460 <p>Examples:
4461 </p>
4462 <p>
4463 </p>
4464 <blockquote class="text">
4465 <p>
4466 </p>
4467 </blockquote><p>
4468
4469 </p>
4470 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4471 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4472 <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4473 Setting audio output channel</h3>
4474
4475 <p>The front-end can alter the audio output channel on a specific
4476 sampler channel by sending the following command:
4477 </p>
4478 <p>
4479 </p>
4480 <blockquote class="text">
4481 <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4482 </p>
4483 </blockquote><p>
4484
4485 </p>
4486 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4487 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>
4488 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
4489 numerical ID of the sampler channel's audio output channel which should be
4490 rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4491 output device where &lt;audio-out&gt; should be routed to.
4492 </p>
4493 <p>Possible Answers:
4494 </p>
4495 <p>
4496 </p>
4497 <blockquote class="text">
4498 <p>"OK" -
4499 </p>
4500 <blockquote class="text">
4501 <p>on success
4502 </p>
4503 </blockquote>
4504
4505
4506 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4507 </p>
4508 <blockquote class="text">
4509 <p>if audio output channel was set, but there are noteworthy
4510 issue(s) related, providing an appropriate warning code and
4511 warning message
4512 </p>
4513 </blockquote>
4514
4515
4516 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4517 </p>
4518 <blockquote class="text">
4519 <p>in case it failed, providing an appropriate error code and error message
4520 </p>
4521 </blockquote>
4522
4523
4524 </blockquote><p>
4525
4526 </p>
4527 <p>Examples:
4528 </p>
4529 <p>
4530 </p>
4531 <blockquote class="text">
4532 <p>
4533 </p>
4534 </blockquote><p>
4535
4536 </p>
4537 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4538 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4539 <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4540 Setting MIDI input device</h3>
4541
4542 <p>The front-end can set the MIDI input device on a specific sampler
4543 channel by sending the following command:
4544 </p>
4545 <p>
4546 </p>
4547 <blockquote class="text">
4548 <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4549 </p>
4550 </blockquote><p>
4551
4552 </p>
4553 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4554 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>
4555 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
4556 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4557 <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>
4558 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.
4559 </p>
4560 <p>Possible Answers:
4561 </p>
4562 <p>
4563 </p>
4564 <blockquote class="text">
4565 <p>"OK" -
4566 </p>
4567 <blockquote class="text">
4568 <p>on success
4569 </p>
4570 </blockquote>
4571
4572
4573 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4574 </p>
4575 <blockquote class="text">
4576 <p>if MIDI input device was set, but there are noteworthy
4577 issue(s) related, providing an appropriate warning code and
4578 warning message
4579 </p>
4580 </blockquote>
4581
4582
4583 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4584 </p>
4585 <blockquote class="text">
4586 <p>in case it failed, providing an appropriate error code and error message
4587 </p>
4588 </blockquote>
4589
4590
4591 </blockquote><p>
4592
4593 </p>
4594 <p>Examples:
4595 </p>
4596 <p>
4597 </p>
4598 <blockquote class="text">
4599 <p>
4600 </p>
4601 </blockquote><p>
4602
4603 </p>
4604 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4605 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4606 <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4607 Setting MIDI input type</h3>
4608
4609 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4610 </p>
4611 <p>The front-end can alter the MIDI input type on a specific sampler
4612 channel by sending the following command:
4613 </p>
4614 <p>
4615 </p>
4616 <blockquote class="text">
4617 <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4618 </p>
4619 </blockquote><p>
4620
4621 </p>
4622 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4623 &lt;sampler-channel&gt; is the respective sampler channel number.
4624 </p>
4625 <p>Possible Answers:
4626 </p>
4627 <p>
4628 </p>
4629 <blockquote class="text">
4630 <p>"OK" -
4631 </p>
4632 <blockquote class="text">
4633 <p>on success
4634 </p>
4635 </blockquote>
4636
4637
4638 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4639 </p>
4640 <blockquote class="text">
4641 <p>if MIDI input type was set, but there are noteworthy
4642 issue(s) related, providing an appropriate warning code and
4643 warning message
4644 </p>
4645 </blockquote>
4646
4647
4648 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4649 </p>
4650 <blockquote class="text">
4651 <p>in case it failed, providing an appropriate error code and error message
4652 </p>
4653 </blockquote>
4654
4655
4656 </blockquote><p>
4657
4658 </p>
4659 <p>Examples:
4660 </p>
4661 <p>
4662 </p>
4663 <blockquote class="text">
4664 <p>
4665 </p>
4666 </blockquote><p>
4667
4668 </p>
4669 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4670 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4671 <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4672 Setting MIDI input port</h3>
4673
4674 <p>The front-end can alter the MIDI input port on a specific sampler
4675 channel by sending the following command:
4676 </p>
4677 <p>
4678 </p>
4679 <blockquote class="text">
4680 <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4681 </p>
4682 </blockquote><p>
4683
4684 </p>
4685 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4686 MIDI input device connected to the sampler channel given by
4687 &lt;sampler-channel&gt;.
4688 </p>
4689 <p>Possible Answers:
4690 </p>
4691 <p>
4692 </p>
4693 <blockquote class="text">
4694 <p>"OK" -
4695 </p>
4696 <blockquote class="text">
4697 <p>on success
4698 </p>
4699 </blockquote>
4700
4701
4702 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4703 </p>
4704 <blockquote class="text">
4705 <p>if MIDI input port was set, but there are noteworthy
4706 issue(s) related, providing an appropriate warning code and
4707 warning message
4708 </p>
4709 </blockquote>
4710
4711
4712 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4713 </p>
4714 <blockquote class="text">
4715 <p>in case it failed, providing an appropriate error code and error message
4716 </p>
4717 </blockquote>
4718
4719
4720 </blockquote><p>
4721
4722 </p>
4723 <p>Examples:
4724 </p>
4725 <p>
4726 </p>
4727 <blockquote class="text">
4728 <p>
4729 </p>
4730 </blockquote><p>
4731
4732 </p>
4733 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4734 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4735 <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4736 Setting MIDI input channel</h3>
4737
4738 <p>The front-end can alter the MIDI channel a sampler channel should
4739 listen to by sending the following command:
4740 </p>
4741 <p>
4742 </p>
4743 <blockquote class="text">
4744 <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4745 </p>
4746 </blockquote><p>
4747
4748 </p>
4749 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4750 &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4751 channels.
4752 </p>
4753 <p>Possible Answers:
4754 </p>
4755 <p>
4756 </p>
4757 <blockquote class="text">
4758 <p>"OK" -
4759 </p>
4760 <blockquote class="text">
4761 <p>on success
4762 </p>
4763 </blockquote>
4764
4765
4766 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4767 </p>
4768 <blockquote class="text">
4769 <p>if MIDI input channel was set, but there are noteworthy
4770 issue(s) related, providing an appropriate warning code and
4771 warning message
4772 </p>
4773 </blockquote>
4774
4775
4776 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4777 </p>
4778 <blockquote class="text">
4779 <p>in case it failed, providing an appropriate error code and error message
4780 </p>
4781 </blockquote>
4782
4783
4784 </blockquote><p>
4785
4786 </p>
4787 <p>Examples:
4788 </p>
4789 <p>
4790 </p>
4791 <blockquote class="text">
4792 <p>
4793 </p>
4794 </blockquote><p>
4795
4796 </p>
4797 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4798 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4799 <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4800 Setting channel volume</h3>
4801
4802 <p>The front-end can alter the volume of a sampler channel by sending
4803 the following command:
4804 </p>
4805 <p>
4806 </p>
4807 <blockquote class="text">
4808 <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4809 </p>
4810 </blockquote><p>
4811
4812 </p>
4813 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4814 smaller than 1.0 means attenuation, whereas a value greater than
4815 1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4816 channel where this volume factor should be set.
4817 </p>
4818 <p>Possible Answers:
4819 </p>
4820 <p>
4821 </p>
4822 <blockquote class="text">
4823 <p>"OK" -
4824 </p>
4825 <blockquote class="text">
4826 <p>on success
4827 </p>
4828 </blockquote>
4829
4830
4831 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4832 </p>
4833 <blockquote class="text">
4834 <p>if channel volume was set, but there are noteworthy
4835 issue(s) related, providing an appropriate warning code and
4836 warning message
4837 </p>
4838 </blockquote>
4839
4840
4841 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4842 </p>
4843 <blockquote class="text">
4844 <p>in case it failed, providing an appropriate error code and error message
4845 </p>
4846 </blockquote>
4847
4848
4849 </blockquote><p>
4850
4851 </p>
4852 <p>Examples:
4853 </p>
4854 <p>
4855 </p>
4856 <blockquote class="text">
4857 <p>
4858 </p>
4859 </blockquote><p>
4860
4861 </p>
4862 <a name="SET CHANNEL MUTE"></a><br /><hr />
4863 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4864 <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4865 Muting a sampler channel</h3>
4866
4867 <p>The front-end can mute/unmute a specific sampler
4868 channel by sending the following command:
4869 </p>
4870 <p>
4871 </p>
4872 <blockquote class="text">
4873 <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4874 </p>
4875 </blockquote><p>
4876
4877 </p>
4878 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4879 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>
4880 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
4881 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4882 to unmute the channel.
4883 </p>
4884 <p>Possible Answers:
4885 </p>
4886 <p>
4887 </p>
4888 <blockquote class="text">
4889 <p>"OK" -
4890 </p>
4891 <blockquote class="text">
4892 <p>on success
4893 </p>
4894 </blockquote>
4895
4896
4897 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4898 </p>
4899 <blockquote class="text">
4900 <p>if the channel was muted/unmuted, but there are noteworthy
4901 issue(s) related, providing an appropriate warning code and
4902 warning message
4903 </p>
4904 </blockquote>
4905
4906
4907 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4908 </p>
4909 <blockquote class="text">
4910 <p>in case it failed, providing an appropriate error code and error message
4911 </p>
4912 </blockquote>
4913
4914
4915 </blockquote><p>
4916
4917 </p>
4918 <p>Examples:
4919 </p>
4920 <p>
4921 </p>
4922 <blockquote class="text">
4923 <p>
4924 </p>
4925 </blockquote><p>
4926
4927 </p>
4928 <a name="SET CHANNEL SOLO"></a><br /><hr />
4929 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4930 <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4931 Soloing a sampler channel</h3>
4932
4933 <p>The front-end can solo/unsolo a specific sampler channel
4934 by sending the following command:
4935 </p>
4936 <p>
4937 </p>
4938 <blockquote class="text">
4939 <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4940 </p>
4941 </blockquote><p>
4942
4943 </p>
4944 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4945 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>
4946 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
4947 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
4948 to unsolo the channel.
4949 </p>
4950 <p>Possible Answers:
4951 </p>
4952 <p>
4953 </p>
4954 <blockquote class="text">
4955 <p>"OK" -
4956 </p>
4957 <blockquote class="text">
4958 <p>on success
4959 </p>
4960 </blockquote>
4961
4962
4963 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4964 </p>
4965 <blockquote class="text">
4966 <p>if the channel was soloed/unsoloed, but there are noteworthy
4967 issue(s) related, providing an appropriate warning code and
4968 warning message
4969 </p>
4970 </blockquote>
4971
4972
4973 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4974 </p>
4975 <blockquote class="text">
4976 <p>in case it failed, providing an appropriate error code and error message
4977 </p>
4978 </blockquote>
4979
4980
4981 </blockquote><p>
4982
4983 </p>
4984 <p>Examples:
4985 </p>
4986 <p>
4987 </p>
4988 <blockquote class="text">
4989 <p>
4990 </p>
4991 </blockquote><p>
4992
4993 </p>
4994 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
4995 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4996 <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
4997 Assigning a MIDI instrument map to a sampler channel</h3>
4998
4999 <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5000 by sending the following command:
5001 </p>
5002 <p>
5003 </p>
5004 <blockquote class="text">
5005 <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5006 </p>
5007 </blockquote><p>
5008
5009 </p>
5010 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5011 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>
5012 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
5013 &lt;map&gt; can have the following possibilites:
5014 </p>
5015 <p>
5016 </p>
5017 <blockquote class="text">
5018 <p>"NONE" -
5019 </p>
5020 <blockquote class="text">
5021 <p>This is the default setting. In this case
5022 the sampler channel is not assigned any MIDI
5023 instrument map and thus will ignore all MIDI
5024 program change messages.
5025 </p>
5026 </blockquote>
5027
5028
5029 <p>"DEFAULT" -
5030 </p>
5031 <blockquote class="text">
5032 <p>The sampler channel will always use the
5033 default MIDI instrument map to handle MIDI
5034 program change messages.
5035 </p>
5036 </blockquote>
5037
5038
5039 <p>numeric ID -
5040 </p>
5041 <blockquote class="text">
5042 <p>You can assign a specific MIDI instrument map
5043 by replacing &lt;map&gt; with the respective numeric
5044 ID of the MIDI instrument map as returned by the
5045 <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>
5046 command. Once that map will be deleted, the sampler
5047 channel would fall back to "NONE".
5048 </p>
5049 </blockquote>
5050
5051
5052 </blockquote><p>
5053
5054 </p>
5055 <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>
5056 for details regarding MIDI instrument mapping.
5057 </p>
5058 <p>Possible Answers:
5059 </p>
5060 <p>
5061 </p>
5062 <blockquote class="text">
5063 <p>"OK" -
5064 </p>
5065 <blockquote class="text">
5066 <p>on success
5067 </p>
5068 </blockquote>
5069
5070
5071 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5072 </p>
5073 <blockquote class="text">
5074 <p>in case it failed, providing an appropriate error code and error message
5075 </p>
5076 </blockquote>
5077
5078
5079 </blockquote><p>
5080
5081 </p>
5082 <p>Examples:
5083 </p>
5084 <p>
5085 </p>
5086 <blockquote class="text">
5087 <p>
5088 </p>
5089 </blockquote><p>
5090
5091 </p>
5092 <a name="CREATE FX_SEND"></a><br /><hr />
5093 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5094 <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5095 Adding an effect send to a sampler channel</h3>
5096
5097 <p>The front-end can create an additional effect send on a specific sampler channel
5098 by sending the following command:
5099 </p>
5100 <p>
5101 </p>
5102 <blockquote class="text">
5103 <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5104 </p>
5105 </blockquote><p>
5106
5107 </p>
5108 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5109 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>
5110 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
5111 sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5112 is a number between 0..127 defining the MIDI controller which can alter the
5113 effect send level and &lt;name&gt; is an optional argument defining a name
5114 for the effect send entity. The name does not have to be unique, but MUST be
5115 encapsulated into apostrophes and supports escape sequences as described in chapter
5116 "<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>".
5117 </p>
5118 <p>By default, that is as initial routing, the effect send's audio channels
5119 are automatically routed to the last audio channels of the sampler channel's
5120 audio output device, that way you can i.e. first increase the amount of audio
5121 channels on the audio output device for having dedicated effect send output
5122 channels and when "CREATE FX_SEND" is called, those channels will automatically
5123 be picked. You can alter the destination channels however with
5124 <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>.
5125
5126 </p>
5127 <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5128 sends on a sampler channel will decrease runtime performance, because for implementing channel
5129 effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5130 the voices and route the audio signal afterwards to the master outputs and effect send
5131 outputs (along with their respective effect send levels). A sampler channel without effect
5132 sends however can mix its voices directly into the audio output devices's audio buffers
5133 and is thus faster.
5134
5135 </p>
5136 <p>Possible Answers:
5137 </p>
5138 <p>
5139 </p>
5140 <blockquote class="text">
5141 <p>"OK[&lt;fx-send-id&gt;]" -
5142 </p>
5143 <blockquote class="text">
5144 <p>in case a new effect send could be added to the
5145 sampler channel, where &lt;fx-send-id&gt; reflects the
5146 unique ID of the newly created effect send entity
5147 </p>
5148 </blockquote>
5149
5150
5151 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5152 </p>
5153 <blockquote class="text">
5154 <p>when a new effect send could not be added, i.e.
5155 due to invalid parameters
5156 </p>
5157 </blockquote>
5158
5159
5160 </blockquote><p>
5161
5162 </p>
5163 <p>Examples:
5164 </p>
5165 <p>
5166 </p>
5167 <blockquote class="text">
5168 <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5169 </p>
5170 <p>S: "OK[0]"
5171 </p>
5172 </blockquote><p>
5173
5174 </p>
5175 <p>
5176 </p>
5177 <blockquote class="text">
5178 <p>C: "CREATE FX_SEND 0 93"
5179 </p>
5180 <p>S: "OK[1]"
5181 </p>
5182 </blockquote><p>
5183
5184 </p>
5185 <a name="DESTROY FX_SEND"></a><br /><hr />
5186 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5187 <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5188 Removing an effect send from a sampler channel</h3>
5189
5190 <p>The front-end can remove an existing effect send on a specific sampler channel
5191 by sending the following command:
5192 </p>
5193 <p>
5194 </p>
5195 <blockquote class="text">
5196 <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5197 </p>
5198 </blockquote><p>
5199
5200 </p>
5201 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5202 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>
5203 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
5204 sampler channel from which the effect send should be removed from and
5205 &lt;fx-send-id&gt; is the respective effect send number as returned by the
5206 <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>
5207 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.
5208 </p>
5209 <p>Possible Answers:
5210 </p>
5211 <p>
5212 </p>
5213 <blockquote class="text">
5214 <p>"OK" -
5215 </p>
5216 <blockquote class="text">
5217 <p>on success
5218 </p>
5219 </blockquote>
5220
5221
5222 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5223 </p>
5224 <blockquote class="text">
5225 <p>in case it failed, providing an appropriate error code and
5226 error message
5227 </p>
5228 </blockquote>
5229
5230
5231 </blockquote><p>
5232
5233 </p>
5234 <p>Example:
5235 </p>
5236 <p>
5237 </p>
5238 <blockquote class="text">
5239 <p>C: "DESTROY FX_SEND 0 0"
5240 </p>
5241 <p>S: "OK"
5242 </p>
5243 </blockquote><p>
5244
5245 </p>
5246 <a name="GET FX_SENDS"></a><br /><hr />
5247 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5248 <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5249 Getting amount of effect sends on a sampler channel</h3>
5250
5251 <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5252 by sending the following command:
5253 </p>
5254 <p>
5255 </p>
5256 <blockquote class="text">
5257 <p>GET FX_SENDS &lt;sampler-channel&gt;
5258 </p>
5259 </blockquote><p>
5260
5261 </p>
5262 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5263 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>
5264 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.
5265 </p>
5266 <p>Possible Answers:
5267 </p>
5268 <p>
5269 </p>
5270 <blockquote class="text">
5271 <p>The sampler will answer by returning the number of effect
5272 sends on the given sampler channel.
5273 </p>
5274 </blockquote><p>
5275
5276 </p>
5277 <p>Example:
5278 </p>
5279 <p>
5280 </p>
5281 <blockquote class="text">
5282 <p>C: "GET FX_SENDS 0"
5283 </p>
5284 <p>S: "2"
5285 </p>
5286 </blockquote><p>
5287
5288 </p>
5289 <a name="LIST FX_SENDS"></a><br /><hr />
5290 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5291 <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5292 Listing all effect sends on a sampler channel</h3>
5293
5294 <p>The front-end can ask for a list of effect sends on a specific sampler channel
5295 by sending the following command:
5296 </p>
5297 <p>
5298 </p>
5299 <blockquote class="text">
5300 <p>LIST FX_SENDS &lt;sampler-channel&gt;
5301 </p>
5302 </blockquote><p>
5303
5304 </p>
5305 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5306 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>
5307 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.
5308 </p>
5309 <p>Possible Answers:
5310 </p>
5311 <p>
5312 </p>
5313 <blockquote class="text">
5314 <p>The sampler will answer by returning a comma separated list
5315 with all effect sends' numerical IDs on the given sampler
5316 channel.
5317 </p>
5318 </blockquote><p>
5319
5320 </p>
5321 <p>Examples:
5322 </p>
5323 <p>
5324 </p>
5325 <blockquote class="text">
5326 <p>C: "LIST FX_SENDS 0"
5327 </p>
5328 <p>S: "0,1"
5329 </p>
5330 </blockquote><p>
5331
5332 </p>
5333 <p>
5334 </p>
5335 <blockquote class="text">
5336 <p>C: "LIST FX_SENDS 1"
5337 </p>
5338 <p>S: ""
5339 </p>
5340 </blockquote><p>
5341
5342 </p>
5343 <a name="GET FX_SEND INFO"></a><br /><hr />
5344 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5345 <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5346 Getting effect send information</h3>
5347
5348 <p>The front-end can ask for the current settings of an effect send entity
5349 by sending the following command:
5350 </p>
5351 <p>
5352 </p>
5353 <blockquote class="text">
5354 <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5355 </p>
5356 </blockquote><p>
5357
5358 </p>
5359 <p>Where &lt;sampler-channel&gt; is the sampler channel number
5360 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>
5361 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
5362 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5363 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>
5364 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.
5365
5366 </p>
5367 <p>Possible Answers:
5368 </p>
5369 <p>
5370 </p>
5371 <blockquote class="text">
5372 <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5373 Each answer line begins with the settings category name
5374 followed by a colon and then a space character &lt;SP&gt; and finally
5375 the info character string to that setting category. At the
5376 moment the following categories are defined:
5377 </p>
5378 <p>
5379 </p>
5380 <blockquote class="text">
5381 <p>NAME -
5382 </p>
5383 <blockquote class="text">
5384 <p>name of the effect send entity
5385 (note that this character string may contain
5386 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5387 </p>
5388 </blockquote>
5389
5390
5391 <p>MIDI_CONTROLLER -
5392 </p>
5393 <blockquote class="text">
5394 <p>a value between 0 and 127 reflecting the MIDI controller
5395 which is able to modify the effect send's send level
5396 </p>
5397 </blockquote>
5398
5399
5400 <p>LEVEL -
5401 </p>
5402 <blockquote class="text">
5403 <p>optionally dotted number reflecting the effect send's
5404 current send level (where a value &lt; 1.0 means attenuation
5405 and a value > 1.0 means amplification)
5406 </p>
5407 </blockquote>
5408
5409
5410 <p>AUDIO_OUTPUT_ROUTING -
5411 </p>
5412 <blockquote class="text">
5413 <p>comma separated list which reflects to which audio
5414 channel of the selected audio output device each
5415 effect send output channel is routed to, e.g. "0,3" would
5416 mean the effect send's output channel 0 is routed to channel
5417 0 of the audio output device and the effect send's output
5418 channel 1 is routed to the channel 3 of the audio
5419 output device (see
5420 <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>
5421 for details)
5422 </p>
5423 </blockquote>
5424
5425
5426 </blockquote>
5427
5428
5429 </blockquote><p>
5430
5431 </p>
5432 <p>The mentioned fields above don't have to be in particular order.
5433 </p>
5434 <p>Example:
5435 </p>
5436 <p>
5437 </p>
5438 <blockquote class="text">
5439 <p>C: "GET FX_SEND INFO 0 0"
5440 </p>
5441 <p>S: "NAME: Reverb Send"
5442 </p>
5443 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5444 </p>
5445 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5446 </p>
5447 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5448 </p>
5449 <p>&nbsp;&nbsp;&nbsp;"."
5450 </p>
5451 </blockquote><p>
5452
5453 </p>
5454 <a name="SET FX_SEND NAME"></a><br /><hr />
5455 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5456 <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5457 Changing effect send's name</h3>
5458
5459 <p>The front-end can alter the current name of an effect
5460 send entity by sending the following command:
5461 </p>
5462 <p>
5463 </p>
5464 <blockquote class="text">
5465 <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5466 </p>
5467 </blockquote><p>
5468
5469 </p>
5470 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5471 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>
5472 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,
5473 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5474 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>
5475 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
5476 &lt;name&gt; is the new name of the effect send entity, which
5477 does not have to be unique (name MUST be encapsulated into apostrophes
5478 and supports escape sequences as described in chapter
5479 "<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>").
5480
5481 </p>
5482 <p>Possible Answers:
5483 </p>
5484 <p>
5485 </p>
5486 <blockquote class="text">
5487 <p>"OK" -
5488 </p>
5489 <blockquote class="text">
5490 <p>on success
5491 </p>
5492 </blockquote>
5493
5494
5495 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5496 </p>
5497 <blockquote class="text">
5498 <p>in case it failed, providing an appropriate error code and error message
5499 </p>
5500 </blockquote>
5501
5502
5503 </blockquote><p>
5504
5505 </p>
5506 <p>Example:
5507 </p>
5508 <p>
5509 </p>
5510 <blockquote class="text">
5511 <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5512 </p>
5513 <p>S: "OK"
5514 </p>
5515 </blockquote><p>
5516
5517 </p>
5518 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5519 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5520 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5521 Altering effect send's audio routing</h3>
5522
5523 <p>The front-end can alter the destination of an effect send's audio channel on a specific
5524 sampler channel by sending the following command:
5525 </p>
5526 <p>
5527 </p>
5528 <blockquote class="text">
5529 <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5530 </p>
5531 </blockquote><p>
5532
5533 </p>
5534 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5535 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>
5536 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,
5537 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5538 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>
5539 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,
5540 &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5541 which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5542 the audio channel of the selected audio output device where &lt;audio-src&gt;
5543 should be routed to.
5544 </p>
5545 <p>Note that effect sends can only route audio to the same audio output
5546 device as assigned to the effect send's sampler channel. Also note that an
5547 effect send entity does always have exactly as much audio channels as its
5548 sampler channel. So if the sampler channel is stereo, the effect send does
5549 have two audio channels as well. Also keep in mind that the amount of audio
5550 channels on a sampler channel might be dependant not only to the deployed
5551 sampler engine on the sampler channel, but also dependant to the instrument
5552 currently loaded. However you can (effectively) turn an i.e. stereo effect
5553 send into a mono one by simply altering its audio routing appropriately.
5554 </p>
5555 <p>Possible Answers:
5556 </p>
5557 <p>
5558 </p>
5559 <blockquote class="text">
5560 <p>"OK" -
5561 </p>
5562 <blockquote class="text">
5563 <p>on success
5564 </p>
5565 </blockquote>
5566
5567
5568 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5569 </p>
5570 <blockquote class="text">
5571 <p>if audio output channel was set, but there are noteworthy
5572 issue(s) related, providing an appropriate warning code and
5573 warning message
5574 </p>
5575 </blockquote>
5576
5577
5578 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5579 </p>
5580 <blockquote class="text">
5581 <p>in case it failed, providing an appropriate error code and error message
5582 </p>
5583 </blockquote>
5584
5585
5586 </blockquote><p>
5587
5588 </p>
5589 <p>Example:
5590 </p>
5591 <p>
5592 </p>
5593 <blockquote class="text">
5594 <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5595 </p>
5596 <p>S: "OK"
5597 </p>
5598 </blockquote><p>
5599
5600 </p>
5601 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5602 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5603 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5604 Altering effect send's MIDI controller</h3>
5605
5606 <p>The front-end can alter the MIDI controller of an effect
5607 send entity by sending the following command:
5608 </p>
5609 <p>
5610 </p>
5611 <blockquote class="text">
5612 <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5613 </p>
5614 </blockquote><p>
5615
5616 </p>
5617 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5618 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>
5619 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,
5620 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5621 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>
5622 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
5623 &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5624 able to modify the effect send's send level.
5625 </p>
5626 <p>Possible Answers:
5627 </p>
5628 <p>
5629 </p>
5630 <blockquote class="text">
5631 <p>"OK" -
5632 </p>
5633 <blockquote class="text">
5634 <p>on success
5635 </p>
5636 </blockquote>
5637
5638
5639 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5640 </p>
5641 <blockquote class="text">
5642 <p>if MIDI controller was set, but there are noteworthy
5643 issue(s) related, providing an appropriate warning code and
5644 warning message
5645 </p>
5646 </blockquote>
5647
5648
5649 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5650 </p>
5651 <blockquote class="text">
5652 <p>in case it failed, providing an appropriate error code and error message
5653 </p>
5654 </blockquote>
5655
5656
5657 </blockquote><p>
5658
5659 </p>
5660 <p>Example:
5661 </p>
5662 <p>
5663 </p>
5664 <blockquote class="text">
5665 <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5666 </p>
5667 <p>S: "OK"
5668 </p>
5669 </blockquote><p>
5670
5671 </p>
5672 <a name="SET FX_SEND LEVEL"></a><br /><hr />
5673 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5674 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5675 Altering effect send's send level</h3>
5676
5677 <p>The front-end can alter the current send level of an effect
5678 send entity by sending the following command:
5679 </p>
5680 <p>
5681 </p>
5682 <blockquote class="text">
5683 <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5684 </p>
5685 </blockquote><p>
5686
5687 </p>
5688 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5689 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>
5690 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,
5691 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5692 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>
5693 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
5694 &lt;volume&gt; is an optionally dotted positive number (a value
5695 smaller than 1.0 means attenuation, whereas a value greater than
5696 1.0 means amplification) reflecting the new send level.
5697 </p>
5698 <p>Possible Answers:
5699 </p>
5700 <p>
5701 </p>
5702 <blockquote class="text">
5703 <p>"OK" -
5704 </p>
5705 <blockquote class="text">
5706 <p>on success
5707 </p>
5708 </blockquote>
5709
5710
5711 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5712 </p>
5713 <blockquote class="text">
5714 <p>if new send level was set, but there are noteworthy
5715 issue(s) related, providing an appropriate warning code and
5716 warning message
5717 </p>
5718 </blockquote>
5719
5720
5721 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5722 </p>
5723 <blockquote class="text">
5724 <p>in case it failed, providing an appropriate error code and error message
5725 </p>
5726 </blockquote>
5727
5728
5729 </blockquote><p>
5730
5731 </p>
5732 <p>Example:
5733 </p>
5734 <p>
5735 </p>
5736 <blockquote class="text">
5737 <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5738 </p>
5739 <p>S: "OK"
5740 </p>
5741 </blockquote><p>
5742
5743 </p>
5744 <a name="RESET CHANNEL"></a><br /><hr />
5745 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5746 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5747 Resetting a sampler channel</h3>
5748
5749 <p>The front-end can reset a particular sampler channel by sending the following command:
5750 </p>
5751 <p>
5752 </p>
5753 <blockquote class="text">
5754 <p>RESET CHANNEL &lt;sampler-channel&gt;
5755 </p>
5756 </blockquote><p>
5757
5758 </p>
5759 <p>
5760 Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
5761 This will cause the engine on that sampler channel, its voices and
5762 eventually disk streams and all control and status variables to be
5763 reset.
5764 </p>
5765 <p>Possible Answers:
5766 </p>
5767 <p>
5768 </p>
5769 <blockquote class="text">
5770 <p>"OK" -
5771 </p>
5772 <blockquote class="text">
5773 <p>on success
5774 </p>
5775 </blockquote>
5776
5777
5778 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5779 </p>
5780 <blockquote class="text">
5781 <p>if channel was reset, but there are noteworthy issue(s)
5782 related, providing an appropriate warning code and warning
5783 message
5784 </p>
5785 </blockquote>
5786
5787
5788 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5789 </p>
5790 <blockquote class="text">
5791 <p>in case it failed, providing an appropriate error code and
5792 error message
5793 </p>
5794 </blockquote>
5795
5796
5797 </blockquote><p>
5798
5799 </p>
5800 <p>Examples:
5801 </p>
5802 <p>
5803 </p>
5804 <blockquote class="text">
5805 <p>
5806 </p>
5807 </blockquote><p>
5808
5809 </p>
5810 <a name="anchor12"></a><br /><hr />
5811 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5812 <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
5813 Controlling connection</h3>
5814
5815 <p>The following commands are used to control the connection to LinuxSampler.
5816 </p>
5817 <a name="SUBSCRIBE"></a><br /><hr />
5818 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5819 <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
5820 Register front-end for receiving event messages</h3>
5821
5822 <p>The front-end can register itself to the LinuxSampler application to
5823 be informed about noteworthy events by sending this command:
5824 </p>
5825 <p>
5826 </p>
5827 <blockquote class="text">
5828 <p>SUBSCRIBE &lt;event-id&gt;
5829 </p>
5830 </blockquote><p>
5831
5832 </p>
5833 <p>where &lt;event-id&gt; will be replaced by the respective event that
5834 client wants to subscribe to.
5835 </p>
5836 <p>Possible Answers:
5837 </p>
5838 <p>
5839 </p>
5840 <blockquote class="text">
5841 <p>"OK" -
5842 </p>
5843 <blockquote class="text">
5844 <p>on success
5845 </p>
5846 </blockquote>
5847
5848
5849 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5850 </p>
5851 <blockquote class="text">
5852 <p>if registration succeeded, but there are noteworthy
5853 issue(s) related, providing an appropriate warning code and
5854 warning message
5855 </p>
5856 </blockquote>
5857
5858
5859 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5860 </p>
5861 <blockquote class="text">
5862 <p>in case it failed, providing an appropriate error code and
5863 error message
5864 </p>
5865 </blockquote>
5866
5867
5868 </blockquote><p>
5869
5870 </p>
5871 <p>Examples:
5872 </p>
5873 <p>
5874 </p>
5875 <blockquote class="text">
5876 <p>
5877 </p>
5878 </blockquote><p>
5879
5880 </p>
5881 <a name="UNSUBSCRIBE"></a><br /><hr />
5882 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5883 <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
5884 Unregister front-end for not receiving event messages</h3>
5885
5886 <p>The front-end can unregister itself if it doesn't want to receive event
5887 messages anymore by sending the following command:
5888 </p>
5889 <p>
5890 </p>
5891 <blockquote class="text">
5892 <p>UNSUBSCRIBE &lt;event-id&gt;
5893 </p>
5894 </blockquote><p>
5895
5896 </p>
5897 <p>Where &lt;event-id&gt; will be replaced by the respective event that
5898 client doesn't want to receive anymore.
5899 </p>
5900 <p>Possible Answers:
5901 </p>
5902 <p>
5903 </p>
5904 <blockquote class="text">
5905 <p>"OK" -
5906 </p>
5907 <blockquote class="text">
5908 <p>on success
5909 </p>
5910 </blockquote>
5911
5912
5913 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5914 </p>
5915 <blockquote class="text">
5916 <p>if unregistration succeeded, but there are noteworthy
5917 issue(s) related, providing an appropriate warning code and
5918 warning message
5919 </p>
5920 </blockquote>
5921
5922
5923 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5924 </p>
5925 <blockquote class="text">
5926 <p>in case it failed, providing an appropriate error code and
5927 error message
5928 </p>
5929 </blockquote>
5930
5931
5932 </blockquote><p>
5933
5934 </p>
5935 <p>Examples:
5936 </p>
5937 <p>
5938 </p>
5939 <blockquote class="text">
5940 <p>
5941 </p>
5942 </blockquote><p>
5943
5944 </p>
5945 <a name="SET ECHO"></a><br /><hr />
5946 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5947 <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
5948 Enable or disable echo of commands</h3>
5949
5950 <p>To enable or disable back sending of commands to the client the following command can be used:
5951 </p>
5952 <p>
5953 </p>
5954 <blockquote class="text">
5955 <p>SET ECHO &lt;value&gt;
5956 </p>
5957 </blockquote><p>
5958
5959 </p>
5960 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
5961 or "0" to disable echo mode. When echo mode is enabled, all
5962 commands send to LinuxSampler will be immediately send back and
5963 after this echo the actual response to the command will be
5964 returned. Echo mode will only be altered for the client connection
5965 that issued the "SET ECHO" command, not globally for all client
5966 connections.
5967 </p>
5968 <p>Possible Answers:
5969 </p>
5970 <p>
5971 </p>
5972 <blockquote class="text">
5973 <p>"OK" -
5974 </p>
5975 <blockquote class="text">
5976 <p>usually
5977 </p>
5978 </blockquote>
5979
5980
5981 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5982 </p>
5983 <blockquote class="text">
5984 <p>on syntax error, e.g. non boolean value
5985 </p>
5986 </blockquote>
5987
5988
5989 </blockquote><p>
5990
5991 </p>
5992 <p>Examples:
5993 </p>
5994 <p>
5995 </p>
5996 <blockquote class="text">
5997 <p>
5998 </p>
5999 </blockquote><p>
6000
6001 </p>
6002 <a name="QUIT"></a><br /><hr />
6003 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6004 <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6005 Close client connection</h3>
6006
6007 <p>The client can close its network connection to LinuxSampler by sending the following command:
6008 </p>
6009 <p>
6010 </p>
6011 <blockquote class="text">
6012 <p>QUIT
6013 </p>
6014 </blockquote><p>
6015
6016 </p>
6017 <p>This is probably more interesting for manual telnet connections to
6018 LinuxSampler than really useful for a front-end implementation.
6019 </p>
6020 <a name="anchor13"></a><br /><hr />
6021 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6022 <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6023 Global commands</h3>
6024
6025 <p>The following commands have global impact on the sampler.
6026 </p>
6027 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6028 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6029 <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6030 Current number of active voices</h3>
6031
6032 <p>The front-end can ask for the current number of active voices on
6033 the sampler by sending the following command:
6034 </p>
6035 <p>
6036 </p>
6037 <blockquote class="text">
6038 <p>GET TOTAL_VOICE_COUNT
6039 </p>
6040 </blockquote><p>
6041
6042 </p>
6043 <p>Possible Answers:
6044 </p>
6045 <p>
6046 </p>
6047 <blockquote class="text">
6048 <p>LinuxSampler will answer by returning the number of all active
6049 voices on the sampler.
6050 </p>
6051 </blockquote><p>
6052
6053 </p>
6054 <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6055 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6056 <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6057 Maximum amount of active voices</h3>
6058
6059 <p>The front-end can ask for the maximum number of active voices
6060 by sending the following command:
6061 </p>
6062 <p>
6063 </p>
6064 <blockquote class="text">
6065 <p>GET TOTAL_VOICE_COUNT_MAX
6066 </p>
6067 </blockquote><p>
6068
6069 </p>
6070 <p>Possible Answers:
6071 </p>
6072 <p>
6073 </p>
6074 <blockquote class="text">
6075 <p>LinuxSampler will answer by returning the maximum number
6076 of active voices.
6077 </p>
6078 </blockquote><p>
6079
6080 </p>
6081 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6082 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6083 <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6084 Current number of active disk streams</h3>
6085
6086 <p>The front-end can ask for the current number of active disk streams on
6087 the sampler by sending the following command:
6088 </p>
6089 <p>
6090 </p>
6091 <blockquote class="text">
6092 <p>GET TOTAL_STREAM_COUNT
6093 </p>
6094 </blockquote><p>
6095
6096 </p>
6097 <p>Possible Answers:
6098 </p>
6099 <p>
6100 </p>
6101 <blockquote class="text">
6102 <p>LinuxSampler will answer by returning the number of all active
6103 disk streams on the sampler.
6104 </p>
6105 </blockquote><p>
6106
6107 </p>
6108 <a name="RESET"></a><br /><hr />
6109 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6110 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6111 Reset sampler</h3>
6112
6113 <p>The front-end can reset the whole sampler by sending the following command:
6114 </p>
6115 <p>
6116 </p>
6117 <blockquote class="text">
6118 <p>RESET
6119 </p>
6120 </blockquote><p>
6121
6122 </p>
6123 <p>Possible Answers:
6124 </p>
6125 <p>
6126 </p>
6127 <blockquote class="text">
6128 <p>"OK" -
6129 </p>
6130 <blockquote class="text">
6131 <p>always
6132 </p>
6133 </blockquote>
6134
6135
6136 </blockquote><p>
6137
6138 </p>
6139 <p>Examples:
6140 </p>
6141 <p>
6142 </p>
6143 <blockquote class="text">
6144 <p>
6145 </p>
6146 </blockquote><p>
6147
6148 </p>
6149 <a name="GET SERVER INFO"></a><br /><hr />
6150 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6151 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6152 General sampler informations</h3>
6153
6154 <p>The client can ask for general informations about the LinuxSampler
6155 instance by sending the following command:
6156 </p>
6157 <p>
6158 </p>
6159 <blockquote class="text">
6160 <p>GET SERVER INFO
6161 </p>
6162 </blockquote><p>
6163
6164 </p>
6165 <p>Possible Answers:
6166 </p>
6167 <p>
6168 </p>
6169 <blockquote class="text">
6170 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6171 Each answer line begins with the information category name
6172 followed by a colon and then a space character &lt;SP&gt; and finally
6173 the info character string to that information category. At the
6174 moment the following categories are defined:
6175
6176 </p>
6177 <p>
6178 </p>
6179 <blockquote class="text">
6180 <p>DESCRIPTION -
6181 </p>
6182 <blockquote class="text">
6183 <p>arbitrary textual description about the sampler
6184 (note that the character string may contain
6185 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6186 </p>
6187 </blockquote>
6188
6189
6190 <p>VERSION -
6191 </p>
6192 <blockquote class="text">
6193 <p>version of the sampler
6194 </p>
6195 </blockquote>
6196
6197
6198 <p>PROTOCOL_VERSION -
6199 </p>
6200 <blockquote class="text">
6201 <p>version of the LSCP specification the sampler
6202 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)
6203 </p>
6204 </blockquote>
6205
6206
6207 <p>INSTRUMENTS_DB_SUPPORT -
6208 </p>
6209 <blockquote class="text">
6210 <p>either yes or no, specifies whether the
6211 sampler is build with instruments database support.
6212 </p>
6213 </blockquote>
6214
6215
6216 </blockquote>
6217
6218
6219 </blockquote><p>
6220
6221 </p>
6222 <p>The mentioned fields above don't have to be in particular order.
6223 Other fields might be added in future.
6224 </p>
6225 <a name="GET VOLUME"></a><br /><hr />
6226 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6227 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6228 Getting global volume attenuation</h3>
6229
6230 <p>The client can ask for the current global sampler-wide volume
6231 attenuation by sending the following command:
6232 </p>
6233 <p>
6234 </p>
6235 <blockquote class="text">
6236 <p>GET VOLUME
6237 </p>
6238 </blockquote><p>
6239
6240 </p>
6241 <p>Possible Answers:
6242 </p>
6243 <p>
6244 </p>
6245 <blockquote class="text">
6246 <p>The sampler will always answer by returning the optional
6247 dotted floating point coefficient, reflecting the current
6248 global volume attenuation.
6249
6250 </p>
6251 </blockquote><p>
6252
6253 </p>
6254 <p>Note: it is up to the respective sampler engine whether to obey
6255 that global volume parameter or not, but in general all engines SHOULD
6256 use this parameter.
6257 </p>
6258 <a name="SET VOLUME"></a><br /><hr />
6259 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6260 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6261 Setting global volume attenuation</h3>
6262
6263 <p>The client can alter the current global sampler-wide volume
6264 attenuation by sending the following command:
6265 </p>
6266 <p>
6267 </p>
6268 <blockquote class="text">
6269 <p>SET VOLUME &lt;volume&gt;
6270 </p>
6271 </blockquote><p>
6272
6273 </p>
6274 <p>Where &lt;volume&gt; should be replaced by the optional dotted
6275 floating point value, reflecting the new global volume parameter.
6276 This value might usually be in the range between 0.0 and 1.0, that
6277 is for attenuating the overall volume.
6278 </p>
6279 <p>Possible Answers:
6280 </p>
6281 <p>
6282 </p>
6283 <blockquote class="text">
6284 <p>"OK" -
6285 </p>
6286 <blockquote class="text">
6287 <p>on success
6288 </p>
6289 </blockquote>
6290
6291
6292 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6293 </p>
6294 <blockquote class="text">
6295 <p>if the global volume was set, but there are noteworthy
6296 issue(s) related, providing an appropriate warning code and
6297 warning message
6298 </p>
6299 </blockquote>
6300
6301
6302 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6303 </p>
6304 <blockquote class="text">
6305 <p>in case it failed, providing an appropriate error code and error message
6306 </p>
6307 </blockquote>
6308
6309
6310 </blockquote><p>
6311
6312 </p>
6313 <a name="MIDI Instrument Mapping"></a><br /><hr />
6314 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6315 <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6316 MIDI Instrument Mapping</h3>
6317
6318 <p>The MIDI protocol provides a way to switch between instruments
6319 by sending so called MIDI bank select and MIDI program change
6320 messages which are essentially just numbers. The following commands
6321 allow to actually map arbitrary MIDI bank select / program change
6322 numbers with real instruments.
6323 </p>
6324 <p>The sampler allows to manage an arbitrary amount of MIDI
6325 instrument maps which define which instrument to load on
6326 which MIDI program change message.
6327 </p>
6328 <p>By default, that is when the sampler is launched, there is no
6329 map, thus the sampler will simply ignore all program change
6330 messages. The front-end has to explicitly create at least one
6331 map, add entries to the map and tell the respective sampler
6332 channel(s) which MIDI instrument map to use, so the sampler
6333 knows how to react on a given program change message on the
6334 respective sampler channel, that is by switching to the
6335 respectively defined engine type and loading the respective
6336 instrument. See command
6337 <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>
6338 for how to assign a MIDI instrument map to a sampler channel.
6339 </p>
6340 <p>Also note per MIDI specification a bank select message does not
6341 cause to switch to another instrument. Instead when receiving a
6342 bank select message the bank value will be stored and a subsequent
6343 program change message (which may occur at any time) will finally
6344 cause the sampler to switch to the respective instrument as
6345 reflected by the current MIDI instrument map.
6346 </p>
6347 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6348 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6349 <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6350 Create a new MIDI instrument map</h3>
6351
6352 <p>The front-end can add a new MIDI instrument map by sending
6353 the following command:
6354 </p>
6355 <p>
6356 </p>
6357 <blockquote class="text">
6358 <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6359 </p>
6360 </blockquote><p>
6361
6362 </p>
6363 <p>Where &lt;name&gt; is an optional argument allowing to
6364 assign a custom name to the new map. MIDI instrument Map
6365 names do not have to be unique, but MUST be encapsulated
6366 into apostrophes and support escape sequences as described
6367 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>".
6368
6369 </p>
6370 <p>Possible Answers:
6371 </p>
6372 <p>
6373 </p>
6374 <blockquote class="text">
6375 <p>"OK[&lt;map&gt;]" -
6376 </p>
6377 <blockquote class="text">
6378 <p>in case a new MIDI instrument map could
6379 be added, where &lt;map&gt; reflects the
6380 unique ID of the newly created MIDI
6381 instrument map
6382 </p>
6383 </blockquote>
6384
6385
6386 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6387 </p>
6388 <blockquote class="text">
6389 <p>when a new map could not be created, which
6390 might never occur in practice
6391 </p>
6392 </blockquote>
6393
6394
6395 </blockquote><p>
6396
6397 </p>
6398 <p>Examples:
6399 </p>
6400 <p>
6401 </p>
6402 <blockquote class="text">
6403 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6404 </p>
6405 <p>S: "OK[0]"
6406 </p>
6407 </blockquote><p>
6408
6409 </p>
6410 <p>
6411 </p>
6412 <blockquote class="text">
6413 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6414 </p>
6415 <p>S: "OK[1]"
6416 </p>
6417 </blockquote><p>
6418
6419 </p>
6420 <p>
6421 </p>
6422 <blockquote class="text">
6423 <p>C: "ADD MIDI_INSTRUMENT_MAP"
6424 </p>
6425 <p>S: "OK[5]"
6426 </p>
6427 </blockquote><p>
6428
6429 </p>
6430 <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6431 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6432 <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6433 Delete one particular or all MIDI instrument maps</h3>
6434
6435 <p>The front-end can delete a particular MIDI instrument map
6436 by sending the following command:
6437 </p>
6438 <p>
6439 </p>
6440 <blockquote class="text">
6441 <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6442 </p>
6443 </blockquote><p>
6444
6445 </p>
6446 <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6447 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>
6448 command.
6449 </p>
6450 <p>The front-end can delete all MIDI instrument maps by
6451 sending the following command:
6452 </p>
6453 <p>
6454 </p>
6455 <blockquote class="text">
6456 <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6457 </p>
6458 </blockquote><p>
6459
6460 </p>
6461 <p>Possible Answers:
6462 </p>
6463 <p>
6464 </p>
6465 <blockquote class="text">
6466 <p>"OK" -
6467 </p>
6468 <blockquote class="text">
6469 <p>in case the map(s) could be deleted
6470 </p>
6471 </blockquote>
6472
6473
6474 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6475 </p>
6476 <blockquote class="text">
6477 <p>when the given map does not exist
6478 </p>
6479 </blockquote>
6480
6481
6482 </blockquote><p>
6483
6484 </p>
6485 <p>Examples:
6486 </p>
6487 <p>
6488 </p>
6489 <blockquote class="text">
6490 <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6491 </p>
6492 <p>S: "OK"
6493 </p>
6494 </blockquote><p>
6495
6496 </p>
6497 <p>
6498 </p>
6499 <blockquote class="text">
6500 <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
6501 </p>
6502 <p>S: "OK"
6503 </p>
6504 </blockquote><p>
6505
6506 </p>
6507 <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6508 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6509 <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
6510 Get amount of existing MIDI instrument maps</h3>
6511
6512 <p>The front-end can retrieve the current amount of MIDI
6513 instrument maps by sending the following command:
6514 </p>
6515 <p>
6516 </p>
6517 <blockquote class="text">
6518 <p>GET MIDI_INSTRUMENT_MAPS
6519 </p>
6520 </blockquote><p>
6521
6522 </p>
6523 <p>Possible Answers:
6524 </p>
6525 <p>
6526 </p>
6527 <blockquote class="text">
6528 <p>The sampler will answer by returning the current
6529 number of MIDI instrument maps.
6530 </p>
6531 </blockquote><p>
6532
6533 </p>
6534 <p>Example:
6535 </p>
6536 <p>
6537 </p>
6538 <blockquote class="text">
6539 <p>C: "GET MIDI_INSTRUMENT_MAPS"
6540 </p>
6541 <p>S: "2"
6542 </p>
6543 </blockquote><p>
6544
6545 </p>
6546 <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6547 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6548 <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
6549 Getting all created MIDI instrument maps</h3>
6550
6551 <p>The number of MIDI instrument maps can change on runtime. To get the
6552 current list of MIDI instrument maps, the front-end can send the
6553 following command:
6554 </p>
6555 <p>
6556 </p>
6557 <blockquote class="text">
6558 <p>LIST MIDI_INSTRUMENT_MAPS
6559 </p>
6560 </blockquote><p>
6561
6562 </p>
6563 <p>Possible Answers:
6564 </p>
6565 <p>
6566 </p>
6567 <blockquote class="text">
6568 <p>The sampler will answer by returning a comma separated list
6569 with all MIDI instrument maps' numerical IDs.
6570 </p>
6571 </blockquote><p>
6572
6573 </p>
6574 <p>Example:
6575 </p>
6576 <p>
6577 </p>
6578 <blockquote class="text">
6579 <p>C: "LIST MIDI_INSTRUMENT_MAPS"
6580 </p>
6581 <p>S: "0,1,5,12"
6582 </p>
6583 </blockquote><p>
6584
6585 </p>
6586 <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
6587 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6588 <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
6589 Getting MIDI instrument map information</h3>
6590
6591 <p>The front-end can ask for the current settings of a MIDI
6592 instrument map by sending the following command:
6593 </p>
6594 <p>
6595 </p>
6596 <blockquote class="text">
6597 <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
6598 </p>
6599 </blockquote><p>
6600
6601 </p>
6602 <p>Where &lt;map&gt; is the numerical ID of the map the
6603 front-end is interested in as returned by the
6604 <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>
6605 command.
6606 </p>
6607 <p>Possible Answers:
6608 </p>
6609 <p>
6610 </p>
6611 <blockquote class="text">
6612 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6613 Each answer line begins with the settings category name
6614 followed by a colon and then a space character &lt;SP&gt; and finally
6615 the info character string to that setting category. At the
6616 moment the following categories are defined:
6617 </p>
6618 <p>
6619 </p>
6620 <blockquote class="text">
6621 <p>NAME -
6622 </p>
6623 <blockquote class="text">
6624 <p>custom name of the given map,
6625 which does not have to be unique
6626 (note that this character string may contain
6627 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6628 </p>
6629 </blockquote>
6630
6631
6632 <p>DEFAULT -
6633 </p>
6634 <blockquote class="text">
6635 <p>either true or false,
6636 defines whether this map is the default map
6637 </p>
6638 </blockquote>
6639
6640
6641 </blockquote>
6642
6643
6644 </blockquote><p>
6645
6646 </p>
6647 <p>The mentioned fields above don't have to be in particular order.
6648 </p>
6649 <p>Example:
6650 </p>
6651 <p>
6652 </p>
6653 <blockquote class="text">
6654 <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
6655 </p>
6656 <p>S: "NAME: Standard Map"
6657 </p>
6658 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
6659 </p>
6660 <p>&nbsp;&nbsp;&nbsp;"."
6661 </p>
6662 </blockquote><p>
6663
6664 </p>
6665 <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
6666 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6667 <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
6668 Renaming a MIDI instrument map</h3>
6669
6670 <p>The front-end can alter the custom name of a MIDI
6671 instrument map by sending the following command:
6672 </p>
6673 <p>
6674 </p>
6675 <blockquote class="text">
6676 <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
6677 </p>
6678 </blockquote><p>
6679
6680 </p>
6681 <p>Where &lt;map&gt; is the numerical ID of the map and
6682 &lt;name&gt; the new custom name of the map, which does not
6683 have to be unique (name MUST be encapsulated into apostrophes
6684 and supports escape sequences as described in chapter
6685 "<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>").
6686
6687 </p>
6688 <p>Possible Answers:
6689 </p>
6690 <p>
6691 </p>
6692 <blockquote class="text">
6693 <p>"OK" -
6694 </p>
6695 <blockquote class="text">
6696 <p>on success
6697 </p>
6698 </blockquote>
6699
6700
6701 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6702 </p>
6703 <blockquote class="text">
6704 <p>in case the given map does not exist
6705 </p>
6706 </blockquote>
6707
6708
6709 </blockquote><p>
6710
6711 </p>
6712 <p>Example:
6713 </p>
6714 <p>
6715 </p>
6716 <blockquote class="text">
6717 <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
6718 </p>
6719 <p>S: "OK"
6720 </p>
6721 </blockquote><p>
6722
6723 </p>
6724 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
6725 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6726 <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
6727 Create or replace a MIDI instrument map entry</h3>
6728
6729 <p>The front-end can create a new or replace an existing entry
6730 in a sampler's MIDI instrument map by sending the following
6731 command:
6732 </p>
6733 <p>
6734 </p>
6735 <blockquote class="text">
6736 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
6737 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
6738 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
6739 [&lt;instr_load_mode&gt;] [&lt;name&gt;]
6740 </p>
6741 </blockquote><p>
6742
6743 </p>
6744 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
6745 &lt;midi_bank&gt; is an integer value between
6746 0..16383 reflecting the MIDI bank select index,
6747 &lt;midi_prog&gt; an
6748 integer value between 0..127 reflecting the MIDI program change
6749 index, &lt;engine_name&gt; a sampler engine name as returned by
6750 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
6751 command (not encapsulated into apostrophes), &lt;filename&gt; the name
6752 of the instrument's file to be deployed (encapsulated into apostrophes,
6753 supporting escape sequences as described in chapter
6754 "<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>"),
6755 &lt;instrument_index&gt; the index (integer value) of the instrument
6756 within the given file, &lt;volume_value&gt; reflects the master
6757 volume of the instrument as optionally dotted number (where a
6758 value &lt; 1.0 means attenuation and a value > 1.0 means
6759 amplification). This parameter easily allows to adjust the
6760 volume of all intruments within a custom instrument map
6761 without having to adjust their instrument files. The
6762 OPTIONAL &lt;instr_load_mode&gt; argument defines the life
6763 time of the instrument, that is when the instrument should
6764 be loaded, when freed and has exactly the following
6765 possibilities:
6766 </p>
6767 <p>
6768 </p>
6769 <blockquote class="text">
6770 <p>"ON_DEMAND" -
6771 </p>
6772 <blockquote class="text">
6773 <p>The instrument will be loaded when needed,
6774 that is when demanded by at least one sampler
6775 channel. It will immediately be freed from memory
6776 when not needed by any sampler channel anymore.
6777 </p>
6778 </blockquote>
6779
6780
6781 <p>"ON_DEMAND_HOLD" -
6782 </p>
6783 <blockquote class="text">
6784 <p>The instrument will be loaded when needed,
6785 that is when demanded by at least one sampler
6786 channel. It will be kept in memory even when
6787 not needed by any sampler channel anymore.
6788 Instruments with this mode are only freed
6789 when the sampler is reset or all mapping
6790 entries with this mode (and respective
6791 instrument) are explicitly changed to
6792 "ON_DEMAND" and no sampler channel is using
6793 the instrument anymore.
6794 </p>
6795 </blockquote>
6796
6797
6798 <p>"PERSISTENT" -
6799 </p>
6800 <blockquote class="text">
6801 <p>The instrument will immediately be loaded
6802 into memory when this mapping
6803 command is sent and the instrument is kept all
6804 the time. Instruments with this mode are
6805 only freed when the sampler is reset or all
6806 mapping entries with this mode (and
6807 respective instrument) are explicitly
6808 changed to "ON_DEMAND" and no sampler
6809 channel is using the instrument anymore.
6810 </p>
6811 </blockquote>
6812
6813
6814 <p>not supplied -
6815 </p>
6816 <blockquote class="text">
6817 <p>In case there is no &lt;instr_load_mode&gt;
6818 argument given, it will be up to the
6819 InstrumentManager to decide which mode to use.
6820 Usually it will use "ON_DEMAND" if an entry
6821 for the given instrument does not exist in
6822 the InstrumentManager's list yet, otherwise
6823 if an entry already exists, it will simply
6824 stick with the mode currently reflected by
6825 the already existing entry, that is it will
6826 not change the mode.
6827 </p>
6828 </blockquote>
6829
6830
6831 </blockquote><p>
6832
6833 </p>
6834 <p>
6835 The &lt;instr_load_mode&gt; argument thus allows to define an
6836 appropriate strategy (low memory consumption vs. fast
6837 instrument switching) for each instrument individually. Note, the
6838 following restrictions apply to this argument: "ON_DEMAND_HOLD" and
6839 "PERSISTENT" have to be supported by the respective sampler engine
6840 (which is technically the case when the engine provides an
6841 InstrumentManager for its format). If this is not the case the
6842 argument will automatically fall back to the default value
6843 "ON_DEMAND". Also the load mode of one instrument may
6844 automatically change the laod mode of other instrument(s), i.e.
6845 because the instruments are part of the same file and the
6846 engine does not allow a way to manage load modes for them
6847 individually. Due to this, in case the frontend shows the
6848 load modes of entries, the frontend should retrieve the actual
6849 mode by i.e. sending
6850 <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>
6851 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
6852 (encapsulated into apostrophes, supporting escape sequences as described in chapter
6853 "<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
6854 mapping entry, useful for frontends for displaying an appropriate name for
6855 mapped instruments (using
6856 <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>).
6857
6858 </p>
6859 <p>
6860 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
6861 completely established in the sampler. The OPTIONAL "NON_MODAL" argument
6862 however causes the respective "MAP MIDI_INSTRUMENT" command to return
6863 immediately, that is to let the sampler establish the mapping in the
6864 background. So this argument might be especially useful for mappings with
6865 a "PERSISTENT" type, because these have to load the respective instruments
6866 immediately and might thus block for a very long time. It is recommended
6867 however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
6868 because it has the following drawbacks: as "NON_MODAL" instructions return
6869 immediately, they may not necessarily return an error i.e. when the given
6870 instrument file turns out to be corrupt, beside that subsequent commands
6871 in a LSCP instruction sequence might fail, because mandatory mappings are
6872 not yet completed.
6873
6874 </p>
6875 <p>Possible Answers:
6876 </p>
6877 <p>
6878 </p>
6879 <blockquote class="text">
6880 <p>"OK" -
6881 </p>
6882 <blockquote class="text">
6883 <p>usually
6884 </p>
6885 </blockquote>
6886
6887
6888 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6889 </p>
6890 <blockquote class="text">
6891 <p>when the given map or engine does not exist or a value
6892 is out of range
6893 </p>
6894 </blockquote>
6895
6896
6897 </blockquote><p>
6898
6899 </p>
6900 <p>Examples:
6901 </p>
6902 <p>
6903 </p>
6904 <blockquote class="text">
6905 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
6906 </p>
6907 <p>S: "OK"
6908 </p>
6909 </blockquote><p>
6910
6911 </p>
6912 <p>
6913 </p>
6914 <blockquote class="text">
6915 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
6916 </p>
6917 <p>S: "OK"
6918 </p>
6919 </blockquote><p>
6920
6921 </p>
6922 <p>
6923 </p>
6924 <blockquote class="text">
6925 <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
6926 </p>
6927 <p>S: "OK"
6928 </p>
6929 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
6930 </p>
6931 <p>S: "OK"
6932 </p>
6933 </blockquote><p>
6934
6935 </p>
6936 <p>
6937 </p>
6938 <blockquote class="text">
6939 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
6940 </p>
6941 <p>S: "OK"
6942 </p>
6943 </blockquote><p>
6944
6945 </p>
6946 <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
6947 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6948 <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
6949 Getting ammount of MIDI instrument map entries</h3>
6950
6951 <p>The front-end can query the amount of currently existing
6952 entries in a MIDI instrument map by sending the following
6953 command:
6954 </p>
6955 <p>
6956 </p>
6957 <blockquote class="text">
6958 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
6959 </p>
6960 </blockquote><p>
6961
6962 </p>
6963 <p>The front-end can query the amount of currently existing
6964 entries in all MIDI instrument maps by sending the following
6965 command:
6966 </p>
6967 <p>
6968 </p>
6969 <blockquote class="text">
6970 <p>GET MIDI_INSTRUMENTS ALL
6971 </p>
6972 </blockquote><p>
6973
6974 </p>
6975 <p>Possible Answers:
6976 </p>
6977 <p>
6978 </p>
6979 <blockquote class="text">
6980 <p>The sampler will answer by sending the current number of
6981 entries in the MIDI instrument map(s).
6982 </p>
6983 </blockquote><p>
6984
6985 </p>
6986 <p>Example:
6987 </p>
6988 <p>
6989 </p>
6990 <blockquote class="text">
6991 <p>C: "GET MIDI_INSTRUMENTS 0"
6992 </p>
6993 <p>S: "234"
6994 </p>
6995 </blockquote><p>
6996
6997 </p>
6998 <p>
6999 </p>
7000 <blockquote class="text">
7001 <p>C: "GET MIDI_INSTRUMENTS ALL"
7002 </p>
7003 <p>S: "954"
7004 </p>
7005 </blockquote><p>
7006
7007 </p>
7008 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7009 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7010 <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7011 Getting indeces of all entries of a MIDI instrument map</h3>
7012
7013 <p>The front-end can query a list of all currently existing
7014 entries in a certain MIDI instrument map by sending the following
7015 command:
7016 </p>
7017 <p>
7018 </p>
7019 <blockquote class="text">
7020 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7021 </p>
7022 </blockquote><p>
7023
7024 </p>
7025 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7026 </p>
7027 <p>The front-end can query a list of all currently existing
7028 entries of all MIDI instrument maps by sending the following
7029 command:
7030 </p>
7031 <p>
7032 </p>
7033 <blockquote class="text">
7034 <p>LIST MIDI_INSTRUMENTS ALL
7035 </p>
7036 </blockquote><p>
7037
7038 </p>
7039 <p>Possible Answers:
7040 </p>
7041 <p>
7042 </p>
7043 <blockquote class="text">
7044 <p>The sampler will answer by sending a comma separated
7045 list of map ID - MIDI bank - MIDI program triples, where
7046 each triple is encapsulated into curly braces. The
7047 list is returned in one single line. Each triple
7048 just reflects the key of the respective map entry,
7049 thus subsequent
7050 <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>
7051 command(s) are necessary to retrieve detailed informations
7052 about each entry.
7053 </p>
7054 </blockquote><p>
7055
7056 </p>
7057 <p>Example:
7058 </p>
7059 <p>
7060 </p>
7061 <blockquote class="text">
7062 <p>C: "LIST MIDI_INSTRUMENTS 0"
7063 </p>
7064 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7065 </p>
7066 </blockquote><p>
7067
7068 </p>
7069 <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7070 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7071 <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7072 Remove an entry from the MIDI instrument map</h3>
7073
7074 <p>The front-end can delete an entry from a MIDI instrument
7075 map by sending the following command:
7076 </p>
7077 <p>
7078 </p>
7079 <blockquote class="text">
7080 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7081 </p>
7082 </blockquote><p>
7083
7084 </p>
7085 <p>
7086 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7087 &lt;midi_bank&gt; is an integer value between 0..16383
7088 reflecting the MIDI bank value and
7089 &lt;midi_prog&gt; an integer value between
7090 0..127 reflecting the MIDI program value of the map's entrie's key
7091 index triple.
7092
7093 </p>
7094 <p>Possible Answers:
7095 </p>
7096 <p>
7097 </p>
7098 <blockquote class="text">
7099 <p>"OK" -
7100 </p>
7101 <blockquote class="text">
7102 <p>usually
7103 </p>
7104 </blockquote>
7105
7106
7107 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7108 </p>
7109 <blockquote class="text">
7110 <p>when index out of bounds
7111 </p>
7112 </blockquote>
7113
7114
7115 </blockquote><p>
7116
7117 </p>
7118 <p>Example:
7119 </p>
7120 <p>
7121 </p>
7122 <blockquote class="text">
7123 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7124 </p>
7125 <p>S: "OK"
7126 </p>
7127 </blockquote><p>
7128
7129 </p>
7130 <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7131 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7132 <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7133 Get current settings of MIDI instrument map entry</h3>
7134
7135 <p>The front-end can retrieve the current settings of a certain
7136 instrument map entry by sending the following command:
7137 </p>
7138 <p>
7139 </p>
7140 <blockquote class="text">
7141 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7142 </p>
7143 </blockquote><p>
7144
7145 </p>
7146 <p>
7147 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7148 &lt;midi_bank&gt; is an integer value between 0..16383
7149 reflecting the MIDI bank value, &lt;midi_bank&gt;
7150 and &lt;midi_prog&gt; an integer value between
7151 0..127 reflecting the MIDI program value of the map's entrie's key
7152 index triple.
7153
7154 </p>
7155 <p>Possible Answers:
7156 </p>
7157 <p>
7158 </p>
7159 <blockquote class="text">
7160 <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7161 separated list. Each answer line begins with the
7162 information category name followed by a colon and then
7163 a space character &lt;SP&gt; and finally the info
7164 character string to that info category. At the moment
7165 the following categories are defined:
7166 </p>
7167 <p>"NAME" -
7168 </p>
7169 <blockquote class="text">
7170 <p>Name for this MIDI instrument map entry (if defined).
7171 This name shall be used by frontends for displaying a
7172 name for this mapped instrument. It can be set and
7173 changed with the
7174 <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>
7175 command and does not have to be unique.
7176 (note that this character string may contain
7177 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7178 </p>
7179 </blockquote>
7180
7181
7182 <p>"ENGINE_NAME" -
7183 </p>
7184 <blockquote class="text">
7185 <p>Name of the engine to be deployed for this
7186 instrument.
7187 </p>
7188 </blockquote>
7189
7190
7191 <p>"INSTRUMENT_FILE" -
7192 </p>
7193 <blockquote class="text">
7194 <p>File name of the instrument
7195 (note that this path may contain
7196 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7197 </p>
7198 </blockquote>
7199
7200
7201 <p>"INSTRUMENT_NR" -
7202 </p>
7203 <blockquote class="text">
7204 <p>Index of the instrument within the file.
7205 </p>
7206 </blockquote>
7207
7208
7209 <p>"INSTRUMENT_NAME" -
7210 </p>
7211 <blockquote class="text">
7212 <p>Name of the loaded instrument as reflected by its file.
7213 In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7214 cannot be changed (note that this character string may contain
7215 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7216 </p>
7217 </blockquote>
7218
7219
7220 <p>"LOAD_MODE" -
7221 </p>
7222 <blockquote class="text">
7223 <p>Life time of instrument
7224 (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).
7225 </p>
7226 </blockquote>
7227
7228
7229 <p>"VOLUME" -
7230 </p>
7231 <blockquote class="text">
7232 <p>master volume of the instrument as optionally
7233 dotted number (where a value &lt; 1.0 means attenuation
7234 and a value > 1.0 means amplification)
7235 </p>
7236 </blockquote>
7237
7238
7239 <p>The mentioned fields above don't have to be in particular order.
7240 </p>
7241 </blockquote><p>
7242
7243 </p>
7244 <p>Example:
7245 </p>
7246 <p>
7247 </p>
7248 <blockquote class="text">
7249 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7250 </p>
7251 <p>S: "NAME: Drums for Foo Song"
7252 </p>
7253 <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7254 </p>
7255 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7256 </p>
7257 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7258 </p>
7259 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7260 </p>
7261 <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7262 </p>
7263 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7264 </p>
7265 <p>&nbsp;&nbsp;&nbsp;"."
7266 </p>
7267 </blockquote><p>
7268
7269 </p>
7270 <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7271 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7272 <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7273 Clear MIDI instrument map</h3>
7274
7275 <p>The front-end can clear a whole MIDI instrument map, that
7276 is delete all its entries by sending the following command:
7277 </p>
7278 <p>
7279 </p>
7280 <blockquote class="text">
7281 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7282 </p>
7283 </blockquote><p>
7284
7285 </p>
7286 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7287 </p>
7288 <p>The front-end can clear all MIDI instrument maps, that
7289 is delete all entries of all maps by sending the following
7290 command:
7291 </p>
7292 <p>
7293 </p>
7294 <blockquote class="text">
7295 <p>CLEAR MIDI_INSTRUMENTS ALL
7296 </p>
7297 </blockquote><p>
7298
7299 </p>
7300 <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7301 maps, only their entries, thus the map's settings like
7302 custom name will be preservevd.
7303 </p>
7304 <p>Possible Answers:
7305 </p>
7306 <p>
7307 </p>
7308 <blockquote class="text">
7309 <p>"OK" -
7310 </p>
7311 <blockquote class="text">
7312 <p>always
7313 </p>
7314 </blockquote>
7315
7316
7317 </blockquote><p>
7318
7319 </p>
7320 <p>Examples:
7321 </p>
7322 <p>
7323 </p>
7324 <blockquote class="text">
7325 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7326 </p>
7327 <p>S: "OK"
7328 </p>
7329 </blockquote><p>
7330
7331 </p>
7332 <p>
7333 </p>
7334 <blockquote class="text">
7335 <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7336 </p>
7337 <p>S: "OK"
7338 </p>
7339 </blockquote><p>
7340
7341 </p>
7342 <a name="Managing Instruments Database"></a><br /><hr />
7343 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7344 <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7345 Managing Instruments Database</h3>
7346
7347 <p>The following commands describe how to use and manage
7348 the instruments database.
7349 </p>
7350 <p>Notice:
7351 </p>
7352 <p>
7353 </p>
7354 <blockquote class="text">
7355 <p>All command arguments representing a path or
7356 instrument/directory name support escape sequences as described in chapter
7357 "<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>".
7358
7359 </p>
7360 <p>All occurrences of a forward slash in instrument and directory
7361 names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7362
7363 </p>
7364 </blockquote><p>
7365
7366 </p>
7367 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7368 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7369 <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7370 Creating a new instrument directory</h3>
7371
7372 <p>The front-end can add a new instrument directory to the
7373 instruments database by sending the following command:
7374 </p>
7375 <p>
7376 </p>
7377 <blockquote class="text">
7378 <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7379 </p>
7380 </blockquote><p>
7381
7382 </p>
7383 <p>Where &lt;dir&gt; is the absolute path name of the directory
7384 to be created (encapsulated into apostrophes).
7385 </p>
7386 <p>Possible Answers:
7387 </p>
7388 <p>
7389 </p>
7390 <blockquote class="text">
7391 <p>"OK" -
7392 </p>
7393 <blockquote class="text">
7394 <p>on success
7395 </p>
7396 </blockquote>
7397
7398
7399 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7400 </p>
7401 <blockquote class="text">
7402 <p>when the directory could not be created, which
7403 can happen if the directory already exists or the
7404 name contains not allowed symbols
7405 </p>
7406 </blockquote>
7407
7408
7409 </blockquote><p>
7410
7411 </p>
7412 <p>Examples:
7413 </p>
7414 <p>
7415 </p>
7416 <blockquote class="text">
7417 <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7418 </p>
7419 <p>S: "OK"
7420 </p>
7421 </blockquote><p>
7422
7423 </p>
7424 <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7425 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7426 <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7427 Deleting an instrument directory</h3>
7428
7429 <p>The front-end can delete a particular instrument directory
7430 from the instruments database by sending the following command:
7431 </p>
7432 <p>
7433 </p>
7434 <blockquote class="text">
7435 <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7436 </p>
7437 </blockquote><p>
7438
7439 </p>
7440 <p>Where &lt;dir&gt; is the absolute path name of the directory
7441 to delete. The optional FORCE argument can be used to
7442 force the deletion of a non-empty directory and all its content.
7443 </p>
7444 <p>Possible Answers:
7445 </p>
7446 <p>
7447 </p>
7448 <blockquote class="text">
7449 <p>"OK" -
7450 </p>
7451 <blockquote class="text">
7452 <p>if the directory is deleted successfully
7453 </p>
7454 </blockquote>
7455
7456
7457 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7458 </p>
7459 <blockquote class="text">
7460 <p>if the given directory does not exist, or
7461 if trying to delete a non-empty directory,
7462 without using the FORCE argument.
7463 </p>
7464 </blockquote>
7465
7466
7467 </blockquote><p>
7468
7469 </p>
7470 <p>Examples:
7471 </p>
7472 <p>
7473 </p>
7474 <blockquote class="text">
7475 <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7476 </p>
7477 <p>S: "OK"
7478 </p>
7479 </blockquote><p>
7480
7481 </p>
7482 <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7483 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7484 <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7485 Getting amount of instrument directories</h3>
7486
7487 <p>The front-end can retrieve the current amount of
7488 directories in a specific directory by sending the following command:
7489 </p>
7490 <p>
7491 </p>
7492 <blockquote class="text">
7493 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7494 </p>
7495 </blockquote><p>
7496
7497 </p>
7498 <p>Where &lt;dir&gt; should be replaced by the absolute path
7499 name of the directory. If RECURSIVE is specified, the number of
7500 all directories, including those located in subdirectories of the
7501 specified directory, will be returned.
7502 </p>
7503 <p>Possible Answers:
7504 </p>
7505 <p>
7506 </p>
7507 <blockquote class="text">
7508 <p>The current number of instrument directories
7509 in the specified directory.
7510 </p>
7511 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7512 </p>
7513 <blockquote class="text">
7514 <p>if the given directory does not exist.
7515 </p>
7516 </blockquote>
7517
7518
7519 </blockquote><p>
7520
7521 </p>
7522 <p>Example:
7523 </p>
7524 <p>
7525 </p>
7526 <blockquote class="text">
7527 <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
7528 </p>
7529 <p>S: "2"
7530 </p>
7531 </blockquote><p>
7532
7533 </p>
7534 <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7535 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7536 <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
7537 Listing all directories in specific directory</h3>
7538
7539 <p>The front-end can retrieve the current list of directories
7540 in specific directory by sending the following command:
7541 </p>
7542 <p>
7543 </p>
7544 <blockquote class="text">
7545 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7546 </p>
7547 </blockquote><p>
7548
7549 </p>
7550 <p>Where &lt;dir&gt; should be replaced by the absolute path
7551 name of the directory. If RECURSIVE is specified, the absolute path names
7552 of all directories, including those located in subdirectories of the
7553 specified directory, will be returned.
7554 </p>
7555 <p>Possible Answers:
7556 </p>
7557 <p>
7558 </p>
7559 <blockquote class="text">
7560 <p>A comma separated list of all instrument directories
7561 (encapsulated into apostrophes) in the specified directory.
7562 </p>
7563 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7564 </p>
7565 <blockquote class="text">
7566 <p>if the given directory does not exist.
7567 </p>
7568 </blockquote>
7569
7570
7571 </blockquote><p>
7572
7573 </p>
7574 <p>Example:
7575 </p>
7576 <p>
7577 </p>
7578 <blockquote class="text">
7579 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
7580 </p>
7581 <p>S: "'Piano Collection','Percussion Collection'"
7582 </p>
7583 </blockquote><p>
7584
7585 </p>
7586 <p>
7587 </p>
7588 <blockquote class="text">
7589 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
7590 </p>
7591 <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
7592 </p>
7593 </blockquote><p>
7594
7595 </p>
7596 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
7597 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7598 <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
7599 Getting instrument directory information</h3>
7600
7601 <p>The front-end can ask for the current settings of an
7602 instrument directory by sending the following command:
7603 </p>
7604 <p>
7605 </p>
7606 <blockquote class="text">
7607 <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
7608 </p>
7609 </blockquote><p>
7610
7611 </p>
7612 <p>Where &lt;dir&gt; should be replaced by the absolute path
7613 name of the directory the front-end is interested in.
7614 </p>
7615 <p>Possible Answers:
7616 </p>
7617 <p>
7618 </p>
7619 <blockquote class="text">
7620 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7621 Each answer line begins with the settings category name
7622 followed by a colon and then a space character &lt;SP&gt; and finally
7623 the info character string to that setting category. At the
7624 moment the following categories are defined:
7625 </p>
7626 <p>
7627 </p>
7628 <blockquote class="text">
7629 <p>DESCRIPTION -
7630 </p>
7631 <blockquote class="text">
7632 <p>A brief description of the directory content.
7633 Note that the character string may contain
7634 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
7635 </p>
7636 </blockquote>
7637
7638
7639 <p>CREATED -
7640 </p>
7641 <blockquote class="text">
7642 <p>The creation date and time of the directory,
7643 represented in "YYYY-MM-DD HH:MM:SS" format
7644 </p>
7645 </blockquote>
7646
7647
7648 <p>MODIFIED -
7649 </p>
7650 <blockquote class="text">
7651 <p>The date and time of the last modification of the
7652 directory, represented in "YYYY-MM-DD HH:MM:SS" format
7653 </p>
7654 </blockquote>
7655
7656
7657 </blockquote>
7658
7659
7660 </blockquote><p>
7661
7662 </p>
7663 <p>The mentioned fields above don't have to be in particular order.
7664 </p>
7665 <p>Example:
7666 </p>
7667 <p>
7668 </p>
7669 <blockquote class="text">
7670 <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
7671 </p>
7672 <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
7673 </p>
7674 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
7675 </p>
7676 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
7677 </p>
7678 <p>&nbsp;&nbsp;&nbsp;"."
7679 </p>
7680 </blockquote><p>
7681
7682 </p>
7683 <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
7684 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7685 <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
7686 Renaming an instrument directory</h3>
7687
7688 <p>The front-end can alter the name of a specific
7689 instrument directory by sending the following command:
7690 </p>
7691 <p>
7692 </p>
7693 <blockquote class="text">
7694 <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
7695 </p>
7696 </blockquote><p>
7697
7698 </p>
7699 <p>Where &lt;dir&gt; is the absolute path name of the directory and
7700 &lt;name&gt; is the new name for that directory.
7701 </p>
7702 <p>Possible Answers:
7703 </p>
7704 <p>
7705 </p>
7706 <blockquote class="text">
7707 <p>"OK" -
7708 </p>
7709 <blockquote class="text">
7710 <p>on success
7711 </p>
7712 </blockquote>
7713
7714
7715 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7716 </p>
7717 <blockquote class="text">
7718 <p>in case the given directory does not exists,
7719 or if a directory with name equal to the new
7720 name already exists.
7721 </p>
7722 </blockquote>
7723
7724
7725 </blockquote><p>
7726
7727 </p>
7728 <p>Example:
7729 </p>
7730 <p>
7731 </p>
7732 <blockquote class="text">
7733 <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
7734 </p>
7735 <p>S: "OK"
7736 </p>
7737 </blockquote><p>
7738
7739 </p>
7740 <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7741 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7742 <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
7743 Moving an instrument directory</h3>
7744
7745 <p>The front-end can move a specific
7746 instrument directory by sending the following command:
7747 </p>
7748 <p>
7749 </p>
7750 <blockquote class="text">
7751 <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7752 </p>
7753 </blockquote><p>
7754
7755 </p>
7756 <p>Where &lt;dir&gt; is the absolute path name of the directory
7757 to move and &lt;dst&gt; is the location where the directory will
7758 be moved to.
7759 </p>
7760 <p>Possible Answers:
7761 </p>
7762 <p>
7763 </p>
7764 <blockquote class="text">
7765 <p>"OK" -
7766 </p>
7767 <blockquote class="text">
7768 <p>on success
7769 </p>
7770 </blockquote>
7771
7772
7773 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7774 </p>
7775 <blockquote class="text">
7776 <p>in case a given directory does not exists,
7777 or if a directory with name equal to the name
7778 of the specified directory already exists in
7779 the destination directory. Error is also thrown
7780 when trying to move a directory to a subdirectory
7781 of itself.
7782 </p>
7783 </blockquote>
7784
7785
7786 </blockquote><p>
7787
7788 </p>
7789 <p>Example:
7790 </p>
7791 <p>
7792 </p>
7793 <blockquote class="text">
7794 <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
7795 </p>
7796 <p>S: "OK"
7797 </p>
7798 </blockquote><p>
7799
7800 </p>
7801 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7802 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7803 <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
7804 Copying instrument directories</h3>
7805
7806 <p>The front-end can copy a specific
7807 instrument directory by sending the following command:
7808 </p>
7809 <p>
7810 </p>
7811 <blockquote class="text">
7812 <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7813 </p>
7814 </blockquote><p>
7815
7816 </p>
7817 <p>Where &lt;dir&gt; is the absolute path name of the directory
7818 to copy and &lt;dst&gt; is the location where the directory will
7819 be copied to.
7820 </p>
7821 <p>Possible Answers:
7822 </p>
7823 <p>
7824 </p>
7825 <blockquote class="text">
7826 <p>"OK" -
7827 </p>
7828 <blockquote class="text">
7829 <p>on success
7830 </p>
7831 </blockquote>
7832
7833
7834 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7835 </p>
7836 <blockquote class="text">
7837 <p>in case a given directory does not exists,
7838 or if a directory with name equal to the name
7839 of the specified directory already exists in
7840 the destination directory. Error is also thrown
7841 when trying to copy a directory to a subdirectory
7842 of itself.
7843 </p>
7844 </blockquote>
7845
7846
7847 </blockquote><p>
7848
7849 </p>
7850 <p>Example:
7851 </p>
7852 <p>
7853 </p>
7854 <blockquote class="text">
7855 <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
7856 </p>
7857 <p>S: "OK"
7858 </p>
7859 </blockquote><p>
7860
7861 </p>
7862 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
7863 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7864 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
7865 Changing the description of directory</h3>
7866
7867 <p>The front-end can alter the description of a specific
7868 instrument directory by sending the following command:
7869 </p>
7870 <p>
7871 </p>
7872 <blockquote class="text">
7873 <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
7874 </p>
7875 </blockquote><p>
7876
7877 </p>
7878 <p>Where &lt;dir&gt; is the absolute path name of the directory and
7879 &lt;desc&gt; is the new description for the directory
7880 (encapsulated into apostrophes, supporting escape sequences as described in chapter
7881 "<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>").
7882 </p>
7883 <p>Possible Answers:
7884 </p>
7885 <p>
7886 </p>
7887 <blockquote class="text">
7888 <p>"OK" -
7889 </p>
7890 <blockquote class="text">
7891 <p>on success
7892 </p>
7893 </blockquote>
7894
7895
7896 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7897 </p>
7898 <blockquote class="text">
7899 <p>in case the given directory does not exists.
7900 </p>
7901 </blockquote>
7902
7903
7904 </blockquote><p>
7905
7906 </p>
7907 <p>Example:
7908 </p>
7909 <p>
7910 </p>
7911 <blockquote class="text">
7912 <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
7913 </p>
7914 <p>S: "OK"
7915 </p>
7916 </blockquote><p>
7917
7918 </p>
7919 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7920 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7921 <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
7922 Finding directories</h3>
7923
7924 <p>The front-end can search for directories
7925 in specific directory by sending the following command:
7926 </p>
7927 <p>
7928 </p>
7929 <blockquote class="text">
7930 <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
7931 </p>
7932 </blockquote><p>
7933
7934 </p>
7935 <p>Where &lt;dir&gt; should be replaced by the absolute path
7936 name of the directory to search in. If NON_RECURSIVE is specified, the
7937 directories located in subdirectories of the specified directory will not
7938 be searched. &lt;criteria-list&gt; is a list of search criterias
7939 in form of "key1=val1 key2=val2 ...". The following criterias are
7940 allowed:
7941 </p>
7942 <p>
7943
7944 <p>NAME='&lt;search-string&gt;'
7945 </p>
7946 <blockquote class="text">
7947 <p>Restricts the search to directories, which names
7948 satisfy the supplied search string (encapsulated into apostrophes,
7949 supporting escape sequences as described in chapter
7950 "<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>").
7951 </p>
7952 </blockquote><p>
7953
7954 </p>
7955
7956
7957 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7958 </p>
7959 <blockquote class="text">
7960 <p>Restricts the search to directories, which creation
7961 date satisfies the specified period, where &lt;date-after&gt;
7962 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
7963 If &lt;date-after&gt; is omitted the search is restricted to
7964 directories created before &lt;date-before&gt;. If
7965 &lt;date-before&gt; is omitted, the search is restricted
7966 to directories created after &lt;date-after&gt;.
7967 </p>
7968 </blockquote><p>
7969
7970 </p>
7971
7972
7973 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7974 </p>
7975 <blockquote class="text">
7976 <p>Restricts the search to directories, which
7977 date of last modification satisfies the specified period, where
7978 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
7979 format. If &lt;date-after&gt; is omitted the search is restricted to
7980 directories, which are last modified before &lt;date-before&gt;. If
7981 &lt;date-before&gt; is omitted, the search is restricted to directories,
7982 which are last modified after &lt;date-after&gt;.
7983 </p>
7984 </blockquote><p>
7985
7986 </p>
7987
7988
7989 <p>DESCRIPTION='&lt;search-string&gt;'
7990 </p>
7991 <blockquote class="text">
7992 <p>Restricts the search to directories with description
7993 that satisfies the supplied search string
7994 (encapsulated into apostrophes, supporting escape
7995 sequences as described in chapter
7996 "<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>").
7997 </p>
7998 </blockquote><p>
7999
8000 </p>
8001
8002
8003 <p>Where &lt;search-string&gt; is either a regular expression, or a
8004 word list separated with spaces for OR search and with '+' for AND search.
8005 </p>
8006 <p>Possible Answers:
8007 </p>
8008 <p>
8009 </p>
8010 <blockquote class="text">
8011 <p>A comma separated list with the absolute path names (encapsulated into
8012 apostrophes) of all directories in the specified directory that satisfy
8013 the supplied search criterias.
8014 </p>
8015 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8016 </p>
8017 <blockquote class="text">
8018 <p>if the given directory does not exist.
8019 </p>
8020 </blockquote>
8021
8022
8023 </blockquote><p>
8024
8025 </p>
8026 <p>Example:
8027 </p>
8028 <p>
8029 </p>
8030 <blockquote class="text">
8031 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8032 </p>
8033 <p>S: "'/Piano Collection'"
8034 </p>
8035 </blockquote><p>
8036
8037 </p>
8038 <p>
8039 </p>
8040 <blockquote class="text">
8041 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8042 </p>
8043 <p>S: "'/Piano Collection','/Percussions'"
8044 </p>
8045 </blockquote><p>
8046
8047 </p>
8048 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8049 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8050 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8051 Adding instruments to the instruments database</h3>
8052
8053 <p>The front-end can add one or more instruments
8054 to the instruments database by sending the following command:
8055 </p>
8056 <p>
8057 </p>
8058 <blockquote class="text">
8059 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8060 </p>
8061 </blockquote><p>
8062
8063 </p>
8064 <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8065 (encapsulated into apostrophes) in the instruments database in which
8066 only the new instruments (that are not already in the database) will
8067 be added, &lt;file_path&gt; is the absolute path name of a file or
8068 directory in the file system (encapsulated into apostrophes). In case
8069 an instrument file is supplied, only the instruments in the specified
8070 file will be added to the instruments database. If the optional
8071 &lt;instr_index&gt; (the index of the instrument within the given file)
8072 is supplied too, then only the specified instrument will be added.
8073 In case a directory is supplied, the instruments in that directory
8074 will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8075 when a directory is provided as &lt;file_path&gt; and specifies how the
8076 scanning will be done and has exactly the following possibilities:
8077 </p>
8078 <p>
8079 </p>
8080 <blockquote class="text">
8081 <p>"RECURSIVE" -
8082 </p>
8083 <blockquote class="text">
8084 <p>All instruments will be processed, including those
8085 in the subdirectories, and the respective subdirectory
8086 tree structure will be recreated in the instruments
8087 database
8088 </p>
8089 </blockquote>
8090
8091
8092 <p>"NON_RECURSIVE" -
8093 </p>
8094 <blockquote class="text">
8095 <p>Only the instruments in the specified directory
8096 will be added, the instruments in the subdirectories
8097 will not be processed.
8098 </p>
8099 </blockquote>
8100
8101
8102 <p>"FLAT" -
8103 </p>
8104 <blockquote class="text">
8105 <p>All instruments will be processed, including those
8106 in the subdirectories, but the respective subdirectory
8107 structure will not be recreated in the instruments
8108 database. All instruments will be added directly in
8109 the specified database directory.
8110 </p>
8111 </blockquote>
8112
8113
8114 </blockquote><p>
8115
8116 </p>
8117 <p>The difference between regular and NON_MODAL versions of the command
8118 is that the regular command returns when the scanning is finished
8119 while NON_MODAL version returns immediately and a background process is launched.
8120 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>
8121 command can be used to monitor the scanning progress.
8122 </p>
8123 <p>Possible Answers:
8124 </p>
8125 <p>
8126 </p>
8127 <blockquote class="text">
8128 <p>"OK" -
8129 </p>
8130 <blockquote class="text">
8131 <p>on success when NON_MODAL is not supplied
8132 </p>
8133 </blockquote>
8134
8135
8136 <p>"OK[&lt;job-id&gt;]" -
8137 </p>
8138 <blockquote class="text">
8139 <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8140 is a numerical ID used to obtain status information about the job progress.
8141 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>
8142
8143 </p>
8144 </blockquote>
8145
8146
8147 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8148 </p>
8149 <blockquote class="text">
8150 <p>if an invalid path is specified.
8151 </p>
8152 </blockquote>
8153
8154
8155 </blockquote><p>
8156
8157 </p>
8158 <p>Examples:
8159 </p>
8160 <p>
8161 </p>
8162 <blockquote class="text">
8163 <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8164 </p>
8165 <p>S: "OK"
8166 </p>
8167 </blockquote><p>
8168
8169 </p>
8170 <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8171 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8172 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8173 Removing an instrument</h3>
8174
8175 <p>The front-end can remove a particular instrument
8176 from the instruments database by sending the following command:
8177 </p>
8178 <p>
8179 </p>
8180 <blockquote class="text">
8181 <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8182 </p>
8183 </blockquote><p>
8184
8185 </p>
8186 <p>Where &lt;instr_path&gt; is the absolute path name
8187 (in the instruments database) of the instrument to remove.
8188 </p>
8189 <p>Possible Answers:
8190 </p>
8191 <p>
8192 </p>
8193 <blockquote class="text">
8194 <p>"OK" -
8195 </p>
8196 <blockquote class="text">
8197 <p>if the instrument is removed successfully
8198 </p>
8199 </blockquote>
8200
8201
8202 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8203 </p>
8204 <blockquote class="text">
8205 <p>if the given path does not exist or
8206 is a directory.
8207 </p>
8208 </blockquote>
8209
8210
8211 </blockquote><p>
8212
8213 </p>
8214 <p>Examples:
8215 </p>
8216 <p>
8217 </p>
8218 <blockquote class="text">
8219 <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8220 </p>
8221 <p>S: "OK"
8222 </p>
8223 </blockquote><p>
8224
8225 </p>
8226 <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8227 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8228 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8229 Getting amount of instruments</h3>
8230
8231 <p>The front-end can retrieve the current amount of
8232 instruments in a specific directory by sending the following command:
8233 </p>
8234 <p>
8235 </p>
8236 <blockquote class="text">
8237 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8238 </p>
8239 </blockquote><p>
8240
8241 </p>
8242 <p>Where &lt;dir&gt; should be replaced by the absolute path name
8243 of the directory. If RECURSIVE is specified, the number of all
8244 instruments, including those located in subdirectories of the
8245 specified directory, will be returned.
8246 </p>
8247 <p>Possible Answers:
8248 </p>
8249 <p>
8250 </p>
8251 <blockquote class="text">
8252 <p>The current number of instruments
8253 in the specified directory.
8254 </p>
8255 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8256 </p>
8257 <blockquote class="text">
8258 <p>if the given directory does not exist.
8259 </p>
8260 </blockquote>
8261
8262
8263 </blockquote><p>
8264
8265 </p>
8266 <p>Example:
8267 </p>
8268 <p>
8269 </p>
8270 <blockquote class="text">
8271 <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8272 </p>
8273 <p>S: "2"
8274 </p>
8275 </blockquote><p>
8276
8277 </p>
8278 <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8279 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8280 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8281 Listing all instruments in specific directory</h3>
8282
8283 <p>The front-end can retrieve the current list of instruments
8284 in specific directory by sending the following command:
8285 </p>
8286 <p>
8287 </p>
8288 <blockquote class="text">
8289 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8290 </p>
8291 </blockquote><p>
8292
8293 </p>
8294 <p>Where &lt;dir&gt; should be replaced by the absolute path
8295 name of the directory. If RECURSIVE is specified, the absolute path
8296 names of all instruments, including those located in subdirectories
8297 of the specified directory, will be returned.
8298 </p>
8299 <p>Possible Answers:
8300 </p>
8301 <p>
8302 </p>
8303 <blockquote class="text">
8304 <p>A comma separated list of all instruments
8305 (encapsulated into apostrophes) in the specified directory.
8306 </p>
8307 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8308 </p>
8309 <blockquote class="text">
8310 <p>if the given directory does not exist.
8311 </p>
8312 </blockquote>
8313
8314
8315 </blockquote><p>
8316
8317 </p>
8318 <p>Example:
8319 </p>
8320 <p>
8321 </p>
8322 <blockquote class="text">
8323 <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8324 </p>
8325 <p>S: "'Bosendorfer 290','Steinway D'"
8326 </p>
8327 </blockquote><p>
8328
8329 </p>
8330 <p>
8331 </p>
8332 <blockquote class="text">
8333 <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8334 </p>
8335 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8336 </p>
8337 </blockquote><p>
8338
8339 </p>
8340 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8341 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8342 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8343 Getting instrument information</h3>
8344
8345 <p>The front-end can ask for the current settings of an
8346 instrument by sending the following command:
8347 </p>
8348 <p>
8349 </p>
8350 <blockquote class="text">
8351 <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8352 </p>
8353 </blockquote><p>
8354
8355 </p>
8356 <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8357 name of the instrument the front-end is interested in.
8358 </p>
8359 <p>Possible Answers:
8360 </p>
8361 <p>
8362 </p>
8363 <blockquote class="text">
8364 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8365 Each answer line begins with the settings category name
8366 followed by a colon and then a space character &lt;SP&gt; and finally
8367 the info character string to that setting category. At the
8368 moment the following categories are defined:
8369 </p>
8370 <p>
8371 </p>
8372 <blockquote class="text">
8373 <p>INSTRUMENT_FILE -
8374 </p>
8375 <blockquote class="text">
8376 <p>File name of the instrument.
8377 Note that the character string may contain
8378 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8379 </p>
8380 </blockquote>
8381
8382
8383 <p>INSTRUMENT_NR -
8384 </p>
8385 <blockquote class="text">
8386 <p>Index of the instrument within the file.
8387 </p>
8388 </blockquote>
8389
8390
8391 <p>FORMAT_FAMILY -
8392 </p>
8393 <blockquote class="text">
8394 <p>The format family of the instrument.
8395 </p>
8396 </blockquote>
8397
8398
8399 <p>FORMAT_VERSION -
8400 </p>
8401 <blockquote class="text">
8402 <p>The format version of the instrument.
8403 </p>
8404 </blockquote>
8405
8406
8407 <p>SIZE -
8408 </p>
8409 <blockquote class="text">
8410 <p>The size of the instrument in bytes.
8411 </p>
8412 </blockquote>
8413
8414
8415 <p>CREATED -
8416 </p>
8417 <blockquote class="text">
8418 <p>The date and time when the instrument is added
8419 in the instruments database, represented in
8420 "YYYY-MM-DD HH:MM:SS" format
8421 </p>
8422 </blockquote>
8423
8424
8425 <p>MODIFIED -
8426 </p>
8427 <blockquote class="text">
8428 <p>The date and time of the last modification of the
8429 instrument's database settings, represented in
8430 "YYYY-MM-DD HH:MM:SS" format
8431 </p>
8432 </blockquote>
8433
8434
8435 <p>DESCRIPTION -
8436 </p>
8437 <blockquote class="text">
8438 <p>A brief description of the instrument.
8439 Note that the character string may contain
8440 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8441 </p>
8442 </blockquote>
8443
8444
8445 <p>IS_DRUM -
8446 </p>
8447 <blockquote class="text">
8448 <p>either true or false, determines whether the
8449 instrument is a drumkit or a chromatic instrument
8450 </p>
8451 </blockquote>
8452
8453
8454 <p>PRODUCT -
8455 </p>
8456 <blockquote class="text">
8457 <p>The product title of the instrument.
8458 Note that the character string may contain
8459 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8460 </p>
8461 </blockquote>
8462
8463
8464 <p>ARTISTS -
8465 </p>
8466 <blockquote class="text">
8467 <p>Lists the artist names.
8468 Note that the character string may contain
8469 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8470 </p>
8471 </blockquote>
8472
8473
8474 <p>KEYWORDS -
8475 </p>
8476 <blockquote class="text">
8477 <p>Provides a list of keywords that refer to the instrument.
8478 Keywords are separated with semicolon and blank.
8479 Note that the character string may contain
8480 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8481 </p>
8482 </blockquote>
8483
8484
8485 </blockquote>
8486
8487
8488 </blockquote><p>
8489
8490 </p>
8491 <p>The mentioned fields above don't have to be in particular order.
8492 </p>
8493 <p>Example:
8494 </p>
8495 <p>
8496 </p>
8497 <blockquote class="text">
8498 <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
8499 </p>
8500 <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
8501 </p>
8502 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8503 </p>
8504 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
8505 </p>
8506 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
8507 </p>
8508 <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
8509 </p>
8510 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8511 </p>
8512 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8513 </p>
8514 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
8515 </p>
8516 <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
8517 </p>
8518 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
8519 </p>
8520 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
8521 </p>
8522 <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
8523 </p>
8524 <p>&nbsp;&nbsp;&nbsp;"."
8525 </p>
8526 </blockquote><p>
8527
8528 </p>
8529 <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
8530 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8531 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
8532 Renaming an instrument</h3>
8533
8534 <p>The front-end can alter the name of a specific
8535 instrument by sending the following command:
8536 </p>
8537 <p>
8538 </p>
8539 <blockquote class="text">
8540 <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
8541 </p>
8542 </blockquote><p>
8543
8544 </p>
8545 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8546 &lt;name&gt; is the new name for that instrument.
8547 </p>
8548 <p>Possible Answers:
8549 </p>
8550 <p>
8551 </p>
8552 <blockquote class="text">
8553 <p>"OK" -
8554 </p>
8555 <blockquote class="text">
8556 <p>on success
8557 </p>
8558 </blockquote>
8559
8560
8561 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8562 </p>
8563 <blockquote class="text">
8564 <p>in case the given instrument does not exists,
8565 or if an instrument with name equal to the new
8566 name already exists.
8567 </p>
8568 </blockquote>
8569
8570
8571 </blockquote><p>
8572
8573 </p>
8574 <p>Example:
8575 </p>
8576 <p>
8577 </p>
8578 <blockquote class="text">
8579 <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
8580 </p>
8581 <p>S: "OK"
8582 </p>
8583 </blockquote><p>
8584
8585 </p>
8586 <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
8587 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8588 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
8589 Moving an instrument</h3>
8590
8591 <p>The front-end can move a specific instrument to another directory by
8592 sending the following command:
8593 </p>
8594 <p>
8595 </p>
8596 <blockquote class="text">
8597 <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8598 </p>
8599 </blockquote><p>
8600
8601 </p>
8602 <p>Where &lt;instr&gt; is the absolute path name of the instrument
8603 to move and &lt;dst&gt; is the directory where the instrument will
8604 be moved to.
8605 </p>
8606 <p>Possible Answers:
8607 </p>
8608 <p>
8609 </p>
8610 <blockquote class="text">
8611 <p>"OK" -
8612 </p>
8613 <blockquote class="text">
8614 <p>on success
8615 </p>
8616 </blockquote>
8617
8618
8619 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8620 </p>
8621 <blockquote class="text">
8622 <p>in case the given instrument does not exists,
8623 or if an instrument with name equal to the name of the
8624 specified instrument already exists in the destination
8625 directory.
8626 </p>
8627 </blockquote>
8628
8629
8630 </blockquote><p>
8631
8632 </p>
8633 <p>Example:
8634 </p>
8635 <p>
8636 </p>
8637 <blockquote class="text">
8638 <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
8639 </p>
8640 <p>S: "OK"
8641 </p>
8642 </blockquote><p>
8643
8644 </p>
8645 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
8646 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8647 <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
8648 Copying instruments</h3>
8649
8650 <p>The front-end can copy a specific instrument to another directory by
8651 sending the following command:
8652 </p>
8653 <p>
8654 </p>
8655 <blockquote class="text">
8656 <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8657 </p>
8658 </blockquote><p>
8659
8660 </p>
8661 <p>Where &lt;instr&gt; is the absolute path name of the instrument
8662 to copy and &lt;dst&gt; is the directory where the instrument will
8663 be copied to.
8664 </p>
8665 <p>Possible Answers:
8666 </p>
8667 <p>
8668 </p>
8669 <blockquote class="text">
8670 <p>"OK" -
8671 </p>
8672 <blockquote class="text">
8673 <p>on success
8674 </p>
8675 </blockquote>
8676
8677
8678 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8679 </p>
8680 <blockquote class="text">
8681 <p>in case the given instrument does not exists,
8682 or if an instrument with name equal to the name of the
8683 specified instrument already exists in the destination
8684 directory.
8685 </p>
8686 </blockquote>
8687
8688
8689 </blockquote><p>
8690
8691 </p>
8692 <p>Example:
8693 </p>
8694 <p>
8695 </p>
8696 <blockquote class="text">
8697 <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
8698 </p>
8699 <p>S: "OK"
8700 </p>
8701 </blockquote><p>
8702
8703 </p>
8704 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
8705 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8706 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
8707 Changing the description of instrument</h3>
8708
8709 <p>The front-end can alter the description of a specific
8710 instrument by sending the following command:
8711 </p>
8712 <p>
8713 </p>
8714 <blockquote class="text">
8715 <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
8716 </p>
8717 </blockquote><p>
8718
8719 </p>
8720 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8721 &lt;desc&gt; is the new description for the instrument
8722 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8723 "<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>").
8724 </p>
8725 <p>Possible Answers:
8726 </p>
8727 <p>
8728 </p>
8729 <blockquote class="text">
8730 <p>"OK" -
8731 </p>
8732 <blockquote class="text">
8733 <p>on success
8734 </p>
8735 </blockquote>
8736
8737
8738 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8739 </p>
8740 <blockquote class="text">
8741 <p>in case the given instrument does not exists.
8742 </p>
8743 </blockquote>
8744
8745
8746 </blockquote><p>
8747
8748 </p>
8749 <p>Example:
8750 </p>
8751 <p>
8752 </p>
8753 <blockquote class="text">
8754 <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
8755 </p>
8756 <p>S: "OK"
8757 </p>
8758 </blockquote><p>
8759
8760 </p>
8761 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
8762 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8763 <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
8764 Finding instruments</h3>
8765
8766 <p>The front-end can search for instruments
8767 in specific directory by sending the following command:
8768 </p>
8769 <p>
8770 </p>
8771 <blockquote class="text">
8772 <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8773 </p>
8774 </blockquote><p>
8775
8776 </p>
8777 <p>Where &lt;dir&gt; should be replaced by the absolute path
8778 name of the directory to search in. If NON_RECURSIVE is specified, the
8779 directories located in subdirectories of the specified directory will not
8780 be searched. &lt;criteria-list&gt; is a list of search criterias
8781 in form of "key1=val1 key2=val2 ...". The following criterias are
8782 allowed:
8783 </p>
8784 <p>
8785
8786 <p>NAME='&lt;search-string&gt;'
8787 </p>
8788 <blockquote class="text">
8789 <p>Restricts the search to instruments, which names
8790 satisfy the supplied search string (encapsulated into apostrophes,
8791 supporting escape sequences as described in chapter
8792 "<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>").
8793 </p>
8794 </blockquote><p>
8795
8796 </p>
8797
8798
8799 <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
8800 </p>
8801 <blockquote class="text">
8802 <p>Restricts the search to instruments, which
8803 size is in the specified range. If &lt;min&gt; is omitted,
8804 the search results are restricted to instruments with size less then
8805 or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
8806 search is restricted to instruments with size greater then
8807 or equal to &lt;min&gt;.
8808 </p>
8809 </blockquote><p>
8810
8811 </p>
8812
8813
8814 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8815 </p>
8816 <blockquote class="text">
8817 <p>Restricts the search to instruments, which creation
8818 date satisfies the specified period, where &lt;date-after&gt;
8819 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8820 If &lt;date-after&gt; is omitted the search is restricted to
8821 instruments created before &lt;date-before&gt;. If
8822 &lt;date-before&gt; is omitted, the search is restricted
8823 to instruments created after &lt;date-after&gt;.
8824 </p>
8825 </blockquote><p>
8826
8827 </p>
8828
8829
8830 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8831 </p>
8832 <blockquote class="text">
8833 <p>Restricts the search to instruments, which
8834 date of last modification satisfies the specified period, where
8835 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8836 format. If &lt;date-after&gt; is omitted the search is restricted to
8837 instruments, which are last modified before &lt;date-before&gt;. If
8838 &lt;date-before&gt; is omitted, the search is restricted to instruments,
8839 which are last modified after &lt;date-after&gt;.
8840 </p>
8841 </blockquote><p>
8842
8843 </p>
8844
8845
8846 <p>DESCRIPTION='&lt;search-string&gt;'
8847 </p>
8848 <blockquote class="text">
8849 <p>Restricts the search to instruments with description
8850 that satisfies the supplied search string (encapsulated into apostrophes,
8851 supporting escape sequences as described in chapter
8852 "<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>").
8853 </p>
8854 </blockquote><p>
8855
8856 </p>
8857
8858
8859 <p>PRODUCT='&lt;search-string&gt;'
8860 </p>
8861 <blockquote class="text">
8862 <p>Restricts the search to instruments with product info
8863 that satisfies the supplied search string (encapsulated into apostrophes,
8864 supporting escape sequences as described in chapter
8865 "<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>").
8866 </p>
8867 </blockquote><p>
8868
8869 </p>
8870
8871
8872 <p>ARTISTS='&lt;search-string&gt;'
8873 </p>
8874 <blockquote class="text">
8875 <p>Restricts the search to instruments with artists info
8876 that satisfies the supplied search string (encapsulated into apostrophes,
8877 supporting escape sequences as described in chapter
8878 "<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>").
8879 </p>
8880 </blockquote><p>
8881
8882 </p>
8883
8884
8885 <p>KEYWORDS='&lt;search-string&gt;'
8886 </p>
8887 <blockquote class="text">
8888 <p>Restricts the search to instruments with keyword list
8889 that satisfies the supplied search string (encapsulated into apostrophes,
8890 supporting escape sequences as described in chapter
8891 "<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>").
8892 </p>
8893 </blockquote><p>
8894
8895 </p>
8896
8897
8898 <p>IS_DRUM=true | false
8899 </p>
8900 <blockquote class="text">
8901 <p>Either true or false. Restricts the search to
8902 drum kits or chromatic instruments.
8903 </p>
8904 </blockquote><p>
8905
8906 </p>
8907
8908
8909 <p>FORMAT_FAMILIES='&lt;format-list&gt;'
8910 </p>
8911 <blockquote class="text">
8912 <p>Restricts the search to instruments of the supplied format families,
8913 where &lt;format-list&gt; is a comma separated list of format families.
8914 </p>
8915 </blockquote><p>
8916
8917 </p>
8918
8919
8920 <p>Where &lt;search-string&gt; is either a regular expression, or a
8921 word list separated with spaces for OR search and with '+' for AND search.
8922 </p>
8923 <p>Possible Answers:
8924 </p>
8925 <p>
8926 </p>
8927 <blockquote class="text">
8928 <p>A comma separated list with the absolute path names (encapsulated into
8929 apostrophes) of all instruments in the specified directory that satisfy
8930 the supplied search criterias.
8931 </p>
8932 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8933 </p>
8934 <blockquote class="text">
8935 <p>if the given directory does not exist.
8936 </p>
8937 </blockquote>
8938
8939
8940 </blockquote><p>
8941
8942 </p>
8943 <p>Example:
8944 </p>
8945 <p>
8946 </p>
8947 <blockquote class="text">
8948 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
8949 </p>
8950 <p>S: "'/Piano Collection/Bosendorfer 290'"
8951 </p>
8952 </blockquote><p>
8953
8954 </p>
8955 <p>
8956 </p>
8957 <blockquote class="text">
8958 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
8959 </p>
8960 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
8961 </p>
8962 </blockquote><p>
8963
8964 </p>
8965 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
8966 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8967 <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
8968 Getting job status information</h3>
8969
8970 <p>The front-end can ask for the current status of a
8971 particular database instruments job by sending the following command:
8972 </p>
8973 <p>
8974 </p>
8975 <blockquote class="text">
8976 <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
8977 </p>
8978 </blockquote><p>
8979
8980 </p>
8981 <p>Where &lt;job-id&gt; should be replaced by the numerical ID
8982 of the job the front-end is interested in.
8983 </p>
8984 <p>Possible Answers:
8985 </p>
8986 <p>
8987 </p>
8988 <blockquote class="text">
8989 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8990 Each answer line begins with the settings category name
8991 followed by a colon and then a space character &lt;SP&gt; and finally
8992 the info character string to that setting category. At the
8993 moment the following categories are defined:
8994 </p>
8995 <p>
8996 </p>
8997 <blockquote class="text">
8998 <p>FILES_TOTAL -
8999 </p>
9000 <blockquote class="text">
9001 <p>The total number of files scheduled for scanning
9002 </p>
9003 </blockquote>
9004
9005
9006 <p>FILES_SCANNED -
9007 </p>
9008 <blockquote class="text">
9009 <p>The current number of scanned files
9010 </p>
9011 </blockquote>
9012
9013
9014 <p>SCANNING -
9015 </p>
9016 <blockquote class="text">
9017 <p>The absolute path name of the file which is currently
9018 being scanned
9019 </p>
9020 </blockquote>
9021
9022
9023 <p>STATUS -
9024 </p>
9025 <blockquote class="text">
9026 <p>An integer value between 0 and 100 indicating the
9027 scanning progress percentage of the file which is
9028 currently being scanned
9029 </p>
9030 </blockquote>
9031
9032
9033 </blockquote>
9034
9035
9036 </blockquote><p>
9037
9038 </p>
9039 <p>The mentioned fields above don't have to be in particular order.
9040 </p>
9041 <p>Example:
9042 </p>
9043 <p>
9044 </p>
9045 <blockquote class="text">
9046 <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9047 </p>
9048 <p>S: "FILES_TOTAL: 12"
9049 </p>
9050 <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9051 </p>
9052 <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9053 </p>
9054 <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9055 </p>
9056 <p>&nbsp;&nbsp;&nbsp;"."
9057 </p>
9058 </blockquote><p>
9059
9060 </p>
9061 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9062 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9063 <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9064 Formatting the instruments database</h3>
9065
9066 <p>The front-end can remove all instruments and directories and re-create
9067 the instruments database structure (e.g., in case of a database corruption)
9068 by sending the following command:
9069 </p>
9070 <p>
9071 </p>
9072 <blockquote class="text">
9073 <p>FORMAT INSTRUMENTS_DB
9074 </p>
9075 </blockquote><p>
9076
9077 </p>
9078 <p>Possible Answers:
9079 </p>
9080 <p>
9081 </p>
9082 <blockquote class="text">
9083 <p>"OK" -
9084 </p>
9085 <blockquote class="text">
9086 <p>on success
9087 </p>
9088 </blockquote>
9089
9090
9091 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9092 </p>
9093 <blockquote class="text">
9094 <p>If the formatting of the instruments database
9095 failed.
9096 </p>
9097 </blockquote>
9098
9099
9100 </blockquote><p>
9101
9102 </p>
9103 <a name="editing_instruments"></a><br /><hr />
9104 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9105 <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9106 Editing Instruments</h3>
9107
9108 <p>The sampler allows to edit instruments while playing with the
9109 sampler by spawning an external (3rd party) instrument editor
9110 application for a given instrument. The 3rd party instrument
9111 editor applications have to place a respective plugin DLL file
9112 into the sampler's plugins directory. The sampler will
9113 automatically try to load all plugin DLLs in that directory on
9114 startup and only on startup!
9115 </p>
9116 <p>At the moment there is only one command for this feature set,
9117 but this will most probably change in future.
9118 </p>
9119 <a name="EDIT INSTRUMENT"></a><br /><hr />
9120 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9121 <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9122 Opening an appropriate instrument editor application</h3>
9123
9124 <p>The front-end can request to open an appropriate instrument
9125 editor application by sending the following command:
9126 </p>
9127 <p>
9128 </p>
9129 <blockquote class="text">
9130 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9131 </p>
9132 </blockquote><p>
9133
9134 </p>
9135 <p>Where &lt;sampler-channel&gt; should be replaced by the
9136 number of the sampler channel as given by the
9137 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9138 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9139 command.
9140 </p>
9141 <p>The sampler will try to ask all registered instrument
9142 editors (or to be more specific: their sampler plugins)
9143 whether they are capable to handle the instrument on the
9144 given sampler channel. The sampler will simply use the first
9145 instrument editor application which replied with a positive
9146 answer and spawn that instrument editor application within
9147 the sampler's process and provide that application access
9148 to the instrument's data structures, so both applications
9149 can share and access the same instruments data at the same
9150 time, thus allowing to immediately hear changes with the
9151 sampler made by the instrument editor.
9152 </p>
9153 <p>Note: consequently instrument editors are always spawned
9154 locally on the same machine where the sampler is running
9155 on!
9156 </p>
9157 <p>Possible Answers:
9158 </p>
9159 <p>
9160 </p>
9161 <blockquote class="text">
9162 <p>"OK" -
9163 </p>
9164 <blockquote class="text">
9165 <p>when an appropriate instrument editor was
9166 launched
9167 </p>
9168 </blockquote>
9169
9170
9171 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9172 </p>
9173 <blockquote class="text">
9174 <p>when an appropriate instrument editor was
9175 launched, but there are noteworthy issues
9176 </p>
9177 </blockquote>
9178
9179
9180 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9181 </p>
9182 <blockquote class="text">
9183 <p>when an appropriate instrument editor
9184 could not be launched
9185 </p>
9186 </blockquote>
9187
9188
9189 </blockquote><p>
9190
9191 </p>
9192 <p>Examples:
9193 </p>
9194 <p>
9195 </p>
9196 <blockquote class="text">
9197 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9198 </p>
9199 <p>S: "OK"
9200 </p>
9201 </blockquote><p>
9202
9203 </p>
9204 <a name="file_management"></a><br /><hr />
9205 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9206 <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9207 Managing Files</h3>
9208
9209 <p>You can query detailed informations about files located
9210 at the same system where the sampler instance is running on.
9211 Using this command set allows to retrieve file informations
9212 even remotely from another machine.
9213 </p>
9214 <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9215 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9216 <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9217 Retrieving amount of instruments of a file</h3>
9218
9219 <p>The front-end can retrieve the amount of instruments
9220 within a given instrument file by sending the
9221 following command:
9222 </p>
9223 <p>
9224 </p>
9225 <blockquote class="text">
9226 <p>GET FILE INSTRUMENTS &lt;filename&gt;
9227 </p>
9228 </blockquote><p>
9229
9230 </p>
9231 <p>Where &lt;filename&gt; is the name of the instrument
9232 file (encapsulated into apostrophes, supporting escape
9233 sequences as described in chapter
9234 "<a class='info' href='#character_set'>Character Set and Escape
9235 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9236 </p>
9237 <p>The sampler will try to ask all sampler engines,
9238 whether they support the given file and ask the first
9239 engine with a positive answer for the amount of
9240 instruments.
9241 </p>
9242 <p>Possible Answers:
9243 </p>
9244 <p>
9245 </p>
9246 <blockquote class="text">
9247 <p>On success, the sampler will answer by
9248 returning the amount of instruments.
9249
9250 </p>
9251 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9252 </p>
9253 <blockquote class="text">
9254 <p>if the file could not be handled
9255 </p>
9256 </blockquote>
9257
9258
9259 </blockquote><p>
9260
9261 </p>
9262 <p>Examples:
9263 </p>
9264 <p>
9265 </p>
9266 <blockquote class="text">
9267 <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9268 </p>
9269 <p>S: "10"
9270 </p>
9271 </blockquote><p>
9272
9273 </p>
9274 <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9275 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9276 <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9277 Retrieving all instruments of a file</h3>
9278
9279 <p>The front-end can retrieve a list of all instruments
9280 within a given instrument file by sending the
9281 following command:
9282 </p>
9283 <p>
9284 </p>
9285 <blockquote class="text">
9286 <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9287 </p>
9288 </blockquote><p>
9289
9290 </p>
9291 <p>Where &lt;filename&gt; is the name of the instrument
9292 file (encapsulated into apostrophes, supporting escape
9293 sequences as described in chapter
9294 "<a class='info' href='#character_set'>Character Set and Escape
9295 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9296 </p>
9297 <p>The sampler will try to ask all sampler engines,
9298 whether they support the given file and ask the first
9299 engine with a positive answer for a list of IDs for the
9300 instruments in the given file.
9301 </p>
9302 <p>Possible Answers:
9303 </p>
9304 <p>
9305 </p>
9306 <blockquote class="text">
9307 <p>On success, the sampler will answer by
9308 returning a comma separated list of
9309 instrument IDs.
9310
9311 </p>
9312 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9313 </p>
9314 <blockquote class="text">
9315 <p>if the file could not be handled
9316 </p>
9317 </blockquote>
9318
9319
9320 </blockquote><p>
9321
9322 </p>
9323 <p>Examples:
9324 </p>
9325 <p>
9326 </p>
9327 <blockquote class="text">
9328 <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9329 </p>
9330 <p>S: "0,1,2,3,4,5,6,7,8,9"
9331 </p>
9332 </blockquote><p>
9333
9334 </p>
9335 <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9336 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9337 <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9338 Retrieving informations about one instrument in a file</h3>
9339
9340 <p>The front-end can retrieve detailed informations
9341 about a specific instrument within a given instrument
9342 file by sending the following command:
9343 </p>
9344 <p>
9345 </p>
9346 <blockquote class="text">
9347 <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9348 &lt;instr-id&gt;
9349 </p>
9350 </blockquote><p>
9351
9352 </p>
9353 <p>Where &lt;filename&gt; is the name of the instrument
9354 file (encapsulated into apostrophes, supporting escape
9355 sequences as described in chapter
9356 "<a class='info' href='#character_set'>Character Set and Escape
9357 Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
9358 instrument ID as returned by the
9359 <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.
9360 </p>
9361 <p>The sampler will try to ask all sampler engines,
9362 whether they support the given file and ask the first
9363 engine with a positive answer for informations about the
9364 specific instrument in the given file.
9365 </p>
9366 <p>Possible Answers:
9367 </p>
9368 <p>
9369 </p>
9370 <blockquote class="text">
9371 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9372 Each answer line begins with the settings category name
9373 followed by a colon and then a space character &lt;SP&gt; and finally
9374 the info character string to that setting category. At the
9375 moment the following categories are defined:
9376 </p>
9377 <p>
9378 </p>
9379 <blockquote class="text">
9380 <p>NAME -
9381 </p>
9382 <blockquote class="text">
9383 <p>name of the instrument as
9384 stored in the instrument file
9385 </p>
9386 </blockquote>
9387
9388
9389 <p>FORMAT_FAMILY -
9390 </p>
9391 <blockquote class="text">
9392 <p>name of the sampler format
9393 of the given instrument
9394 </p>
9395 </blockquote>
9396
9397
9398 <p>FORMAT_VERSION -
9399 </p>
9400 <blockquote class="text">
9401 <p>version of the sampler format
9402 the instrumen is stored as
9403 </p>
9404 </blockquote>
9405
9406
9407 <p>PRODUCT -
9408 </p>
9409 <blockquote class="text">
9410 <p>official product name of the
9411 instrument as stored in the file
9412
9413 </p>
9414 </blockquote>
9415
9416
9417 <p>ARTISTS -
9418 </p>
9419 <blockquote class="text">
9420 <p>artists / sample library
9421 vendor of the instrument
9422 </p>
9423 </blockquote>
9424
9425
9426 </blockquote>
9427
9428
9429 </blockquote><p>
9430
9431 </p>
9432 <p>The mentioned fields above don't have to be in particular order.
9433 </p>
9434 <p>Example:
9435 </p>
9436 <p>
9437 </p>
9438 <blockquote class="text">
9439 <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
9440 </p>
9441 <p>S: "NAME: Lunatic Loops"
9442 </p>
9443 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9444 </p>
9445 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
9446 </p>
9447 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
9448 </p>
9449 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
9450 </p>
9451 <p>&nbsp;&nbsp;&nbsp;"."
9452 </p>
9453 </blockquote><p>
9454
9455 </p>
9456 <a name="command_syntax"></a><br /><hr />
9457 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9458 <a name="rfc.section.7"></a><h3>7.&nbsp;
9459 Command Syntax</h3>
9460
9461 <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>
9462 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>)
9463 where applicable.
9464
9465 </p>
9466 <p>input =
9467 </p>
9468 <blockquote class="text">
9469 <p>line LF
9470
9471 </p>
9472 <p>/ line CR LF
9473
9474 </p>
9475 </blockquote><p>
9476
9477 </p>
9478 <p>line =
9479 </p>
9480 <blockquote class="text">
9481 <p>/* epsilon (empty line ignored) */
9482
9483 </p>
9484 <p>/ comment
9485
9486 </p>
9487 <p>/ command
9488
9489 </p>
9490 <p>/ error
9491
9492 </p>
9493 </blockquote><p>
9494
9495 </p>
9496 <p>comment =
9497 </p>
9498 <blockquote class="text">
9499 <p>'#'
9500
9501 </p>
9502 <p>/ comment '#'
9503
9504 </p>
9505 <p>/ comment SP
9506
9507 </p>
9508 <p>/ comment number
9509
9510 </p>
9511 <p>/ comment string
9512
9513 </p>
9514 </blockquote><p>
9515
9516 </p>
9517 <p>command =
9518 </p>
9519 <blockquote class="text">
9520 <p>ADD SP add_instruction
9521
9522 </p>
9523 <p>/ MAP SP map_instruction
9524
9525 </p>
9526 <p>/ UNMAP SP unmap_instruction
9527
9528 </p>
9529 <p>/ GET SP get_instruction
9530
9531 </p>
9532 <p>/ CREATE SP create_instruction
9533
9534 </p>
9535 <p>/ DESTROY SP destroy_instruction
9536
9537 </p>
9538 <p>/ LIST SP list_instruction
9539
9540 </p>
9541 <p>/ LOAD SP load_instruction
9542
9543 </p>
9544 <p>/ REMOVE SP remove_instruction
9545
9546 </p>
9547 <p>/ SET SP set_instruction
9548
9549 </p>
9550 <p>/ SUBSCRIBE SP subscribe_event
9551
9552 </p>
9553 <p>/ UNSUBSCRIBE SP unsubscribe_event
9554
9555 </p>
9556 <p>/ RESET SP reset_instruction
9557
9558 </p>
9559 <p>/ CLEAR SP clear_instruction
9560
9561 </p>
9562 <p>/ FIND SP find_instruction
9563
9564 </p>
9565 <p>/ MOVE SP move_instruction
9566
9567 </p>
9568 <p>/ COPY SP copy_instruction
9569
9570 </p>
9571 <p>/ EDIT SP edit_instruction
9572
9573 </p>
9574 <p>/ FORMAT SP format_instruction
9575
9576 </p>
9577 <p>/ RESET
9578
9579 </p>
9580 <p>/ QUIT
9581
9582 </p>
9583 </blockquote><p>
9584
9585 </p>
9586 <p>add_instruction =
9587 </p>
9588 <blockquote class="text">
9589 <p>CHANNEL
9590
9591 </p>
9592 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9593
9594 </p>
9595 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
9596
9597 </p>
9598 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
9599
9600 </p>
9601 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
9602
9603 </p>
9604 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
9605
9606 </p>
9607 <p>/ DB_INSTRUMENTS SP db_path SP filename
9608
9609 </p>
9610 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
9611
9612 </p>
9613 <p>/ MIDI_INSTRUMENT_MAP
9614
9615 </p>
9616 <p>/ MIDI_INSTRUMENT_MAP SP map_name
9617
9618 </p>
9619 </blockquote><p>
9620
9621 </p>
9622 <p>subscribe_event =
9623 </p>
9624 <blockquote class="text">
9625 <p>AUDIO_OUTPUT_DEVICE_COUNT
9626
9627 </p>
9628 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9629
9630 </p>
9631 <p>/ MIDI_INPUT_DEVICE_COUNT
9632
9633 </p>
9634 <p>/ MIDI_INPUT_DEVICE_INFO
9635
9636 </p>
9637 <p>/ CHANNEL_COUNT
9638
9639 </p>
9640 <p>/ VOICE_COUNT
9641
9642 </p>
9643 <p>/ STREAM_COUNT
9644
9645 </p>
9646 <p>/ BUFFER_FILL
9647
9648 </p>
9649 <p>/ CHANNEL_INFO
9650
9651 </p>
9652 <p>/ FX_SEND_COUNT
9653
9654 </p>
9655 <p>/ FX_SEND_INFO
9656
9657 </p>
9658 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9659
9660 </p>
9661 <p>/ MIDI_INSTRUMENT_MAP_INFO
9662
9663 </p>
9664 <p>/ MIDI_INSTRUMENT_COUNT
9665
9666 </p>
9667 <p>/ MIDI_INSTRUMENT_INFO
9668
9669 </p>
9670 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9671
9672 </p>
9673 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9674
9675 </p>
9676 <p>/ DB_INSTRUMENT_COUNT
9677
9678 </p>
9679 <p>/ DB_INSTRUMENT_INFO
9680
9681 </p>
9682 <p>/ DB_INSTRUMENTS_JOB_INFO
9683
9684 </p>
9685 <p>/ MISCELLANEOUS
9686
9687 </p>
9688 <p>/ TOTAL_STREAM_COUNT
9689
9690 </p>
9691 <p>/ TOTAL_VOICE_COUNT
9692
9693 </p>
9694 <p>/ GLOBAL_INFO
9695
9696 </p>
9697 </blockquote><p>
9698
9699 </p>
9700 <p>unsubscribe_event =
9701 </p>
9702 <blockquote class="text">
9703 <p>AUDIO_OUTPUT_DEVICE_COUNT
9704
9705 </p>
9706 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9707
9708 </p>
9709 <p>/ MIDI_INPUT_DEVICE_COUNT
9710
9711 </p>
9712 <p>/ MIDI_INPUT_DEVICE_INFO
9713
9714 </p>
9715 <p>/ CHANNEL_COUNT
9716
9717 </p>
9718 <p>/ VOICE_COUNT
9719
9720 </p>
9721 <p>/ STREAM_COUNT
9722
9723 </p>
9724 <p>/ BUFFER_FILL
9725
9726 </p>
9727 <p>/ CHANNEL_INFO
9728
9729 </p>
9730 <p>/ FX_SEND_COUNT
9731
9732 </p>
9733 <p>/ FX_SEND_INFO
9734
9735 </p>
9736 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9737
9738 </p>
9739 <p>/ MIDI_INSTRUMENT_MAP_INFO
9740
9741 </p>
9742 <p>/ MIDI_INSTRUMENT_COUNT
9743
9744 </p>
9745 <p>/ MIDI_INSTRUMENT_INFO
9746
9747 </p>
9748 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9749
9750 </p>
9751 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9752
9753 </p>
9754 <p>/ DB_INSTRUMENT_COUNT
9755
9756 </p>
9757 <p>/ DB_INSTRUMENT_INFO
9758
9759 </p>
9760 <p>/ DB_INSTRUMENTS_JOB_INFO
9761
9762 </p>
9763 <p>/ MISCELLANEOUS
9764
9765 </p>
9766 <p>/ TOTAL_STREAM_COUNT
9767
9768 </p>
9769 <p>/ TOTAL_VOICE_COUNT
9770
9771 </p>
9772 <p>/ GLOBAL_INFO
9773
9774 </p>
9775 </blockquote><p>
9776
9777 </p>
9778 <p>map_instruction =
9779 </p>
9780 <blockquote class="text">
9781 <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
9782
9783 </p>
9784 <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
9785
9786 </p>
9787 <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
9788
9789 </p>
9790 <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
9791
9792 </p>
9793 </blockquote><p>
9794
9795 </p>
9796 <p>unmap_instruction =
9797 </p>
9798 <blockquote class="text">
9799 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
9800
9801 </p>
9802 </blockquote><p>
9803
9804 </p>
9805 <p>remove_instruction =
9806 </p>
9807 <blockquote class="text">
9808 <p>CHANNEL SP sampler_channel
9809
9810 </p>
9811 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
9812
9813 </p>
9814 <p>/ MIDI_INSTRUMENT_MAP SP ALL
9815
9816 </p>
9817 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
9818
9819 </p>
9820 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9821
9822 </p>
9823 <p>/ DB_INSTRUMENT SP db_path
9824
9825 </p>
9826 </blockquote><p>
9827
9828 </p>
9829 <p>get_instruction =
9830 </p>
9831 <blockquote class="text">
9832 <p>AVAILABLE_ENGINES
9833
9834 </p>
9835 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
9836
9837 </p>
9838 <p>/ MIDI_INPUT_DRIVER SP INFO SP string
9839
9840 </p>
9841 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
9842
9843 </p>
9844 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9845
9846 </p>
9847 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
9848
9849 </p>
9850 <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
9851
9852 </p>
9853 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
9854
9855 </p>
9856 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9857
9858 </p>
9859 <p>/ AUDIO_OUTPUT_DEVICES
9860
9861 </p>
9862 <p>/ MIDI_INPUT_DEVICES
9863
9864 </p>
9865 <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
9866
9867 </p>
9868 <p>/ MIDI_INPUT_DEVICE SP INFO SP number
9869
9870 </p>
9871 <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
9872
9873 </p>
9874 <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
9875
9876 </p>
9877 <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
9878
9879 </p>
9880 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
9881
9882 </p>
9883 <p>/ CHANNELS
9884
9885 </p>
9886 <p>/ CHANNEL SP INFO SP sampler_channel
9887
9888 </p>
9889 <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
9890
9891 </p>
9892 <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
9893
9894 </p>
9895 <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
9896
9897 </p>
9898 <p>/ ENGINE SP INFO SP engine_name
9899
9900 </p>
9901 <p>/ SERVER SP INFO
9902
9903 </p>
9904 <p>/ TOTAL_STREAM_COUNT
9905
9906 </p>
9907 <p>/ TOTAL_VOICE_COUNT
9908
9909 </p>
9910 <p>/ TOTAL_VOICE_COUNT_MAX
9911
9912 </p>
9913 <p>/ MIDI_INSTRUMENTS SP midi_map
9914
9915 </p>
9916 <p>/ MIDI_INSTRUMENTS SP ALL
9917
9918 </p>
9919 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
9920
9921 </p>
9922 <p>/ MIDI_INSTRUMENT_MAPS
9923
9924 </p>
9925 <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
9926
9927 </p>
9928 <p>/ FX_SENDS SP sampler_channel
9929
9930 </p>
9931 <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
9932
9933 </p>
9934 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
9935
9936 </p>
9937 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
9938
9939 </p>
9940 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
9941
9942 </p>
9943 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
9944
9945 </p>
9946 <p>/ DB_INSTRUMENTS SP db_path
9947
9948 </p>
9949 <p>/ DB_INSTRUMENT SP INFO SP db_path
9950
9951 </p>
9952 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
9953
9954 </p>
9955 <p>/ VOLUME
9956
9957 </p>
9958 <p>/ FILE SP INSTRUMENTS SP filename
9959
9960 </p>
9961 <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
9962
9963 </p>
9964 </blockquote><p>
9965
9966 </p>
9967 <p>set_instruction =
9968 </p>
9969 <blockquote class="text">
9970 <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9971
9972 </p>
9973 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
9974
9975 </p>
9976 <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9977
9978 </p>
9979 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
9980
9981 </p>
9982 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
9983
9984 </p>
9985 <p>/ CHANNEL SP set_chan_instruction
9986
9987 </p>
9988 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
9989
9990 </p>
9991 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
9992
9993 </p>
9994 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
9995
9996 </p>
9997 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
9998
9999 </p>
10000 <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
10001
10002 </p>
10003 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
10004
10005 </p>
10006 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
10007
10008 </p>
10009 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
10010
10011 </p>
10012 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
10013
10014 </p>
10015 <p>/ ECHO SP boolean
10016
10017 </p>
10018 <p>/ VOLUME SP volume_value
10019
10020 </p>
10021 </blockquote><p>
10022
10023 </p>
10024 <p>create_instruction =
10025 </p>
10026 <blockquote class="text">
10027 <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
10028
10029 </p>
10030 <p>/ AUDIO_OUTPUT_DEVICE SP string
10031
10032 </p>
10033 <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
10034
10035 </p>
10036 <p>/ MIDI_INPUT_DEVICE SP string
10037
10038 </p>
10039 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
10040
10041 </p>
10042 <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
10043
10044 </p>
10045 </blockquote><p>
10046
10047 </p>
10048 <p>reset_instruction =
10049 </p>
10050 <blockquote class="text">
10051 <p>CHANNEL SP sampler_channel
10052
10053 </p>
10054 </blockquote><p>
10055
10056 </p>
10057 <p>clear_instruction =
10058 </p>
10059 <blockquote class="text">
10060 <p>MIDI_INSTRUMENTS SP midi_map
10061
10062 </p>
10063 <p>/ MIDI_INSTRUMENTS SP ALL
10064
10065 </p>
10066 </blockquote><p>
10067
10068 </p>
10069 <p>find_instruction =
10070 </p>
10071 <blockquote class="text">
10072 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
10073
10074 </p>
10075 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
10076
10077 </p>
10078 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
10079
10080 </p>
10081 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
10082
10083 </p>
10084 </blockquote><p>
10085
10086 </p>
10087 <p>move_instruction =
10088 </p>
10089 <blockquote class="text">
10090 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10091
10092 </p>
10093 <p>/ DB_INSTRUMENT SP db_path SP db_path
10094
10095 </p>
10096 </blockquote><p>
10097
10098 </p>
10099 <p>copy_instruction =
10100 </p>
10101 <blockquote class="text">
10102 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10103
10104 </p>
10105 <p>/ DB_INSTRUMENT SP db_path SP db_path
10106
10107 </p>
10108 </blockquote><p>
10109
10110 </p>
10111 <p>destroy_instruction =
10112 </p>
10113 <blockquote class="text">
10114 <p>AUDIO_OUTPUT_DEVICE SP number
10115
10116 </p>
10117 <p>/ MIDI_INPUT_DEVICE SP number
10118
10119 </p>
10120 <p>/ FX_SEND SP sampler_channel SP fx_send_id
10121
10122 </p>
10123 </blockquote><p>
10124
10125 </p>
10126 <p>load_instruction =
10127 </p>
10128 <blockquote class="text">
10129 <p>INSTRUMENT SP load_instr_args
10130
10131 </p>
10132 <p>/ ENGINE SP load_engine_args
10133
10134 </p>
10135 </blockquote><p>
10136
10137 </p>
10138 <p>set_chan_instruction =
10139 </p>
10140 <blockquote class="text">
10141 <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
10142
10143 </p>
10144 <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
10145
10146 </p>
10147 <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
10148
10149 </p>
10150 <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
10151
10152 </p>
10153 <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
10154
10155 </p>
10156 <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
10157
10158 </p>
10159 <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
10160
10161 </p>
10162 <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
10163
10164 </p>
10165 <p>/ VOLUME SP sampler_channel SP volume_value
10166
10167 </p>
10168 <p>/ MUTE SP sampler_channel SP boolean
10169
10170 </p>
10171 <p>/ SOLO SP sampler_channel SP boolean
10172
10173 </p>
10174 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
10175
10176 </p>
10177 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
10178
10179 </p>
10180 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
10181
10182 </p>
10183 </blockquote><p>
10184
10185 </p>
10186 <p>edit_instruction =
10187 </p>
10188 <blockquote class="text">
10189 <p>CHANNEL SP INSTRUMENT SP sampler_channel
10190
10191 </p>
10192 </blockquote><p>
10193
10194 </p>
10195 <p>format_instruction =
10196 </p>
10197 <blockquote class="text">
10198 <p>INSTRUMENTS_DB
10199
10200 </p>
10201 </blockquote><p>
10202
10203 </p>
10204 <p>modal_arg =
10205 </p>
10206 <blockquote class="text">
10207 <p>/* epsilon (empty argument) */
10208
10209 </p>
10210 <p>/ NON_MODAL SP
10211
10212 </p>
10213 </blockquote><p>
10214
10215 </p>
10216 <p>key_val_list =
10217 </p>
10218 <blockquote class="text">
10219 <p>string '=' param_val_list
10220
10221 </p>
10222 <p>/ key_val_list SP string '=' param_val_list
10223
10224 </p>
10225 </blockquote><p>
10226
10227 </p>
10228 <p>buffer_size_type =
10229 </p>
10230 <blockquote class="text">
10231 <p>BYTES
10232
10233 </p>
10234 <p>/ PERCENTAGE
10235
10236 </p>
10237 </blockquote><p>
10238
10239 </p>
10240 <p>list_instruction =
10241 </p>
10242 <blockquote class="text">
10243 <p>AUDIO_OUTPUT_DEVICES
10244
10245 </p>
10246 <p>/ MIDI_INPUT_DEVICES
10247
10248 </p>
10249 <p>/ CHANNELS
10250
10251 </p>
10252 <p>/ AVAILABLE_ENGINES
10253
10254 </p>
10255 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
10256
10257 </p>
10258 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
10259
10260 </p>
10261 <p>/ MIDI_INSTRUMENTS SP midi_map
10262
10263 </p>
10264 <p>/ MIDI_INSTRUMENTS SP ALL
10265
10266 </p>
10267 <p>/ MIDI_INSTRUMENT_MAPS
10268
10269 </p>
10270 <p>/ FX_SENDS SP sampler_channel
10271
10272 </p>
10273 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
10274
10275 </p>
10276 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
10277
10278 </p>
10279 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
10280
10281 </p>
10282 <p>/ DB_INSTRUMENTS SP db_path
10283
10284 </p>
10285 <p>/ FILE SP INSTRUMENTS SP filename
10286
10287 </p>
10288 </blockquote><p>
10289
10290 </p>
10291 <p>load_instr_args =
10292 </p>
10293 <blockquote class="text">
10294 <p>filename SP instrument_index SP sampler_channel
10295
10296 </p>
10297 <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
10298
10299 </p>
10300 </blockquote><p>
10301
10302 </p>
10303 <p>load_engine_args =
10304 </p>
10305 <blockquote class="text">
10306 <p>engine_name SP sampler_channel
10307
10308 </p>
10309 </blockquote><p>
10310
10311 </p>
10312 <p>instr_load_mode =
10313 </p>
10314 <blockquote class="text">
10315 <p>ON_DEMAND
10316
10317 </p>
10318 <p>/ ON_DEMAND_HOLD
10319
10320 </p>
10321 <p>/ PERSISTENT
10322
10323 </p>
10324 </blockquote><p>
10325
10326 </p>
10327 <p>device_index =
10328 </p>
10329 <blockquote class="text">
10330 <p>number
10331
10332 </p>
10333 </blockquote><p>
10334
10335 </p>
10336 <p>audio_channel_index =
10337 </p>
10338 <blockquote class="text">
10339 <p>number
10340
10341 </p>
10342 </blockquote><p>
10343
10344 </p>
10345 <p>audio_output_type_name =
10346 </p>
10347 <blockquote class="text">
10348 <p>string
10349
10350 </p>
10351 </blockquote><p>
10352
10353 </p>
10354 <p>midi_input_port_index =
10355 </p>
10356 <blockquote class="text">
10357 <p>number
10358
10359 </p>
10360 </blockquote><p>
10361
10362 </p>
10363 <p>midi_input_channel_index =
10364 </p>
10365 <blockquote class="text">
10366 <p>number
10367
10368 </p>
10369 <p>/ ALL
10370
10371 </p>
10372 </blockquote><p>
10373
10374 </p>
10375 <p>midi_input_type_name =
10376 </p>
10377 <blockquote class="text">
10378 <p>string
10379
10380 </p>
10381 </blockquote><p>
10382
10383 </p>
10384 <p>midi_map =
10385 </p>
10386 <blockquote class="text">
10387 <p>number
10388
10389 </p>
10390 </blockquote><p>
10391
10392 </p>
10393 <p>midi_bank =
10394 </p>
10395 <blockquote class="text">
10396 <p>number
10397
10398 </p>
10399 </blockquote><p>
10400
10401 </p>
10402 <p>midi_prog =
10403 </p>
10404 <blockquote class="text">
10405 <p>number
10406
10407 </p>
10408 </blockquote><p>
10409
10410 </p>
10411 <p>midi_ctrl =
10412 </p>
10413 <blockquote class="text">
10414 <p>number
10415
10416 </p>
10417 </blockquote><p>
10418
10419 </p>
10420 <p>volume_value =
10421 </p>
10422 <blockquote class="text">
10423 <p>dotnum
10424
10425 </p>
10426 <p>/ number
10427
10428 </p>
10429 </blockquote><p>
10430
10431 </p>
10432 <p>sampler_channel =
10433 </p>
10434 <blockquote class="text">
10435 <p>number
10436
10437 </p>
10438 </blockquote><p>
10439
10440 </p>
10441 <p>instrument_index =
10442 </p>
10443 <blockquote class="text">
10444 <p>number
10445
10446 </p>
10447 </blockquote><p>
10448
10449 </p>
10450 <p>fx_send_id =
10451 </p>
10452 <blockquote class="text">
10453 <p>number
10454
10455 </p>
10456 </blockquote><p>
10457
10458 </p>
10459 <p>engine_name =
10460 </p>
10461 <blockquote class="text">
10462 <p>string
10463
10464 </p>
10465 </blockquote><p>
10466
10467 </p>
10468 <p>filename =
10469 </p>
10470 <blockquote class="text">
10471 <p>path
10472
10473 </p>
10474 </blockquote><p>
10475
10476 </p>
10477 <p>db_path =
10478 </p>
10479 <blockquote class="text">
10480 <p>path
10481
10482 </p>
10483 </blockquote><p>
10484
10485 </p>
10486 <p>map_name =
10487 </p>
10488 <blockquote class="text">
10489 <p>stringval_escaped
10490
10491 </p>
10492 </blockquote><p>
10493
10494 </p>
10495 <p>entry_name =
10496 </p>
10497 <blockquote class="text">
10498 <p>stringval_escaped
10499
10500 </p>
10501 </blockquote><p>
10502
10503 </p>
10504 <p>fx_send_name =
10505 </p>
10506 <blockquote class="text">
10507 <p>stringval_escaped
10508
10509 </p>
10510 </blockquote><p>
10511
10512 </p>
10513 <p>param_val_list =
10514 </p>
10515 <blockquote class="text">
10516 <p>param_val
10517
10518 </p>
10519 <p>/ param_val_list','param_val
10520
10521 </p>
10522 </blockquote><p>
10523
10524 </p>
10525 <p>param_val =
10526 </p>
10527 <blockquote class="text">
10528 <p>string
10529
10530 </p>
10531 <p>/ stringval
10532
10533 </p>
10534 <p>/ number
10535
10536 </p>
10537 <p>/ dotnum
10538
10539 </p>
10540 </blockquote><p>
10541
10542 </p>
10543 <p>query_val_list =
10544 </p>
10545 <blockquote class="text">
10546 <p>string '=' query_val
10547
10548 </p>
10549 <p>/ query_val_list SP string '=' query_val
10550
10551 </p>
10552 </blockquote><p>
10553
10554 </p>
10555 <p>query_val =
10556 </p>
10557 <blockquote class="text">
10558 <p>text_escaped
10559
10560 </p>
10561 <p>/ stringval_escaped
10562
10563 </p>
10564 </blockquote><p>
10565
10566 </p>
10567 <p>scan_mode =
10568 </p>
10569 <blockquote class="text">
10570 <p>RECURSIVE
10571
10572 </p>
10573 <p>/ NON_RECURSIVE
10574
10575 </p>
10576 <p>/ FLAT
10577
10578 </p>
10579 </blockquote><p>
10580
10581 </p>
10582 <a name="character_set"></a><br /><hr />
10583 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10584 <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
10585 Character Set and Escape Sequences</h3>
10586
10587 <p>Older versions of this protocol up to and including v1.1 only
10588 supported the standard ASCII character set (ASCII code 0 - 127)
10589 <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
10590 however support the Extended ASCII character set (ASCII code
10591 0 - 255). The same group of younger protocols also support
10592 escape sequences, but only for certain, explicitly declared
10593 parts of the protocol. The supported escape sequences are
10594 defined as follows:
10595 </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
10596 <col align="left"><col align="left">
10597 <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
10598 <tr>
10599 <td align="left">\n</td>
10600 <td align="left">new line</td>
10601 </tr>
10602 <tr>
10603 <td align="left">\r</td>
10604 <td align="left">carriage return</td>
10605 </tr>
10606 <tr>
10607 <td align="left">\f</td>
10608 <td align="left">form feed</td>
10609 </tr>
10610 <tr>
10611 <td align="left">\t</td>
10612 <td align="left">horizontal tab</td>
10613 </tr>
10614 <tr>
10615 <td align="left">\v</td>
10616 <td align="left">vertical tab</td>
10617 </tr>
10618 <tr>
10619 <td align="left">\'</td>
10620 <td align="left">apostrophe</td>
10621 </tr>
10622 <tr>
10623 <td align="left">\"</td>
10624 <td align="left">quotation mark</td>
10625 </tr>
10626 <tr>
10627 <td align="left">\\</td>
10628 <td align="left">backslash</td>
10629 </tr>
10630 <tr>
10631 <td align="left">\OOO</td>
10632 <td align="left">three digit octal ASCII code of the character</td>
10633 </tr>
10634 <tr>
10635 <td align="left">\xHH</td>
10636 <td align="left">two digit hex ASCII code of the character</td>
10637 </tr>
10638 </table>
10639
10640 <p>Notice: due to the transition of certain parts of the
10641 protocol which now support escape sequences, a slight backward
10642 incompatibility to protocols version v1.1 and younger has been
10643 introduced. The only difference is that in parts of the protocol
10644 where escape characters are now supported, a backslash characters
10645 MUST be escaped as well (that is as double backslash), whereas
10646 in the old versions a single backslash was sufficient.
10647 </p>
10648 <p>The following LSCP commands support escape sequences as part
10649 of their filename / path based arguments and / or may contain
10650 a filename / path with escape sequences in their response:
10651 </p>
10652 <blockquote class="text">
10653 <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
10654 </p>
10655 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10656 </p>
10657 <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>
10658 </p>
10659 <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>
10660 </p>
10661 <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>
10662 </p>
10663 <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>
10664 </p>
10665 <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>
10666 </p>
10667 <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
10668 </p>
10669 <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>
10670 </p>
10671 <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>
10672 </p>
10673 <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>
10674 </p>
10675 <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
10676 </p>
10677 <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>
10678 </p>
10679 <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>
10680 </p>
10681 <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>
10682 </p>
10683 <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>
10684 </p>
10685 <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>
10686 </p>
10687 <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>
10688 </p>
10689 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10690 </p>
10691 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10692 </p>
10693 <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
10694 </p>
10695 <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>
10696 </p>
10697 <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
10698 </p>
10699 <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>
10700 </p>
10701 <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>
10702 </p>
10703 <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>
10704 </p>
10705 <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>
10706 </p>
10707 </blockquote><p>
10708 Note that the forward slash character ('/') has a special meaning in
10709 filename / path based arguments: it acts as separator of the nodes in
10710 the path, thus if a directory- or filename includes a forward slash
10711 (not intended as path node separator), you MUST escape that slash
10712 either with the respective hex escape sequence ("\x2f") or with the
10713 respective octal escape sequence ("\057").
10714
10715 </p>
10716 <p>
10717 Note for Windows: file path arguments in LSCP are expected
10718 to use forward slashes as directory node separator similar
10719 to Unix based operating systems. In contrast to Unix however
10720 a Windows typical drive character is expected to be
10721 prefixed to the path. That is an original Windows file path
10722 like "D:\Sounds\My.gig" would become in LSCP:
10723 "D:/Sounds/My.gig".
10724
10725 </p>
10726 <p>
10727 The following LSCP commands even support escape sequences as
10728 part of at least one of their text-based arguments (i.e. entity name,
10729 description) and / or may contain escape sequences in at least one of
10730 their text-based fields in their response:
10731 </p>
10732 <blockquote class="text">
10733 <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
10734 </p>
10735 <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>
10736 </p>
10737 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10738 </p>
10739 <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>
10740 </p>
10741 <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>
10742 </p>
10743 <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>
10744 </p>
10745 <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>
10746 </p>
10747 <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>
10748 </p>
10749 <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>
10750 </p>
10751 <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>
10752 </p>
10753 <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>
10754 </p>
10755 <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>
10756 </p>
10757 <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>
10758 </p>
10759 <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>
10760 </p>
10761 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10762 </p>
10763 <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>
10764 </p>
10765 <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>
10766 </p>
10767 <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>
10768 </p>
10769 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10770 </p>
10771 </blockquote><p>
10772 Please note that these lists are manually maintained. If you
10773 find a command that also supports escape sequences we forgot to
10774 mention here, please report it!
10775
10776 </p>
10777 <a name="events"></a><br /><hr />
10778 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10779 <a name="rfc.section.8"></a><h3>8.&nbsp;
10780 Events</h3>
10781
10782 <p>This chapter will describe all currently defined events supported by LinuxSampler.
10783 </p>
10784 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
10785 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10786 <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
10787 Number of audio output devices changed</h3>
10788
10789 <p>Client may want to be notified when the total number of audio output devices on the
10790 back-end changes by issuing the following command:
10791 </p>
10792 <p>
10793 </p>
10794 <blockquote class="text">
10795 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
10796 </p>
10797 </blockquote><p>
10798
10799 </p>
10800 <p>Server will start sending the following notification messages:
10801 </p>
10802 <p>
10803 </p>
10804 <blockquote class="text">
10805 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
10806 </p>
10807 </blockquote><p>
10808
10809 </p>
10810 <p>where &lt;devices&gt; will be replaced by the new number
10811 of audio output devices.
10812 </p>
10813 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
10814 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10815 <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
10816 Audio output device's settings changed</h3>
10817
10818 <p>Client may want to be notified when changes were made to audio output devices on the
10819 back-end by issuing the following command:
10820 </p>
10821 <p>
10822 </p>
10823 <blockquote class="text">
10824 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
10825 </p>
10826 </blockquote><p>
10827
10828 </p>
10829 <p>Server will start sending the following notification messages:
10830 </p>
10831 <p>
10832 </p>
10833 <blockquote class="text">
10834 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
10835 </p>
10836 </blockquote><p>
10837
10838 </p>
10839 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
10840 which settings has been changed. The front-end will have to send
10841 the respective command to actually get the audio output device info. Because these messages
10842 will be triggered by LSCP commands issued by other clients rather than real
10843 time events happening on the server, it is believed that an empty notification
10844 message is sufficient here.
10845 </p>
10846 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
10847 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10848 <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
10849 Number of MIDI input devices changed</h3>
10850
10851 <p>Client may want to be notified when the total number of MIDI input devices on the
10852 back-end changes by issuing the following command:
10853 </p>
10854 <p>
10855 </p>
10856 <blockquote class="text">
10857 <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
10858 </p>
10859 </blockquote><p>
10860
10861 </p>
10862 <p>Server will start sending the following notification messages:
10863 </p>
10864 <p>
10865 </p>
10866 <blockquote class="text">
10867 <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
10868 </p>
10869 </blockquote><p>
10870
10871 </p>
10872 <p>where &lt;devices&gt; will be replaced by the new number
10873 of MIDI input devices.
10874 </p>
10875 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
10876 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10877 <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
10878 MIDI input device's settings changed</h3>
10879
10880 <p>Client may want to be notified when changes were made to MIDI input devices on the
10881 back-end by issuing the following command:
10882 </p>
10883 <p>
10884 </p>
10885 <blockquote class="text">
10886 <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
10887 </p>
10888 </blockquote><p>
10889
10890 </p>
10891 <p>Server will start sending the following notification messages:
10892 </p>
10893 <p>
10894 </p>
10895 <blockquote class="text">
10896 <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
10897 </p>
10898 </blockquote><p>
10899
10900 </p>
10901 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
10902 which settings has been changed. The front-end will have to send
10903 the respective command to actually get the MIDI input device info. Because these messages
10904 will be triggered by LSCP commands issued by other clients rather than real
10905 time events happening on the server, it is believed that an empty notification
10906 message is sufficient here.
10907 </p>
10908 <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
10909 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10910 <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
10911 Number of sampler channels changed</h3>
10912
10913 <p>Client may want to be notified when the total number of channels on the
10914 back-end changes by issuing the following command:
10915 </p>
10916 <p>
10917 </p>
10918 <blockquote class="text">
10919 <p>SUBSCRIBE CHANNEL_COUNT
10920 </p>
10921 </blockquote><p>
10922
10923 </p>
10924 <p>Server will start sending the following notification messages:
10925 </p>
10926 <p>
10927 </p>
10928 <blockquote class="text">
10929 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
10930 </p>
10931 </blockquote><p>
10932
10933 </p>
10934 <p>where &lt;channels&gt; will be replaced by the new number
10935 of sampler channels.
10936 </p>
10937 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
10938 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10939 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
10940 Number of active voices changed</h3>
10941
10942 <p>Client may want to be notified when the number of voices on the
10943 back-end changes by issuing the following command:
10944 </p>
10945 <p>
10946 </p>
10947 <blockquote class="text">
10948 <p>SUBSCRIBE VOICE_COUNT
10949 </p>
10950 </blockquote><p>
10951
10952 </p>
10953 <p>Server will start sending the following notification messages:
10954 </p>
10955 <p>
10956 </p>
10957 <blockquote class="text">
10958 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
10959 </p>
10960 </blockquote><p>
10961
10962 </p>
10963 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10964 voice count change occurred and &lt;voices&gt; by the new number of
10965 active voices on that channel.
10966 </p>
10967 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
10968 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10969 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
10970 Number of active disk streams changed</h3>
10971
10972 <p>Client may want to be notified when the number of streams on the back-end
10973 changes by issuing the following command: SUBSCRIBE STREAM_COUNT
10974 </p>
10975 <p>
10976 </p>
10977 <blockquote class="text">
10978 <p>SUBSCRIBE STREAM_COUNT
10979 </p>
10980 </blockquote><p>
10981
10982 </p>
10983 <p>Server will start sending the following notification messages:
10984 </p>
10985 <p>
10986 </p>
10987 <blockquote class="text">
10988 <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
10989 </p>
10990 </blockquote><p>
10991
10992 </p>
10993 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10994 stream count change occurred and &lt;streams&gt; by the new number of
10995 active disk streams on that channel.
10996 </p>
10997 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
10998 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10999 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
11000 Disk stream buffer fill state changed</h3>
11001
11002 <p>Client may want to be notified when the buffer fill state of a disk stream
11003 on the back-end changes by issuing the following command:
11004 </p>
11005 <p>
11006 </p>
11007 <blockquote class="text">
11008 <p>SUBSCRIBE BUFFER_FILL
11009 </p>
11010 </blockquote><p>
11011
11012 </p>
11013 <p>Server will start sending the following notification messages:
11014 </p>
11015 <p>
11016 </p>
11017 <blockquote class="text">
11018 <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
11019 </p>
11020 </blockquote><p>
11021
11022 </p>
11023 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11024 buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
11025 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>
11026 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.
11027 </p>
11028 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
11029 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11030 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
11031 Channel information changed</h3>
11032
11033 <p>Client may want to be notified when changes were made to sampler channels on the
11034 back-end by issuing the following command:
11035 </p>
11036 <p>
11037 </p>
11038 <blockquote class="text">
11039 <p>SUBSCRIBE CHANNEL_INFO
11040 </p>
11041 </blockquote><p>
11042
11043 </p>
11044 <p>Server will start sending the following notification messages:
11045 </p>
11046 <p>
11047 </p>
11048 <blockquote class="text">
11049 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
11050 </p>
11051 </blockquote><p>
11052
11053 </p>
11054 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11055 channel info change occurred. The front-end will have to send
11056 the respective command to actually get the channel info. Because these messages
11057 will be triggered by LSCP commands issued by other clients rather than real
11058 time events happening on the server, it is believed that an empty notification
11059 message is sufficient here.
11060 </p>
11061 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
11062 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11063 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
11064 Number of effect sends changed</h3>
11065
11066 <p>Client may want to be notified when the number of effect sends on
11067 a particular sampler channel is changed by issuing the following command:
11068 </p>
11069 <p>
11070 </p>
11071 <blockquote class="text">
11072 <p>SUBSCRIBE FX_SEND_COUNT
11073 </p>
11074 </blockquote><p>
11075
11076 </p>
11077 <p>Server will start sending the following notification messages:
11078 </p>
11079 <p>
11080 </p>
11081 <blockquote class="text">
11082 <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
11083 </p>
11084 </blockquote><p>
11085
11086 </p>
11087 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11088 channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
11089 be replaced by the new number of effect sends on that channel.
11090 </p>
11091 <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
11092 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11093 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
11094 Effect send information changed</h3>
11095
11096 <p>Client may want to be notified when changes were made to effect sends on a
11097 a particular sampler channel by issuing the following command:
11098 </p>
11099 <p>
11100 </p>
11101 <blockquote class="text">
11102 <p>SUBSCRIBE FX_SEND_INFO
11103 </p>
11104 </blockquote><p>
11105
11106 </p>
11107 <p>Server will start sending the following notification messages:
11108 </p>
11109 <p>
11110 </p>
11111 <blockquote class="text">
11112 <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
11113 </p>
11114 </blockquote><p>
11115
11116 </p>
11117 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11118 channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
11119 be replaced by the numerical ID of the changed effect send.
11120 </p>
11121 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
11122 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11123 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
11124 Total number of active voices changed</h3>
11125
11126 <p>Client may want to be notified when the total number of voices on the
11127 back-end changes by issuing the following command:
11128 </p>
11129 <p>
11130 </p>
11131 <blockquote class="text">
11132 <p>SUBSCRIBE TOTAL_VOICE_COUNT
11133 </p>
11134 </blockquote><p>
11135
11136 </p>
11137 <p>Server will start sending the following notification messages:
11138 </p>
11139 <p>
11140 </p>
11141 <blockquote class="text">
11142 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
11143 </p>
11144 </blockquote><p>
11145
11146 </p>
11147 <p>where &lt;voices&gt; will be replaced by the new number of
11148 all currently active voices.
11149 </p>
11150 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
11151 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11152 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
11153 Total number of active disk streams changed</h3>
11154
11155 <p>Client may want to be notified when the total number of disk streams on the
11156 back-end changes by issuing the following command:
11157 </p>
11158 <p>
11159 </p>
11160 <blockquote class="text">
11161 <p>SUBSCRIBE TOTAL_STREAM_COUNT
11162 </p>
11163 </blockquote><p>
11164
11165 </p>
11166 <p>Server will start sending the following notification messages:
11167 </p>
11168 <p>
11169 </p>
11170 <blockquote class="text">
11171 <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
11172 </p>
11173 </blockquote><p>
11174
11175 </p>
11176 <p>where &lt;streams&gt; will be replaced by the new number of
11177 all currently active disk streams.
11178 </p>
11179 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
11180 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11181 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
11182 Number of MIDI instrument maps changed</h3>
11183
11184 <p>Client may want to be notified when the number of MIDI instrument maps on the
11185 back-end changes by issuing the following command:
11186 </p>
11187 <p>
11188 </p>
11189 <blockquote class="text">
11190 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
11191 </p>
11192 </blockquote><p>
11193
11194 </p>
11195 <p>Server will start sending the following notification messages:
11196 </p>
11197 <p>
11198 </p>
11199 <blockquote class="text">
11200 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
11201 </p>
11202 </blockquote><p>
11203
11204 </p>
11205 <p>where &lt;maps&gt; will be replaced by the new number
11206 of MIDI instrument maps.
11207 </p>
11208 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
11209 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11210 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
11211 MIDI instrument map information changed</h3>
11212
11213 <p>Client may want to be notified when changes were made to MIDI instrument maps on the
11214 back-end by issuing the following command:
11215 </p>
11216 <p>
11217 </p>
11218 <blockquote class="text">
11219 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
11220 </p>
11221 </blockquote><p>
11222
11223 </p>
11224 <p>Server will start sending the following notification messages:
11225 </p>
11226 <p>
11227 </p>
11228 <blockquote class="text">
11229 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
11230 </p>
11231 </blockquote><p>
11232
11233 </p>
11234 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11235 for which information changes occurred. The front-end will have to send
11236 the respective command to actually get the MIDI instrument map info. Because these messages
11237 will be triggered by LSCP commands issued by other clients rather than real
11238 time events happening on the server, it is believed that an empty notification
11239 message is sufficient here.
11240 </p>
11241 <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
11242 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11243 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
11244 Number of MIDI instruments changed</h3>
11245
11246 <p>Client may want to be notified when the number of MIDI instrument maps on the
11247 back-end changes by issuing the following command:
11248 </p>
11249 <p>
11250 </p>
11251 <blockquote class="text">
11252 <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
11253 </p>
11254 </blockquote><p>
11255
11256 </p>
11257 <p>Server will start sending the following notification messages:
11258 </p>
11259 <p>
11260 </p>
11261 <blockquote class="text">
11262 <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
11263 </p>
11264 </blockquote><p>
11265
11266 </p>
11267 <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
11268 the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
11269 the new number of MIDI instruments in the specified map.
11270 </p>
11271 <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
11272 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11273 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
11274 MIDI instrument information changed</h3>
11275
11276 <p>Client may want to be notified when changes were made to MIDI instruments on the
11277 back-end by issuing the following command:
11278 </p>
11279 <p>
11280 </p>
11281 <blockquote class="text">
11282 <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
11283 </p>
11284 </blockquote><p>
11285
11286 </p>
11287 <p>Server will start sending the following notification messages:
11288 </p>
11289 <p>
11290 </p>
11291 <blockquote class="text">
11292 <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
11293 </p>
11294 </blockquote><p>
11295
11296 </p>
11297 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11298 in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
11299 the location of the changed MIDI instrument in the map. The front-end will have to send
11300 the respective command to actually get the MIDI instrument info. Because these messages
11301 will be triggered by LSCP commands issued by other clients rather than real
11302 time events happening on the server, it is believed that an empty notification
11303 message is sufficient here.
11304 </p>
11305 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
11306 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11307 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
11308 Global settings changed</h3>
11309
11310 <p>Client may want to be notified when changes to the global settings
11311 of the sampler were made by issuing the following command:
11312 </p>
11313 <p>
11314 </p>
11315 <blockquote class="text">
11316 <p>SUBSCRIBE GLOBAL_INFO
11317 </p>
11318 </blockquote><p>
11319
11320 </p>
11321 <p>Server will start sending the following types of notification messages:
11322 </p>
11323 <p>
11324 </p>
11325 <blockquote class="text">
11326 <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
11327 golbal volume of the sampler is changed, where &lt;volume&gt; will be
11328 replaced by the optional dotted floating point value, reflecting the
11329 new global volume parameter.
11330 </p>
11331 </blockquote><p>
11332
11333 </p>
11334 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
11335 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11336 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
11337 Number of database instrument directories changed</h3>
11338
11339 <p>Client may want to be notified when the number of instrument
11340 directories in a particular directory in the instruments database
11341 is changed by issuing the following command:
11342 </p>
11343 <p>
11344 </p>
11345 <blockquote class="text">
11346 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
11347 </p>
11348 </blockquote><p>
11349
11350 </p>
11351 <p>Server will start sending the following notification messages:
11352 </p>
11353 <p>
11354 </p>
11355 <blockquote class="text">
11356 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
11357 </p>
11358 </blockquote><p>
11359
11360 </p>
11361 <p>where &lt;dir-path&gt; will be replaced by the absolute path
11362 name of the directory in the instruments database,
11363 in which the number of directories is changed.
11364 </p>
11365 <p>Note that when a non-empty directory is removed, this event
11366 is not sent for the subdirectories in that directory.
11367 </p>
11368 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
11369 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11370 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
11371 Database instrument directory information changed</h3>
11372
11373 <p>Client may want to be notified when changes were made to directories
11374 in the instruments database by issuing the following command:
11375 </p>
11376 <p>
11377 </p>
11378 <blockquote class="text">
11379 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
11380 </p>
11381 </blockquote><p>
11382
11383 </p>
11384 <p>Server will start sending the following notification messages:
11385 </p>
11386 <p>
11387 </p>
11388 <blockquote class="text">
11389 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
11390 </p>
11391 </blockquote><p>
11392
11393 </p>
11394 <p>where &lt;dir-path&gt; will be replaced by the absolute path name
11395 of the directory, for which information changes occurred. The front-end will have to send
11396 the respective command to actually get the updated directory info. Because these messages
11397 will be triggered by LSCP commands issued by other clients rather than real
11398 time events happening on the server, it is believed that an empty notification
11399 message is sufficient here.
11400 </p>
11401 <p>
11402 </p>
11403 <blockquote class="text">
11404 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
11405 </p>
11406 </blockquote><p>
11407
11408 </p>
11409 <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
11410 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11411 the new name of the directory, encapsulated into apostrophes.
11412 </p>
11413 <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
11414 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11415 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
11416 Number of database instruments changed</h3>
11417
11418 <p>Client may want to be notified when the number of instruments
11419 in a particular directory in the instruments database
11420 is changed by issuing the following command:
11421 </p>
11422 <p>
11423 </p>
11424 <blockquote class="text">
11425 <p>SUBSCRIBE DB_INSTRUMENT_COUNT
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_COUNT:&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
11441 name of the directory in the instruments database,
11442 in which the number of instruments is changed.
11443 </p>
11444 <p>Note that when a non-empty directory is removed, this event
11445 is not sent for the instruments in that directory.
11446 </p>
11447 <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
11448 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11449 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
11450 Database instrument information changed</h3>
11451
11452 <p>Client may want to be notified when changes were made to instruments
11453 in the instruments database by issuing the following command:
11454 </p>
11455 <p>
11456 </p>
11457 <blockquote class="text">
11458 <p>SUBSCRIBE DB_INSTRUMENT_INFO
11459 </p>
11460 </blockquote><p>
11461
11462 </p>
11463 <p>Server will start sending the following notification messages:
11464 </p>
11465 <p>
11466 </p>
11467 <blockquote class="text">
11468 <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
11469 </p>
11470 </blockquote><p>
11471
11472 </p>
11473 <p>where &lt;instr-path&gt; will be replaced by the absolute path name
11474 of the instrument, which settings are changed. The front-end will have to send
11475 the respective command to actually get the updated directory info. Because these messages
11476 will be triggered by LSCP commands issued by other clients rather than real
11477 time events happening on the server, it is believed that an empty notification
11478 message is sufficient here.
11479 </p>
11480 <p>
11481 </p>
11482 <blockquote class="text">
11483 <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
11484 </p>
11485 </blockquote><p>
11486
11487 </p>
11488 <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
11489 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11490 the new name of the instrument, encapsulated into apostrophes.
11491 </p>
11492 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
11493 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11494 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
11495 Database job status information changed</h3>
11496
11497 <p>Client may want to be notified when the status of particular database
11498 instruments job is changed by issuing the following command:
11499 </p>
11500 <p>
11501 </p>
11502 <blockquote class="text">
11503 <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
11504 </p>
11505 </blockquote><p>
11506
11507 </p>
11508 <p>Server will start sending the following notification messages:
11509 </p>
11510 <p>
11511 </p>
11512 <blockquote class="text">
11513 <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
11514 </p>
11515 </blockquote><p>
11516
11517 </p>
11518 <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
11519 which status is changed. The front-end will have to send the respective
11520 command to actually get the status info. Because these messages
11521 will be triggered by LSCP commands issued by other clients rather than real
11522 time events happening on the server, it is believed that an empty notification
11523 message is sufficient here.
11524 </p>
11525 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
11526 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11527 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
11528 Miscellaneous and debugging events</h3>
11529
11530 <p>Client may want to be notified of miscellaneous and debugging events occurring at
11531 the server by issuing the following command:
11532 </p>
11533 <p>
11534 </p>
11535 <blockquote class="text">
11536 <p>SUBSCRIBE MISCELLANEOUS
11537 </p>
11538 </blockquote><p>
11539
11540 </p>
11541 <p>Server will start sending the following notification messages:
11542 </p>
11543 <p>
11544 </p>
11545 <blockquote class="text">
11546 <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
11547 </p>
11548 </blockquote><p>
11549
11550 </p>
11551 <p>where &lt;string&gt; will be replaced by whatever data server
11552 wants to send to the client. Client MAY display this data to the
11553 user AS IS to facilitate debugging.
11554 </p>
11555 <a name="anchor14"></a><br /><hr />
11556 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11557 <a name="rfc.section.9"></a><h3>9.&nbsp;
11558 Security Considerations</h3>
11559
11560 <p>As there is so far no method of authentication and authorization
11561 defined and so not required for a client applications to succeed to
11562 connect, running LinuxSampler might be a security risk for the host
11563 system the LinuxSampler instance is running on.
11564 </p>
11565 <a name="anchor15"></a><br /><hr />
11566 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11567 <a name="rfc.section.10"></a><h3>10.&nbsp;
11568 Acknowledgments</h3>
11569
11570 <p>This document has benefited greatly from the comments of the
11571 following people, discussed on the LinuxSampler developer's mailing
11572 list:
11573 </p>
11574 <p>
11575 </p>
11576 <blockquote class="text">
11577 <p>Rui Nuno Capela
11578 </p>
11579 <p>Vladimir Senkov
11580 </p>
11581 <p>Mark Knecht
11582 </p>
11583 <p>Grigor Iliev
11584 </p>
11585 </blockquote><p>
11586
11587 </p>
11588 <a name="rfc.references1"></a><br /><hr />
11589 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11590 <h3>11.&nbsp;References</h3>
11591 <table width="99%" border="0">
11592 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
11593 <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>
11594 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
11595 <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>
11596 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
11597 <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>
11598 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
11599 <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>
11600 </table>
11601
11602 <a name="rfc.authors"></a><br /><hr />
11603 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11604 <h3>Author's Address</h3>
11605 <table width="99%" border="0" cellpadding="0" cellspacing="0">
11606 <tr><td class="author-text">&nbsp;</td>
11607 <td class="author-text">C.
11608 Schoenebeck</td></tr>
11609 <tr><td class="author-text">&nbsp;</td>
11610 <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
11611 <tr><td class="author-text">&nbsp;</td>
11612 <td class="author-text">Max-Planck-Str. 39</td></tr>
11613 <tr><td class="author-text">&nbsp;</td>
11614 <td class="author-text">74081 Heilbronn</td></tr>
11615 <tr><td class="author-text">&nbsp;</td>
11616 <td class="author-text">Germany</td></tr>
11617 <tr><td class="author" align="right">Email:&nbsp;</td>
11618 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
11619 </table>
11620 <a name="rfc.copyright"></a><br /><hr />
11621 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11622 <h3>Full Copyright Statement</h3>
11623 <p class='copyright'>
11624 Copyright &copy; The IETF Trust (2007).</p>
11625 <p class='copyright'>
11626 This document is subject to the rights,
11627 licenses and restrictions contained in BCP&nbsp;78,
11628 and except as set forth therein,
11629 the authors retain all their rights.</p>
11630 <p class='copyright'>
11631 This document and the information contained herein are provided
11632 on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
11633 THE ORGANIZATION HE/SHE REPRESENTS
11634 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
11635 AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
11636 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
11637 THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
11638 IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
11639 PURPOSE.</p>
11640 <h3>Intellectual Property</h3>
11641 <p class='copyright'>
11642 The IETF takes no position regarding the validity or scope of any
11643 Intellectual Property Rights or other rights that might be claimed
11644 to pertain to the implementation or use of the technology
11645 described in this document or the extent to which any license
11646 under such rights might or might not be available; nor does it
11647 represent that it has made any independent effort to identify any
11648 such rights.
11649 Information on the procedures with respect to
11650 rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
11651 <p class='copyright'>
11652 Copies of IPR disclosures made to the IETF Secretariat and any
11653 assurances of licenses to be made available,
11654 or the result of an attempt made to obtain a general license or
11655 permission for the use of such proprietary rights by implementers or
11656 users of this specification can be obtained from the IETF on-line IPR
11657 repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
11658 <p class='copyright'>
11659 The IETF invites any interested party to bring to its attention
11660 any copyrights,
11661 patents or patent applications,
11662 or other
11663 proprietary rights that may cover technology that may be required
11664 to implement this standard.
11665 Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
11666 <h3>Acknowledgment</h3>
11667 <p class='copyright'>
11668 Funding for the RFC Editor function is provided by
11669 the IETF Administrative Support Activity (IASA).</p>
11670 </body></html>
11671

  ViewVC Help
Powered by ViewVC