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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1189 - (show annotations) (download) (as text)
Wed May 16 14:42:04 2007 UTC (16 years, 10 months ago) by iliev
File MIME type: text/html
File size: 364099 byte(s)
- updated LSCP spec

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: November 17, 2007</td><td class="header">May 16, 2007</td></tr>
149 </table></td></tr></table>
150 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.2</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 November 17, 2007.</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="#RESET">6.6.3.</a>&nbsp;
358 Reset sampler<br />
359 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.4.</a>&nbsp;
360 General sampler informations<br />
361 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.5.</a>&nbsp;
362 Getting global volume attenuation<br />
363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.6.</a>&nbsp;
364 Setting global volume attenuation<br />
365 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
366 MIDI Instrument Mapping<br />
367 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT MAP">6.7.1.</a>&nbsp;
368 Create a new MIDI instrument map<br />
369 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
370 Delete one particular or all MIDI instrument maps<br />
371 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
372 Get amount of existing MIDI instrument maps<br />
373 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
374 Getting all created MIDI instrument maps<br />
375 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
376 Getting MIDI instrument map information<br />
377 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
378 Renaming a MIDI instrument map<br />
379 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
380 Create or replace a MIDI instrument map entry<br />
381 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
382 Getting ammount of MIDI instrument map entries<br />
383 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
384 Getting indeces of all entries of a MIDI instrument map<br />
385 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
386 Remove an entry from the MIDI instrument map<br />
387 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
388 Get current settings of MIDI instrument map entry<br />
389 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
390 Clear MIDI instrument map<br />
391 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
392 Managing Instruments Database<br />
393 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
394 Creating a new instrument directory<br />
395 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
396 Deleting an instrument directory<br />
397 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
398 Getting amount of instrument directories<br />
399 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
400 Listing all directories in specific directory<br />
401 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
402 Getting instrument directory information<br />
403 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
404 Renaming an instrument directory<br />
405 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
406 Moving an instrument directory<br />
407 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
408 Copying instrument directories<br />
409 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
410 Changing the description of directory<br />
411 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
412 Finding directories<br />
413 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
414 Adding instruments to the instruments database<br />
415 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
416 Removing an instrument<br />
417 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
418 Getting amount of instruments<br />
419 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
420 Listing all instruments in specific directory<br />
421 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
422 Getting instrument information<br />
423 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
424 Renaming an instrument<br />
425 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
426 Moving an instrument<br />
427 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
428 Copying instruments<br />
429 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
430 Changing the description of instrument<br />
431 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
432 Finding instruments<br />
433 <a href="#command_syntax">7.</a>&nbsp;
434 Command Syntax<br />
435 <a href="#events">8.</a>&nbsp;
436 Events<br />
437 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
438 Number of audio output devices changed<br />
439 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
440 Audio output device's settings changed<br />
441 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
442 Number of MIDI input devices changed<br />
443 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
444 MIDI input device's settings changed<br />
445 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
446 Number of sampler channels changed<br />
447 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.6.</a>&nbsp;
448 Number of active voices changed<br />
449 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.7.</a>&nbsp;
450 Number of active disk streams changed<br />
451 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.8.</a>&nbsp;
452 Disk stream buffer fill state changed<br />
453 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.9.</a>&nbsp;
454 Channel information changed<br />
455 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.10.</a>&nbsp;
456 Number of effect sends changed<br />
457 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.11.</a>&nbsp;
458 Effect send information changed<br />
459 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.12.</a>&nbsp;
460 Total number of active voices changed<br />
461 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.13.</a>&nbsp;
462 Number of MIDI instrument maps changed<br />
463 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.14.</a>&nbsp;
464 MIDI instrument map information changed<br />
465 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.15.</a>&nbsp;
466 Number of MIDI instruments changed<br />
467 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.16.</a>&nbsp;
468 MIDI instrument information changed<br />
469 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.17.</a>&nbsp;
470 Global settings changed<br />
471 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.18.</a>&nbsp;
472 Number of database instrument directories changed<br />
473 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.19.</a>&nbsp;
474 Database instrument directory information changed<br />
475 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.20.</a>&nbsp;
476 Number of database instruments changed<br />
477 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.21.</a>&nbsp;
478 Database instrument information changed<br />
479 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.22.</a>&nbsp;
480 Miscellaneous and debugging events<br />
481 <a href="#anchor14">9.</a>&nbsp;
482 Security Considerations<br />
483 <a href="#anchor15">10.</a>&nbsp;
484 Acknowledgments<br />
485 <a href="#rfc.references1">11.</a>&nbsp;
486 References<br />
487 <a href="#rfc.authors">&#167;</a>&nbsp;
488 Author's Address<br />
489 <a href="#rfc.copyright">&#167;</a>&nbsp;
490 Intellectual Property and Copyright Statements<br />
491 </p>
492 <br clear="all" />
493
494 <a name="anchor1"></a><br /><hr />
495 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
496 <a name="rfc.section.1"></a><h3>1.&nbsp;
497 Requirements notation</h3>
498
499 <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
500 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
501 and "OPTIONAL" in this document are to be interpreted as
502 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>.
503 </p>
504 <p>This protocol is always case-sensitive if not explicitly
505 claimed the opposite.
506 </p>
507 <p>In examples, "C:" and "S:" indicate lines sent by the client
508 (front-end) and server (LinuxSampler) respectively. Lines in
509 examples must be interpreted as every line being CRLF
510 terminated (carriage return character followed by line feed
511 character as defined in the ASCII standard), thus the following
512 example:
513 </p>
514 <p>
515 </p>
516 <blockquote class="text">
517 <p>C: "some line"
518 </p>
519 <p>&nbsp;&nbsp;&nbsp;"another line"
520 </p>
521 </blockquote><p>
522
523 </p>
524 <p>must actually be interpreted as client sending the following
525 message:
526 </p>
527 <p>
528 </p>
529 <blockquote class="text">
530 <p>"some line&lt;CR&gt;&lt;LF&gt;another
531 line&lt;CR&gt;&lt;LF&gt;"
532 </p>
533 </blockquote><p>
534
535 </p>
536 <p>where &lt;CR&gt; symbolizes the carriage return character and
537 &lt;LF&gt; the line feed character as defined in the ASCII
538 standard.
539 </p>
540 <p>Due to technical reasons, messages can arbitrary be
541 fragmented, means the following example:
542 </p>
543 <p>
544 </p>
545 <blockquote class="text">
546 <p>S: "abcd"
547 </p>
548 </blockquote><p>
549
550 </p>
551 <p>could also happen to be sent in three messages like in the
552 following sequence scenario:
553 </p>
554 <p>
555 </p>
556 <ul class="text">
557 <li>server sending message "a"
558 </li>
559 <li>followed by a delay (pause) with
560 arbitrary duration
561 </li>
562 <li>followed by server sending message
563 "bcd&lt;CR&gt;"
564 </li>
565 <li>again followed by a delay (pause) with arbitrary
566 duration
567 </li>
568 <li>followed by server sending the message
569 "&lt;LF&gt;"
570 </li>
571 </ul><p>
572
573 </p>
574 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
575 return and line feed characters respectively.
576 </p>
577 <a name="LSCP versioning"></a><br /><hr />
578 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
579 <a name="rfc.section.2"></a><h3>2.&nbsp;
580 Versioning of this specification</h3>
581
582 <p>LSCP will certainly be extended and enhanced by-and-by. Each official
583 release of the LSCP specification will be tagged with a unique version
584 tuple. The version tuple consists at least of a major and minor version
585 number like:
586
587 </p>
588 <p>
589 </p>
590 <blockquote class="text">
591 <p>"1.2"
592 </p>
593 </blockquote><p>
594
595 </p>
596 <p>
597 In this example the major version number would be "1" and the minor
598 version number would be "2". Note that the version tuple might also
599 have more than two elements. The major version number defines a
600 group of backward compatible versions. That means a frontend is
601 compatible to the connected sampler if and only if the LSCP versions
602 to which each of the two parties complies to, match both of the
603 following rules:
604
605 </p>
606 <p>Compatibility:
607 </p>
608 <p>
609 </p>
610 <ol class="text">
611 <li>The frontend's LSCP major version and the sampler's LSCP
612 major version are exactly equal.
613 </li>
614 <li>The frontend's LSCP minor version is less or equal than
615 the sampler's LSCP minor version.
616 </li>
617 </ol><p>
618
619 </p>
620 <p>
621 Compatibility can only be claimed if both rules are true.
622 The frontend can use the
623 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
624 get the version of the LSCP specification the sampler complies with.
625
626 </p>
627 <a name="anchor2"></a><br /><hr />
628 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
629 <a name="rfc.section.3"></a><h3>3.&nbsp;
630 Introduction</h3>
631
632 <p>LinuxSampler is a so called software sampler application
633 capable to playback audio samples from a computer's Random
634 Access Memory (RAM) as well as directly streaming it from disk.
635 LinuxSampler is designed to be modular. It provides several so
636 called "sampler engines" where each engine is specialized for a
637 certain purpose. LinuxSampler has virtual channels which will be
638 referred in this document as "sampler channels". The channels
639 are in such way virtual as they can be connected to an
640 arbitrary MIDI input method and arbitrary MIDI channel (e.g.
641 sampler channel 17 could be connected to an ALSA sequencer
642 device 64:0 and listening to MIDI channel 1 there). Each sampler
643 channel will be associated with an instance of one of the available
644 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
645 each sampler channel can be routed to an arbitrary audio output
646 method (ALSA / JACK) and an arbitrary audio output channel
647 there.
648 </p>
649 <a name="anchor3"></a><br /><hr />
650 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
651 <a name="rfc.section.4"></a><h3>4.&nbsp;
652 Focus of this protocol</h3>
653
654 <p>Main focus of this protocol is to provide a way to configure
655 a running LinuxSampler instance and to retrieve information
656 about it. The focus of this protocol is not to provide a way to
657 control synthesis parameters or even to trigger or release
658 notes. Or in other words; the focus are those functionalities
659 which are not covered by MIDI or which may at most be handled
660 via MIDI System Exclusive Messages.
661 </p>
662 <a name="anchor4"></a><br /><hr />
663 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
664 <a name="rfc.section.5"></a><h3>5.&nbsp;
665 Communication Overview</h3>
666
667 <p>There are two distinct methods of communication between a
668 running instance of LinuxSampler and one or more control
669 applications, so called "front-ends": a simple request/response
670 communication method used by the clients to give commands to the
671 server as well as to inquire about server's status and a
672 subscribe/notify communication method used by the client to
673 subscribe to and receive notifications of certain events as they
674 happen on the server. The latter needs more effort to be
675 implemented in the front-end application. The two communication
676 methods will be described next.
677 </p>
678 <a name="anchor5"></a><br /><hr />
679 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
680 <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
681 Request/response communication method</h3>
682
683 <p>This simple communication method is based on
684 <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
685 front-end application establishes a TCP connection to the
686 LinuxSampler instance on a certain host system. Then the
687 front-end application will send certain ASCII based commands
688 as defined in this document (every command line must be CRLF
689 terminated - see "Conventions used in this document" at the
690 beginning of this document) and the LinuxSampler application
691 will response after a certain process time with an
692 appropriate ASCII based answer, also as defined in this
693 document. So this TCP communication is simply based on query
694 and answer paradigm. That way LinuxSampler is only able to
695 answer on queries from front-ends, but not able to
696 automatically send messages to the client if it's not asked
697 to. The fronted should not reconnect to LinuxSampler for
698 every single command, instead it should keep the connection
699 established and simply resend message(s) for subsequent
700 commands. To keep information in the front-end up-to-date
701 the front-end has to periodically send new requests to get
702 the current information from the LinuxSampler instance. This
703 is often referred to as "polling". While polling is simple
704 to implement and may be OK to use in some cases, there may
705 be disadvantages to polling such as network traffic overhead
706 and information being out of date.
707 It is possible for a client or several clients to open more
708 than one connection to the server at the same time. It is
709 also possible to send more than one request to the server
710 at the same time but if those requests are sent over the
711 same connection server MUST execute them sequentially. Upon
712 executing a request server will produce a result set and
713 send it to the client. Each and every request made by the
714 client MUST result in a result set being sent back to the
715 client. No other data other than a result set may be sent by
716 a server to a client. No result set may be sent to a client
717 without the client sending request to the server first. On
718 any particular connection, result sets MUST be sent in their
719 entirety without being interrupted by other result sets. If
720 several requests got queued up at the server they MUST be
721 processed in the order they were received and result sets
722 MUST be sent back in the same order.
723 </p>
724 <a name="anchor6"></a><br /><hr />
725 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
726 <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
727 Result format</h3>
728
729 <p>Result set could be one of the following types:
730 </p>
731 <p>
732 </p>
733 <ol class="text">
734 <li>Normal
735 </li>
736 <li>Warning
737 </li>
738 <li>Error
739 </li>
740 </ol><p>
741
742 </p>
743 <p>Warning and Error result sets MUST be single line and
744 have the following format:
745 </p>
746 <p>
747 </p>
748 <ul class="text">
749 <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
750 </li>
751 <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
752 </li>
753 </ul><p>
754
755 </p>
756 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
757 numeric unique identifiers of the warning or error and
758 &lt;warning-message&gt; and &lt;error-message&gt; are
759 human readable descriptions of the warning or error
760 respectively.
761 </p>
762 <p>Examples:
763 </p>
764 <p>
765 </p>
766 <blockquote class="text">
767 <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
768 </p>
769 <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
770 </p>
771 </blockquote><p>
772
773 </p>
774 <p>
775 </p>
776 <blockquote class="text">
777 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
778 </p>
779 <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
780 </p>
781 </blockquote><p>
782
783 </p>
784 <p>
785 </p>
786 <blockquote class="text">
787 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
788 </p>
789 <p>S: "ERR:9:There is no audio output device with index 123456."
790 </p>
791 </blockquote><p>
792
793 </p>
794 <p>Normal result sets could be:
795 </p>
796 <p>
797 </p>
798 <ol class="text">
799 <li>Empty
800 </li>
801 <li>Single line
802 </li>
803 <li>Multi-line
804 </li>
805 </ol><p>
806
807 </p>
808 <p> Empty result set is issued when the server only
809 needed to acknowledge the fact that the request was
810 received and it was processed successfully and no
811 additional information is available. This result set has
812 the following format:
813 </p>
814 <p>
815 </p>
816 <blockquote class="text">
817 <p>"OK"
818 </p>
819 </blockquote><p>
820
821 </p>
822 <p>Example:
823 </p>
824 <p>
825 </p>
826 <blockquote class="text">
827 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
828 </p>
829 <p>S: "OK"
830 </p>
831 </blockquote><p>
832
833 </p>
834 <p>Single line result sets are command specific. One
835 example of a single line result set is an empty line.
836 Multi-line result sets are command specific and may
837 include one or more lines of information. They MUST
838 always end with the following line:
839 </p>
840 <p>
841 </p>
842 <blockquote class="text">
843 <p>"."
844 </p>
845 </blockquote><p>
846
847 </p>
848 <p>Example:
849 </p>
850 <p>
851 </p>
852 <blockquote class="text">
853 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
854 </p>
855 <p>S: "DRIVER: ALSA"
856 </p>
857 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
858 </p>
859 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
860 </p>
861 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
862 </p>
863 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
864 </p>
865 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
866 </p>
867 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
868 </p>
869 <p>&nbsp;&nbsp;&nbsp;"."
870 </p>
871 </blockquote><p>
872
873 </p>
874 <p>In addition to above mentioned formats, warnings and
875 empty result sets MAY be indexed. In this case, they
876 have the following formats respectively:
877 </p>
878 <p>
879 </p>
880 <ul class="text">
881 <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
882 </li>
883 <li>"OK[&lt;index&gt;]"
884 </li>
885 </ul><p>
886
887 </p>
888 <p>where &lt;index&gt; is command specific and is used
889 to indicate channel number that the result set was
890 related to or other integer value.
891 </p>
892 <p>Each line of the result set MUST end with
893 &lt;CRLF&gt;.
894 </p>
895 <p>Examples:
896 </p>
897 <p>
898 </p>
899 <blockquote class="text">
900 <p>C: "ADD CHANNEL"
901 </p>
902 <p>S: "OK[12]"
903 </p>
904 </blockquote><p>
905
906 </p>
907 <p>
908 </p>
909 <blockquote class="text">
910 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
911 </p>
912 <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
913 </p>
914 </blockquote><p>
915
916 </p>
917 <a name="anchor7"></a><br /><hr />
918 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
919 <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
920 Subscribe/notify communication method</h3>
921
922 <p>This more sophisticated communication method is actually
923 only an extension of the simple request/response
924 communication method. The front-end still uses a TCP
925 connection and sends the same commands on the TCP
926 connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
927 commands that allow a client to tell the server that it is
928 interested in receiving notifications about certain events
929 as they happen on the server. The SUBSCRIBE command has the
930 following syntax:
931 </p>
932 <p>
933 </p>
934 <blockquote class="text">
935 <p>SUBSCRIBE &lt;event-id&gt;
936 </p>
937 </blockquote><p>
938
939 </p>
940 <p>where &lt;event-id&gt; will be replaced by the respective
941 event that client wants to subscribe to. Upon receiving such
942 request, server SHOULD respond with OK and start sending
943 EVENT notifications when a given even has occurred to the
944 front-end when an event has occurred. It MAY be possible
945 certain events may be sent before OK response during real
946 time nature of their generation. Event messages have the
947 following format:
948 </p>
949 <p>
950 </p>
951 <blockquote class="text">
952 <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
953 </p>
954 </blockquote><p>
955
956 </p>
957 <p>where &lt;event-id&gt; uniquely identifies the event that
958 has occurred and &lt;custom-event-data&gt; is event
959 specific.
960 </p>
961 <p>Several rules must be followed by the server when
962 generating events:
963 </p>
964 <p>
965 </p>
966 <ol class="text">
967 <li>Events MUST NOT be sent to any client who has not
968 issued an appropriate SUBSCRIBE command.
969 </li>
970 <li>Events MUST only be sent using the same
971 connection that was used to subscribe to them.
972 </li>
973 <li>When response is being sent to the client, event
974 MUST be inserted in the stream before or after the
975 response, but NOT in the middle. Same is true about
976 the response. It should never be inserted in the
977 middle of the event message as well as any other
978 response.
979 </li>
980 </ol><p>
981
982 </p>
983 <p>If the client is not interested in a particular event
984 anymore it MAY issue UNSUBSCRIBE command using the following
985 syntax:
986 </p>
987 <p>
988 </p>
989 <blockquote class="text">
990 <p>UNSUBSCRIBE &lt;event-id&gt;
991 </p>
992 </blockquote><p>
993
994 </p>
995 <p>where &lt;event-id&gt; will be replace by the respective
996 event that client is no longer interested in receiving. For
997 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
998 </p>
999 <p>Example: the fill states of disk stream buffers have
1000 changed on sampler channel 4 and the LinuxSampler instance
1001 will react by sending the following message to all clients
1002 who subscribed to this event:
1003 </p>
1004 <p>
1005 </p>
1006 <blockquote class="text">
1007 <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1008 </p>
1009 </blockquote><p>
1010
1011 </p>
1012 <p>Which means there are currently three active streams on
1013 sampler channel 4, where the stream with ID "35" is filled
1014 by 62%, stream with ID 33 is filled by 80% and stream with
1015 ID 37 is filled by 98%.
1016 </p>
1017 <p>Clients may choose to open more than one connection to
1018 the server and use some connections to receive notifications
1019 while using other connections to issue commands to the
1020 back-end. This is entirely legal and up to the
1021 implementation. This does not change the protocol in any way
1022 and no special restrictions exist on the server to allow or
1023 disallow this or to track what connections belong to what
1024 front-ends. Server will listen on a single port, accept
1025 multiple connections and support protocol described in this
1026 specification in it's entirety on this single port on each
1027 connection that it accepted.
1028 </p>
1029 <p>Due to the fact that TCP is used for this communication,
1030 dead peers will be detected automatically by the OS TCP
1031 stack. While it may take a while to detect dead peers if no
1032 traffic is being sent from server to client (TCP keep-alive
1033 timer is set to 2 hours on many OSes) it will not be an
1034 issue here as when notifications are sent by the server,
1035 dead client will be detected quickly.
1036 </p>
1037 <p>When connection is closed for any reason server MUST
1038 forget all subscriptions that were made on this connection.
1039 If client reconnects it MUST resubscribe to all events that
1040 it wants to receive.
1041 </p>
1042 <a name="control_commands"></a><br /><hr />
1043 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1044 <a name="rfc.section.6"></a><h3>6.&nbsp;
1045 Description for control commands</h3>
1046
1047 <p>This chapter will describe the available control commands
1048 that can be sent on the TCP connection in detail. Some certain
1049 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>
1050 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
1051 multiple-line responses. In this case LinuxSampler signals the
1052 end of the response by a "." (single dot) line.
1053 </p>
1054 <a name="anchor8"></a><br /><hr />
1055 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1056 <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1057 Ignored lines and comments</h3>
1058
1059 <p>White lines, that is lines which only contain space and
1060 tabulator characters, and lines that start with a "#"
1061 character are ignored, thus it's possible for example to
1062 group commands and to place comments in a LSCP script
1063 file.
1064 </p>
1065 <a name="anchor9"></a><br /><hr />
1066 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1067 <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1068 Configuring audio drivers</h3>
1069
1070 <p>Instances of drivers in LinuxSampler are called devices.
1071 You can use multiple audio devices simultaneously, e.g. to
1072 output the sound of one sampler channel using the ALSA audio
1073 output driver, and on another sampler channel you might want
1074 to use the JACK audio output driver. For particular audio
1075 output systems it's also possible to create several devices
1076 of the same audio output driver, e.g. two separate ALSA
1077 audio output devices for using two different sound cards at
1078 the same time. This chapter describes all commands to
1079 configure LinuxSampler's audio output devices and their
1080 parameters.
1081 </p>
1082 <p>Instead of defining commands and parameters for each
1083 driver individually, all possible parameters, their meanings
1084 and possible values have to be obtained at runtime. This
1085 makes the protocol a bit abstract, but has the advantage,
1086 that front-ends can be written independently of what drivers
1087 are currently implemented and what parameters these drivers
1088 are actually offering. This means front-ends can even handle
1089 drivers which are implemented somewhere in future without
1090 modifying the front-end at all.
1091 </p>
1092 <p>Note: examples in this chapter showing particular
1093 parameters of drivers are not meant as specification of the
1094 drivers' parameters. Driver implementations in LinuxSampler
1095 might have complete different parameter names and meanings
1096 than shown in these examples or might change in future, so
1097 these examples are only meant for showing how to retrieve
1098 what parameters drivers are offering, how to retrieve their
1099 possible values, etc.
1100 </p>
1101 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1102 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1103 <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1104 Getting amount of available audio output drivers</h3>
1105
1106 <p>Use the following command to get the number of
1107 audio output drivers currently available for the
1108 LinuxSampler instance:
1109 </p>
1110 <p>
1111 </p>
1112 <blockquote class="text">
1113 <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1114 </p>
1115 </blockquote><p>
1116
1117 </p>
1118 <p>Possible Answers:
1119 </p>
1120 <p>
1121 </p>
1122 <blockquote class="text">
1123 <p>LinuxSampler will answer by sending the
1124 number of audio output drivers.
1125 </p>
1126 </blockquote><p>
1127
1128 </p>
1129 <p>Example:
1130 </p>
1131 <p>
1132 </p>
1133 <blockquote class="text">
1134 <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1135 </p>
1136 <p>S: "2"
1137 </p>
1138 </blockquote><p>
1139
1140 </p>
1141 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1142 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1143 <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1144 Getting all available audio output drivers</h3>
1145
1146 <p>Use the following command to list all audio output
1147 drivers currently available for the LinuxSampler
1148 instance:
1149 </p>
1150 <p>
1151 </p>
1152 <blockquote class="text">
1153 <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1154 </p>
1155 </blockquote><p>
1156
1157 </p>
1158 <p>Possible Answers:
1159 </p>
1160 <p>
1161 </p>
1162 <blockquote class="text">
1163 <p>LinuxSampler will answer by sending comma
1164 separated character strings, each symbolizing an
1165 audio output driver.
1166 </p>
1167 </blockquote><p>
1168
1169 </p>
1170 <p>Example:
1171 </p>
1172 <p>
1173 </p>
1174 <blockquote class="text">
1175 <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1176 </p>
1177 <p>S: "ALSA,JACK"
1178 </p>
1179 </blockquote><p>
1180
1181 </p>
1182 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1183 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1184 <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1185 Getting information about a specific audio
1186 output driver</h3>
1187
1188 <p>Use the following command to get detailed information
1189 about a specific audio output driver:
1190 </p>
1191 <p>
1192 </p>
1193 <blockquote class="text">
1194 <p>GET AUDIO_OUTPUT_DRIVER INFO
1195 &lt;audio-output-driver&gt;
1196 </p>
1197 </blockquote><p>
1198
1199 </p>
1200 <p>Where &lt;audio-output-driver&gt; is the name of the
1201 audio output driver, returned by the
1202 <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.
1203 </p>
1204 <p>Possible Answers:
1205 </p>
1206 <p>
1207 </p>
1208 <blockquote class="text">
1209 <p>LinuxSampler will answer by sending a
1210 &lt;CRLF&gt; separated list. Each answer line
1211 begins with the information category name
1212 followed by a colon and then a space character
1213 &lt;SP&gt; and finally the info character string
1214 to that info category. At the moment the
1215 following information categories are
1216 defined:
1217 </p>
1218 <p>
1219 </p>
1220 <blockquote class="text">
1221 <p>DESCRIPTION -
1222 </p>
1223 <blockquote class="text">
1224 <p> character string describing the
1225 audio output driver
1226 </p>
1227 </blockquote>
1228
1229
1230 <p>VERSION -
1231 </p>
1232 <blockquote class="text">
1233 <p>character string reflecting the
1234 driver's version
1235 </p>
1236 </blockquote>
1237
1238
1239 <p>PARAMETERS -
1240 </p>
1241 <blockquote class="text">
1242 <p>comma separated list of all
1243 parameters available for the given
1244 audio output driver, at least
1245 parameters 'channels', 'samplerate'
1246 and 'active' are offered by all audio
1247 output drivers
1248 </p>
1249 </blockquote>
1250
1251
1252 </blockquote>
1253
1254
1255 <p>The mentioned fields above don't have to be
1256 in particular order.
1257 </p>
1258 </blockquote><p>
1259
1260 </p>
1261 <p>Example:
1262 </p>
1263 <p>
1264 </p>
1265 <blockquote class="text">
1266 <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1267 </p>
1268 <p>S: "DESCRIPTION: Advanced Linux Sound
1269 Architecture"
1270 </p>
1271 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1272 </p>
1273 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1274 DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1275 FRAGMENTSIZE,CARD"
1276 </p>
1277 <p>&nbsp;&nbsp;&nbsp;"."
1278 </p>
1279 </blockquote><p>
1280
1281 </p>
1282 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1283 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1284 <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1285 Getting information about specific audio
1286 output driver parameter</h3>
1287
1288 <p>Use the following command to get detailed information
1289 about a specific audio output driver parameter:
1290 </p>
1291 <p>
1292 </p>
1293 <blockquote class="text">
1294 <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1295 </p>
1296 </blockquote><p>
1297
1298 </p>
1299 <p>Where &lt;audio&gt; is the name of the audio output
1300 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,
1301 &lt;prm&gt; a specific parameter name for which information should be
1302 obtained (as returned by the
1303 <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
1304 &lt;deplist&gt; is an optional list of parameters on which the sought
1305 parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1306 pairs in form of "key1=val1 key2=val2 ...", where character string values
1307 are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1308 which are not dependency parameters of &lt;prm&gt; will be ignored, means
1309 the front-end application can simply put all parameters into &lt;deplist&gt;
1310 with the values already selected by the user.
1311 </p>
1312 <p>Possible Answers:
1313 </p>
1314 <p>
1315 </p>
1316 <blockquote class="text">
1317 <p>LinuxSampler will answer by sending a
1318 &lt;CRLF&gt; separated list.
1319 Each answer line begins with the information category name
1320 followed by a colon and then a space character &lt;SP&gt; and
1321 finally
1322 the info character string to that info category. There are
1323 information which is always returned, independently of the
1324 given driver parameter and there are optional information
1325 which is only shown dependently to given driver parameter. At
1326 the moment the following information categories are defined:
1327 </p>
1328 </blockquote><p>
1329
1330 </p>
1331 <p>
1332 </p>
1333 <blockquote class="text">
1334 <p>TYPE -
1335 </p>
1336 <blockquote class="text">
1337 <p>either "BOOL" for boolean value(s) or
1338 "INT" for integer
1339 value(s) or "FLOAT" for dotted number(s) or "STRING" for
1340 character string(s)
1341 (always returned, no matter which driver parameter)
1342 </p>
1343 </blockquote>
1344
1345
1346 <p>DESCRIPTION -
1347 </p>
1348 <blockquote class="text">
1349 <p>arbitrary text describing the purpose of the parameter
1350 (always returned, no matter which driver parameter)
1351 </p>
1352 </blockquote>
1353
1354
1355 <p>MANDATORY -
1356 </p>
1357 <blockquote class="text">
1358 <p>either true or false, defines if this parameter must be
1359 given when the device is to be created with the
1360 <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>
1361 command (always returned, no matter which driver parameter)
1362 </p>
1363 </blockquote>
1364
1365
1366 <p>FIX -
1367 </p>
1368 <blockquote class="text">
1369 <p>either true or false, if false then this parameter can
1370 be changed at any time, once the device is created by
1371 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>
1372 command (always returned, no matter which driver parameter)
1373 </p>
1374 </blockquote>
1375
1376
1377 <p>MULTIPLICITY -
1378 </p>
1379 <blockquote class="text">
1380 <p>either true or false, defines if this parameter allows
1381 only one value or a list of values, where true means
1382 multiple values and false only a single value allowed
1383 (always returned, no matter which driver parameter)
1384 </p>
1385 </blockquote>
1386
1387
1388 <p>DEPENDS -
1389 </p>
1390 <blockquote class="text">
1391 <p>comma separated list of parameters this parameter depends
1392 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1393 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1394 listed parameters, for example assuming that an audio
1395 driver (like the ALSA driver) offers parameters 'card'
1396 and 'samplerate' then parameter 'samplerate' would
1397 depend on 'card' because the possible values for
1398 'samplerate' depends on the sound card which can be
1399 chosen by the 'card' parameter
1400 (optionally returned, dependent to driver parameter)
1401 </p>
1402 </blockquote>
1403
1404
1405 <p>DEFAULT -
1406 </p>
1407 <blockquote class="text">
1408 <p>reflects the default value for this parameter which is
1409 used when the device is created and not explicitly
1410 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,
1411 in case of MULTIPLCITY=true, this is a comma separated
1412 list, that's why character strings are encapsulated into
1413 apostrophes (')
1414 (optionally returned, dependent to driver parameter)
1415 </p>
1416 </blockquote>
1417
1418
1419 <p>RANGE_MIN -
1420 </p>
1421 <blockquote class="text">
1422 <p>defines lower limit of the allowed value range for this
1423 parameter, can be an integer value as well as a dotted
1424 number, this parameter is often used in conjunction
1425 with RANGE_MAX, but may also appear without
1426 (optionally returned, dependent to driver parameter)
1427 </p>
1428 </blockquote>
1429
1430
1431 <p>RANGE_MAX -
1432 </p>
1433 <blockquote class="text">
1434 <p>defines upper limit of the allowed value range for this
1435 parameter, can be an integer value as well as a dotted
1436 number, this parameter is often used in conjunction with
1437 RANGE_MIN, but may also appear without
1438 (optionally returned, dependent to driver parameter)
1439 </p>
1440 </blockquote>
1441
1442
1443 <p>POSSIBILITIES -
1444 </p>
1445 <blockquote class="text">
1446 <p>comma separated list of possible values for this
1447 parameter, character strings are encapsulated into
1448 apostrophes
1449 (optionally returned, dependent to driver parameter)
1450 </p>
1451 </blockquote>
1452
1453
1454 </blockquote><p>
1455
1456 </p>
1457 <p>The mentioned fields above don't have to be in particular order.
1458 </p>
1459 <p>Examples:
1460 </p>
1461 <p>
1462 </p>
1463 <blockquote class="text">
1464 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1465 </p>
1466 <p>S: "DESCRIPTION: sound card to be used"
1467 </p>
1468 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1469 </p>
1470 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1471 </p>
1472 <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1473 </p>
1474 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1475 </p>
1476 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1477 </p>
1478 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1479 </p>
1480 <p>&nbsp;&nbsp;&nbsp;"."
1481 </p>
1482 </blockquote><p>
1483
1484 </p>
1485 <p>
1486 </p>
1487 <blockquote class="text">
1488 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1489 </p>
1490 <p>S: "DESCRIPTION: output sample rate in Hz"
1491 </p>
1492 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1493 </p>
1494 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1495 </p>
1496 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1497 </p>
1498 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1499 </p>
1500 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1501 </p>
1502 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
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 CARD='0,0'"
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;"RANGE_MIN: 22050"
1529 </p>
1530 <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1531 </p>
1532 <p>&nbsp;&nbsp;&nbsp;"."
1533 </p>
1534 </blockquote><p>
1535
1536 </p>
1537 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1538 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1539 <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1540 Creating an audio output device</h3>
1541
1542 <p>Use the following command to create a new audio output device for the desired audio output system:
1543 </p>
1544 <p>
1545 </p>
1546 <blockquote class="text">
1547 <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1548 </p>
1549 </blockquote><p>
1550
1551 </p>
1552 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1553 output system as returned by the
1554 <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>
1555 command and &lt;param-list&gt; by an optional list of driver
1556 specific parameters in form of "key1=val1 key2=val2 ...", where
1557 character string values should be encapsulated into apostrophes (').
1558 Note that there might be drivers which require parameter(s) to be
1559 given with this command. Use the previously described commands in
1560 this chapter to get this information.
1561 </p>
1562 <p>Possible Answers:
1563 </p>
1564 <p>
1565 </p>
1566 <blockquote class="text">
1567 <p>"OK[&lt;device-id&gt;]" -
1568 </p>
1569 <blockquote class="text">
1570 <p>in case the device was successfully created, where
1571 &lt;device-id&gt; is the numerical ID of the new device
1572 </p>
1573 </blockquote>
1574
1575
1576 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1577 </p>
1578 <blockquote class="text">
1579 <p>in case the device was created successfully, where
1580 &lt;device-id&gt; is the numerical ID of the new device, but there
1581 are noteworthy issue(s) related (e.g. sound card doesn't
1582 support given hardware parameters and the driver is using
1583 fall-back values), providing an appropriate warning code and
1584 warning message
1585 </p>
1586 </blockquote>
1587
1588
1589 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1590 </p>
1591 <blockquote class="text">
1592 <p>in case it failed, providing an appropriate error code and error message
1593 </p>
1594 </blockquote>
1595
1596
1597 </blockquote><p>
1598
1599 </p>
1600 <p>Examples:
1601 </p>
1602 <p>
1603 </p>
1604 <blockquote class="text">
1605 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1606 </p>
1607 <p>S: "OK[0]"
1608 </p>
1609 </blockquote><p>
1610
1611 </p>
1612 <p>
1613 </p>
1614 <blockquote class="text">
1615 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1616 </p>
1617 <p>S: "OK[1]"
1618 </p>
1619 </blockquote><p>
1620
1621 </p>
1622 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1623 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1624 <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1625 Destroying an audio output device</h3>
1626
1627 <p>Use the following command to destroy a created output device:
1628 </p>
1629 <p>
1630 </p>
1631 <blockquote class="text">
1632 <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1633 </p>
1634 </blockquote><p>
1635
1636 </p>
1637 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1638 audio output device as given by the
1639 <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>
1640 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>
1641 command.
1642 </p>
1643 <p>Possible Answers:
1644 </p>
1645 <p>
1646 </p>
1647 <blockquote class="text">
1648 <p>"OK" -
1649 </p>
1650 <blockquote class="text">
1651 <p>in case the device was successfully destroyed
1652 </p>
1653 </blockquote>
1654
1655
1656 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1657 </p>
1658 <blockquote class="text">
1659 <p>in case the device was destroyed successfully, but there are
1660 noteworthy issue(s) related (e.g. an audio over ethernet
1661 driver was unloaded but the other host might not be
1662 informed about this situation), providing an appropriate
1663 warning code and warning message
1664 </p>
1665 </blockquote>
1666
1667
1668 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1669 </p>
1670 <blockquote class="text">
1671 <p>in case it failed, providing an appropriate error code and
1672 error message
1673 </p>
1674 </blockquote>
1675
1676
1677 </blockquote><p>
1678
1679 </p>
1680 <p>Example:
1681 </p>
1682 <p>
1683 </p>
1684 <blockquote class="text">
1685 <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1686 </p>
1687 <p>S: "OK"
1688 </p>
1689 </blockquote><p>
1690
1691 </p>
1692 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1693 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1694 <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1695 Getting all created audio output device count</h3>
1696
1697 <p>Use the following command to count all created audio output devices:
1698 </p>
1699 <p>
1700 </p>
1701 <blockquote class="text">
1702 <p>GET AUDIO_OUTPUT_DEVICES
1703 </p>
1704 </blockquote><p>
1705
1706 </p>
1707 <p>Possible Answers:
1708 </p>
1709 <p>
1710 </p>
1711 <blockquote class="text">
1712 <p>LinuxSampler will answer by sending the current number of all
1713 audio output devices.
1714 </p>
1715 </blockquote><p>
1716
1717 </p>
1718 <p>Example:
1719 </p>
1720 <p>
1721 </p>
1722 <blockquote class="text">
1723 <p>C: "GET AUDIO_OUTPUT_DEVICES"
1724 </p>
1725 <p>S: "4"
1726 </p>
1727 </blockquote><p>
1728
1729 </p>
1730 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1731 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1732 <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1733 Getting all created audio output device list</h3>
1734
1735 <p>Use the following command to list all created audio output devices:
1736 </p>
1737 <p>
1738 </p>
1739 <blockquote class="text">
1740 <p>LIST AUDIO_OUTPUT_DEVICES
1741 </p>
1742 </blockquote><p>
1743
1744 </p>
1745 <p>Possible Answers:
1746 </p>
1747 <p>
1748 </p>
1749 <blockquote class="text">
1750 <p>LinuxSampler will answer by sending a comma separated list with
1751 the numerical IDs of all audio output devices.
1752 </p>
1753 </blockquote><p>
1754
1755 </p>
1756 <p>Example:
1757 </p>
1758 <p>
1759 </p>
1760 <blockquote class="text">
1761 <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1762 </p>
1763 <p>S: "0,1,4,5"
1764 </p>
1765 </blockquote><p>
1766
1767 </p>
1768 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1769 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1770 <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1771 Getting current settings of an audio output device</h3>
1772
1773 <p>Use the following command to get current settings of a specific, created audio output device:
1774 </p>
1775 <p>
1776 </p>
1777 <blockquote class="text">
1778 <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1779 </p>
1780 </blockquote><p>
1781
1782 </p>
1783 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1784 of the audio output device as e.g. returned by the
1785 <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.
1786 </p>
1787 <p>Possible Answers:
1788 </p>
1789 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1790 Each answer line begins with the information category name
1791 followed by a colon and then a space character &lt;SP&gt; and finally
1792 the info character string to that info category. As some
1793 parameters might allow multiple values, character strings are
1794 encapsulated into apostrophes ('). At the moment the following
1795 information categories are defined (independently of device):
1796 </p>
1797 <p>
1798 </p>
1799 <blockquote class="text">
1800 <p>DRIVER -
1801 </p>
1802 <blockquote class="text">
1803 <p>identifier of the used audio output driver, as also
1804 returned by the
1805 <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>
1806 command
1807 </p>
1808 </blockquote>
1809
1810
1811 <p>CHANNELS -
1812 </p>
1813 <blockquote class="text">
1814 <p>amount of audio output channels this device currently
1815 offers
1816 </p>
1817 </blockquote>
1818
1819
1820 <p>SAMPLERATE -
1821 </p>
1822 <blockquote class="text">
1823 <p>playback sample rate the device uses
1824 </p>
1825 </blockquote>
1826
1827
1828 <p>ACTIVE -
1829 </p>
1830 <blockquote class="text">
1831 <p>either true or false, if false then the audio device is
1832 inactive and doesn't output any sound, nor do the
1833 sampler channels connected to this audio device render
1834 any audio
1835 </p>
1836 </blockquote>
1837
1838
1839 </blockquote><p>
1840
1841 </p>
1842 <p>The mentioned fields above don't have to be in particular
1843 order. The fields above are only those fields which are
1844 returned by all audio output devices. Every audio output driver
1845 might have its own, additional driver specific parameters (see
1846 <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>)
1847 which are also returned by this command.
1848 </p>
1849 <p>Example:
1850 </p>
1851 <p>
1852 </p>
1853 <blockquote class="text">
1854 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1855 </p>
1856 <p>S: "DRIVER: ALSA"
1857 </p>
1858 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1859 </p>
1860 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1861 </p>
1862 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1863 </p>
1864 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1865 </p>
1866 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1867 </p>
1868 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1869 </p>
1870 <p>&nbsp;&nbsp;&nbsp;"."
1871 </p>
1872 </blockquote><p>
1873
1874 </p>
1875 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1876 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1877 <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1878 Changing settings of audio output devices</h3>
1879
1880 <p>Use the following command to alter a specific setting of a created audio output device:
1881 </p>
1882 <p>
1883 </p>
1884 <blockquote class="text">
1885 <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1886 </p>
1887 </blockquote><p>
1888
1889 </p>
1890 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1891 audio output device as given by the
1892 <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>
1893 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>
1894 command, &lt;key&gt; by the name of the parameter to change
1895 and &lt;value&gt; by the new value for this parameter.
1896 </p>
1897 <p>Possible Answers:
1898 </p>
1899 <p>
1900 </p>
1901 <blockquote class="text">
1902 <p>"OK" -
1903 </p>
1904 <blockquote class="text">
1905 <p>in case setting was successfully changed
1906 </p>
1907 </blockquote>
1908
1909
1910 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1911 </p>
1912 <blockquote class="text">
1913 <p>in case setting was changed successfully, but there are
1914 noteworthy issue(s) related, providing an appropriate
1915 warning code and warning message
1916 </p>
1917 </blockquote>
1918
1919
1920 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1921 </p>
1922 <blockquote class="text">
1923 <p>in case it failed, providing an appropriate error code and
1924 error message
1925 </p>
1926 </blockquote>
1927
1928
1929 </blockquote><p>
1930
1931 </p>
1932 <p>Example:
1933 </p>
1934 <p>
1935 </p>
1936 <blockquote class="text">
1937 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1938 </p>
1939 <p>S: "OK"
1940 </p>
1941 </blockquote><p>
1942
1943 </p>
1944 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
1945 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1946 <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
1947 Getting information about an audio channel</h3>
1948
1949 <p>Use the following command to get information about an audio channel:
1950 </p>
1951 <p>
1952 </p>
1953 <blockquote class="text">
1954 <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1955 </p>
1956 </blockquote><p>
1957
1958 </p>
1959 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1960 <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>
1961 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>
1962 command and &lt;audio-chan&gt; the audio channel number.
1963 </p>
1964 <p>Possible Answers:
1965 </p>
1966 <p>
1967 </p>
1968 <blockquote class="text">
1969 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1970 Each answer line begins with the information category name
1971 followed by a colon and then a space character &lt;SP&gt; and finally
1972 the info character string to that info category. At the moment
1973 the following information categories are defined:
1974 </p>
1975 <p>
1976 </p>
1977 <blockquote class="text">
1978 <p>NAME -
1979 </p>
1980 <blockquote class="text">
1981 <p>arbitrary character string naming the channel, which
1982 doesn't have to be unique (always returned by all audio channels)
1983 </p>
1984 </blockquote>
1985
1986
1987 <p>IS_MIX_CHANNEL -
1988 </p>
1989 <blockquote class="text">
1990 <p>either true or false, a mix-channel is not a real,
1991 independent audio channel, but a virtual channel which
1992 is mixed to another real channel, this mechanism is
1993 needed for sampler engines which need more audio
1994 channels than the used audio system might be able to offer
1995 (always returned by all audio channels)
1996 </p>
1997 </blockquote>
1998
1999
2000 <p>MIX_CHANNEL_DESTINATION -
2001 </p>
2002 <blockquote class="text">
2003 <p>numerical ID (positive integer including 0)
2004 which reflects the real audio channel (of the same audio
2005 output device) this mix channel refers to, means where
2006 the audio signal actually will be routed / added to
2007 (only returned in case the audio channel is mix channel)
2008 </p>
2009 </blockquote>
2010
2011
2012 </blockquote>
2013
2014
2015 </blockquote><p>
2016
2017 </p>
2018 <p>The mentioned fields above don't have to be in particular
2019 order. The fields above are only those fields which are
2020 generally returned for the described cases by all audio
2021 channels regardless of the audio driver. Every audio channel
2022 might have its own, additional driver and channel specific
2023 parameters.
2024 </p>
2025 <p>Examples:
2026 </p>
2027 <p>
2028 </p>
2029 <blockquote class="text">
2030 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2031 </p>
2032 <p>S: "NAME: studio monitor left"
2033 </p>
2034 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2035 </p>
2036 <p>&nbsp;&nbsp;&nbsp;"."
2037 </p>
2038 </blockquote><p>
2039
2040 </p>
2041 <p>
2042 </p>
2043 <blockquote class="text">
2044 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2045 </p>
2046 <p>S: "NAME: studio monitor right"
2047 </p>
2048 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2049 </p>
2050 <p>&nbsp;&nbsp;&nbsp;"."
2051 </p>
2052 </blockquote><p>
2053
2054 </p>
2055 <p>
2056 </p>
2057 <blockquote class="text">
2058 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2059 </p>
2060 <p>S: "NAME: studio monitor left"
2061 </p>
2062 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2063 </p>
2064 <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2065 </p>
2066 <p>&nbsp;&nbsp;&nbsp;"."
2067 </p>
2068 </blockquote><p>
2069
2070 </p>
2071 <p>
2072 </p>
2073 <blockquote class="text">
2074 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2075 </p>
2076 <p>S: "NAME: 'ardour (left)'"
2077 </p>
2078 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2079 </p>
2080 <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2081 </p>
2082 <p>&nbsp;&nbsp;&nbsp;"."
2083 </p>
2084 </blockquote><p>
2085
2086 </p>
2087 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2088 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2089 <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2090 Getting information about specific audio channel parameter</h3>
2091
2092 <p>Use the following command to get detailed information about specific audio channel parameter:
2093 </p>
2094 <p>
2095 </p>
2096 <blockquote class="text">
2097 <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2098 </p>
2099 </blockquote><p>
2100
2101 </p>
2102 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2103 <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>
2104 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>
2105 command, &lt;chan&gt; the audio channel number
2106 and &lt;param&gt; a specific channel parameter name for which information should
2107 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).
2108 </p>
2109 <p>Possible Answers:
2110 </p>
2111 <p>
2112 </p>
2113 <blockquote class="text">
2114 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2115 Each answer line begins with the information category name
2116 followed by a colon and then a space character &lt;SP&gt; and finally
2117 the info character string to that info category. There are
2118 information which is always returned, independently of the
2119 given channel parameter and there is optional information
2120 which is only shown dependently to the given audio channel. At
2121 the moment the following information categories are defined:
2122 </p>
2123 <p>
2124 </p>
2125 <blockquote class="text">
2126 <p>TYPE -
2127 </p>
2128 <blockquote class="text">
2129 <p>either "BOOL" for boolean value(s) or "INT" for integer
2130 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2131 character string(s)
2132 (always returned)
2133 </p>
2134 </blockquote>
2135
2136
2137 <p>DESCRIPTION -
2138 </p>
2139 <blockquote class="text">
2140 <p>arbitrary text describing the purpose of the parameter (always returned)
2141 </p>
2142 </blockquote>
2143
2144
2145 <p>FIX -
2146 </p>
2147 <blockquote class="text">
2148 <p>either true or false, if true then this parameter is
2149 read only, thus cannot be altered
2150 (always returned)
2151 </p>
2152 </blockquote>
2153
2154
2155 <p>MULTIPLICITY -
2156 </p>
2157 <blockquote class="text">
2158 <p>either true or false, defines if this parameter allows
2159 only one value or a list of values, where true means
2160 multiple values and false only a single value allowed
2161 (always returned)
2162 </p>
2163 </blockquote>
2164
2165
2166 <p>RANGE_MIN -
2167 </p>
2168 <blockquote class="text">
2169 <p>defines lower limit of the allowed value range for this
2170 parameter, can be an integer value as well as a dotted
2171 number, usually used in conjunction with 'RANGE_MAX',
2172 but may also appear without
2173 (optionally returned, dependent to driver and channel
2174 parameter)
2175 </p>
2176 </blockquote>
2177
2178
2179 <p>RANGE_MAX -
2180 </p>
2181 <blockquote class="text">
2182 <p>defines upper limit of the allowed value range for this
2183 parameter, can be an integer value as well as a dotted
2184 number, usually used in conjunction with 'RANGE_MIN',
2185 but may also appear without
2186 (optionally returned, dependent to driver and channel
2187 parameter)
2188 </p>
2189 </blockquote>
2190
2191
2192 <p>POSSIBILITIES -
2193 </p>
2194 <blockquote class="text">
2195 <p>comma separated list of possible values for this
2196 parameter, character strings are encapsulated into
2197 apostrophes
2198 (optionally returned, dependent to driver and channel
2199 parameter)
2200 </p>
2201 </blockquote>
2202
2203
2204 </blockquote>
2205
2206
2207 <p>The mentioned fields above don't have to be in particular order.
2208 </p>
2209 </blockquote><p>
2210
2211 </p>
2212 <p>Example:
2213 </p>
2214 <p>
2215 </p>
2216 <blockquote class="text">
2217 <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2218 </p>
2219 <p>S: "DESCRIPTION: bindings to other JACK clients"
2220 </p>
2221 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2222 </p>
2223 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2224 </p>
2225 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2226 </p>
2227 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2228 </p>
2229 <p>&nbsp;&nbsp;&nbsp;"."
2230 </p>
2231 </blockquote><p>
2232
2233 </p>
2234 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2235 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2236 <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2237 Changing settings of audio output channels</h3>
2238
2239 <p>Use the following command to alter a specific setting of an audio output channel:
2240 </p>
2241 <p>
2242 </p>
2243 <blockquote class="text">
2244 <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2245 </p>
2246 </blockquote><p>
2247
2248 </p>
2249 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2250 <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>
2251 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>
2252 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2253 parameter to change and &lt;value&gt; by the new value for this parameter.
2254 </p>
2255 <p>Possible Answers:
2256 </p>
2257 <p>
2258 </p>
2259 <blockquote class="text">
2260 <p>"OK" -
2261 </p>
2262 <blockquote class="text">
2263 <p>in case setting was successfully changed
2264 </p>
2265 </blockquote>
2266
2267
2268 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2269 </p>
2270 <blockquote class="text">
2271 <p>in case setting was changed successfully, but there are
2272 noteworthy issue(s) related, providing an appropriate
2273 warning code and warning message
2274 </p>
2275 </blockquote>
2276
2277
2278 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2279 </p>
2280 <blockquote class="text">
2281 <p>in case it failed, providing an appropriate error code and
2282 error message
2283 </p>
2284 </blockquote>
2285
2286
2287 </blockquote><p>
2288
2289 </p>
2290 <p>Example:
2291 </p>
2292 <p>
2293 </p>
2294 <blockquote class="text">
2295 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2296 </p>
2297 <p>S: "OK"
2298 </p>
2299 </blockquote><p>
2300
2301 </p>
2302 <p>
2303 </p>
2304 <blockquote class="text">
2305 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2306 </p>
2307 <p>S: "OK"
2308 </p>
2309 </blockquote><p>
2310
2311 </p>
2312 <a name="anchor10"></a><br /><hr />
2313 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2314 <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2315 Configuring MIDI input drivers</h3>
2316
2317 <p>Instances of drivers in LinuxSampler are called devices. You can use
2318 multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2319 MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2320 channel. For particular MIDI input systems it's also possible to create
2321 several devices of the same MIDI input type. This chapter describes all
2322 commands to configure LinuxSampler's MIDI input devices and their parameters.
2323 </p>
2324 <p>Instead of defining commands and parameters for each driver individually,
2325 all possible parameters, their meanings and possible values have to be obtained
2326 at runtime. This makes the protocol a bit abstract, but has the advantage, that
2327 front-ends can be written independently of what drivers are currently implemented
2328 and what parameters these drivers are actually offering. This means front-ends can
2329 even handle drivers which are implemented somewhere in future without modifying
2330 the front-end at all.
2331 </p>
2332 <p>Commands for configuring MIDI input devices are pretty much the same as the
2333 commands for configuring audio output drivers, already described in the last
2334 chapter.
2335 </p>
2336 <p>Note: examples in this chapter showing particular parameters of drivers are
2337 not meant as specification of the drivers' parameters. Driver implementations in
2338 LinuxSampler might have complete different parameter names and meanings than shown
2339 in these examples or might change in future, so these examples are only meant for
2340 showing how to retrieve what parameters drivers are offering, how to retrieve their
2341 possible values, etc.
2342 </p>
2343 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2344 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2345 <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2346 Getting amount of available MIDI input drivers</h3>
2347
2348 <p>Use the following command to get the number of
2349 MIDI input drivers currently available for the
2350 LinuxSampler instance:
2351 </p>
2352 <p>
2353 </p>
2354 <blockquote class="text">
2355 <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2356 </p>
2357 </blockquote><p>
2358
2359 </p>
2360 <p>Possible Answers:
2361 </p>
2362 <p>
2363 </p>
2364 <blockquote class="text">
2365 <p>LinuxSampler will answer by sending the
2366 number of available MIDI input drivers.
2367 </p>
2368 </blockquote><p>
2369
2370 </p>
2371 <p>Example:
2372 </p>
2373 <p>
2374 </p>
2375 <blockquote class="text">
2376 <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2377 </p>
2378 <p>S: "2"
2379 </p>
2380 </blockquote><p>
2381
2382 </p>
2383 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2384 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2385 <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2386 Getting all available MIDI input drivers</h3>
2387
2388 <p>Use the following command to list all MIDI input drivers currently available
2389 for the LinuxSampler instance:
2390 </p>
2391 <p>
2392 </p>
2393 <blockquote class="text">
2394 <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2395 </p>
2396 </blockquote><p>
2397
2398 </p>
2399 <p>Possible Answers:
2400 </p>
2401 <p>
2402 </p>
2403 <blockquote class="text">
2404 <p>LinuxSampler will answer by sending comma separated character
2405 strings, each symbolizing a MIDI input driver.
2406 </p>
2407 </blockquote><p>
2408
2409 </p>
2410 <p>Example:
2411 </p>
2412 <p>
2413 </p>
2414 <blockquote class="text">
2415 <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2416 </p>
2417 <p>S: "ALSA,JACK"
2418 </p>
2419 </blockquote><p>
2420
2421 </p>
2422 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2423 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2424 <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2425 Getting information about a specific MIDI input driver</h3>
2426
2427 <p>Use the following command to get detailed information about a specific MIDI input driver:
2428 </p>
2429 <p>
2430 </p>
2431 <blockquote class="text">
2432 <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2433 </p>
2434 </blockquote><p>
2435
2436 </p>
2437 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2438 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.
2439 </p>
2440 <p>Possible Answers:
2441 </p>
2442 <p>
2443 </p>
2444 <blockquote class="text">
2445 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2446 Each answer line begins with the information category name
2447 followed by a colon and then a space character &lt;SP&gt; and finally
2448 the info character string to that info category. At the moment
2449 the following information categories are defined:
2450 </p>
2451 <p>
2452 </p>
2453 <blockquote class="text">
2454 <p>DESCRIPTION -
2455 </p>
2456 <blockquote class="text">
2457 <p>arbitrary description text about the MIDI input driver
2458 </p>
2459 </blockquote>
2460
2461
2462 <p>VERSION -
2463 </p>
2464 <blockquote class="text">
2465 <p>arbitrary character string regarding the driver's version
2466 </p>
2467 </blockquote>
2468
2469
2470 <p>PARAMETERS -
2471 </p>
2472 <blockquote class="text">
2473 <p>comma separated list of all parameters available for the given MIDI input driver
2474 </p>
2475 </blockquote>
2476
2477
2478 </blockquote>
2479
2480
2481 <p>The mentioned fields above don't have to be in particular order.
2482 </p>
2483 </blockquote><p>
2484
2485 </p>
2486 <p>Example:
2487 </p>
2488 <p>
2489 </p>
2490 <blockquote class="text">
2491 <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2492 </p>
2493 <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2494 </p>
2495 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2496 </p>
2497 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2498 </p>
2499 <p>&nbsp;&nbsp;&nbsp;"."
2500 </p>
2501 </blockquote><p>
2502
2503 </p>
2504 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2505 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2506 <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2507 Getting information about specific MIDI input driver parameter</h3>
2508
2509 <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2510 </p>
2511 <p>
2512 </p>
2513 <blockquote class="text">
2514 <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2515 </p>
2516 </blockquote><p>
2517
2518 </p>
2519 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2520 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
2521 parameter name for which information should be obtained (as returned by the
2522 <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
2523 of parameters on which the sought parameter &lt;param&gt; depends on,
2524 &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2525 where character string values are encapsulated into apostrophes ('). Arguments
2526 given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2527 will be ignored, means the front-end application can simply put all parameters
2528 in &lt;deplist&gt; with the values selected by the user.
2529 </p>
2530 <p>Possible Answers:
2531 </p>
2532 <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2533 Each answer line begins with the information category name
2534 followed by a colon and then a space character &lt;SP> and finally
2535 the info character string to that info category. There is
2536 information which is always returned, independent of the
2537 given driver parameter and there is optional information
2538 which is only shown dependent to given driver parameter. At
2539 the moment the following information categories are defined:
2540 </p>
2541 <p>
2542 </p>
2543 <blockquote class="text">
2544 <p>TYPE -
2545 </p>
2546 <blockquote class="text">
2547 <p>either "BOOL" for boolean value(s) or "INT" for integer
2548 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2549 character string(s)
2550 (always returned, no matter which driver parameter)
2551 </p>
2552 </blockquote>
2553
2554
2555 <p>DESCRIPTION -
2556 </p>
2557 <blockquote class="text">
2558 <p>arbitrary text describing the purpose of the parameter
2559 (always returned, no matter which driver parameter)
2560 </p>
2561 </blockquote>
2562
2563
2564 <p>MANDATORY -
2565 </p>
2566 <blockquote class="text">
2567 <p>either true or false, defines if this parameter must be
2568 given when the device is to be created with the
2569 <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
2570 (always returned, no matter which driver parameter)
2571 </p>
2572 </blockquote>
2573
2574
2575 <p>FIX -
2576 </p>
2577 <blockquote class="text">
2578 <p>either true or false, if false then this parameter can
2579 be changed at any time, once the device is created by
2580 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
2581 (always returned, no matter which driver parameter)
2582 </p>
2583 </blockquote>
2584
2585
2586 <p>MULTIPLICITY -
2587 </p>
2588 <blockquote class="text">
2589 <p>either true or false, defines if this parameter allows
2590 only one value or a list of values, where true means
2591 multiple values and false only a single value allowed
2592 (always returned, no matter which driver parameter)
2593 </p>
2594 </blockquote>
2595
2596
2597 <p>DEPENDS -
2598 </p>
2599 <blockquote class="text">
2600 <p>comma separated list of parameters this parameter depends
2601 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2602 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2603 listed parameters, for example assuming that an audio
2604 driver (like the ALSA driver) offers parameters 'card'
2605 and 'samplerate' then parameter 'samplerate' would
2606 depend on 'card' because the possible values for
2607 'samplerate' depends on the sound card which can be
2608 chosen by the 'card' parameter
2609 (optionally returned, dependent to driver parameter)
2610 </p>
2611 </blockquote>
2612
2613
2614 <p>DEFAULT -
2615 </p>
2616 <blockquote class="text">
2617 <p>reflects the default value for this parameter which is
2618 used when the device is created and not explicitly
2619 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,
2620 in case of MULTIPLCITY=true, this is a comma separated
2621 list, that's why character strings are encapsulated into
2622 apostrophes (')
2623 (optionally returned, dependent to driver parameter)
2624 </p>
2625 </blockquote>
2626
2627
2628 <p>RANGE_MIN -
2629 </p>
2630 <blockquote class="text">
2631 <p>defines lower limit of the allowed value range for this
2632 parameter, can be an integer value as well as a dotted
2633 number, this parameter is often used in conjunction
2634 with RANGE_MAX, but may also appear without
2635 (optionally returned, dependent to driver parameter)
2636 </p>
2637 </blockquote>
2638
2639
2640 <p>RANGE_MAX -
2641 </p>
2642 <blockquote class="text">
2643 <p>defines upper limit of the allowed value range for this
2644 parameter, can be an integer value as well as a dotted
2645 number, this parameter is often used in conjunction with
2646 RANGE_MIN, but may also appear without
2647 (optionally returned, dependent to driver parameter)
2648 </p>
2649 </blockquote>
2650
2651
2652 <p>POSSIBILITIES -
2653 </p>
2654 <blockquote class="text">
2655 <p>comma separated list of possible values for this
2656 parameter, character strings are encapsulated into
2657 apostrophes
2658 (optionally returned, dependent to driver parameter)
2659 </p>
2660 </blockquote>
2661
2662
2663 </blockquote><p>
2664
2665 </p>
2666 <p>The mentioned fields above don't have to be in particular order.
2667 </p>
2668 <p>Example:
2669 </p>
2670 <p>
2671 </p>
2672 <blockquote class="text">
2673 <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2674 </p>
2675 <p>S: "DESCRIPTION: Whether device is enabled"
2676 </p>
2677 <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2678 </p>
2679 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2680 </p>
2681 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2682 </p>
2683 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2684 </p>
2685 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2686 </p>
2687 <p>&nbsp;&nbsp;&nbsp;"."
2688 </p>
2689 </blockquote><p>
2690
2691 </p>
2692 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2693 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2694 <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2695 Creating a MIDI input device</h3>
2696
2697 <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2698 </p>
2699 <p>
2700 </p>
2701 <blockquote class="text">
2702 <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2703 </p>
2704 </blockquote><p>
2705
2706 </p>
2707 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2708 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
2709 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2710 character string values should be encapsulated into apostrophes (').
2711 Note that there might be drivers which require parameter(s) to be
2712 given with this command. Use the previously described commands in
2713 this chapter to get that information.
2714 </p>
2715 <p>Possible Answers:
2716 </p>
2717 <p>
2718 </p>
2719 <blockquote class="text">
2720 <p>"OK[&lt;device-id&gt;]" -
2721 </p>
2722 <blockquote class="text">
2723 <p>in case the device was successfully created, where
2724 &lt;device-id&gt; is the numerical ID of the new device
2725 </p>
2726 </blockquote>
2727
2728
2729 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2730 </p>
2731 <blockquote class="text">
2732 <p>in case the driver was loaded successfully, where
2733 &lt;device-id&gt; is the numerical ID of the new device, but
2734 there are noteworthy issue(s) related, providing an
2735 appropriate warning code and warning message
2736 </p>
2737 </blockquote>
2738
2739
2740 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2741 </p>
2742 <blockquote class="text">
2743 <p>in case it failed, providing an appropriate error code and error message
2744 </p>
2745 </blockquote>
2746
2747
2748 </blockquote><p>
2749
2750 </p>
2751 <p>Example:
2752 </p>
2753 <p>
2754 </p>
2755 <blockquote class="text">
2756 <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2757 </p>
2758 <p>S: "OK[0]"
2759 </p>
2760 </blockquote><p>
2761
2762 </p>
2763 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2764 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2765 <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2766 Destroying a MIDI input device</h3>
2767
2768 <p>Use the following command to destroy a created MIDI input device:
2769 </p>
2770 <p>
2771 </p>
2772 <blockquote class="text">
2773 <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2774 </p>
2775 </blockquote><p>
2776
2777 </p>
2778 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2779 <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>
2780 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>
2781 command.
2782 </p>
2783 <p>Possible Answers:
2784 </p>
2785 <p>
2786 </p>
2787 <blockquote class="text">
2788 <p>"OK" -
2789 </p>
2790 <blockquote class="text">
2791 <p>in case the device was successfully destroyed
2792 </p>
2793 </blockquote>
2794
2795
2796 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2797 </p>
2798 <blockquote class="text">
2799 <p>in case the device was destroyed, but there are noteworthy
2800 issue(s) related, providing an appropriate warning code and
2801 warning message
2802 </p>
2803 </blockquote>
2804
2805
2806 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2807 </p>
2808 <blockquote class="text">
2809 <p>in case it failed, providing an appropriate error code and error message
2810 </p>
2811 </blockquote>
2812
2813
2814 </blockquote><p>
2815
2816 </p>
2817 <p>Example:
2818 </p>
2819 <p>
2820 </p>
2821 <blockquote class="text">
2822 <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2823 </p>
2824 <p>S: "OK"
2825 </p>
2826 </blockquote><p>
2827
2828 </p>
2829 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2830 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2831 <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2832 Getting all created MIDI input device count</h3>
2833
2834 <p>Use the following command to count all created MIDI input devices:
2835 </p>
2836 <p>
2837 </p>
2838 <blockquote class="text">
2839 <p>GET MIDI_INPUT_DEVICES
2840 </p>
2841 </blockquote><p>
2842
2843 </p>
2844 <p>Possible Answers:
2845 </p>
2846 <p>
2847 </p>
2848 <blockquote class="text">
2849 <p>LinuxSampler will answer by sending the current number of all
2850 MIDI input devices.
2851 </p>
2852 </blockquote><p>
2853
2854 </p>
2855 <p>Example:
2856 </p>
2857 <p>
2858 </p>
2859 <blockquote class="text">
2860 <p>C: "GET MIDI_INPUT_DEVICES"
2861 </p>
2862 <p>S: "3"
2863 </p>
2864 </blockquote><p>
2865
2866 </p>
2867 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2868 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2869 <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2870 Getting all created MIDI input device list</h3>
2871
2872 <p>Use the following command to list all created MIDI input devices:
2873 </p>
2874 <p>
2875 </p>
2876 <blockquote class="text">
2877 <p>LIST MIDI_INPUT_DEVICES
2878 </p>
2879 </blockquote><p>
2880
2881 </p>
2882 <p>Possible Answers:
2883 </p>
2884 <p>
2885 </p>
2886 <blockquote class="text">
2887 <p>LinuxSampler will answer by sending a comma separated list
2888 with the numerical Ids of all created MIDI input devices.
2889 </p>
2890 </blockquote><p>
2891
2892 </p>
2893 <p>Examples:
2894 </p>
2895 <p>
2896 </p>
2897 <blockquote class="text">
2898 <p>C: "LIST MIDI_INPUT_DEVICES"
2899 </p>
2900 <p>S: "0,1,2"
2901 </p>
2902 </blockquote><p>
2903
2904 </p>
2905 <p>
2906 </p>
2907 <blockquote class="text">
2908 <p>C: "LIST MIDI_INPUT_DEVICES"
2909 </p>
2910 <p>S: "1,3"
2911 </p>
2912 </blockquote><p>
2913
2914 </p>
2915 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2916 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2917 <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2918 Getting current settings of a MIDI input device</h3>
2919
2920 <p>Use the following command to get current settings of a specific, created MIDI input device:
2921 </p>
2922 <p>
2923 </p>
2924 <blockquote class="text">
2925 <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2926 </p>
2927 </blockquote><p>
2928
2929 </p>
2930 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2931 <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>
2932 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>
2933 command.
2934 </p>
2935 <p>Possible Answers:
2936 </p>
2937 <p>
2938 </p>
2939 <blockquote class="text">
2940 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2941 Each answer line begins with the information category name
2942 followed by a colon and then a space character &lt;SP&gt; and finally
2943 the info character string to that info category. As some
2944 parameters might allow multiple values, character strings are
2945 encapsulated into apostrophes ('). At the moment the following
2946 information categories are defined (independent of driver):
2947 </p>
2948 <p>
2949 </p>
2950 <blockquote class="text">
2951 <p>DRIVER -
2952 </p>
2953 <blockquote class="text">
2954 <p>identifier of the used MIDI input driver, as e.g.
2955 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>
2956 command
2957 </p>
2958 </blockquote>
2959
2960
2961 </blockquote>
2962
2963 <blockquote class="text">
2964 <p>ACTIVE -
2965 </p>
2966 <blockquote class="text">
2967 <p>either true or false, if false then the MIDI device is
2968 inactive and doesn't listen to any incoming MIDI events
2969 and thus doesn't forward them to connected sampler
2970 channels
2971 </p>
2972 </blockquote>
2973
2974
2975 </blockquote>
2976
2977
2978 </blockquote><p>
2979
2980 </p>
2981 <p>The mentioned fields above don't have to be in particular
2982 order. The fields above are only those fields which are
2983 returned by all MIDI input devices. Every MIDI input driver
2984 might have its own, additional driver specific parameters (see
2985 <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
2986 by this command.
2987 </p>
2988 <p>Example:
2989 </p>
2990 <p>
2991 </p>
2992 <blockquote class="text">
2993 <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
2994 </p>
2995 <p>S: "DRIVER: ALSA"
2996 </p>
2997 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
2998 </p>
2999 <p>&nbsp;&nbsp;&nbsp;"."
3000 </p>
3001 </blockquote><p>
3002
3003 </p>
3004 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3005 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3006 <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3007 Changing settings of MIDI input devices</h3>
3008
3009 <p>Use the following command to alter a specific setting of a created MIDI input device:
3010 </p>
3011 <p>
3012 </p>
3013 <blockquote class="text">
3014 <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3015 </p>
3016 </blockquote><p>
3017
3018 </p>
3019 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3020 MIDI input device as returned by the
3021 <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>
3022 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>
3023 command, &lt;key&gt; by the name of the parameter to change and
3024 &lt;value&gt; by the new value for this parameter.
3025 </p>
3026 <p>Possible Answers:
3027 </p>
3028 <p>
3029 </p>
3030 <blockquote class="text">
3031 <p>"OK" -
3032 </p>
3033 <blockquote class="text">
3034 <p>in case setting was successfully changed
3035 </p>
3036 </blockquote>
3037
3038
3039 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3040 </p>
3041 <blockquote class="text">
3042 <p>in case setting was changed successfully, but there are
3043 noteworthy issue(s) related, providing an appropriate
3044 warning code and warning message
3045 </p>
3046 </blockquote>
3047
3048
3049 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3050 </p>
3051 <blockquote class="text">
3052 <p>in case it failed, providing an appropriate error code and error message
3053 </p>
3054 </blockquote>
3055
3056
3057 </blockquote><p>
3058
3059 </p>
3060 <p>Example:
3061 </p>
3062 <p>
3063 </p>
3064 <blockquote class="text">
3065 <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3066 </p>
3067 <p>S: "OK"
3068 </p>
3069 </blockquote><p>
3070
3071 </p>
3072 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3073 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3074 <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3075 Getting information about a MIDI port</h3>
3076
3077 <p>Use the following command to get information about a MIDI port:
3078 </p>
3079 <p>
3080 </p>
3081 <blockquote class="text">
3082 <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3083 </p>
3084 </blockquote><p>
3085
3086 </p>
3087 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3088 <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>
3089 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>
3090 command and &lt;midi-port&gt; the MIDI input port number.
3091 </p>
3092 <p>Possible Answers:
3093 </p>
3094 <p>
3095 </p>
3096 <blockquote class="text">
3097 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3098 Each answer line begins with the information category name
3099 followed by a colon and then a space character &lt;SP&gt; and finally
3100 the info character string to that info category. At the moment
3101 the following information categories are defined:
3102 </p>
3103 <p>NAME -
3104 </p>
3105 <blockquote class="text">
3106 <p>arbitrary character string naming the port
3107 </p>
3108 </blockquote>
3109
3110
3111 </blockquote><p>
3112
3113 </p>
3114 <p>The field above is only the one which is returned by all MIDI
3115 ports regardless of the MIDI driver and port. Every MIDI port
3116 might have its own, additional driver and port specific
3117 parameters.
3118 </p>
3119 <p>Example:
3120 </p>
3121 <p>
3122 </p>
3123 <blockquote class="text">
3124 <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3125 </p>
3126 <p>S: "NAME: 'Masterkeyboard'"
3127 </p>
3128 <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3129 </p>
3130 <p>&nbsp;&nbsp;&nbsp;"."
3131 </p>
3132 </blockquote><p>
3133
3134 </p>
3135 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3136 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3137 <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3138 Getting information about specific MIDI port parameter</h3>
3139
3140 <p>Use the following command to get detailed information about specific MIDI port parameter:
3141 </p>
3142 <p>
3143 </p>
3144 <blockquote class="text">
3145 <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3146 </p>
3147 </blockquote><p>
3148
3149 </p>
3150 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3151 <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>
3152 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>
3153 command, &lt;port&gt; the MIDI port number and
3154 &lt;param&gt; a specific port parameter name for which information should be
3155 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).
3156 </p>
3157 <p>Possible Answers:
3158 </p>
3159 <p>
3160 </p>
3161 <blockquote class="text">
3162 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3163 Each answer line begins with the information category name
3164 followed by a colon and then a space character &lt;SP&gt; and finally
3165 the info character string to that info category. There is
3166 information which is always returned, independently of the
3167 given channel parameter and there is optional information
3168 which are only shown dependently to the given MIDI port. At the
3169 moment the following information categories are defined:
3170 </p>
3171 <p>TYPE -
3172 </p>
3173 <blockquote class="text">
3174 <p>either "BOOL" for boolean value(s) or "INT" for integer
3175 value(s) or "FLOAT" for dotted number(s) or "STRING" for
3176 character string(s)
3177 (always returned)
3178 </p>
3179 </blockquote>
3180
3181
3182 <p>DESCRIPTION -
3183 </p>
3184 <blockquote class="text">
3185 <p>arbitrary text describing the purpose of the parameter
3186 (always returned)
3187 </p>
3188 </blockquote>
3189
3190
3191 <p>FIX -
3192 </p>
3193 <blockquote class="text">
3194 <p>either true or false, if true then this parameter is
3195 read only, thus cannot be altered
3196 (always returned)
3197 </p>
3198 </blockquote>
3199
3200
3201 <p>MULTIPLICITY -
3202 </p>
3203 <blockquote class="text">
3204 <p>either true or false, defines if this parameter allows
3205 only one value or a list of values, where true means
3206 multiple values and false only a single value allowed
3207 (always returned)
3208 </p>
3209 </blockquote>
3210
3211
3212 <p>RANGE_MIN -
3213 </p>
3214 <blockquote class="text">
3215 <p>defines lower limit of the allowed value range for this
3216 parameter, can be an integer value as well as a dotted
3217 number, this parameter is usually used in conjunction
3218 with 'RANGE_MAX' but may also appear without
3219 (optionally returned, dependent to driver and port
3220 parameter)
3221 </p>
3222 </blockquote>
3223
3224
3225 <p>RANGE_MAX -
3226 </p>
3227 <blockquote class="text">
3228 <p>defines upper limit of the allowed value range for this
3229 parameter, can be an integer value as well as a dotted
3230 number, this parameter is usually used in conjunction
3231 with 'RANGE_MIN' but may also appear without
3232 (optionally returned, dependent to driver and port
3233 parameter)
3234 </p>
3235 </blockquote>
3236
3237
3238 <p>POSSIBILITIES -
3239 </p>
3240 <blockquote class="text">
3241 <p>comma separated list of possible values for this
3242 parameter, character strings are encapsulated into
3243 apostrophes
3244 (optionally returned, dependent to device and port
3245 parameter)
3246 </p>
3247 </blockquote>
3248
3249
3250 </blockquote><p>
3251
3252 </p>
3253 <p>The mentioned fields above don't have to be in particular order.
3254 </p>
3255 <p>Example:
3256 </p>
3257 <p>
3258 </p>
3259 <blockquote class="text">
3260 <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3261 </p>
3262 <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3263 </p>
3264 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3265 </p>
3266 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3267 </p>
3268 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3269 </p>
3270 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3271 </p>
3272 <p>&nbsp;&nbsp;&nbsp;"."
3273 </p>
3274 </blockquote><p>
3275
3276 </p>
3277 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3278 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3279 <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3280 Changing settings of MIDI input ports</h3>
3281
3282 <p>Use the following command to alter a specific setting of a MIDI input port:
3283 </p>
3284 <p>
3285 </p>
3286 <blockquote class="text">
3287 <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3288 </p>
3289 </blockquote><p>
3290
3291 </p>
3292 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3293 MIDI device as returned by the
3294 <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>
3295 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>
3296 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3297 the parameter to change and &lt;value&gt; by the new value for this
3298 parameter.
3299 </p>
3300 <p>Possible Answers:
3301 </p>
3302 <p>
3303 </p>
3304 <blockquote class="text">
3305 <p>"OK" -
3306 </p>
3307 <blockquote class="text">
3308 <p>in case setting was successfully changed
3309 </p>
3310 </blockquote>
3311
3312
3313 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3314 </p>
3315 <blockquote class="text">
3316 <p>in case setting was changed successfully, but there are
3317 noteworthy issue(s) related, providing an appropriate
3318 warning code and warning message
3319 </p>
3320 </blockquote>
3321
3322
3323 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3324 </p>
3325 <blockquote class="text">
3326 <p>in case it failed, providing an appropriate error code and error message
3327 </p>
3328 </blockquote>
3329
3330
3331 </blockquote><p>
3332
3333 </p>
3334 <p>Example:
3335 </p>
3336 <p>
3337 </p>
3338 <blockquote class="text">
3339 <p>
3340 </p>
3341 </blockquote><p>
3342
3343 </p>
3344 <a name="anchor11"></a><br /><hr />
3345 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3346 <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3347 Configuring sampler channels</h3>
3348
3349 <p>The following commands describe how to add and remove sampler channels, associate a
3350 sampler channel with a sampler engine, load instruments and connect sampler channels to
3351 MIDI and audio devices.
3352 </p>
3353 <a name="LOAD INSTRUMENT"></a><br /><hr />
3354 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3355 <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3356 Loading an instrument</h3>
3357
3358 <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3359 </p>
3360 <p>
3361 </p>
3362 <blockquote class="text">
3363 <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3364 </p>
3365 </blockquote><p>
3366
3367 </p>
3368 <p>Where &lt;filename&gt; is the name of the instrument file on the
3369 LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3370 instrument in the instrument file and &lt;sampler-channel> is the
3371 number of the sampler channel the instrument should be assigned to.
3372 Each sampler channel can only have one instrument.
3373 </p>
3374 <p>The difference between regular and NON_MODAL versions of the command
3375 is that the regular command returns OK only after the instrument has been
3376 fully loaded and the channel is ready to be used while NON_MODAL version
3377 returns immediately and a background process is launched to load the instrument
3378 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>
3379 command can be used to obtain loading
3380 progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3381 such as making sure that the file could be read and it is of a proper format
3382 and SHOULD return ERR and SHOULD not launch the background process should any
3383 errors be detected at that point.
3384 </p>
3385 <p>Possible Answers:
3386 </p>
3387 <p>
3388 </p>
3389 <blockquote class="text">
3390 <p>"OK" -
3391 </p>
3392 <blockquote class="text">
3393 <p>in case the instrument was successfully loaded
3394 </p>
3395 </blockquote>
3396
3397
3398 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3399 </p>
3400 <blockquote class="text">
3401 <p>in case the instrument was loaded successfully, but there
3402 are noteworthy issue(s) related (e.g. Engine doesn't support
3403 one or more patch parameters provided by the loaded
3404 instrument file), providing an appropriate warning code and
3405 warning message
3406 </p>
3407 </blockquote>
3408
3409
3410 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3411 </p>
3412 <blockquote class="text">
3413 <p>in case it failed, providing an appropriate error code and error message
3414 </p>
3415 </blockquote>
3416
3417
3418 </blockquote><p>
3419
3420 </p>
3421 <p>Example:
3422 </p>
3423 <p>
3424 </p>
3425 <blockquote class="text">
3426 <p>
3427 </p>
3428 </blockquote><p>
3429
3430 </p>
3431 <a name="LOAD ENGINE"></a><br /><hr />
3432 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3433 <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3434 Loading a sampler engine</h3>
3435
3436 <p>A sampler engine type can be associated to a specific sampler
3437 channel by the following command:
3438 </p>
3439 <p>
3440 </p>
3441 <blockquote class="text">
3442 <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3443 </p>
3444 </blockquote><p>
3445
3446 </p>
3447 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3448 <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;
3449 the sampler channel as returned by the
3450 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3451 <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
3452 the engine type should be assigned to. This command should be issued
3453 after adding a new sampler channel and before any other control
3454 commands on the new sampler channel. It can also be used to change
3455 the engine type of a sampler channel. This command has (currently) no
3456 way to define or force if a new engine instance should be created and
3457 assigned to the given sampler channel or if an already existing
3458 instance of that engine type, shared with other sampler channels,
3459 should be used.
3460 </p>
3461 <p>Possible Answers:
3462 </p>
3463 <p>
3464 </p>
3465 <blockquote class="text">
3466 <p>"OK" -
3467 </p>
3468 <blockquote class="text">
3469 <p>in case the engine was successfully deployed
3470 </p>
3471 </blockquote>
3472
3473
3474 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3475 </p>
3476 <blockquote class="text">
3477 <p>in case the engine was deployed successfully, but there
3478 are noteworthy issue(s) related, providing an appropriate
3479 warning code and warning message
3480 </p>
3481 </blockquote>
3482
3483
3484 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3485 </p>
3486 <blockquote class="text">
3487 <p>in case it failed, providing an appropriate error code and
3488 error message
3489 </p>
3490 </blockquote>
3491
3492
3493 </blockquote><p>
3494
3495 </p>
3496 <p>Example:
3497 </p>
3498 <p>
3499 </p>
3500 <blockquote class="text">
3501 <p>
3502 </p>
3503 </blockquote><p>
3504
3505 </p>
3506 <a name="GET CHANNELS"></a><br /><hr />
3507 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3508 <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3509 Getting all created sampler channel count</h3>
3510
3511 <p>The number of sampler channels can change on runtime. To get the
3512 current amount of sampler channels, the front-end can send the
3513 following command:
3514 </p>
3515 <p>
3516 </p>
3517 <blockquote class="text">
3518 <p>GET CHANNELS
3519 </p>
3520 </blockquote><p>
3521
3522 </p>
3523 <p>Possible Answers:
3524 </p>
3525 <p>
3526 </p>
3527 <blockquote class="text">
3528 <p>LinuxSampler will answer by returning the current number of sampler channels.
3529 </p>
3530 </blockquote><p>
3531
3532 </p>
3533 <p>Example:
3534 </p>
3535 <p>
3536 </p>
3537 <blockquote class="text">
3538 <p>C: "GET CHANNELS"
3539 </p>
3540 <p>S: "12"
3541 </p>
3542 </blockquote><p>
3543
3544 </p>
3545 <a name="LIST CHANNELS"></a><br /><hr />
3546 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3547 <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3548 Getting all created sampler channel list</h3>
3549
3550 <p>The number of sampler channels can change on runtime. To get the
3551 current list of sampler channels, the front-end can send the
3552 following command:
3553 </p>
3554 <p>
3555 </p>
3556 <blockquote class="text">
3557 <p>LIST CHANNELS
3558 </p>
3559 </blockquote><p>
3560
3561 </p>
3562 <p>Possible Answers:
3563 </p>
3564 <p>
3565 </p>
3566 <blockquote class="text">
3567 <p>LinuxSampler will answer by returning a comma separated list
3568 with all sampler channels numerical IDs.
3569 </p>
3570 </blockquote><p>
3571
3572 </p>
3573 <p>Example:
3574 </p>
3575 <p>
3576 </p>
3577 <blockquote class="text">
3578 <p>C: "LIST CHANNELS"
3579 </p>
3580 <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3581 </p>
3582 </blockquote><p>
3583
3584 </p>
3585 <a name="ADD CHANNEL"></a><br /><hr />
3586 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3587 <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3588 Adding a new sampler channel</h3>
3589
3590 <p>A new sampler channel can be added to the end of the sampler
3591 channel list by sending the following command:
3592 </p>
3593 <p>
3594 </p>
3595 <blockquote class="text">
3596 <p>ADD CHANNEL
3597 </p>
3598 </blockquote><p>
3599
3600 </p>
3601 <p>This will increment the sampler channel count by one and the new
3602 sampler channel will be appended to the end of the sampler channel
3603 list. The front-end should send the respective, related commands
3604 right after to e.g. load an engine, load an instrument and setting
3605 input, output method and eventually other commands to initialize
3606 the new channel. The front-end should use the sampler channel
3607 returned by the answer of this command to perform the previously
3608 recommended commands, to avoid race conditions e.g. with other
3609 front-ends that might also have sent an "ADD CHANNEL" command.
3610 </p>
3611 <p>Possible Answers:
3612 </p>
3613 <p>
3614 </p>
3615 <blockquote class="text">
3616 <p>"OK[&lt;sampler-channel&gt;]" -
3617 </p>
3618 <blockquote class="text">
3619 <p>in case a new sampler channel could be added, where
3620 &lt;sampler-channel&gt; reflects the channel number of the new
3621 created sampler channel which should be used to set up
3622 the sampler channel by sending subsequent initialization
3623 commands
3624 </p>
3625 </blockquote>
3626
3627
3628 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3629 </p>
3630 <blockquote class="text">
3631 <p>in case a new channel was added successfully, but there are
3632 noteworthy issue(s) related, providing an appropriate
3633 warning code and warning message
3634 </p>
3635 </blockquote>
3636
3637
3638 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3639 </p>
3640 <blockquote class="text">
3641 <p>in case it failed, providing an appropriate error code and
3642 error message
3643 </p>
3644 </blockquote>
3645
3646
3647 </blockquote><p>
3648
3649 </p>
3650 <p>Example:
3651 </p>
3652 <p>
3653 </p>
3654 <blockquote class="text">
3655 <p>
3656 </p>
3657 </blockquote><p>
3658
3659 </p>
3660 <a name="REMOVE CHANNEL"></a><br /><hr />
3661 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3662 <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3663 Removing a sampler channel</h3>
3664
3665 <p>A sampler channel can be removed by sending the following command:
3666 </p>
3667 <p>
3668 </p>
3669 <blockquote class="text">
3670 <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3671 </p>
3672 </blockquote><p>
3673
3674 </p>
3675 <p>Where &lt;sampler-channel&gt; should be replaced by the
3676 number of the sampler channel as given by the
3677 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3678 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3679 command. The channel numbers of all subsequent sampler channels
3680 remain the same.
3681 </p>
3682 <p>Possible Answers:
3683 </p>
3684 <p>
3685 </p>
3686 <blockquote class="text">
3687 <p>"OK" -
3688 </p>
3689 <blockquote class="text">
3690 <p>in case the given sampler channel could be removed
3691 </p>
3692 </blockquote>
3693
3694
3695 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3696 </p>
3697 <blockquote class="text">
3698 <p>in case the given channel was removed, but there are
3699 noteworthy issue(s) related, providing an appropriate
3700 warning code and warning message
3701 </p>
3702 </blockquote>
3703
3704
3705 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3706 </p>
3707 <blockquote class="text">
3708 <p>in case it failed, providing an appropriate error code and
3709 error message
3710 </p>
3711 </blockquote>
3712
3713
3714 </blockquote><p>
3715
3716 </p>
3717 <p>Example:
3718 </p>
3719 <p>
3720 </p>
3721 <blockquote class="text">
3722 <p>
3723 </p>
3724 </blockquote><p>
3725
3726 </p>
3727 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3728 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3729 <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3730 Getting amount of available engines</h3>
3731
3732 <p>The front-end can ask for the number of available engines by sending the following command:
3733 </p>
3734 <p>
3735 </p>
3736 <blockquote class="text">
3737 <p>GET AVAILABLE_ENGINES
3738 </p>
3739 </blockquote><p>
3740
3741 </p>
3742 <p>Possible Answers:
3743 </p>
3744 <p>
3745 </p>
3746 <blockquote class="text">
3747 <p>LinuxSampler will answer by sending the number of available engines.
3748 </p>
3749 </blockquote><p>
3750
3751 </p>
3752 <p>Example:
3753 </p>
3754 <p>
3755 </p>
3756 <blockquote class="text">
3757 <p>C: "GET AVAILABLE_ENGINES"
3758 </p>
3759 <p>S: "4"
3760 </p>
3761 </blockquote><p>
3762
3763 </p>
3764 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3765 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3766 <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3767 Getting all available engines</h3>
3768
3769 <p>The front-end can ask for a list of all available engines by sending the following command:
3770 </p>
3771 <p>
3772 </p>
3773 <blockquote class="text">
3774 <p>LIST AVAILABLE_ENGINES
3775 </p>
3776 </blockquote><p>
3777
3778 </p>
3779 <p>Possible Answers:
3780 </p>
3781 <p>
3782 </p>
3783 <blockquote class="text">
3784 <p>LinuxSampler will answer by sending a comma separated list
3785 of the engines' names encapsulated into apostrophes (').
3786 Engine names can consist of lower and upper cases,
3787 digits and underlines ("_" character).
3788 </p>
3789 </blockquote><p>
3790
3791 </p>
3792 <p>Example:
3793 </p>
3794 <p>
3795 </p>
3796 <blockquote class="text">
3797 <p>C: "LIST AVAILABLE_ENGINES"
3798 </p>
3799 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3800 </p>
3801 </blockquote><p>
3802
3803 </p>
3804 <a name="GET ENGINE INFO"></a><br /><hr />
3805 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3806 <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3807 Getting information about an engine</h3>
3808
3809 <p>The front-end can ask for information about a specific engine by
3810 sending the following command:
3811 </p>
3812 <p>
3813 </p>
3814 <blockquote class="text">
3815 <p>GET ENGINE INFO &lt;engine-name&gt;
3816 </p>
3817 </blockquote><p>
3818
3819 </p>
3820 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3821 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3822 </p>
3823 <p>Possible Answers:
3824 </p>
3825 <p>
3826 </p>
3827 <blockquote class="text">
3828 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3829 Each answer line begins with the information category name
3830 followed by a colon and then a space character &lt;SP&gt; and finally
3831 the info character string to that info category. At the moment
3832 the following categories are defined:
3833 </p>
3834 <p>
3835 </p>
3836 <blockquote class="text">
3837 <p>DESCRIPTION -
3838 </p>
3839 <blockquote class="text">
3840 <p>arbitrary description text about the engine
3841 </p>
3842 </blockquote>
3843
3844
3845 <p>VERSION -
3846 </p>
3847 <blockquote class="text">
3848 <p>arbitrary character string regarding the engine's version
3849 </p>
3850 </blockquote>
3851
3852
3853 </blockquote>
3854
3855
3856 </blockquote><p>
3857
3858 </p>
3859 <p>The mentioned fields above don't have to be in particular order.
3860 </p>
3861 <p>Example:
3862 </p>
3863 <p>
3864 </p>
3865 <blockquote class="text">
3866 <p>C: "GET ENGINE INFO JoesCustomEngine"
3867 </p>
3868 <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3869 </p>
3870 <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3871 </p>
3872 <p>&nbsp;&nbsp;&nbsp;"."
3873 </p>
3874 </blockquote><p>
3875
3876 </p>
3877 <a name="GET CHANNEL INFO"></a><br /><hr />
3878 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3879 <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3880 Getting sampler channel information</h3>
3881
3882 <p>The front-end can ask for the current settings of a sampler channel
3883 by sending the following command:
3884 </p>
3885 <p>
3886 </p>
3887 <blockquote class="text">
3888 <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3889 </p>
3890 </blockquote><p>
3891
3892 </p>
3893 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3894 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>
3895 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.
3896 </p>
3897 <p>Possible Answers:
3898 </p>
3899 <p>
3900 </p>
3901 <blockquote class="text">
3902 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3903 Each answer line begins with the settings category name
3904 followed by a colon and then a space character &lt;SP&gt; and finally
3905 the info character string to that setting category. At the
3906 moment the following categories are defined:
3907 </p>
3908 <p>
3909 </p>
3910 <blockquote class="text">
3911 <p>ENGINE_NAME -
3912 </p>
3913 <blockquote class="text">
3914 <p>name of the engine that is associated with the sampler
3915 channel, "NONE" if there's no engine associated yet for
3916 this sampler channel
3917 </p>
3918 </blockquote>
3919
3920
3921 <p>AUDIO_OUTPUT_DEVICE -
3922 </p>
3923 <blockquote class="text">
3924 <p>numerical ID of the audio output device which is
3925 currently connected to this sampler channel to output
3926 the audio signal, "NONE" if there's no device
3927 connected to this sampler channel
3928 </p>
3929 </blockquote>
3930
3931
3932 <p>AUDIO_OUTPUT_CHANNELS -
3933 </p>
3934 <blockquote class="text">
3935 <p>number of output channels the sampler channel offers
3936 (dependent to used sampler engine and loaded instrument)
3937 </p>
3938 </blockquote>
3939
3940
3941 <p>AUDIO_OUTPUT_ROUTING -
3942 </p>
3943 <blockquote class="text">
3944 <p>comma separated list which reflects to which audio
3945 channel of the selected audio output device each
3946 sampler output channel is routed to, e.g. "0,3" would
3947 mean the engine's output channel 0 is routed to channel
3948 0 of the audio output device and the engine's output
3949 channel 1 is routed to the channel 3 of the audio
3950 output device
3951 </p>
3952 </blockquote>
3953
3954
3955 <p>INSTRUMENT_FILE -
3956 </p>
3957 <blockquote class="text">
3958 <p>the file name of the loaded instrument, "NONE" if
3959 there's no instrument yet loaded for this sampler
3960 channel
3961 </p>
3962 </blockquote>
3963
3964
3965 <p>INSTRUMENT_NR -
3966 </p>
3967 <blockquote class="text">
3968 <p>the instrument index number of the loaded instrument
3969 </p>
3970 </blockquote>
3971
3972
3973 <p>INSTRUMENT_NAME -
3974 </p>
3975 <blockquote class="text">
3976 <p>the instrument name of the loaded instrument
3977 </p>
3978 </blockquote>
3979
3980
3981 <p>INSTRUMENT_STATUS -
3982 </p>
3983 <blockquote class="text">
3984 <p>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative
3985 value indicates a loading exception. Value of 100 indicates that the instrument is fully
3986 loaded.
3987 </p>
3988 </blockquote>
3989
3990
3991 <p>MIDI_INPUT_DEVICE -
3992 </p>
3993 <blockquote class="text">
3994 <p>numerical ID of the MIDI input device which is
3995 currently connected to this sampler channel to deliver
3996 MIDI input commands, "NONE" if there's no device
3997 connected to this sampler channel
3998 </p>
3999 </blockquote>
4000
4001
4002 <p>MIDI_INPUT_PORT -
4003 </p>
4004 <blockquote class="text">
4005 <p>port number of the MIDI input device
4006 </p>
4007 </blockquote>
4008
4009
4010 <p>MIDI_INPUT_CHANNEL -
4011 </p>
4012 <blockquote class="text">
4013 <p>the MIDI input channel number this sampler channel
4014 should listen to or "ALL" to listen on all MIDI channels
4015 </p>
4016 </blockquote>
4017
4018
4019 <p>VOLUME -
4020 </p>
4021 <blockquote class="text">
4022 <p>optionally dotted number for the channel volume factor
4023 (where a value &lt; 1.0 means attenuation and a value >
4024 1.0 means amplification)
4025 </p>
4026 </blockquote>
4027
4028
4029 <p>MUTE -
4030 </p>
4031 <blockquote class="text">
4032 <p>Determines whether the channel is muted, "true" if the
4033 channel is muted, "false" if the channel is not muted, and
4034 "MUTED_BY_SOLO" if the channel is muted because of the
4035 presence of a solo channel and will be unmuted when
4036 there are no solo channels left
4037 </p>
4038 </blockquote>
4039
4040
4041 <p>SOLO -
4042 </p>
4043 <blockquote class="text">
4044 <p>Determines whether this is a solo channel, "true" if
4045 the channel is a solo channel; "false" otherwise
4046 </p>
4047 </blockquote>
4048
4049
4050 <p>MIDI_INSTRUMENT_MAP -
4051 </p>
4052 <blockquote class="text">
4053 <p>Determines to which MIDI instrument map this sampler
4054 channel is assigned to. Read chapter
4055 <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>
4056 for a list of possible values.
4057 </p>
4058 </blockquote>
4059
4060
4061 </blockquote>
4062
4063
4064 </blockquote><p>
4065
4066 </p>
4067 <p>The mentioned fields above don't have to be in particular order.
4068 </p>
4069 <p>Example:
4070 </p>
4071 <p>
4072 </p>
4073 <blockquote class="text">
4074 <p>C: "GET CHANNEL INFO 34"
4075 </p>
4076 <p>S: "ENGINE_NAME: GigEngine"
4077 </p>
4078 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4079 </p>
4080 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4081 </p>
4082 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4083 </p>
4084 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4085 </p>
4086 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4087 </p>
4088 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4089 </p>
4090 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4091 </p>
4092 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4093 </p>
4094 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4095 </p>
4096 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4097 </p>
4098 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4099 </p>
4100 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4101 </p>
4102 <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4103 </p>
4104 <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4105 </p>
4106 <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4107 </p>
4108 <p>&nbsp;&nbsp;&nbsp;"."
4109 </p>
4110 </blockquote><p>
4111
4112 </p>
4113 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4114 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4115 <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4116 Current number of active voices</h3>
4117
4118 <p>The front-end can ask for the current number of active voices on a
4119 sampler channel by sending the following command:
4120 </p>
4121 <p>
4122 </p>
4123 <blockquote class="text">
4124 <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4125 </p>
4126 </blockquote><p>
4127
4128 </p>
4129 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4130 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>
4131 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.
4132 </p>
4133 <p>Possible Answers:
4134 </p>
4135 <p>
4136 </p>
4137 <blockquote class="text">
4138 <p>LinuxSampler will answer by returning the number of active
4139 voices on that channel.
4140 </p>
4141 </blockquote><p>
4142
4143 </p>
4144 <p>Example:
4145 </p>
4146 <p>
4147 </p>
4148 <blockquote class="text">
4149 <p>
4150 </p>
4151 </blockquote><p>
4152
4153 </p>
4154 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4155 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4156 <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4157 Current number of active disk streams</h3>
4158
4159 <p>The front-end can ask for the current number of active disk streams
4160 on a sampler channel by sending the following command:
4161 </p>
4162 <p>
4163 </p>
4164 <blockquote class="text">
4165 <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4166 </p>
4167 </blockquote><p>
4168
4169 </p>
4170 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4171 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>
4172 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.
4173 </p>
4174 <p>Possible Answers:
4175 </p>
4176 <p>
4177 </p>
4178 <blockquote class="text">
4179 <p>LinuxSampler will answer by returning the number of active
4180 disk streams on that channel in case the engine supports disk
4181 streaming, if the engine doesn't support disk streaming it will
4182 return "NA" for not available.
4183 </p>
4184 </blockquote><p>
4185
4186 </p>
4187 <p>Example:
4188 </p>
4189 <p>
4190 </p>
4191 <blockquote class="text">
4192 <p>
4193 </p>
4194 </blockquote><p>
4195
4196 </p>
4197 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4198 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4199 <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4200 Current fill state of disk stream buffers</h3>
4201
4202 <p>The front-end can ask for the current fill state of all disk streams
4203 on a sampler channel by sending the following command:
4204 </p>
4205 <p>
4206 </p>
4207 <blockquote class="text">
4208 <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4209 </p>
4210 </blockquote><p>
4211
4212 </p>
4213 <p>to get the fill state in bytes or
4214 </p>
4215 <p>
4216 </p>
4217 <blockquote class="text">
4218 <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4219 </p>
4220 </blockquote><p>
4221
4222 </p>
4223 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4224 sampler channel number the front-end is interested in
4225 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>
4226 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.
4227 </p>
4228 <p>Possible Answers:
4229 </p>
4230 <p>
4231 </p>
4232 <blockquote class="text">
4233 <p>LinuxSampler will either answer by returning a comma separated
4234 string with the fill state of all disk stream buffers on that
4235 channel or an empty line if there are no active disk streams or
4236 "NA" for *not available* in case the engine which is deployed
4237 doesn't support disk streaming. Each entry in the answer list
4238 will begin with the stream's ID in brackets followed by the
4239 numerical representation of the fill size (either in bytes or
4240 percentage). Note: due to efficiency reasons the fill states in
4241 the response are not in particular order, thus the front-end has
4242 to sort them by itself if necessary.
4243 </p>
4244 </blockquote><p>
4245
4246 </p>
4247 <p>Examples:
4248 </p>
4249 <p>
4250 </p>
4251 <blockquote class="text">
4252 <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4253 </p>
4254 <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4255 </p>
4256 </blockquote><p>
4257
4258 </p>
4259 <blockquote class="text">
4260 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4261 </p>
4262 <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4263 </p>
4264 </blockquote><p>
4265
4266 </p>
4267 <blockquote class="text">
4268 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4269 </p>
4270 <p>S: ""
4271 </p>
4272 </blockquote><p>
4273
4274 </p>
4275 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4276 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4277 <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4278 Setting audio output device</h3>
4279
4280 <p>The front-end can set the audio output device on a specific sampler
4281 channel by sending the following command:
4282 </p>
4283 <p>
4284 </p>
4285 <blockquote class="text">
4286 <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4287 </p>
4288 </blockquote><p>
4289
4290 </p>
4291 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4292 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>
4293 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
4294 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4295 <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>
4296 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>
4297 command.
4298 </p>
4299 <p>Possible Answers:
4300 </p>
4301 <p>
4302 </p>
4303 <blockquote class="text">
4304 <p>"OK" -
4305 </p>
4306 <blockquote class="text">
4307 <p>on success
4308 </p>
4309 </blockquote>
4310
4311
4312 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4313 </p>
4314 <blockquote class="text">
4315 <p>if audio output device was set, but there are noteworthy
4316 issue(s) related, providing an appropriate warning code and
4317 warning message
4318 </p>
4319 </blockquote>
4320
4321
4322 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4323 </p>
4324 <blockquote class="text">
4325 <p>in case it failed, providing an appropriate error code and error message
4326 </p>
4327 </blockquote>
4328
4329
4330 </blockquote><p>
4331
4332 </p>
4333 <p>Examples:
4334 </p>
4335 <p>
4336 </p>
4337 <blockquote class="text">
4338 <p>
4339 </p>
4340 </blockquote><p>
4341
4342 </p>
4343 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4344 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4345 <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4346 Setting audio output type</h3>
4347
4348 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4349 </p>
4350 <p>The front-end can alter the audio output type on a specific sampler
4351 channel by sending the following command:
4352 </p>
4353 <p>
4354 </p>
4355 <blockquote class="text">
4356 <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4357 </p>
4358 </blockquote><p>
4359
4360 </p>
4361 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4362 &lt;sampler-channel&gt; is the respective sampler channel number.
4363 </p>
4364 <p>Possible Answers:
4365 </p>
4366 <p>
4367 </p>
4368 <blockquote class="text">
4369 <p>"OK" -
4370 </p>
4371 <blockquote class="text">
4372 <p>on success
4373 </p>
4374 </blockquote>
4375
4376
4377 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4378 </p>
4379 <blockquote class="text">
4380 <p>if audio output type was set, but there are noteworthy
4381 issue(s) related, providing an appropriate warning code and
4382 warning message
4383 </p>
4384 </blockquote>
4385
4386
4387 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4388 </p>
4389 <blockquote class="text">
4390 <p>in case it failed, providing an appropriate error code and error message
4391 </p>
4392 </blockquote>
4393
4394
4395 </blockquote><p>
4396
4397 </p>
4398 <p>Examples:
4399 </p>
4400 <p>
4401 </p>
4402 <blockquote class="text">
4403 <p>
4404 </p>
4405 </blockquote><p>
4406
4407 </p>
4408 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4409 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4410 <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4411 Setting audio output channel</h3>
4412
4413 <p>The front-end can alter the audio output channel on a specific
4414 sampler channel by sending the following command:
4415 </p>
4416 <p>
4417 </p>
4418 <blockquote class="text">
4419 <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4420 </p>
4421 </blockquote><p>
4422
4423 </p>
4424 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4425 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>
4426 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
4427 numerical ID of the sampler channel's audio output channel which should be
4428 rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4429 output device where &lt;audio-out&gt; should be routed to.
4430 </p>
4431 <p>Possible Answers:
4432 </p>
4433 <p>
4434 </p>
4435 <blockquote class="text">
4436 <p>"OK" -
4437 </p>
4438 <blockquote class="text">
4439 <p>on success
4440 </p>
4441 </blockquote>
4442
4443
4444 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4445 </p>
4446 <blockquote class="text">
4447 <p>if audio output channel was set, but there are noteworthy
4448 issue(s) related, providing an appropriate warning code and
4449 warning message
4450 </p>
4451 </blockquote>
4452
4453
4454 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4455 </p>
4456 <blockquote class="text">
4457 <p>in case it failed, providing an appropriate error code and error message
4458 </p>
4459 </blockquote>
4460
4461
4462 </blockquote><p>
4463
4464 </p>
4465 <p>Examples:
4466 </p>
4467 <p>
4468 </p>
4469 <blockquote class="text">
4470 <p>
4471 </p>
4472 </blockquote><p>
4473
4474 </p>
4475 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4476 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4477 <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4478 Setting MIDI input device</h3>
4479
4480 <p>The front-end can set the MIDI input device on a specific sampler
4481 channel by sending the following command:
4482 </p>
4483 <p>
4484 </p>
4485 <blockquote class="text">
4486 <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4487 </p>
4488 </blockquote><p>
4489
4490 </p>
4491 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4492 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>
4493 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
4494 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4495 <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>
4496 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.
4497 </p>
4498 <p>Possible Answers:
4499 </p>
4500 <p>
4501 </p>
4502 <blockquote class="text">
4503 <p>"OK" -
4504 </p>
4505 <blockquote class="text">
4506 <p>on success
4507 </p>
4508 </blockquote>
4509
4510
4511 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4512 </p>
4513 <blockquote class="text">
4514 <p>if MIDI input device was set, but there are noteworthy
4515 issue(s) related, providing an appropriate warning code and
4516 warning message
4517 </p>
4518 </blockquote>
4519
4520
4521 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4522 </p>
4523 <blockquote class="text">
4524 <p>in case it failed, providing an appropriate error code and error message
4525 </p>
4526 </blockquote>
4527
4528
4529 </blockquote><p>
4530
4531 </p>
4532 <p>Examples:
4533 </p>
4534 <p>
4535 </p>
4536 <blockquote class="text">
4537 <p>
4538 </p>
4539 </blockquote><p>
4540
4541 </p>
4542 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4543 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4544 <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4545 Setting MIDI input type</h3>
4546
4547 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4548 </p>
4549 <p>The front-end can alter the MIDI input type on a specific sampler
4550 channel by sending the following command:
4551 </p>
4552 <p>
4553 </p>
4554 <blockquote class="text">
4555 <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4556 </p>
4557 </blockquote><p>
4558
4559 </p>
4560 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4561 &lt;sampler-channel&gt; is the respective sampler channel number.
4562 </p>
4563 <p>Possible Answers:
4564 </p>
4565 <p>
4566 </p>
4567 <blockquote class="text">
4568 <p>"OK" -
4569 </p>
4570 <blockquote class="text">
4571 <p>on success
4572 </p>
4573 </blockquote>
4574
4575
4576 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4577 </p>
4578 <blockquote class="text">
4579 <p>if MIDI input type was set, but there are noteworthy
4580 issue(s) related, providing an appropriate warning code and
4581 warning message
4582 </p>
4583 </blockquote>
4584
4585
4586 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4587 </p>
4588 <blockquote class="text">
4589 <p>in case it failed, providing an appropriate error code and error message
4590 </p>
4591 </blockquote>
4592
4593
4594 </blockquote><p>
4595
4596 </p>
4597 <p>Examples:
4598 </p>
4599 <p>
4600 </p>
4601 <blockquote class="text">
4602 <p>
4603 </p>
4604 </blockquote><p>
4605
4606 </p>
4607 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4608 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4609 <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4610 Setting MIDI input port</h3>
4611
4612 <p>The front-end can alter the MIDI input port on a specific sampler
4613 channel by sending the following command:
4614 </p>
4615 <p>
4616 </p>
4617 <blockquote class="text">
4618 <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4619 </p>
4620 </blockquote><p>
4621
4622 </p>
4623 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4624 MIDI input device connected to the sampler channel given by
4625 &lt;sampler-channel&gt;.
4626 </p>
4627 <p>Possible Answers:
4628 </p>
4629 <p>
4630 </p>
4631 <blockquote class="text">
4632 <p>"OK" -
4633 </p>
4634 <blockquote class="text">
4635 <p>on success
4636 </p>
4637 </blockquote>
4638
4639
4640 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4641 </p>
4642 <blockquote class="text">
4643 <p>if MIDI input port was set, but there are noteworthy
4644 issue(s) related, providing an appropriate warning code and
4645 warning message
4646 </p>
4647 </blockquote>
4648
4649
4650 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4651 </p>
4652 <blockquote class="text">
4653 <p>in case it failed, providing an appropriate error code and error message
4654 </p>
4655 </blockquote>
4656
4657
4658 </blockquote><p>
4659
4660 </p>
4661 <p>Examples:
4662 </p>
4663 <p>
4664 </p>
4665 <blockquote class="text">
4666 <p>
4667 </p>
4668 </blockquote><p>
4669
4670 </p>
4671 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4672 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4673 <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4674 Setting MIDI input channel</h3>
4675
4676 <p>The front-end can alter the MIDI channel a sampler channel should
4677 listen to by sending the following command:
4678 </p>
4679 <p>
4680 </p>
4681 <blockquote class="text">
4682 <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4683 </p>
4684 </blockquote><p>
4685
4686 </p>
4687 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4688 &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4689 channels.
4690 </p>
4691 <p>Possible Answers:
4692 </p>
4693 <p>
4694 </p>
4695 <blockquote class="text">
4696 <p>"OK" -
4697 </p>
4698 <blockquote class="text">
4699 <p>on success
4700 </p>
4701 </blockquote>
4702
4703
4704 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4705 </p>
4706 <blockquote class="text">
4707 <p>if MIDI input channel was set, but there are noteworthy
4708 issue(s) related, providing an appropriate warning code and
4709 warning message
4710 </p>
4711 </blockquote>
4712
4713
4714 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4715 </p>
4716 <blockquote class="text">
4717 <p>in case it failed, providing an appropriate error code and error message
4718 </p>
4719 </blockquote>
4720
4721
4722 </blockquote><p>
4723
4724 </p>
4725 <p>Examples:
4726 </p>
4727 <p>
4728 </p>
4729 <blockquote class="text">
4730 <p>
4731 </p>
4732 </blockquote><p>
4733
4734 </p>
4735 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4736 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4737 <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4738 Setting channel volume</h3>
4739
4740 <p>The front-end can alter the volume of a sampler channel by sending
4741 the following command:
4742 </p>
4743 <p>
4744 </p>
4745 <blockquote class="text">
4746 <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4747 </p>
4748 </blockquote><p>
4749
4750 </p>
4751 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4752 smaller than 1.0 means attenuation, whereas a value greater than
4753 1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4754 channel where this volume factor should be set.
4755 </p>
4756 <p>Possible Answers:
4757 </p>
4758 <p>
4759 </p>
4760 <blockquote class="text">
4761 <p>"OK" -
4762 </p>
4763 <blockquote class="text">
4764 <p>on success
4765 </p>
4766 </blockquote>
4767
4768
4769 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4770 </p>
4771 <blockquote class="text">
4772 <p>if channel volume was set, but there are noteworthy
4773 issue(s) related, providing an appropriate warning code and
4774 warning message
4775 </p>
4776 </blockquote>
4777
4778
4779 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4780 </p>
4781 <blockquote class="text">
4782 <p>in case it failed, providing an appropriate error code and error message
4783 </p>
4784 </blockquote>
4785
4786
4787 </blockquote><p>
4788
4789 </p>
4790 <p>Examples:
4791 </p>
4792 <p>
4793 </p>
4794 <blockquote class="text">
4795 <p>
4796 </p>
4797 </blockquote><p>
4798
4799 </p>
4800 <a name="SET CHANNEL MUTE"></a><br /><hr />
4801 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4802 <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4803 Muting a sampler channel</h3>
4804
4805 <p>The front-end can mute/unmute a specific sampler
4806 channel by sending the following command:
4807 </p>
4808 <p>
4809 </p>
4810 <blockquote class="text">
4811 <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4812 </p>
4813 </blockquote><p>
4814
4815 </p>
4816 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4817 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>
4818 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
4819 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4820 to unmute the channel.
4821 </p>
4822 <p>Possible Answers:
4823 </p>
4824 <p>
4825 </p>
4826 <blockquote class="text">
4827 <p>"OK" -
4828 </p>
4829 <blockquote class="text">
4830 <p>on success
4831 </p>
4832 </blockquote>
4833
4834
4835 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4836 </p>
4837 <blockquote class="text">
4838 <p>if the channel was muted/unmuted, but there are noteworthy
4839 issue(s) related, providing an appropriate warning code and
4840 warning message
4841 </p>
4842 </blockquote>
4843
4844
4845 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4846 </p>
4847 <blockquote class="text">
4848 <p>in case it failed, providing an appropriate error code and error message
4849 </p>
4850 </blockquote>
4851
4852
4853 </blockquote><p>
4854
4855 </p>
4856 <p>Examples:
4857 </p>
4858 <p>
4859 </p>
4860 <blockquote class="text">
4861 <p>
4862 </p>
4863 </blockquote><p>
4864
4865 </p>
4866 <a name="SET CHANNEL SOLO"></a><br /><hr />
4867 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4868 <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4869 Soloing a sampler channel</h3>
4870
4871 <p>The front-end can solo/unsolo a specific sampler channel
4872 by sending the following command:
4873 </p>
4874 <p>
4875 </p>
4876 <blockquote class="text">
4877 <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4878 </p>
4879 </blockquote><p>
4880
4881 </p>
4882 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4883 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>
4884 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
4885 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
4886 to unsolo the channel.
4887 </p>
4888 <p>Possible Answers:
4889 </p>
4890 <p>
4891 </p>
4892 <blockquote class="text">
4893 <p>"OK" -
4894 </p>
4895 <blockquote class="text">
4896 <p>on success
4897 </p>
4898 </blockquote>
4899
4900
4901 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4902 </p>
4903 <blockquote class="text">
4904 <p>if the channel was soloed/unsoloed, but there are noteworthy
4905 issue(s) related, providing an appropriate warning code and
4906 warning message
4907 </p>
4908 </blockquote>
4909
4910
4911 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4912 </p>
4913 <blockquote class="text">
4914 <p>in case it failed, providing an appropriate error code and error message
4915 </p>
4916 </blockquote>
4917
4918
4919 </blockquote><p>
4920
4921 </p>
4922 <p>Examples:
4923 </p>
4924 <p>
4925 </p>
4926 <blockquote class="text">
4927 <p>
4928 </p>
4929 </blockquote><p>
4930
4931 </p>
4932 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
4933 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4934 <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
4935 Assigning a MIDI instrument map to a sampler channel</h3>
4936
4937 <p>The front-end can assign a MIDI instrument map to a specific sampler channel
4938 by sending the following command:
4939 </p>
4940 <p>
4941 </p>
4942 <blockquote class="text">
4943 <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
4944 </p>
4945 </blockquote><p>
4946
4947 </p>
4948 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4949 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>
4950 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
4951 &lt;map&gt; can have the following possibilites:
4952 </p>
4953 <p>
4954 </p>
4955 <blockquote class="text">
4956 <p>"NONE" -
4957 </p>
4958 <blockquote class="text">
4959 <p>This is the default setting. In this case
4960 the sampler channel is not assigned any MIDI
4961 instrument map and thus will ignore all MIDI
4962 program change messages.
4963 </p>
4964 </blockquote>
4965
4966
4967 <p>"DEFAULT" -
4968 </p>
4969 <blockquote class="text">
4970 <p>The sampler channel will always use the
4971 default MIDI instrument map to handle MIDI
4972 program change messages.
4973 </p>
4974 </blockquote>
4975
4976
4977 <p>numeric ID -
4978 </p>
4979 <blockquote class="text">
4980 <p>You can assign a specific MIDI instrument map
4981 by replacing &lt;map&gt; with the respective numeric
4982 ID of the MIDI instrument map as returned by the
4983 <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>
4984 command. Once that map will be deleted, the sampler
4985 channel would fall back to "NONE".
4986 </p>
4987 </blockquote>
4988
4989
4990 </blockquote><p>
4991
4992 </p>
4993 <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>
4994 for details regarding MIDI instrument mapping.
4995 </p>
4996 <p>Possible Answers:
4997 </p>
4998 <p>
4999 </p>
5000 <blockquote class="text">
5001 <p>"OK" -
5002 </p>
5003 <blockquote class="text">
5004 <p>on success
5005 </p>
5006 </blockquote>
5007
5008
5009 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5010 </p>
5011 <blockquote class="text">
5012 <p>in case it failed, providing an appropriate error code and error message
5013 </p>
5014 </blockquote>
5015
5016
5017 </blockquote><p>
5018
5019 </p>
5020 <p>Examples:
5021 </p>
5022 <p>
5023 </p>
5024 <blockquote class="text">
5025 <p>
5026 </p>
5027 </blockquote><p>
5028
5029 </p>
5030 <a name="CREATE FX_SEND"></a><br /><hr />
5031 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5032 <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5033 Adding an effect send to a sampler channel</h3>
5034
5035 <p>The front-end can create an additional effect send on a specific sampler channel
5036 by sending the following command:
5037 </p>
5038 <p>
5039 </p>
5040 <blockquote class="text">
5041 <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5042 </p>
5043 </blockquote><p>
5044
5045 </p>
5046 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5047 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>
5048 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
5049 sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5050 is a number between 0..127 defining the MIDI controller which can alter the
5051 effect send level and &lt;name&gt; is an optional argument defining a name
5052 for the effect send entity. The name does not have to be unique.
5053 </p>
5054 <p>By default, that is as initial routing, the effect send's audio channels
5055 are automatically routed to the last audio channels of the sampler channel's
5056 audio output device, that way you can i.e. first increase the amount of audio
5057 channels on the audio output device for having dedicated effect send output
5058 channels and when "CREATE FX_SEND" is called, those channels will automatically
5059 be picked. You can alter the destination channels however with
5060 <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>.
5061
5062 </p>
5063 <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5064 sends on a sampler channel will decrease runtime performance, because for implementing channel
5065 effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5066 the voices and route the audio signal afterwards to the master outputs and effect send
5067 outputs (along with their respective effect send levels). A sampler channel without effect
5068 sends however can mix its voices directly into the audio output devices's audio buffers
5069 and is thus faster.
5070
5071 </p>
5072 <p>Possible Answers:
5073 </p>
5074 <p>
5075 </p>
5076 <blockquote class="text">
5077 <p>"OK[&lt;fx-send-id&gt;]" -
5078 </p>
5079 <blockquote class="text">
5080 <p>in case a new effect send could be added to the
5081 sampler channel, where &lt;fx-send-id&gt; reflects the
5082 unique ID of the newly created effect send entity
5083 </p>
5084 </blockquote>
5085
5086
5087 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5088 </p>
5089 <blockquote class="text">
5090 <p>when a new effect send could not be added, i.e.
5091 due to invalid parameters
5092 </p>
5093 </blockquote>
5094
5095
5096 </blockquote><p>
5097
5098 </p>
5099 <p>Examples:
5100 </p>
5101 <p>
5102 </p>
5103 <blockquote class="text">
5104 <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5105 </p>
5106 <p>S: "OK[0]"
5107 </p>
5108 </blockquote><p>
5109
5110 </p>
5111 <p>
5112 </p>
5113 <blockquote class="text">
5114 <p>C: "CREATE FX_SEND 0 93"
5115 </p>
5116 <p>S: "OK[1]"
5117 </p>
5118 </blockquote><p>
5119
5120 </p>
5121 <a name="DESTROY FX_SEND"></a><br /><hr />
5122 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5123 <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5124 Removing an effect send from a sampler channel</h3>
5125
5126 <p>The front-end can remove an existing effect send on a specific sampler channel
5127 by sending the following command:
5128 </p>
5129 <p>
5130 </p>
5131 <blockquote class="text">
5132 <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5133 </p>
5134 </blockquote><p>
5135
5136 </p>
5137 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5138 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>
5139 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
5140 sampler channel from which the effect send should be removed from and
5141 &lt;fx-send-id&gt; is the respective effect send number as returned by the
5142 <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>
5143 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.
5144 </p>
5145 <p>Possible Answers:
5146 </p>
5147 <p>
5148 </p>
5149 <blockquote class="text">
5150 <p>"OK" -
5151 </p>
5152 <blockquote class="text">
5153 <p>on success
5154 </p>
5155 </blockquote>
5156
5157
5158 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5159 </p>
5160 <blockquote class="text">
5161 <p>in case it failed, providing an appropriate error code and
5162 error message
5163 </p>
5164 </blockquote>
5165
5166
5167 </blockquote><p>
5168
5169 </p>
5170 <p>Example:
5171 </p>
5172 <p>
5173 </p>
5174 <blockquote class="text">
5175 <p>C: "DESTROY FX_SEND 0 0"
5176 </p>
5177 <p>S: "OK"
5178 </p>
5179 </blockquote><p>
5180
5181 </p>
5182 <a name="GET FX_SENDS"></a><br /><hr />
5183 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5184 <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5185 Getting amount of effect sends on a sampler channel</h3>
5186
5187 <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5188 by sending the following command:
5189 </p>
5190 <p>
5191 </p>
5192 <blockquote class="text">
5193 <p>GET FX_SENDS &lt;sampler-channel&gt;
5194 </p>
5195 </blockquote><p>
5196
5197 </p>
5198 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5199 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>
5200 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.
5201 </p>
5202 <p>Possible Answers:
5203 </p>
5204 <p>
5205 </p>
5206 <blockquote class="text">
5207 <p>The sampler will answer by returning the number of effect
5208 sends on the given sampler channel.
5209 </p>
5210 </blockquote><p>
5211
5212 </p>
5213 <p>Example:
5214 </p>
5215 <p>
5216 </p>
5217 <blockquote class="text">
5218 <p>C: "GET FX_SENDS 0"
5219 </p>
5220 <p>S: "2"
5221 </p>
5222 </blockquote><p>
5223
5224 </p>
5225 <a name="LIST FX_SENDS"></a><br /><hr />
5226 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5227 <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5228 Listing all effect sends on a sampler channel</h3>
5229
5230 <p>The front-end can ask for a list of effect sends on a specific sampler channel
5231 by sending the following command:
5232 </p>
5233 <p>
5234 </p>
5235 <blockquote class="text">
5236 <p>LIST FX_SENDS &lt;sampler-channel&gt;
5237 </p>
5238 </blockquote><p>
5239
5240 </p>
5241 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5242 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>
5243 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.
5244 </p>
5245 <p>Possible Answers:
5246 </p>
5247 <p>
5248 </p>
5249 <blockquote class="text">
5250 <p>The sampler will answer by returning a comma separated list
5251 with all effect sends' numerical IDs on the given sampler
5252 channel.
5253 </p>
5254 </blockquote><p>
5255
5256 </p>
5257 <p>Examples:
5258 </p>
5259 <p>
5260 </p>
5261 <blockquote class="text">
5262 <p>C: "LIST FX_SENDS 0"
5263 </p>
5264 <p>S: "0,1"
5265 </p>
5266 </blockquote><p>
5267
5268 </p>
5269 <p>
5270 </p>
5271 <blockquote class="text">
5272 <p>C: "LIST FX_SENDS 1"
5273 </p>
5274 <p>S: ""
5275 </p>
5276 </blockquote><p>
5277
5278 </p>
5279 <a name="GET FX_SEND INFO"></a><br /><hr />
5280 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5281 <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5282 Getting effect send information</h3>
5283
5284 <p>The front-end can ask for the current settings of an effect send entity
5285 by sending the following command:
5286 </p>
5287 <p>
5288 </p>
5289 <blockquote class="text">
5290 <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5291 </p>
5292 </blockquote><p>
5293
5294 </p>
5295 <p>Where &lt;sampler-channel&gt; is the sampler channel number
5296 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>
5297 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
5298 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5299 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>
5300 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.
5301
5302 </p>
5303 <p>Possible Answers:
5304 </p>
5305 <p>
5306 </p>
5307 <blockquote class="text">
5308 <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5309 Each answer line begins with the settings category name
5310 followed by a colon and then a space character &lt;SP&gt; and finally
5311 the info character string to that setting category. At the
5312 moment the following categories are defined:
5313 </p>
5314 <p>
5315 </p>
5316 <blockquote class="text">
5317 <p>NAME -
5318 </p>
5319 <blockquote class="text">
5320 <p>name of the effect send entity
5321 </p>
5322 </blockquote>
5323
5324
5325 <p>MIDI_CONTROLLER -
5326 </p>
5327 <blockquote class="text">
5328 <p>a value between 0 and 127 reflecting the MIDI controller
5329 which is able to modify the effect send's send level
5330 </p>
5331 </blockquote>
5332
5333
5334 <p>LEVEL -
5335 </p>
5336 <blockquote class="text">
5337 <p>optionally dotted number reflecting the effect send's
5338 current send level (where a value &lt; 1.0 means attenuation
5339 and a value > 1.0 means amplification)
5340 </p>
5341 </blockquote>
5342
5343
5344 <p>AUDIO_OUTPUT_ROUTING -
5345 </p>
5346 <blockquote class="text">
5347 <p>comma separated list which reflects to which audio
5348 channel of the selected audio output device each
5349 effect send output channel is routed to, e.g. "0,3" would
5350 mean the effect send's output channel 0 is routed to channel
5351 0 of the audio output device and the effect send's output
5352 channel 1 is routed to the channel 3 of the audio
5353 output device (see
5354 <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>
5355 for details)
5356 </p>
5357 </blockquote>
5358
5359
5360 </blockquote>
5361
5362
5363 </blockquote><p>
5364
5365 </p>
5366 <p>The mentioned fields above don't have to be in particular order.
5367 </p>
5368 <p>Example:
5369 </p>
5370 <p>
5371 </p>
5372 <blockquote class="text">
5373 <p>C: "GET FX_SEND INFO 0 0"
5374 </p>
5375 <p>S: "NAME: Reverb Send"
5376 </p>
5377 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5378 </p>
5379 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5380 </p>
5381 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5382 </p>
5383 <p>&nbsp;&nbsp;&nbsp;"."
5384 </p>
5385 </blockquote><p>
5386
5387 </p>
5388 <a name="SET FX_SEND NAME"></a><br /><hr />
5389 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5390 <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5391 Changing effect send's name</h3>
5392
5393 <p>The front-end can alter the current name of an effect
5394 send entity by sending the following command:
5395 </p>
5396 <p>
5397 </p>
5398 <blockquote class="text">
5399 <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5400 </p>
5401 </blockquote><p>
5402
5403 </p>
5404 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5405 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>
5406 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,
5407 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5408 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>
5409 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
5410 &lt;name&gt; is the new name of the effect send entity, which
5411 does not have to be unique.
5412 </p>
5413 <p>Possible Answers:
5414 </p>
5415 <p>
5416 </p>
5417 <blockquote class="text">
5418 <p>"OK" -
5419 </p>
5420 <blockquote class="text">
5421 <p>on success
5422 </p>
5423 </blockquote>
5424
5425
5426 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5427 </p>
5428 <blockquote class="text">
5429 <p>in case it failed, providing an appropriate error code and error message
5430 </p>
5431 </blockquote>
5432
5433
5434 </blockquote><p>
5435
5436 </p>
5437 <p>Example:
5438 </p>
5439 <p>
5440 </p>
5441 <blockquote class="text">
5442 <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5443 </p>
5444 <p>S: "OK"
5445 </p>
5446 </blockquote><p>
5447
5448 </p>
5449 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5450 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5451 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5452 Altering effect send's audio routing</h3>
5453
5454 <p>The front-end can alter the destination of an effect send's audio channel on a specific
5455 sampler channel by sending the following command:
5456 </p>
5457 <p>
5458 </p>
5459 <blockquote class="text">
5460 <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5461 </p>
5462 </blockquote><p>
5463
5464 </p>
5465 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5466 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>
5467 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,
5468 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5469 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>
5470 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,
5471 &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5472 which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5473 the audio channel of the selected audio output device where &lt;audio-src&gt;
5474 should be routed to.
5475 </p>
5476 <p>Note that effect sends can only route audio to the same audio output
5477 device as assigned to the effect send's sampler channel. Also note that an
5478 effect send entity does always have exactly as much audio channels as its
5479 sampler channel. So if the sampler channel is stereo, the effect send does
5480 have two audio channels as well. Also keep in mind that the amount of audio
5481 channels on a sampler channel might be dependant not only to the deployed
5482 sampler engine on the sampler channel, but also dependant to the instrument
5483 currently loaded. However you can (effectively) turn an i.e. stereo effect
5484 send into a mono one by simply altering its audio routing appropriately.
5485 </p>
5486 <p>Possible Answers:
5487 </p>
5488 <p>
5489 </p>
5490 <blockquote class="text">
5491 <p>"OK" -
5492 </p>
5493 <blockquote class="text">
5494 <p>on success
5495 </p>
5496 </blockquote>
5497
5498
5499 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5500 </p>
5501 <blockquote class="text">
5502 <p>if audio output channel was set, but there are noteworthy
5503 issue(s) related, providing an appropriate warning code and
5504 warning message
5505 </p>
5506 </blockquote>
5507
5508
5509 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5510 </p>
5511 <blockquote class="text">
5512 <p>in case it failed, providing an appropriate error code and error message
5513 </p>
5514 </blockquote>
5515
5516
5517 </blockquote><p>
5518
5519 </p>
5520 <p>Example:
5521 </p>
5522 <p>
5523 </p>
5524 <blockquote class="text">
5525 <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5526 </p>
5527 <p>S: "OK"
5528 </p>
5529 </blockquote><p>
5530
5531 </p>
5532 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5533 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5534 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5535 Altering effect send's MIDI controller</h3>
5536
5537 <p>The front-end can alter the MIDI controller of an effect
5538 send entity by sending the following command:
5539 </p>
5540 <p>
5541 </p>
5542 <blockquote class="text">
5543 <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5544 </p>
5545 </blockquote><p>
5546
5547 </p>
5548 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5549 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>
5550 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,
5551 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5552 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>
5553 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
5554 &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5555 able to modify the effect send's send level.
5556 </p>
5557 <p>Possible Answers:
5558 </p>
5559 <p>
5560 </p>
5561 <blockquote class="text">
5562 <p>"OK" -
5563 </p>
5564 <blockquote class="text">
5565 <p>on success
5566 </p>
5567 </blockquote>
5568
5569
5570 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5571 </p>
5572 <blockquote class="text">
5573 <p>if MIDI controller was set, but there are noteworthy
5574 issue(s) related, providing an appropriate warning code and
5575 warning message
5576 </p>
5577 </blockquote>
5578
5579
5580 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5581 </p>
5582 <blockquote class="text">
5583 <p>in case it failed, providing an appropriate error code and error message
5584 </p>
5585 </blockquote>
5586
5587
5588 </blockquote><p>
5589
5590 </p>
5591 <p>Example:
5592 </p>
5593 <p>
5594 </p>
5595 <blockquote class="text">
5596 <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5597 </p>
5598 <p>S: "OK"
5599 </p>
5600 </blockquote><p>
5601
5602 </p>
5603 <a name="SET FX_SEND LEVEL"></a><br /><hr />
5604 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5605 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5606 Altering effect send's send level</h3>
5607
5608 <p>The front-end can alter the current send level of an effect
5609 send entity by sending the following command:
5610 </p>
5611 <p>
5612 </p>
5613 <blockquote class="text">
5614 <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5615 </p>
5616 </blockquote><p>
5617
5618 </p>
5619 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5620 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5621 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5622 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5623 as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5624 or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command and
5625 &lt;volume&gt; is an optionally dotted positive number (a value
5626 smaller than 1.0 means attenuation, whereas a value greater than
5627 1.0 means amplification) reflecting the new send level.
5628 </p>
5629 <p>Possible Answers:
5630 </p>
5631 <p>
5632 </p>
5633 <blockquote class="text">
5634 <p>"OK" -
5635 </p>
5636 <blockquote class="text">
5637 <p>on success
5638 </p>
5639 </blockquote>
5640
5641
5642 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5643 </p>
5644 <blockquote class="text">
5645 <p>if new send level was set, but there are noteworthy
5646 issue(s) related, providing an appropriate warning code and
5647 warning message
5648 </p>
5649 </blockquote>
5650
5651
5652 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5653 </p>
5654 <blockquote class="text">
5655 <p>in case it failed, providing an appropriate error code and error message
5656 </p>
5657 </blockquote>
5658
5659
5660 </blockquote><p>
5661
5662 </p>
5663 <p>Example:
5664 </p>
5665 <p>
5666 </p>
5667 <blockquote class="text">
5668 <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5669 </p>
5670 <p>S: "OK"
5671 </p>
5672 </blockquote><p>
5673
5674 </p>
5675 <a name="RESET CHANNEL"></a><br /><hr />
5676 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5677 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5678 Resetting a sampler channel</h3>
5679
5680 <p>The front-end can reset a particular sampler channel by sending the following command:
5681 </p>
5682 <p>
5683 </p>
5684 <blockquote class="text">
5685 <p>RESET CHANNEL &lt;sampler-channel&gt;
5686 </p>
5687 </blockquote><p>
5688
5689 </p>
5690 <p>
5691 Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
5692 This will cause the engine on that sampler channel, its voices and
5693 eventually disk streams and all control and status variables to be
5694 reset.
5695 </p>
5696 <p>Possible Answers:
5697 </p>
5698 <p>
5699 </p>
5700 <blockquote class="text">
5701 <p>"OK" -
5702 </p>
5703 <blockquote class="text">
5704 <p>on success
5705 </p>
5706 </blockquote>
5707
5708
5709 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5710 </p>
5711 <blockquote class="text">
5712 <p>if channel was reset, but there are noteworthy issue(s)
5713 related, providing an appropriate warning code and warning
5714 message
5715 </p>
5716 </blockquote>
5717
5718
5719 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5720 </p>
5721 <blockquote class="text">
5722 <p>in case it failed, providing an appropriate error code and
5723 error message
5724 </p>
5725 </blockquote>
5726
5727
5728 </blockquote><p>
5729
5730 </p>
5731 <p>Examples:
5732 </p>
5733 <p>
5734 </p>
5735 <blockquote class="text">
5736 <p>
5737 </p>
5738 </blockquote><p>
5739
5740 </p>
5741 <a name="anchor12"></a><br /><hr />
5742 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5743 <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
5744 Controlling connection</h3>
5745
5746 <p>The following commands are used to control the connection to LinuxSampler.
5747 </p>
5748 <a name="SUBSCRIBE"></a><br /><hr />
5749 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5750 <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
5751 Register front-end for receiving event messages</h3>
5752
5753 <p>The front-end can register itself to the LinuxSampler application to
5754 be informed about noteworthy events by sending this command:
5755 </p>
5756 <p>
5757 </p>
5758 <blockquote class="text">
5759 <p>SUBSCRIBE &lt;event-id&gt;
5760 </p>
5761 </blockquote><p>
5762
5763 </p>
5764 <p>where &lt;event-id&gt; will be replaced by the respective event that
5765 client wants to subscribe to.
5766 </p>
5767 <p>Possible Answers:
5768 </p>
5769 <p>
5770 </p>
5771 <blockquote class="text">
5772 <p>"OK" -
5773 </p>
5774 <blockquote class="text">
5775 <p>on success
5776 </p>
5777 </blockquote>
5778
5779
5780 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5781 </p>
5782 <blockquote class="text">
5783 <p>if registration succeeded, but there are noteworthy
5784 issue(s) related, providing an appropriate warning code and
5785 warning message
5786 </p>
5787 </blockquote>
5788
5789
5790 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5791 </p>
5792 <blockquote class="text">
5793 <p>in case it failed, providing an appropriate error code and
5794 error message
5795 </p>
5796 </blockquote>
5797
5798
5799 </blockquote><p>
5800
5801 </p>
5802 <p>Examples:
5803 </p>
5804 <p>
5805 </p>
5806 <blockquote class="text">
5807 <p>
5808 </p>
5809 </blockquote><p>
5810
5811 </p>
5812 <a name="UNSUBSCRIBE"></a><br /><hr />
5813 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5814 <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
5815 Unregister front-end for not receiving event messages</h3>
5816
5817 <p>The front-end can unregister itself if it doesn't want to receive event
5818 messages anymore by sending the following command:
5819 </p>
5820 <p>
5821 </p>
5822 <blockquote class="text">
5823 <p>UNSUBSCRIBE &lt;event-id&gt;
5824 </p>
5825 </blockquote><p>
5826
5827 </p>
5828 <p>Where &lt;event-id&gt; will be replaced by the respective event that
5829 client doesn't want to receive anymore.
5830 </p>
5831 <p>Possible Answers:
5832 </p>
5833 <p>
5834 </p>
5835 <blockquote class="text">
5836 <p>"OK" -
5837 </p>
5838 <blockquote class="text">
5839 <p>on success
5840 </p>
5841 </blockquote>
5842
5843
5844 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5845 </p>
5846 <blockquote class="text">
5847 <p>if unregistration succeeded, but there are noteworthy
5848 issue(s) related, providing an appropriate warning code and
5849 warning message
5850 </p>
5851 </blockquote>
5852
5853
5854 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5855 </p>
5856 <blockquote class="text">
5857 <p>in case it failed, providing an appropriate error code and
5858 error message
5859 </p>
5860 </blockquote>
5861
5862
5863 </blockquote><p>
5864
5865 </p>
5866 <p>Examples:
5867 </p>
5868 <p>
5869 </p>
5870 <blockquote class="text">
5871 <p>
5872 </p>
5873 </blockquote><p>
5874
5875 </p>
5876 <a name="SET ECHO"></a><br /><hr />
5877 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5878 <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
5879 Enable or disable echo of commands</h3>
5880
5881 <p>To enable or disable back sending of commands to the client the following command can be used:
5882 </p>
5883 <p>
5884 </p>
5885 <blockquote class="text">
5886 <p>SET ECHO &lt;value&gt;
5887 </p>
5888 </blockquote><p>
5889
5890 </p>
5891 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
5892 or "0" to disable echo mode. When echo mode is enabled, all
5893 commands send to LinuxSampler will be immediately send back and
5894 after this echo the actual response to the command will be
5895 returned. Echo mode will only be altered for the client connection
5896 that issued the "SET ECHO" command, not globally for all client
5897 connections.
5898 </p>
5899 <p>Possible Answers:
5900 </p>
5901 <p>
5902 </p>
5903 <blockquote class="text">
5904 <p>"OK" -
5905 </p>
5906 <blockquote class="text">
5907 <p>usually
5908 </p>
5909 </blockquote>
5910
5911
5912 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5913 </p>
5914 <blockquote class="text">
5915 <p>on syntax error, e.g. non boolean value
5916 </p>
5917 </blockquote>
5918
5919
5920 </blockquote><p>
5921
5922 </p>
5923 <p>Examples:
5924 </p>
5925 <p>
5926 </p>
5927 <blockquote class="text">
5928 <p>
5929 </p>
5930 </blockquote><p>
5931
5932 </p>
5933 <a name="QUIT"></a><br /><hr />
5934 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5935 <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
5936 Close client connection</h3>
5937
5938 <p>The client can close its network connection to LinuxSampler by sending the following command:
5939 </p>
5940 <p>
5941 </p>
5942 <blockquote class="text">
5943 <p>QUIT
5944 </p>
5945 </blockquote><p>
5946
5947 </p>
5948 <p>This is probably more interesting for manual telnet connections to
5949 LinuxSampler than really useful for a front-end implementation.
5950 </p>
5951 <a name="anchor13"></a><br /><hr />
5952 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5953 <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
5954 Global commands</h3>
5955
5956 <p>The following commands have global impact on the sampler.
5957 </p>
5958 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
5959 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5960 <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
5961 Current number of active voices</h3>
5962
5963 <p>The front-end can ask for the current number of active voices on
5964 the sampler by sending the following command:
5965 </p>
5966 <p>
5967 </p>
5968 <blockquote class="text">
5969 <p>GET TOTAL_VOICE_COUNT
5970 </p>
5971 </blockquote><p>
5972
5973 </p>
5974 <p>Possible Answers:
5975 </p>
5976 <p>
5977 </p>
5978 <blockquote class="text">
5979 <p>LinuxSampler will answer by returning the number of all active
5980 voices on the sampler.
5981 </p>
5982 </blockquote><p>
5983
5984 </p>
5985 <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
5986 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5987 <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
5988 Maximum amount of active voices</h3>
5989
5990 <p>The front-end can ask for the maximum number of active voices
5991 by sending the following command:
5992 </p>
5993 <p>
5994 </p>
5995 <blockquote class="text">
5996 <p>GET TOTAL_VOICE_COUNT_MAX
5997 </p>
5998 </blockquote><p>
5999
6000 </p>
6001 <p>Possible Answers:
6002 </p>
6003 <p>
6004 </p>
6005 <blockquote class="text">
6006 <p>LinuxSampler will answer by returning the maximum number
6007 of active voices.
6008 </p>
6009 </blockquote><p>
6010
6011 </p>
6012 <a name="RESET"></a><br /><hr />
6013 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6014 <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6015 Reset sampler</h3>
6016
6017 <p>The front-end can reset the whole sampler by sending the following command:
6018 </p>
6019 <p>
6020 </p>
6021 <blockquote class="text">
6022 <p>RESET
6023 </p>
6024 </blockquote><p>
6025
6026 </p>
6027 <p>Possible Answers:
6028 </p>
6029 <p>
6030 </p>
6031 <blockquote class="text">
6032 <p>"OK" -
6033 </p>
6034 <blockquote class="text">
6035 <p>always
6036 </p>
6037 </blockquote>
6038
6039
6040 </blockquote><p>
6041
6042 </p>
6043 <p>Examples:
6044 </p>
6045 <p>
6046 </p>
6047 <blockquote class="text">
6048 <p>
6049 </p>
6050 </blockquote><p>
6051
6052 </p>
6053 <a name="GET SERVER INFO"></a><br /><hr />
6054 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6055 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6056 General sampler informations</h3>
6057
6058 <p>The client can ask for general informations about the LinuxSampler
6059 instance by sending the following command:
6060 </p>
6061 <p>
6062 </p>
6063 <blockquote class="text">
6064 <p>GET SERVER INFO
6065 </p>
6066 </blockquote><p>
6067
6068 </p>
6069 <p>Possible Answers:
6070 </p>
6071 <p>
6072 </p>
6073 <blockquote class="text">
6074 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6075 Each answer line begins with the information category name
6076 followed by a colon and then a space character &lt;SP&gt; and finally
6077 the info character string to that information category. At the
6078 moment the following categories are defined:
6079
6080 </p>
6081 <p>
6082 </p>
6083 <blockquote class="text">
6084 <p>DESCRIPTION -
6085 </p>
6086 <blockquote class="text">
6087 <p>arbitrary textual description about the sampler
6088 </p>
6089 </blockquote>
6090
6091
6092 <p>VERSION -
6093 </p>
6094 <blockquote class="text">
6095 <p>version of the sampler
6096 </p>
6097 </blockquote>
6098
6099
6100 <p>PROTOCOL_VERSION -
6101 </p>
6102 <blockquote class="text">
6103 <p>version of the LSCP specification the sampler
6104 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)
6105 </p>
6106 </blockquote>
6107
6108
6109 <p>INSTRUMENTS_DB_SUPPORT -
6110 </p>
6111 <blockquote class="text">
6112 <p>either yes or no, specifies whether the
6113 sampler is build with instruments database support.
6114 </p>
6115 </blockquote>
6116
6117
6118 </blockquote>
6119
6120
6121 </blockquote><p>
6122
6123 </p>
6124 <p>The mentioned fields above don't have to be in particular order.
6125 Other fields might be added in future.
6126 </p>
6127 <a name="GET VOLUME"></a><br /><hr />
6128 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6129 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6130 Getting global volume attenuation</h3>
6131
6132 <p>The client can ask for the current global sampler-wide volume
6133 attenuation by sending the following command:
6134 </p>
6135 <p>
6136 </p>
6137 <blockquote class="text">
6138 <p>GET VOLUME
6139 </p>
6140 </blockquote><p>
6141
6142 </p>
6143 <p>Possible Answers:
6144 </p>
6145 <p>
6146 </p>
6147 <blockquote class="text">
6148 <p>The sampler will always answer by returning the optional
6149 dotted floating point coefficient, reflecting the current
6150 global volume attenuation.
6151
6152 </p>
6153 </blockquote><p>
6154
6155 </p>
6156 <p>Note: it is up to the respective sampler engine whether to obey
6157 that global volume parameter or not, but in general all engines SHOULD
6158 use this parameter.
6159 </p>
6160 <a name="SET VOLUME"></a><br /><hr />
6161 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6162 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6163 Setting global volume attenuation</h3>
6164
6165 <p>The client can alter the current global sampler-wide volume
6166 attenuation by sending the following command:
6167 </p>
6168 <p>
6169 </p>
6170 <blockquote class="text">
6171 <p>SET VOLUME &lt;volume&gt;
6172 </p>
6173 </blockquote><p>
6174
6175 </p>
6176 <p>Where &lt;volume&gt; should be replaced by the optional dotted
6177 floating point value, reflecting the new global volume parameter.
6178 This value might usually be in the range between 0.0 and 1.0, that
6179 is for attenuating the overall volume.
6180 </p>
6181 <p>Possible Answers:
6182 </p>
6183 <p>
6184 </p>
6185 <blockquote class="text">
6186 <p>"OK" -
6187 </p>
6188 <blockquote class="text">
6189 <p>on success
6190 </p>
6191 </blockquote>
6192
6193
6194 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6195 </p>
6196 <blockquote class="text">
6197 <p>if the global volume was set, but there are noteworthy
6198 issue(s) related, providing an appropriate warning code and
6199 warning message
6200 </p>
6201 </blockquote>
6202
6203
6204 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6205 </p>
6206 <blockquote class="text">
6207 <p>in case it failed, providing an appropriate error code and error message
6208 </p>
6209 </blockquote>
6210
6211
6212 </blockquote><p>
6213
6214 </p>
6215 <a name="MIDI Instrument Mapping"></a><br /><hr />
6216 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6217 <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6218 MIDI Instrument Mapping</h3>
6219
6220 <p>The MIDI protocol provides a way to switch between instruments
6221 by sending so called MIDI bank select and MIDI program change
6222 messages which are essentially just numbers. The following commands
6223 allow to actually map arbitrary MIDI bank select / program change
6224 numbers with real instruments.
6225 </p>
6226 <p>The sampler allows to manage an arbitrary amount of MIDI
6227 instrument maps which define which instrument to load on
6228 which MIDI program change message.
6229 </p>
6230 <p>By default, that is when the sampler is launched, there is no
6231 map, thus the sampler will simply ignore all program change
6232 messages. The front-end has to explicitly create at least one
6233 map, add entries to the map and tell the respective sampler
6234 channel(s) which MIDI instrument map to use, so the sampler
6235 knows how to react on a given program change message on the
6236 respective sampler channel, that is by switching to the
6237 respectively defined engine type and loading the respective
6238 instrument. See command
6239 <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>
6240 for how to assign a MIDI instrument map to a sampler channel.
6241 </p>
6242 <p>Also note per MIDI specification a bank select message does not
6243 cause to switch to another instrument. Instead when receiving a
6244 bank select message the bank value will be stored and a subsequent
6245 program change message (which may occur at any time) will finally
6246 cause the sampler to switch to the respective instrument as
6247 reflected by the current MIDI instrument map.
6248 </p>
6249 <a name="ADD MIDI_INSTRUMENT MAP"></a><br /><hr />
6250 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6251 <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6252 Create a new MIDI instrument map</h3>
6253
6254 <p>The front-end can add a new MIDI instrument map by sending
6255 the following command:
6256 </p>
6257 <p>
6258 </p>
6259 <blockquote class="text">
6260 <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6261 </p>
6262 </blockquote><p>
6263
6264 </p>
6265 <p>Where &lt;name&gt; is an optional argument allowing to
6266 assign a custom name to the new map. MIDI instrument Map
6267 names do not have to be unique.
6268 </p>
6269 <p>Possible Answers:
6270 </p>
6271 <p>
6272 </p>
6273 <blockquote class="text">
6274 <p>"OK[&lt;map&gt;]" -
6275 </p>
6276 <blockquote class="text">
6277 <p>in case a new MIDI instrument map could
6278 be added, where &lt;map&gt; reflects the
6279 unique ID of the newly created MIDI
6280 instrument map
6281 </p>
6282 </blockquote>
6283
6284
6285 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6286 </p>
6287 <blockquote class="text">
6288 <p>when a new map could not be created, which
6289 might never occur in practice
6290 </p>
6291 </blockquote>
6292
6293
6294 </blockquote><p>
6295
6296 </p>
6297 <p>Examples:
6298 </p>
6299 <p>
6300 </p>
6301 <blockquote class="text">
6302 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6303 </p>
6304 <p>S: "OK[0]"
6305 </p>
6306 </blockquote><p>
6307
6308 </p>
6309 <p>
6310 </p>
6311 <blockquote class="text">
6312 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6313 </p>
6314 <p>S: "OK[1]"
6315 </p>
6316 </blockquote><p>
6317
6318 </p>
6319 <p>
6320 </p>
6321 <blockquote class="text">
6322 <p>C: "ADD MIDI_INSTRUMENT_MAP"
6323 </p>
6324 <p>S: "OK[5]"
6325 </p>
6326 </blockquote><p>
6327
6328 </p>
6329 <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6330 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6331 <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6332 Delete one particular or all MIDI instrument maps</h3>
6333
6334 <p>The front-end can delete a particular MIDI instrument map
6335 by sending the following command:
6336 </p>
6337 <p>
6338 </p>
6339 <blockquote class="text">
6340 <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6341 </p>
6342 </blockquote><p>
6343
6344 </p>
6345 <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6346 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>
6347 command.
6348 </p>
6349 <p>The front-end can delete all MIDI instrument maps by
6350 sending the following command:
6351 </p>
6352 <p>
6353 </p>
6354 <blockquote class="text">
6355 <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6356 </p>
6357 </blockquote><p>
6358
6359 </p>
6360 <p>Possible Answers:
6361 </p>
6362 <p>
6363 </p>
6364 <blockquote class="text">
6365 <p>"OK" -
6366 </p>
6367 <blockquote class="text">
6368 <p>in case the map(s) could be deleted
6369 </p>
6370 </blockquote>
6371
6372
6373 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6374 </p>
6375 <blockquote class="text">
6376 <p>when the given map does not exist
6377 </p>
6378 </blockquote>
6379
6380
6381 </blockquote><p>
6382
6383 </p>
6384 <p>Examples:
6385 </p>
6386 <p>
6387 </p>
6388 <blockquote class="text">
6389 <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6390 </p>
6391 <p>S: "OK"
6392 </p>
6393 </blockquote><p>
6394
6395 </p>
6396 <p>
6397 </p>
6398 <blockquote class="text">
6399 <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
6400 </p>
6401 <p>S: "OK"
6402 </p>
6403 </blockquote><p>
6404
6405 </p>
6406 <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6407 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6408 <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
6409 Get amount of existing MIDI instrument maps</h3>
6410
6411 <p>The front-end can retrieve the current amount of MIDI
6412 instrument maps by sending the following command:
6413 </p>
6414 <p>
6415 </p>
6416 <blockquote class="text">
6417 <p>GET MIDI_INSTRUMENT_MAPS
6418 </p>
6419 </blockquote><p>
6420
6421 </p>
6422 <p>Possible Answers:
6423 </p>
6424 <p>
6425 </p>
6426 <blockquote class="text">
6427 <p>The sampler will answer by returning the current
6428 number of MIDI instrument maps.
6429 </p>
6430 </blockquote><p>
6431
6432 </p>
6433 <p>Example:
6434 </p>
6435 <p>
6436 </p>
6437 <blockquote class="text">
6438 <p>C: "GET MIDI_INSTRUMENT_MAPS"
6439 </p>
6440 <p>S: "2"
6441 </p>
6442 </blockquote><p>
6443
6444 </p>
6445 <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6446 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6447 <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
6448 Getting all created MIDI instrument maps</h3>
6449
6450 <p>The number of MIDI instrument maps can change on runtime. To get the
6451 current list of MIDI instrument maps, the front-end can send the
6452 following command:
6453 </p>
6454 <p>
6455 </p>
6456 <blockquote class="text">
6457 <p>LIST MIDI_INSTRUMENT_MAPS
6458 </p>
6459 </blockquote><p>
6460
6461 </p>
6462 <p>Possible Answers:
6463 </p>
6464 <p>
6465 </p>
6466 <blockquote class="text">
6467 <p>The sampler will answer by returning a comma separated list
6468 with all MIDI instrument maps' numerical IDs.
6469 </p>
6470 </blockquote><p>
6471
6472 </p>
6473 <p>Example:
6474 </p>
6475 <p>
6476 </p>
6477 <blockquote class="text">
6478 <p>C: "LIST MIDI_INSTRUMENT_MAPS"
6479 </p>
6480 <p>S: "0,1,5,12"
6481 </p>
6482 </blockquote><p>
6483
6484 </p>
6485 <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
6486 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6487 <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
6488 Getting MIDI instrument map information</h3>
6489
6490 <p>The front-end can ask for the current settings of a MIDI
6491 instrument map by sending the following command:
6492 </p>
6493 <p>
6494 </p>
6495 <blockquote class="text">
6496 <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
6497 </p>
6498 </blockquote><p>
6499
6500 </p>
6501 <p>Where &lt;map&gt; is the numerical ID of the map the
6502 front-end is interested in as returned by the
6503 <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>
6504 command.
6505 </p>
6506 <p>Possible Answers:
6507 </p>
6508 <p>
6509 </p>
6510 <blockquote class="text">
6511 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6512 Each answer line begins with the settings category name
6513 followed by a colon and then a space character &lt;SP&gt; and finally
6514 the info character string to that setting category. At the
6515 moment the following categories are defined:
6516 </p>
6517 <p>
6518 </p>
6519 <blockquote class="text">
6520 <p>NAME -
6521 </p>
6522 <blockquote class="text">
6523 <p>custom name of the given map,
6524 which does not have to be unique
6525 </p>
6526 </blockquote>
6527
6528
6529 <p>DEFAULT -
6530 </p>
6531 <blockquote class="text">
6532 <p>either true or false,
6533 defines whether this map is the default map
6534 </p>
6535 </blockquote>
6536
6537
6538 </blockquote>
6539
6540
6541 </blockquote><p>
6542
6543 </p>
6544 <p>The mentioned fields above don't have to be in particular order.
6545 </p>
6546 <p>Example:
6547 </p>
6548 <p>
6549 </p>
6550 <blockquote class="text">
6551 <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
6552 </p>
6553 <p>S: "NAME: Standard Map"
6554 </p>
6555 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
6556 </p>
6557 <p>&nbsp;&nbsp;&nbsp;"."
6558 </p>
6559 </blockquote><p>
6560
6561 </p>
6562 <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
6563 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6564 <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
6565 Renaming a MIDI instrument map</h3>
6566
6567 <p>The front-end can alter the custom name of a MIDI
6568 instrument map by sending the following command:
6569 </p>
6570 <p>
6571 </p>
6572 <blockquote class="text">
6573 <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
6574 </p>
6575 </blockquote><p>
6576
6577 </p>
6578 <p>Where &lt;map&gt; is the numerical ID of the map and
6579 &lt;name&gt; the new custom name of the map, which does not
6580 have to be unique.
6581 </p>
6582 <p>Possible Answers:
6583 </p>
6584 <p>
6585 </p>
6586 <blockquote class="text">
6587 <p>"OK" -
6588 </p>
6589 <blockquote class="text">
6590 <p>on success
6591 </p>
6592 </blockquote>
6593
6594
6595 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6596 </p>
6597 <blockquote class="text">
6598 <p>in case the given map does not exist
6599 </p>
6600 </blockquote>
6601
6602
6603 </blockquote><p>
6604
6605 </p>
6606 <p>Example:
6607 </p>
6608 <p>
6609 </p>
6610 <blockquote class="text">
6611 <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
6612 </p>
6613 <p>S: "OK"
6614 </p>
6615 </blockquote><p>
6616
6617 </p>
6618 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
6619 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6620 <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
6621 Create or replace a MIDI instrument map entry</h3>
6622
6623 <p>The front-end can create a new or replace an existing entry
6624 in a sampler's MIDI instrument map by sending the following
6625 command:
6626 </p>
6627 <p>
6628 </p>
6629 <blockquote class="text">
6630 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
6631 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
6632 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
6633 [&lt;instr_load_mode&gt;] [&lt;name&gt;]
6634 </p>
6635 </blockquote><p>
6636
6637 </p>
6638 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
6639 &lt;midi_bank&gt; is an integer value between
6640 0..16383 reflecting the MIDI bank select index,
6641 &lt;midi_prog&gt; an
6642 integer value between 0..127 reflecting the MIDI program change
6643 index, &lt;engine_name&gt; a sampler engine name as returned by
6644 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
6645 command (not encapsulated into apostrophes), &lt;filename&gt; the name
6646 of the instrument's file to be deployed (encapsulated into apostrophes),
6647 &lt;instrument_index&gt; the index (integer value) of the instrument
6648 within the given file, &lt;volume_value&gt; reflects the master
6649 volume of the instrument as optionally dotted number (where a
6650 value &lt; 1.0 means attenuation and a value > 1.0 means
6651 amplification). This parameter easily allows to adjust the
6652 volume of all intruments within a custom instrument map
6653 without having to adjust their instrument files. The
6654 OPTIONAL &lt;instr_load_mode&gt; argument defines the life
6655 time of the instrument, that is when the instrument should
6656 be loaded, when freed and has exactly the following
6657 possibilities:
6658 </p>
6659 <p>
6660 </p>
6661 <blockquote class="text">
6662 <p>"ON_DEMAND" -
6663 </p>
6664 <blockquote class="text">
6665 <p>The instrument will be loaded when needed,
6666 that is when demanded by at least one sampler
6667 channel. It will immediately be freed from memory
6668 when not needed by any sampler channel anymore.
6669 </p>
6670 </blockquote>
6671
6672
6673 <p>"ON_DEMAND_HOLD" -
6674 </p>
6675 <blockquote class="text">
6676 <p>The instrument will be loaded when needed,
6677 that is when demanded by at least one sampler
6678 channel. It will be kept in memory even when
6679 not needed by any sampler channel anymore.
6680 Instruments with this mode are only freed
6681 when the sampler is reset or all mapping
6682 entries with this mode (and respective
6683 instrument) are explicitly changed to
6684 "ON_DEMAND" and no sampler channel is using
6685 the instrument anymore.
6686 </p>
6687 </blockquote>
6688
6689
6690 <p>"PERSISTENT" -
6691 </p>
6692 <blockquote class="text">
6693 <p>The instrument will immediately be loaded
6694 into memory when this mapping
6695 command is sent and the instrument is kept all
6696 the time. Instruments with this mode are
6697 only freed when the sampler is reset or all
6698 mapping entries with this mode (and
6699 respective instrument) are explicitly
6700 changed to "ON_DEMAND" and no sampler
6701 channel is using the instrument anymore.
6702 </p>
6703 </blockquote>
6704
6705
6706 <p>not supplied -
6707 </p>
6708 <blockquote class="text">
6709 <p>In case there is no &lt;instr_load_mode&gt;
6710 argument given, it will be up to the
6711 InstrumentManager to decide which mode to use.
6712 Usually it will use "ON_DEMAND" if an entry
6713 for the given instrument does not exist in
6714 the InstrumentManager's list yet, otherwise
6715 if an entry already exists, it will simply
6716 stick with the mode currently reflected by
6717 the already existing entry, that is it will
6718 not change the mode.
6719 </p>
6720 </blockquote>
6721
6722
6723 </blockquote><p>
6724
6725 </p>
6726 <p>
6727 The &lt;instr_load_mode&gt; argument thus allows to define an
6728 appropriate strategy (low memory consumption vs. fast
6729 instrument switching) for each instrument individually. Note, the
6730 following restrictions apply to this argument: "ON_DEMAND_HOLD" and
6731 "PERSISTENT" have to be supported by the respective sampler engine
6732 (which is technically the case when the engine provides an
6733 InstrumentManager for its format). If this is not the case the
6734 argument will automatically fall back to the default value
6735 "ON_DEMAND". Also the load mode of one instrument may
6736 automatically change the laod mode of other instrument(s), i.e.
6737 because the instruments are part of the same file and the
6738 engine does not allow a way to manage load modes for them
6739 individually. Due to this, in case the frontend shows the
6740 load modes of entries, the frontend should retrieve the actual
6741 mode by i.e. sending
6742 <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>
6743 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to
6744 set a custom name (encapsulated into apostrophes) for the mapping
6745 entry, useful for frontends for displaying an appropriate name for
6746 mapped instruments (using
6747 <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>).
6748
6749 </p>
6750 <p>
6751 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
6752 completely established in the sampler. The OPTIONAL "NON_MODAL" argument
6753 however causes the respective "MAP MIDI_INSTRUMENT" command to return
6754 immediately, that is to let the sampler establish the mapping in the
6755 background. So this argument might be especially useful for mappings with
6756 a "PERSISTENT" type, because these have to load the respective instruments
6757 immediately and might thus block for a very long time. It is recommended
6758 however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
6759 because it has the following drawbacks: as "NON_MODAL" instructions return
6760 immediately, they may not necessarily return an error i.e. when the given
6761 instrument file turns out to be corrupt, beside that subsequent commands
6762 in a LSCP instruction sequence might fail, because mandatory mappings are
6763 not yet completed.
6764
6765 </p>
6766 <p>Possible Answers:
6767 </p>
6768 <p>
6769 </p>
6770 <blockquote class="text">
6771 <p>"OK" -
6772 </p>
6773 <blockquote class="text">
6774 <p>usually
6775 </p>
6776 </blockquote>
6777
6778
6779 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6780 </p>
6781 <blockquote class="text">
6782 <p>when the given map or engine does not exist or a value
6783 is out of range
6784 </p>
6785 </blockquote>
6786
6787
6788 </blockquote><p>
6789
6790 </p>
6791 <p>Examples:
6792 </p>
6793 <p>
6794 </p>
6795 <blockquote class="text">
6796 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
6797 </p>
6798 <p>S: "OK"
6799 </p>
6800 </blockquote><p>
6801
6802 </p>
6803 <p>
6804 </p>
6805 <blockquote class="text">
6806 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
6807 </p>
6808 <p>S: "OK"
6809 </p>
6810 </blockquote><p>
6811
6812 </p>
6813 <p>
6814 </p>
6815 <blockquote class="text">
6816 <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
6817 </p>
6818 <p>S: "OK"
6819 </p>
6820 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
6821 </p>
6822 <p>S: "OK"
6823 </p>
6824 </blockquote><p>
6825
6826 </p>
6827 <p>
6828 </p>
6829 <blockquote class="text">
6830 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
6831 </p>
6832 <p>S: "OK"
6833 </p>
6834 </blockquote><p>
6835
6836 </p>
6837 <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
6838 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6839 <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
6840 Getting ammount of MIDI instrument map entries</h3>
6841
6842 <p>The front-end can query the amount of currently existing
6843 entries in a MIDI instrument map by sending the following
6844 command:
6845 </p>
6846 <p>
6847 </p>
6848 <blockquote class="text">
6849 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
6850 </p>
6851 </blockquote><p>
6852
6853 </p>
6854 <p>The front-end can query the amount of currently existing
6855 entries in all MIDI instrument maps by sending the following
6856 command:
6857 </p>
6858 <p>
6859 </p>
6860 <blockquote class="text">
6861 <p>GET MIDI_INSTRUMENTS ALL
6862 </p>
6863 </blockquote><p>
6864
6865 </p>
6866 <p>Possible Answers:
6867 </p>
6868 <p>
6869 </p>
6870 <blockquote class="text">
6871 <p>The sampler will answer by sending the current number of
6872 entries in the MIDI instrument map(s).
6873 </p>
6874 </blockquote><p>
6875
6876 </p>
6877 <p>Example:
6878 </p>
6879 <p>
6880 </p>
6881 <blockquote class="text">
6882 <p>C: "GET MIDI_INSTRUMENTS 0"
6883 </p>
6884 <p>S: "234"
6885 </p>
6886 </blockquote><p>
6887
6888 </p>
6889 <p>
6890 </p>
6891 <blockquote class="text">
6892 <p>C: "GET MIDI_INSTRUMENTS ALL"
6893 </p>
6894 <p>S: "954"
6895 </p>
6896 </blockquote><p>
6897
6898 </p>
6899 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
6900 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6901 <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
6902 Getting indeces of all entries of a MIDI instrument map</h3>
6903
6904 <p>The front-end can query a list of all currently existing
6905 entries in a certain MIDI instrument map by sending the following
6906 command:
6907 </p>
6908 <p>
6909 </p>
6910 <blockquote class="text">
6911 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
6912 </p>
6913 </blockquote><p>
6914
6915 </p>
6916 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
6917 </p>
6918 <p>The front-end can query a list of all currently existing
6919 entries of all MIDI instrument maps by sending the following
6920 command:
6921 </p>
6922 <p>
6923 </p>
6924 <blockquote class="text">
6925 <p>LIST MIDI_INSTRUMENTS ALL
6926 </p>
6927 </blockquote><p>
6928
6929 </p>
6930 <p>Possible Answers:
6931 </p>
6932 <p>
6933 </p>
6934 <blockquote class="text">
6935 <p>The sampler will answer by sending a comma separated
6936 list of map ID - MIDI bank - MIDI program triples, where
6937 each triple is encapsulated into curly braces. The
6938 list is returned in one single line. Each triple
6939 just reflects the key of the respective map entry,
6940 thus subsequent
6941 <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>
6942 command(s) are necessary to retrieve detailed informations
6943 about each entry.
6944 </p>
6945 </blockquote><p>
6946
6947 </p>
6948 <p>Example:
6949 </p>
6950 <p>
6951 </p>
6952 <blockquote class="text">
6953 <p>C: "LIST MIDI_INSTRUMENTS 0"
6954 </p>
6955 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
6956 </p>
6957 </blockquote><p>
6958
6959 </p>
6960 <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
6961 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6962 <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
6963 Remove an entry from the MIDI instrument map</h3>
6964
6965 <p>The front-end can delete an entry from a MIDI instrument
6966 map by sending the following command:
6967 </p>
6968 <p>
6969 </p>
6970 <blockquote class="text">
6971 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
6972 </p>
6973 </blockquote><p>
6974
6975 </p>
6976 <p>
6977 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
6978 &lt;midi_bank&gt; is an integer value between 0..16383
6979 reflecting the MIDI bank value and
6980 &lt;midi_prog&gt; an integer value between
6981 0..127 reflecting the MIDI program value of the map's entrie's key
6982 index triple.
6983
6984 </p>
6985 <p>Possible Answers:
6986 </p>
6987 <p>
6988 </p>
6989 <blockquote class="text">
6990 <p>"OK" -
6991 </p>
6992 <blockquote class="text">
6993 <p>usually
6994 </p>
6995 </blockquote>
6996
6997
6998 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6999 </p>
7000 <blockquote class="text">
7001 <p>when index out of bounds
7002 </p>
7003 </blockquote>
7004
7005
7006 </blockquote><p>
7007
7008 </p>
7009 <p>Example:
7010 </p>
7011 <p>
7012 </p>
7013 <blockquote class="text">
7014 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7015 </p>
7016 <p>S: "OK"
7017 </p>
7018 </blockquote><p>
7019
7020 </p>
7021 <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7022 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7023 <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7024 Get current settings of MIDI instrument map entry</h3>
7025
7026 <p>The front-end can retrieve the current settings of a certain
7027 instrument map entry by sending the following command:
7028 </p>
7029 <p>
7030 </p>
7031 <blockquote class="text">
7032 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7033 </p>
7034 </blockquote><p>
7035
7036 </p>
7037 <p>
7038 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7039 &lt;midi_bank&gt; is an integer value between 0..16383
7040 reflecting the MIDI bank value, &lt;midi_bank&gt;
7041 and &lt;midi_prog&gt; an integer value between
7042 0..127 reflecting the MIDI program value of the map's entrie's key
7043 index triple.
7044
7045 </p>
7046 <p>Possible Answers:
7047 </p>
7048 <p>
7049 </p>
7050 <blockquote class="text">
7051 <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7052 separated list. Each answer line begins with the
7053 information category name followed by a colon and then
7054 a space character &lt;SP&gt; and finally the info
7055 character string to that info category. At the moment
7056 the following categories are defined:
7057 </p>
7058 <p>"NAME" -
7059 </p>
7060 <blockquote class="text">
7061 <p>Name for this MIDI instrument map entry (if defined).
7062 This name shall be used by frontends for displaying a
7063 name for this mapped instrument. It can be set and
7064 changed with the
7065 <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>
7066 command and does not have to be unique.
7067 </p>
7068 </blockquote>
7069
7070
7071 <p>"ENGINE_NAME" -
7072 </p>
7073 <blockquote class="text">
7074 <p>Name of the engine to be deployed for this
7075 instrument.
7076 </p>
7077 </blockquote>
7078
7079
7080 <p>"INSTRUMENT_FILE" -
7081 </p>
7082 <blockquote class="text">
7083 <p>File name of the instrument.
7084 </p>
7085 </blockquote>
7086
7087
7088 <p>"INSTRUMENT_NR" -
7089 </p>
7090 <blockquote class="text">
7091 <p>Index of the instrument within the file.
7092 </p>
7093 </blockquote>
7094
7095
7096 <p>"INSTRUMENT_NAME" -
7097 </p>
7098 <blockquote class="text">
7099 <p>Name of the loaded instrument as reflected by its file.
7100 In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7101 cannot be changed.
7102 </p>
7103 </blockquote>
7104
7105
7106 <p>"LOAD_MODE" -
7107 </p>
7108 <blockquote class="text">
7109 <p>Life time of instrument
7110 (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).
7111 </p>
7112 </blockquote>
7113
7114
7115 <p>"VOLUME" -
7116 </p>
7117 <blockquote class="text">
7118 <p>master volume of the instrument as optionally
7119 dotted number (where a value &lt; 1.0 means attenuation
7120 and a value > 1.0 means amplification)
7121 </p>
7122 </blockquote>
7123
7124
7125 <p>The mentioned fields above don't have to be in particular order.
7126 </p>
7127 </blockquote><p>
7128
7129 </p>
7130 <p>Example:
7131 </p>
7132 <p>
7133 </p>
7134 <blockquote class="text">
7135 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7136 </p>
7137 <p>S: "NAME: Drums for Foo Song"
7138 </p>
7139 <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7140 </p>
7141 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7142 </p>
7143 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7144 </p>
7145 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7146 </p>
7147 <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7148 </p>
7149 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7150 </p>
7151 <p>&nbsp;&nbsp;&nbsp;"."
7152 </p>
7153 </blockquote><p>
7154
7155 </p>
7156 <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7157 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7158 <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7159 Clear MIDI instrument map</h3>
7160
7161 <p>The front-end can clear a whole MIDI instrument map, that
7162 is delete all its entries by sending the following command:
7163 </p>
7164 <p>
7165 </p>
7166 <blockquote class="text">
7167 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7168 </p>
7169 </blockquote><p>
7170
7171 </p>
7172 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7173 </p>
7174 <p>The front-end can clear all MIDI instrument maps, that
7175 is delete all entries of all maps by sending the following
7176 command:
7177 </p>
7178 <p>
7179 </p>
7180 <blockquote class="text">
7181 <p>CLEAR MIDI_INSTRUMENTS ALL
7182 </p>
7183 </blockquote><p>
7184
7185 </p>
7186 <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7187 maps, only their entries, thus the map's settings like
7188 custom name will be preservevd.
7189 </p>
7190 <p>Possible Answers:
7191 </p>
7192 <p>
7193 </p>
7194 <blockquote class="text">
7195 <p>"OK" -
7196 </p>
7197 <blockquote class="text">
7198 <p>always
7199 </p>
7200 </blockquote>
7201
7202
7203 </blockquote><p>
7204
7205 </p>
7206 <p>Examples:
7207 </p>
7208 <p>
7209 </p>
7210 <blockquote class="text">
7211 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7212 </p>
7213 <p>S: "OK"
7214 </p>
7215 </blockquote><p>
7216
7217 </p>
7218 <p>
7219 </p>
7220 <blockquote class="text">
7221 <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7222 </p>
7223 <p>S: "OK"
7224 </p>
7225 </blockquote><p>
7226
7227 </p>
7228 <a name="Managing Instruments Database"></a><br /><hr />
7229 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7230 <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7231 Managing Instruments Database</h3>
7232
7233 <p>The following commands describe how to use and manage
7234 the instruments database.
7235 </p>
7236 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7237 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7238 <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7239 Creating a new instrument directory</h3>
7240
7241 <p>The front-end can add a new instrument directory to the
7242 instruments database by sending the following command:
7243 </p>
7244 <p>
7245 </p>
7246 <blockquote class="text">
7247 <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7248 </p>
7249 </blockquote><p>
7250
7251 </p>
7252 <p>Where &lt;dir&gt; is the absolute path name of the directory
7253 to be created (encapsulated into apostrophes).
7254 </p>
7255 <p>Possible Answers:
7256 </p>
7257 <p>
7258 </p>
7259 <blockquote class="text">
7260 <p>"OK" -
7261 </p>
7262 <blockquote class="text">
7263 <p>on success
7264 </p>
7265 </blockquote>
7266
7267
7268 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7269 </p>
7270 <blockquote class="text">
7271 <p>when the directory could not be created, which
7272 can happen if the directory already exists or the
7273 name contains not allowed symbols
7274 </p>
7275 </blockquote>
7276
7277
7278 </blockquote><p>
7279
7280 </p>
7281 <p>Examples:
7282 </p>
7283 <p>
7284 </p>
7285 <blockquote class="text">
7286 <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7287 </p>
7288 <p>S: "OK"
7289 </p>
7290 </blockquote><p>
7291
7292 </p>
7293 <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7294 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7295 <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7296 Deleting an instrument directory</h3>
7297
7298 <p>The front-end can delete a particular instrument directory
7299 from the instruments database by sending the following command:
7300 </p>
7301 <p>
7302 </p>
7303 <blockquote class="text">
7304 <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7305 </p>
7306 </blockquote><p>
7307
7308 </p>
7309 <p>Where &lt;dir&gt; is the absolute path name of the directory
7310 to delete. The optional FORCE argument can be used to
7311 force the deletion of a non-empty directory and all its content.
7312 </p>
7313 <p>Possible Answers:
7314 </p>
7315 <p>
7316 </p>
7317 <blockquote class="text">
7318 <p>"OK" -
7319 </p>
7320 <blockquote class="text">
7321 <p>if the directory is deleted successfully
7322 </p>
7323 </blockquote>
7324
7325
7326 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7327 </p>
7328 <blockquote class="text">
7329 <p>if the given directory does not exist, or
7330 if trying to delete a non-empty directory,
7331 without using the FORCE argument.
7332 </p>
7333 </blockquote>
7334
7335
7336 </blockquote><p>
7337
7338 </p>
7339 <p>Examples:
7340 </p>
7341 <p>
7342 </p>
7343 <blockquote class="text">
7344 <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7345 </p>
7346 <p>S: "OK"
7347 </p>
7348 </blockquote><p>
7349
7350 </p>
7351 <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7352 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7353 <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7354 Getting amount of instrument directories</h3>
7355
7356 <p>The front-end can retrieve the current amount of
7357 directories in a specific directory by sending the following command:
7358 </p>
7359 <p>
7360 </p>
7361 <blockquote class="text">
7362 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7363 </p>
7364 </blockquote><p>
7365
7366 </p>
7367 <p>Where &lt;dir&gt; should be replaced by the absolute path
7368 name of the directory. If RECURSIVE is specified, the number of
7369 all directories, including those located in subdirectories of the
7370 specified directory, will be returned.
7371 </p>
7372 <p>Possible Answers:
7373 </p>
7374 <p>
7375 </p>
7376 <blockquote class="text">
7377 <p>The current number of instrument directories
7378 in the specified directory.
7379 </p>
7380 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7381 </p>
7382 <blockquote class="text">
7383 <p>if the given directory does not exist.
7384 </p>
7385 </blockquote>
7386
7387
7388 </blockquote><p>
7389
7390 </p>
7391 <p>Example:
7392 </p>
7393 <p>
7394 </p>
7395 <blockquote class="text">
7396 <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
7397 </p>
7398 <p>S: "2"
7399 </p>
7400 </blockquote><p>
7401
7402 </p>
7403 <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7404 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7405 <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
7406 Listing all directories in specific directory</h3>
7407
7408 <p>The front-end can retrieve the current list of directories
7409 in specific directory by sending the following command:
7410 </p>
7411 <p>
7412 </p>
7413 <blockquote class="text">
7414 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7415 </p>
7416 </blockquote><p>
7417
7418 </p>
7419 <p>Where &lt;dir&gt; should be replaced by the absolute path
7420 name of the directory. If RECURSIVE is specified, the absolute path names
7421 of all directories, including those located in subdirectories of the
7422 specified directory, will be returned.
7423 </p>
7424 <p>Possible Answers:
7425 </p>
7426 <p>
7427 </p>
7428 <blockquote class="text">
7429 <p>A comma separated list of all instrument directories
7430 (encapsulated into apostrophes) in the specified directory.
7431 </p>
7432 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7433 </p>
7434 <blockquote class="text">
7435 <p>if the given directory does not exist.
7436 </p>
7437 </blockquote>
7438
7439
7440 </blockquote><p>
7441
7442 </p>
7443 <p>Example:
7444 </p>
7445 <p>
7446 </p>
7447 <blockquote class="text">
7448 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
7449 </p>
7450 <p>S: "'Piano Collection','Percussion Collection'"
7451 </p>
7452 </blockquote><p>
7453
7454 </p>
7455 <p>
7456 </p>
7457 <blockquote class="text">
7458 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
7459 </p>
7460 <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
7461 </p>
7462 </blockquote><p>
7463
7464 </p>
7465 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
7466 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7467 <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
7468 Getting instrument directory information</h3>
7469
7470 <p>The front-end can ask for the current settings of an
7471 instrument directory by sending the following command:
7472 </p>
7473 <p>
7474 </p>
7475 <blockquote class="text">
7476 <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
7477 </p>
7478 </blockquote><p>
7479
7480 </p>
7481 <p>Where &lt;dir&gt; should be replaced by the absolute path
7482 name of the directory the front-end is interested in.
7483 </p>
7484 <p>Possible Answers:
7485 </p>
7486 <p>
7487 </p>
7488 <blockquote class="text">
7489 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7490 Each answer line begins with the settings category name
7491 followed by a colon and then a space character &lt;SP&gt; and finally
7492 the info character string to that setting category. At the
7493 moment the following categories are defined:
7494 </p>
7495 <p>
7496 </p>
7497 <blockquote class="text">
7498 <p>DESCRIPTION -
7499 </p>
7500 <blockquote class="text">
7501 <p>A brief description of the directory content
7502 </p>
7503 </blockquote>
7504
7505
7506 <p>CREATED -
7507 </p>
7508 <blockquote class="text">
7509 <p>The creation date and time of the directory,
7510 represented in "YYYY-MM-DD HH:MM:SS" format
7511 </p>
7512 </blockquote>
7513
7514
7515 <p>MODIFIED -
7516 </p>
7517 <blockquote class="text">
7518 <p>The date and time of the last modification of the
7519 directory, represented in "YYYY-MM-DD HH:MM:SS" format
7520 </p>
7521 </blockquote>
7522
7523
7524 </blockquote>
7525
7526
7527 </blockquote><p>
7528
7529 </p>
7530 <p>The mentioned fields above don't have to be in particular order.
7531 </p>
7532 <p>Example:
7533 </p>
7534 <p>
7535 </p>
7536 <blockquote class="text">
7537 <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
7538 </p>
7539 <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
7540 </p>
7541 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
7542 </p>
7543 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
7544 </p>
7545 <p>&nbsp;&nbsp;&nbsp;"."
7546 </p>
7547 </blockquote><p>
7548
7549 </p>
7550 <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
7551 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7552 <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
7553 Renaming an instrument directory</h3>
7554
7555 <p>The front-end can alter the name of a specific
7556 instrument directory by sending the following command:
7557 </p>
7558 <p>
7559 </p>
7560 <blockquote class="text">
7561 <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
7562 </p>
7563 </blockquote><p>
7564
7565 </p>
7566 <p>Where &lt;dir&gt; is the absolute path name of the directory and
7567 &lt;name&gt; is the new name for that directory.
7568 </p>
7569 <p>Possible Answers:
7570 </p>
7571 <p>
7572 </p>
7573 <blockquote class="text">
7574 <p>"OK" -
7575 </p>
7576 <blockquote class="text">
7577 <p>on success
7578 </p>
7579 </blockquote>
7580
7581
7582 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7583 </p>
7584 <blockquote class="text">
7585 <p>in case the given directory does not exists,
7586 or if a directory with name equal to the new
7587 name already exists.
7588 </p>
7589 </blockquote>
7590
7591
7592 </blockquote><p>
7593
7594 </p>
7595 <p>Example:
7596 </p>
7597 <p>
7598 </p>
7599 <blockquote class="text">
7600 <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
7601 </p>
7602 <p>S: "OK"
7603 </p>
7604 </blockquote><p>
7605
7606 </p>
7607 <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7608 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7609 <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
7610 Moving an instrument directory</h3>
7611
7612 <p>The front-end can move a specific
7613 instrument directory by sending the following command:
7614 </p>
7615 <p>
7616 </p>
7617 <blockquote class="text">
7618 <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7619 </p>
7620 </blockquote><p>
7621
7622 </p>
7623 <p>Where &lt;dir&gt; is the absolute path name of the directory
7624 to move and &lt;dst&gt; is the location where the directory will
7625 be moved to.
7626 </p>
7627 <p>Possible Answers:
7628 </p>
7629 <p>
7630 </p>
7631 <blockquote class="text">
7632 <p>"OK" -
7633 </p>
7634 <blockquote class="text">
7635 <p>on success
7636 </p>
7637 </blockquote>
7638
7639
7640 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7641 </p>
7642 <blockquote class="text">
7643 <p>in case a given directory does not exists,
7644 or if a directory with name equal to the name
7645 of the specified directory already exists in
7646 the destination directory. Error is also thrown
7647 when trying to move a directory to a subdirectory
7648 of itself.
7649 </p>
7650 </blockquote>
7651
7652
7653 </blockquote><p>
7654
7655 </p>
7656 <p>Example:
7657 </p>
7658 <p>
7659 </p>
7660 <blockquote class="text">
7661 <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
7662 </p>
7663 <p>S: "OK"
7664 </p>
7665 </blockquote><p>
7666
7667 </p>
7668 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7669 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7670 <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
7671 Copying instrument directories</h3>
7672
7673 <p>The front-end can copy a specific
7674 instrument directory by sending the following command:
7675 </p>
7676 <p>
7677 </p>
7678 <blockquote class="text">
7679 <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7680 </p>
7681 </blockquote><p>
7682
7683 </p>
7684 <p>Where &lt;dir&gt; is the absolute path name of the directory
7685 to copy and &lt;dst&gt; is the location where the directory will
7686 be copied to.
7687 </p>
7688 <p>Possible Answers:
7689 </p>
7690 <p>
7691 </p>
7692 <blockquote class="text">
7693 <p>"OK" -
7694 </p>
7695 <blockquote class="text">
7696 <p>on success
7697 </p>
7698 </blockquote>
7699
7700
7701 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7702 </p>
7703 <blockquote class="text">
7704 <p>in case a given directory does not exists,
7705 or if a directory with name equal to the name
7706 of the specified directory already exists in
7707 the destination directory. Error is also thrown
7708 when trying to copy a directory to a subdirectory
7709 of itself.
7710 </p>
7711 </blockquote>
7712
7713
7714 </blockquote><p>
7715
7716 </p>
7717 <p>Example:
7718 </p>
7719 <p>
7720 </p>
7721 <blockquote class="text">
7722 <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
7723 </p>
7724 <p>S: "OK"
7725 </p>
7726 </blockquote><p>
7727
7728 </p>
7729 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
7730 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7731 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
7732 Changing the description of directory</h3>
7733
7734 <p>The front-end can alter the description of a specific
7735 instrument directory by sending the following command:
7736 </p>
7737 <p>
7738 </p>
7739 <blockquote class="text">
7740 <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
7741 </p>
7742 </blockquote><p>
7743
7744 </p>
7745 <p>Where &lt;dir&gt; is the absolute path name of the directory and
7746 &lt;desc&gt; is the new description for the directory.
7747 </p>
7748 <p>Possible Answers:
7749 </p>
7750 <p>
7751 </p>
7752 <blockquote class="text">
7753 <p>"OK" -
7754 </p>
7755 <blockquote class="text">
7756 <p>on success
7757 </p>
7758 </blockquote>
7759
7760
7761 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7762 </p>
7763 <blockquote class="text">
7764 <p>in case the given directory does not exists.
7765 </p>
7766 </blockquote>
7767
7768
7769 </blockquote><p>
7770
7771 </p>
7772 <p>Example:
7773 </p>
7774 <p>
7775 </p>
7776 <blockquote class="text">
7777 <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
7778 </p>
7779 <p>S: "OK"
7780 </p>
7781 </blockquote><p>
7782
7783 </p>
7784 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7785 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7786 <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
7787 Finding directories</h3>
7788
7789 <p>The front-end can search for directories
7790 in specific directory by sending the following command:
7791 </p>
7792 <p>
7793 </p>
7794 <blockquote class="text">
7795 <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
7796 </p>
7797 </blockquote><p>
7798
7799 </p>
7800 <p>Where &lt;dir&gt; should be replaced by the absolute path
7801 name of the directory to search in. If NON_RECURSIVE is specified, the
7802 directories located in subdirectories of the specified directory will not
7803 be searched. &lt;criteria-list&gt; is a list of search criterias
7804 in form of "key1=val1 key2=val2 ...". The following criterias are
7805 allowed:
7806 </p>
7807 <p>
7808
7809 <p>NAME='&lt;search-string&gt;'
7810 </p>
7811 <blockquote class="text">
7812 <p>Restricts the search to directories, which names
7813 satisfy the supplied search string.
7814 </p>
7815 </blockquote><p>
7816
7817 </p>
7818
7819
7820 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7821 </p>
7822 <blockquote class="text">
7823 <p>Restricts the search to directories, which creation
7824 date satisfies the specified period, where &lt;date-after&gt;
7825 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
7826 If &lt;date-after&gt; is omitted the search is restricted to
7827 directories created before &lt;date-before&gt;. If
7828 &lt;date-before&gt; is omitted, the search is restricted
7829 to directories created after &lt;date-after&gt;.
7830 </p>
7831 </blockquote><p>
7832
7833 </p>
7834
7835
7836 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7837 </p>
7838 <blockquote class="text">
7839 <p>Restricts the search to directories, which
7840 date of last modification satisfies the specified period, where
7841 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
7842 format. If &lt;date-after&gt; is omitted the search is restricted to
7843 directories, which are last modified before &lt;date-before&gt;. If
7844 &lt;date-before&gt; is omitted, the search is restricted to directories,
7845 which are last modified after &lt;date-after&gt;.
7846 </p>
7847 </blockquote><p>
7848
7849 </p>
7850
7851
7852 <p>DESCRIPTION='&lt;search-string&gt;'
7853 </p>
7854 <blockquote class="text">
7855 <p>Restricts the search to directories with description
7856 that satisfies the supplied search string.
7857 </p>
7858 </blockquote><p>
7859
7860 </p>
7861
7862
7863 <p>Where &lt;search-string&gt; is either a regular expression, or a
7864 word list separated with spaces for OR search and with '+' for AND search.
7865 </p>
7866 <p>Possible Answers:
7867 </p>
7868 <p>
7869 </p>
7870 <blockquote class="text">
7871 <p>A comma separated list with the absolute path names (encapsulated into
7872 apostrophes) of all directories in the specified directory that satisfy
7873 the supplied search criterias.
7874 </p>
7875 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7876 </p>
7877 <blockquote class="text">
7878 <p>if the given directory does not exist.
7879 </p>
7880 </blockquote>
7881
7882
7883 </blockquote><p>
7884
7885 </p>
7886 <p>Example:
7887 </p>
7888 <p>
7889 </p>
7890 <blockquote class="text">
7891 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
7892 </p>
7893 <p>S: "'/Piano Collection'"
7894 </p>
7895 </blockquote><p>
7896
7897 </p>
7898 <p>
7899 </p>
7900 <blockquote class="text">
7901 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
7902 </p>
7903 <p>S: "'/Piano Collection','/Percussions'"
7904 </p>
7905 </blockquote><p>
7906
7907 </p>
7908 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
7909 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7910 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
7911 Adding instruments to the instruments database</h3>
7912
7913 <p>The front-end can add one or more instruments
7914 to the instruments database by sending the following command:
7915 </p>
7916 <p>
7917 </p>
7918 <blockquote class="text">
7919 <p>ADD DB_INSTRUMENTS [&lt;mode&gt;] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
7920 </p>
7921 </blockquote><p>
7922
7923 </p>
7924 <p>Where &lt;db_dir&gt; is the absolute path name of a directory
7925 (encapsulated into apostrophes) in the instruments database in which
7926 only the new instruments (that are not already in the database) will
7927 be added, &lt;file_path&gt; is the absolute path name of a file or
7928 directory in the file system (encapsulated into apostrophes). In case
7929 an instrument file is supplied, only the instruments in the specified
7930 file will be added to the instruments database. If the optional
7931 &lt;instr_index&gt; (the index of the instrument within the given file)
7932 is supplied too, then only the specified instrument will be added.
7933 In case a directory is supplied, the instruments in that directory
7934 will be added. The OPTIONAL &lt;mode&gt; argument is only applied
7935 when a directory is provided as &lt;file_path&gt; and specifies how the
7936 scanning will be done and has exactly the following possibilities:
7937 </p>
7938 <p>
7939 </p>
7940 <blockquote class="text">
7941 <p>"NON_RECURSIVE" -
7942 </p>
7943 <blockquote class="text">
7944 <p>Only the instruments in the specified directory
7945 will be added, the instruments in the subdirectories
7946 will not be processed.
7947 </p>
7948 </blockquote>
7949
7950
7951 <p>"FLAT" -
7952 </p>
7953 <blockquote class="text">
7954 <p>All instruments will be processed, including those
7955 in the subdirectories, but the respective subdirectory
7956 structure will not be recreated in the instruments
7957 database. All instruments will be added directly in
7958 the specified database directory.
7959 </p>
7960 </blockquote>
7961
7962
7963 <p>not supplied -
7964 </p>
7965 <blockquote class="text">
7966 <p>The subdirectory tree structure will be recreated
7967 in the instruments database and all instruments will be
7968 processed and added to the respective subdirectory
7969 in the instruments database.
7970 </p>
7971 </blockquote>
7972
7973
7974 </blockquote><p>
7975
7976 </p>
7977 <p>Possible Answers:
7978 </p>
7979 <p>
7980 </p>
7981 <blockquote class="text">
7982 <p>"OK" -
7983 </p>
7984 <blockquote class="text">
7985 <p>on success
7986 </p>
7987 </blockquote>
7988
7989
7990 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7991 </p>
7992 <blockquote class="text">
7993 <p>if an invalid path is specified.
7994 </p>
7995 </blockquote>
7996
7997
7998 </blockquote><p>
7999
8000 </p>
8001 <p>Examples:
8002 </p>
8003 <p>
8004 </p>
8005 <blockquote class="text">
8006 <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8007 </p>
8008 <p>S: "OK"
8009 </p>
8010 </blockquote><p>
8011
8012 </p>
8013 <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8014 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8015 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8016 Removing an instrument</h3>
8017
8018 <p>The front-end can remove a particular instrument
8019 from the instruments database by sending the following command:
8020 </p>
8021 <p>
8022 </p>
8023 <blockquote class="text">
8024 <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8025 </p>
8026 </blockquote><p>
8027
8028 </p>
8029 <p>Where &lt;instr_path&gt; is the absolute path name
8030 (in the instruments database) of the instrument to remove.
8031 </p>
8032 <p>Possible Answers:
8033 </p>
8034 <p>
8035 </p>
8036 <blockquote class="text">
8037 <p>"OK" -
8038 </p>
8039 <blockquote class="text">
8040 <p>if the instrument is removed successfully
8041 </p>
8042 </blockquote>
8043
8044
8045 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8046 </p>
8047 <blockquote class="text">
8048 <p>if the given path does not exist or
8049 is a directory.
8050 </p>
8051 </blockquote>
8052
8053
8054 </blockquote><p>
8055
8056 </p>
8057 <p>Examples:
8058 </p>
8059 <p>
8060 </p>
8061 <blockquote class="text">
8062 <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8063 </p>
8064 <p>S: "OK"
8065 </p>
8066 </blockquote><p>
8067
8068 </p>
8069 <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8070 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8071 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8072 Getting amount of instruments</h3>
8073
8074 <p>The front-end can retrieve the current amount of
8075 instruments in a specific directory by sending the following command:
8076 </p>
8077 <p>
8078 </p>
8079 <blockquote class="text">
8080 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8081 </p>
8082 </blockquote><p>
8083
8084 </p>
8085 <p>Where &lt;dir&gt; should be replaced by the absolute path name
8086 of the directory. If RECURSIVE is specified, the number of all
8087 instruments, including those located in subdirectories of the
8088 specified directory, will be returned.
8089 </p>
8090 <p>Possible Answers:
8091 </p>
8092 <p>
8093 </p>
8094 <blockquote class="text">
8095 <p>The current number of instruments
8096 in the specified directory.
8097 </p>
8098 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8099 </p>
8100 <blockquote class="text">
8101 <p>if the given directory does not exist.
8102 </p>
8103 </blockquote>
8104
8105
8106 </blockquote><p>
8107
8108 </p>
8109 <p>Example:
8110 </p>
8111 <p>
8112 </p>
8113 <blockquote class="text">
8114 <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8115 </p>
8116 <p>S: "2"
8117 </p>
8118 </blockquote><p>
8119
8120 </p>
8121 <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8122 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8123 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8124 Listing all instruments in specific directory</h3>
8125
8126 <p>The front-end can retrieve the current list of instruments
8127 in specific directory by sending the following command:
8128 </p>
8129 <p>
8130 </p>
8131 <blockquote class="text">
8132 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8133 </p>
8134 </blockquote><p>
8135
8136 </p>
8137 <p>Where &lt;dir&gt; should be replaced by the absolute path
8138 name of the directory. If RECURSIVE is specified, the absolute path
8139 names of all instruments, including those located in subdirectories
8140 of the specified directory, will be returned.
8141 </p>
8142 <p>Possible Answers:
8143 </p>
8144 <p>
8145 </p>
8146 <blockquote class="text">
8147 <p>A comma separated list of all instruments
8148 (encapsulated into apostrophes) in the specified directory.
8149 </p>
8150 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8151 </p>
8152 <blockquote class="text">
8153 <p>if the given directory does not exist.
8154 </p>
8155 </blockquote>
8156
8157
8158 </blockquote><p>
8159
8160 </p>
8161 <p>Example:
8162 </p>
8163 <p>
8164 </p>
8165 <blockquote class="text">
8166 <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8167 </p>
8168 <p>S: "'Bosendorfer 290','Steinway D'"
8169 </p>
8170 </blockquote><p>
8171
8172 </p>
8173 <p>
8174 </p>
8175 <blockquote class="text">
8176 <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8177 </p>
8178 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8179 </p>
8180 </blockquote><p>
8181
8182 </p>
8183 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8184 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8185 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8186 Getting instrument information</h3>
8187
8188 <p>The front-end can ask for the current settings of an
8189 instrument by sending the following command:
8190 </p>
8191 <p>
8192 </p>
8193 <blockquote class="text">
8194 <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8195 </p>
8196 </blockquote><p>
8197
8198 </p>
8199 <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8200 name of the instrument the front-end is interested in.
8201 </p>
8202 <p>Possible Answers:
8203 </p>
8204 <p>
8205 </p>
8206 <blockquote class="text">
8207 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8208 Each answer line begins with the settings category name
8209 followed by a colon and then a space character &lt;SP&gt; and finally
8210 the info character string to that setting category. At the
8211 moment the following categories are defined:
8212 </p>
8213 <p>
8214 </p>
8215 <blockquote class="text">
8216 <p>INSTRUMENT_FILE -
8217 </p>
8218 <blockquote class="text">
8219 <p>File name of the instrument.
8220 </p>
8221 </blockquote>
8222
8223
8224 <p>INSTRUMENT_NR -
8225 </p>
8226 <blockquote class="text">
8227 <p>Index of the instrument within the file.
8228 </p>
8229 </blockquote>
8230
8231
8232 <p>FORMAT_FAMILY -
8233 </p>
8234 <blockquote class="text">
8235 <p>The format family of the instrument.
8236 </p>
8237 </blockquote>
8238
8239
8240 <p>FORMAT_VERSION -
8241 </p>
8242 <blockquote class="text">
8243 <p>The format version of the instrument.
8244 </p>
8245 </blockquote>
8246
8247
8248 <p>SIZE -
8249 </p>
8250 <blockquote class="text">
8251 <p>The size of the instrument in bytes.
8252 </p>
8253 </blockquote>
8254
8255
8256 <p>CREATED -
8257 </p>
8258 <blockquote class="text">
8259 <p>The date and time when the instrument is added
8260 in the instruments database, represented in
8261 "YYYY-MM-DD HH:MM:SS" format
8262 </p>
8263 </blockquote>
8264
8265
8266 <p>MODIFIED -
8267 </p>
8268 <blockquote class="text">
8269 <p>The date and time of the last modification of the
8270 instrument's database settings, represented in
8271 "YYYY-MM-DD HH:MM:SS" format
8272 </p>
8273 </blockquote>
8274
8275
8276 <p>DESCRIPTION -
8277 </p>
8278 <blockquote class="text">
8279 <p>A brief description of the instrument
8280 </p>
8281 </blockquote>
8282
8283
8284 <p>IS_DRUM -
8285 </p>
8286 <blockquote class="text">
8287 <p>either true or false, determines whether the
8288 instrument is a drumkit or a chromatic instrument
8289 </p>
8290 </blockquote>
8291
8292
8293 <p>PRODUCT -
8294 </p>
8295 <blockquote class="text">
8296 <p>The product title of the instrument
8297 </p>
8298 </blockquote>
8299
8300
8301 <p>ARTISTS -
8302 </p>
8303 <blockquote class="text">
8304 <p>Lists the artist names
8305 </p>
8306 </blockquote>
8307
8308
8309 <p>KEYWORDS -
8310 </p>
8311 <blockquote class="text">
8312 <p>Provides a list of keywords that refer to the instrument.
8313 Keywords are separated with semicolon and blank.
8314 </p>
8315 </blockquote>
8316
8317
8318 </blockquote>
8319
8320
8321 </blockquote><p>
8322
8323 </p>
8324 <p>The mentioned fields above don't have to be in particular order.
8325 </p>
8326 <p>Example:
8327 </p>
8328 <p>
8329 </p>
8330 <blockquote class="text">
8331 <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
8332 </p>
8333 <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
8334 </p>
8335 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8336 </p>
8337 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
8338 </p>
8339 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
8340 </p>
8341 <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
8342 </p>
8343 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8344 </p>
8345 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8346 </p>
8347 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
8348 </p>
8349 <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
8350 </p>
8351 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
8352 </p>
8353 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
8354 </p>
8355 <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
8356 </p>
8357 <p>&nbsp;&nbsp;&nbsp;"."
8358 </p>
8359 </blockquote><p>
8360
8361 </p>
8362 <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
8363 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8364 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
8365 Renaming an instrument</h3>
8366
8367 <p>The front-end can alter the name of a specific
8368 instrument by sending the following command:
8369 </p>
8370 <p>
8371 </p>
8372 <blockquote class="text">
8373 <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
8374 </p>
8375 </blockquote><p>
8376
8377 </p>
8378 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8379 &lt;name&gt; is the new name for that instrument.
8380 </p>
8381 <p>Possible Answers:
8382 </p>
8383 <p>
8384 </p>
8385 <blockquote class="text">
8386 <p>"OK" -
8387 </p>
8388 <blockquote class="text">
8389 <p>on success
8390 </p>
8391 </blockquote>
8392
8393
8394 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8395 </p>
8396 <blockquote class="text">
8397 <p>in case the given instrument does not exists,
8398 or if an instrument with name equal to the new
8399 name already exists.
8400 </p>
8401 </blockquote>
8402
8403
8404 </blockquote><p>
8405
8406 </p>
8407 <p>Example:
8408 </p>
8409 <p>
8410 </p>
8411 <blockquote class="text">
8412 <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
8413 </p>
8414 <p>S: "OK"
8415 </p>
8416 </blockquote><p>
8417
8418 </p>
8419 <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
8420 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8421 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
8422 Moving an instrument</h3>
8423
8424 <p>The front-end can move a specific instrument to another directory by
8425 sending the following command:
8426 </p>
8427 <p>
8428 </p>
8429 <blockquote class="text">
8430 <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8431 </p>
8432 </blockquote><p>
8433
8434 </p>
8435 <p>Where &lt;instr&gt; is the absolute path name of the instrument
8436 to move and &lt;dst&gt; is the directory where the instrument will
8437 be moved to.
8438 </p>
8439 <p>Possible Answers:
8440 </p>
8441 <p>
8442 </p>
8443 <blockquote class="text">
8444 <p>"OK" -
8445 </p>
8446 <blockquote class="text">
8447 <p>on success
8448 </p>
8449 </blockquote>
8450
8451
8452 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8453 </p>
8454 <blockquote class="text">
8455 <p>in case the given instrument does not exists,
8456 or if an instrument with name equal to the name of the
8457 specified instrument already exists in the destination
8458 directory.
8459 </p>
8460 </blockquote>
8461
8462
8463 </blockquote><p>
8464
8465 </p>
8466 <p>Example:
8467 </p>
8468 <p>
8469 </p>
8470 <blockquote class="text">
8471 <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
8472 </p>
8473 <p>S: "OK"
8474 </p>
8475 </blockquote><p>
8476
8477 </p>
8478 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
8479 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8480 <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
8481 Copying instruments</h3>
8482
8483 <p>The front-end can copy a specific instrument to another directory by
8484 sending the following command:
8485 </p>
8486 <p>
8487 </p>
8488 <blockquote class="text">
8489 <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8490 </p>
8491 </blockquote><p>
8492
8493 </p>
8494 <p>Where &lt;instr&gt; is the absolute path name of the instrument
8495 to copy and &lt;dst&gt; is the directory where the instrument will
8496 be copied to.
8497 </p>
8498 <p>Possible Answers:
8499 </p>
8500 <p>
8501 </p>
8502 <blockquote class="text">
8503 <p>"OK" -
8504 </p>
8505 <blockquote class="text">
8506 <p>on success
8507 </p>
8508 </blockquote>
8509
8510
8511 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8512 </p>
8513 <blockquote class="text">
8514 <p>in case the given instrument does not exists,
8515 or if an instrument with name equal to the name of the
8516 specified instrument already exists in the destination
8517 directory.
8518 </p>
8519 </blockquote>
8520
8521
8522 </blockquote><p>
8523
8524 </p>
8525 <p>Example:
8526 </p>
8527 <p>
8528 </p>
8529 <blockquote class="text">
8530 <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
8531 </p>
8532 <p>S: "OK"
8533 </p>
8534 </blockquote><p>
8535
8536 </p>
8537 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
8538 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8539 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
8540 Changing the description of instrument</h3>
8541
8542 <p>The front-end can alter the description of a specific
8543 instrument by sending the following command:
8544 </p>
8545 <p>
8546 </p>
8547 <blockquote class="text">
8548 <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
8549 </p>
8550 </blockquote><p>
8551
8552 </p>
8553 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8554 &lt;desc&gt; is the new description for the instrument.
8555 </p>
8556 <p>Possible Answers:
8557 </p>
8558 <p>
8559 </p>
8560 <blockquote class="text">
8561 <p>"OK" -
8562 </p>
8563 <blockquote class="text">
8564 <p>on success
8565 </p>
8566 </blockquote>
8567
8568
8569 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8570 </p>
8571 <blockquote class="text">
8572 <p>in case the given instrument does not exists.
8573 </p>
8574 </blockquote>
8575
8576
8577 </blockquote><p>
8578
8579 </p>
8580 <p>Example:
8581 </p>
8582 <p>
8583 </p>
8584 <blockquote class="text">
8585 <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
8586 </p>
8587 <p>S: "OK"
8588 </p>
8589 </blockquote><p>
8590
8591 </p>
8592 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
8593 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8594 <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
8595 Finding instruments</h3>
8596
8597 <p>The front-end can search for instruments
8598 in specific directory by sending the following command:
8599 </p>
8600 <p>
8601 </p>
8602 <blockquote class="text">
8603 <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8604 </p>
8605 </blockquote><p>
8606
8607 </p>
8608 <p>Where &lt;dir&gt; should be replaced by the absolute path
8609 name of the directory to search in. If NON_RECURSIVE is specified, the
8610 directories located in subdirectories of the specified directory will not
8611 be searched. &lt;criteria-list&gt; is a list of search criterias
8612 in form of "key1=val1 key2=val2 ...". The following criterias are
8613 allowed:
8614 </p>
8615 <p>
8616
8617 <p>NAME='&lt;search-string&gt;'
8618 </p>
8619 <blockquote class="text">
8620 <p>Restricts the search to instruments, which names
8621 satisfy the supplied search string.
8622 </p>
8623 </blockquote><p>
8624
8625 </p>
8626
8627
8628 <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
8629 </p>
8630 <blockquote class="text">
8631 <p>Restricts the search to instruments, which
8632 size is in the specified range. If &lt;min&gt; is omitted,
8633 the search results are restricted to instruments with size less then
8634 or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
8635 search is restricted to instruments with size greater then
8636 or equal to &lt;min&gt;.
8637 </p>
8638 </blockquote><p>
8639
8640 </p>
8641
8642
8643 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8644 </p>
8645 <blockquote class="text">
8646 <p>Restricts the search to instruments, which creation
8647 date satisfies the specified period, where &lt;date-after&gt;
8648 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8649 If &lt;date-after&gt; is omitted the search is restricted to
8650 instruments created before &lt;date-before&gt;. If
8651 &lt;date-before&gt; is omitted, the search is restricted
8652 to instruments created after &lt;date-after&gt;.
8653 </p>
8654 </blockquote><p>
8655
8656 </p>
8657
8658
8659 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8660 </p>
8661 <blockquote class="text">
8662 <p>Restricts the search to instruments, which
8663 date of last modification satisfies the specified period, where
8664 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8665 format. If &lt;date-after&gt; is omitted the search is restricted to
8666 instruments, which are last modified before &lt;date-before&gt;. If
8667 &lt;date-before&gt; is omitted, the search is restricted to instruments,
8668 which are last modified after &lt;date-after&gt;.
8669 </p>
8670 </blockquote><p>
8671
8672 </p>
8673
8674
8675 <p>DESCRIPTION='&lt;search-string&gt;'
8676 </p>
8677 <blockquote class="text">
8678 <p>Restricts the search to instruments with description
8679 that satisfies the supplied search string.
8680 </p>
8681 </blockquote><p>
8682
8683 </p>
8684
8685
8686 <p>PRODUCT='&lt;search-string&gt;'
8687 </p>
8688 <blockquote class="text">
8689 <p>Restricts the search to instruments with product info
8690 that satisfies the supplied search string.
8691 </p>
8692 </blockquote><p>
8693
8694 </p>
8695
8696
8697 <p>ARTISTS='&lt;search-string&gt;'
8698 </p>
8699 <blockquote class="text">
8700 <p>Restricts the search to instruments with artists info
8701 that satisfies the supplied search string.
8702 </p>
8703 </blockquote><p>
8704
8705 </p>
8706
8707
8708 <p>KEYWORDS='&lt;search-string&gt;'
8709 </p>
8710 <blockquote class="text">
8711 <p>Restricts the search to instruments with keyword list
8712 that satisfies the supplied search string.
8713 </p>
8714 </blockquote><p>
8715
8716 </p>
8717
8718
8719 <p>IS_DRUM=true | false
8720 </p>
8721 <blockquote class="text">
8722 <p>Either true or false. Restricts the search to
8723 drum kits or chromatic instruments.
8724 </p>
8725 </blockquote><p>
8726
8727 </p>
8728
8729
8730 <p>FORMAT_FAMILIES='&lt;format-list&gt;'
8731 </p>
8732 <blockquote class="text">
8733 <p>Restricts the search to instruments of the supplied format families,
8734 where &lt;format-list&gt; is a comma separated list of format families.
8735 </p>
8736 </blockquote><p>
8737
8738 </p>
8739
8740
8741 <p>Where &lt;search-string&gt; is either a regular expression, or a
8742 word list separated with spaces for OR search and with '+' for AND search.
8743 </p>
8744 <p>Possible Answers:
8745 </p>
8746 <p>
8747 </p>
8748 <blockquote class="text">
8749 <p>A comma separated list with the absolute path names (encapsulated into
8750 apostrophes) of all instruments in the specified directory that satisfy
8751 the supplied search criterias.
8752 </p>
8753 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8754 </p>
8755 <blockquote class="text">
8756 <p>if the given directory does not exist.
8757 </p>
8758 </blockquote>
8759
8760
8761 </blockquote><p>
8762
8763 </p>
8764 <p>Example:
8765 </p>
8766 <p>
8767 </p>
8768 <blockquote class="text">
8769 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
8770 </p>
8771 <p>S: "'/Piano Collection/Bosendorfer 290'"
8772 </p>
8773 </blockquote><p>
8774
8775 </p>
8776 <p>
8777 </p>
8778 <blockquote class="text">
8779 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
8780 </p>
8781 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
8782 </p>
8783 </blockquote><p>
8784
8785 </p>
8786 <a name="command_syntax"></a><br /><hr />
8787 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8788 <a name="rfc.section.7"></a><h3>7.&nbsp;
8789 Command Syntax</h3>
8790
8791 <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>
8792 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>)
8793 where applicable.
8794
8795 </p>
8796 <p>input =
8797 </p>
8798 <blockquote class="text">
8799 <p>line LF
8800
8801 </p>
8802 <p>/ line CR LF
8803
8804 </p>
8805 </blockquote><p>
8806
8807 </p>
8808 <p>line =
8809 </p>
8810 <blockquote class="text">
8811 <p>/* epsilon (empty line ignored) */
8812
8813 </p>
8814 <p>/ comment
8815
8816 </p>
8817 <p>/ command
8818
8819 </p>
8820 <p>/ error
8821
8822 </p>
8823 </blockquote><p>
8824
8825 </p>
8826 <p>comment =
8827 </p>
8828 <blockquote class="text">
8829 <p>'#'
8830
8831 </p>
8832 <p>/ comment '#'
8833
8834 </p>
8835 <p>/ comment SP
8836
8837 </p>
8838 <p>/ comment number
8839
8840 </p>
8841 <p>/ comment string
8842
8843 </p>
8844 </blockquote><p>
8845
8846 </p>
8847 <p>command =
8848 </p>
8849 <blockquote class="text">
8850 <p>ADD SP add_instruction
8851
8852 </p>
8853 <p>/ MAP SP map_instruction
8854
8855 </p>
8856 <p>/ UNMAP SP unmap_instruction
8857
8858 </p>
8859 <p>/ GET SP get_instruction
8860
8861 </p>
8862 <p>/ CREATE SP create_instruction
8863
8864 </p>
8865 <p>/ DESTROY SP destroy_instruction
8866
8867 </p>
8868 <p>/ LIST SP list_instruction
8869
8870 </p>
8871 <p>/ LOAD SP load_instruction
8872
8873 </p>
8874 <p>/ REMOVE SP remove_instruction
8875
8876 </p>
8877 <p>/ SET SP set_instruction
8878
8879 </p>
8880 <p>/ SUBSCRIBE SP subscribe_event
8881
8882 </p>
8883 <p>/ UNSUBSCRIBE SP unsubscribe_event
8884
8885 </p>
8886 <p>/ RESET SP reset_instruction
8887
8888 </p>
8889 <p>/ CLEAR SP clear_instruction
8890
8891 </p>
8892 <p>/ FIND SP find_instruction
8893
8894 </p>
8895 <p>/ MOVE SP move_instruction
8896
8897 </p>
8898 <p>/ COPY SP copy_instruction
8899
8900 </p>
8901 <p>/ RESET
8902
8903 </p>
8904 <p>/ QUIT
8905
8906 </p>
8907 </blockquote><p>
8908
8909 </p>
8910 <p>add_instruction =
8911 </p>
8912 <blockquote class="text">
8913 <p>CHANNEL
8914
8915 </p>
8916 <p>/ DB_INSTRUMENT_DIRECTORY SP pathname
8917
8918 </p>
8919 <p>/ DB_INSTRUMENTS SP FLAT SP pathname SP pathname
8920
8921 </p>
8922 <p>/ DB_INSTRUMENTS SP NON_RECURSIVE SP pathname SP pathname
8923
8924 </p>
8925 <p>/ DB_INSTRUMENTS SP pathname SP pathname
8926
8927 </p>
8928 <p>/ DB_INSTRUMENTS SP pathname SP pathname SP instrument_index
8929
8930 </p>
8931 <p>/ MIDI_INSTRUMENT_MAP
8932
8933 </p>
8934 <p>/ MIDI_INSTRUMENT_MAP SP map_name
8935
8936 </p>
8937 </blockquote><p>
8938
8939 </p>
8940 <p>subscribe_event =
8941 </p>
8942 <blockquote class="text">
8943 <p>AUDIO_OUTPUT_DEVICE_COUNT
8944
8945 </p>
8946 <p>/ AUDIO_OUTPUT_DEVICE_INFO
8947
8948 </p>
8949 <p>/ MIDI_INPUT_DEVICE_COUNT
8950
8951 </p>
8952 <p>/ MIDI_INPUT_DEVICE_INFO
8953
8954 </p>
8955 <p>/ CHANNEL_COUNT
8956
8957 </p>
8958 <p>/ VOICE_COUNT
8959
8960 </p>
8961 <p>/ STREAM_COUNT
8962
8963 </p>
8964 <p>/ BUFFER_FILL
8965
8966 </p>
8967 <p>/ CHANNEL_INFO
8968
8969 </p>
8970 <p>/ FX_SEND_COUNT
8971
8972 </p>
8973 <p>/ FX_SEND_INFO
8974
8975 </p>
8976 <p>/ MIDI_INSTRUMENT_MAP_COUNT
8977
8978 </p>
8979 <p>/ MIDI_INSTRUMENT_MAP_INFO
8980
8981 </p>
8982 <p>/ MIDI_INSTRUMENT_COUNT
8983
8984 </p>
8985 <p>/ MIDI_INSTRUMENT_INFO
8986
8987 </p>
8988 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
8989
8990 </p>
8991 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
8992
8993 </p>
8994 <p>/ DB_INSTRUMENT_COUNT
8995
8996 </p>
8997 <p>/ DB_INSTRUMENT_INFO
8998
8999 </p>
9000 <p>/ MISCELLANEOUS
9001
9002 </p>
9003 <p>/ TOTAL_VOICE_COUNT
9004
9005 </p>
9006 <p>/ GLOBAL_INFO
9007
9008 </p>
9009 </blockquote><p>
9010
9011 </p>
9012 <p>unsubscribe_event =
9013 </p>
9014 <blockquote class="text">
9015 <p>AUDIO_OUTPUT_DEVICE_COUNT
9016
9017 </p>
9018 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9019
9020 </p>
9021 <p>/ MIDI_INPUT_DEVICE_COUNT
9022
9023 </p>
9024 <p>/ MIDI_INPUT_DEVICE_INFO
9025
9026 </p>
9027 <p>/ CHANNEL_COUNT
9028
9029 </p>
9030 <p>/ VOICE_COUNT
9031
9032 </p>
9033 <p>/ STREAM_COUNT
9034
9035 </p>
9036 <p>/ BUFFER_FILL
9037
9038 </p>
9039 <p>/ CHANNEL_INFO
9040
9041 </p>
9042 <p>/ FX_SEND_COUNT
9043
9044 </p>
9045 <p>/ FX_SEND_INFO
9046
9047 </p>
9048 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9049
9050 </p>
9051 <p>/ MIDI_INSTRUMENT_MAP_INFO
9052
9053 </p>
9054 <p>/ MIDI_INSTRUMENT_COUNT
9055
9056 </p>
9057 <p>/ MIDI_INSTRUMENT_INFO
9058
9059 </p>
9060 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9061
9062 </p>
9063 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9064
9065 </p>
9066 <p>/ DB_INSTRUMENT_COUNT
9067
9068 </p>
9069 <p>/ DB_INSTRUMENT_INFO
9070
9071 </p>
9072 <p>/ MISCELLANEOUS
9073
9074 </p>
9075 <p>/ TOTAL_VOICE_COUNT
9076
9077 </p>
9078 <p>/ GLOBAL_INFO
9079
9080 </p>
9081 </blockquote><p>
9082
9083 </p>
9084 <p>map_instruction =
9085 </p>
9086 <blockquote class="text">
9087 <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
9088
9089 </p>
9090 <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
9091
9092 </p>
9093 <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
9094
9095 </p>
9096 <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
9097
9098 </p>
9099 </blockquote><p>
9100
9101 </p>
9102 <p>unmap_instruction =
9103 </p>
9104 <blockquote class="text">
9105 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
9106
9107 </p>
9108 </blockquote><p>
9109
9110 </p>
9111 <p>remove_instruction =
9112 </p>
9113 <blockquote class="text">
9114 <p>CHANNEL SP sampler_channel
9115
9116 </p>
9117 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
9118
9119 </p>
9120 <p>/ MIDI_INSTRUMENT_MAP SP ALL
9121
9122 </p>
9123 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP pathname
9124
9125 </p>
9126 <p>/ DB_INSTRUMENT_DIRECTORY SP pathname
9127
9128 </p>
9129 <p>/ DB_INSTRUMENT SP pathname
9130
9131 </p>
9132 </blockquote><p>
9133
9134 </p>
9135 <p>get_instruction =
9136 </p>
9137 <blockquote class="text">
9138 <p>AVAILABLE_ENGINES
9139
9140 </p>
9141 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
9142
9143 </p>
9144 <p>/ MIDI_INPUT_DRIVER SP INFO SP string
9145
9146 </p>
9147 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
9148
9149 </p>
9150 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9151
9152 </p>
9153 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
9154
9155 </p>
9156 <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
9157
9158 </p>
9159 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
9160
9161 </p>
9162 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9163
9164 </p>
9165 <p>/ AUDIO_OUTPUT_DEVICES
9166
9167 </p>
9168 <p>/ MIDI_INPUT_DEVICES
9169
9170 </p>
9171 <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
9172
9173 </p>
9174 <p>/ MIDI_INPUT_DEVICE SP INFO SP number
9175
9176 </p>
9177 <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
9178
9179 </p>
9180 <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
9181
9182 </p>
9183 <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
9184
9185 </p>
9186 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
9187
9188 </p>
9189 <p>/ CHANNELS
9190
9191 </p>
9192 <p>/ CHANNEL SP INFO SP sampler_channel
9193
9194 </p>
9195 <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
9196
9197 </p>
9198 <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
9199
9200 </p>
9201 <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
9202
9203 </p>
9204 <p>/ ENGINE SP INFO SP engine_name
9205
9206 </p>
9207 <p>/ SERVER SP INFO
9208
9209 </p>
9210 <p>/ TOTAL_VOICE_COUNT
9211
9212 </p>
9213 <p>/ TOTAL_VOICE_COUNT_MAX
9214
9215 </p>
9216 <p>/ MIDI_INSTRUMENTS SP midi_map
9217
9218 </p>
9219 <p>/ MIDI_INSTRUMENTS SP ALL
9220
9221 </p>
9222 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
9223
9224 </p>
9225 <p>/ MIDI_INSTRUMENT_MAPS
9226
9227 </p>
9228 <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
9229
9230 </p>
9231 <p>/ FX_SENDS SP sampler_channel
9232
9233 </p>
9234 <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
9235
9236 </p>
9237 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP pathname
9238
9239 </p>
9240 <p>/ DB_INSTRUMENT_DIRECTORIES SP pathname
9241
9242 </p>
9243 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP pathname
9244
9245 </p>
9246 <p>/ DB_INSTRUMENTS SP RECURSIVE SP pathname
9247
9248 </p>
9249 <p>/ DB_INSTRUMENTS SP pathname
9250
9251 </p>
9252 <p>/ DB_INSTRUMENT SP INFO SP pathname
9253
9254 </p>
9255 <p>/ VOLUME
9256
9257 </p>
9258 </blockquote><p>
9259
9260 </p>
9261 <p>set_instruction =
9262 </p>
9263 <blockquote class="text">
9264 <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9265
9266 </p>
9267 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
9268
9269 </p>
9270 <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9271
9272 </p>
9273 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
9274
9275 </p>
9276 <p>/ CHANNEL SP set_chan_instruction
9277
9278 </p>
9279 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
9280
9281 </p>
9282 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
9283
9284 </p>
9285 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
9286
9287 </p>
9288 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
9289
9290 </p>
9291 <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
9292
9293 </p>
9294 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP pathname SP dirname
9295
9296 </p>
9297 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP pathname SP stringval
9298
9299 </p>
9300 <p>/ DB_INSTRUMENT SP NAME SP pathname SP dirname
9301
9302 </p>
9303 <p>/ DB_INSTRUMENT SP DESCRIPTION SP pathname SP stringval
9304
9305 </p>
9306 <p>/ ECHO SP boolean
9307
9308 </p>
9309 <p>/ VOLUME SP volume_value
9310
9311 </p>
9312 </blockquote><p>
9313
9314 </p>
9315 <p>create_instruction =
9316 </p>
9317 <blockquote class="text">
9318 <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
9319
9320 </p>
9321 <p>/ AUDIO_OUTPUT_DEVICE SP string
9322
9323 </p>
9324 <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
9325
9326 </p>
9327 <p>/ MIDI_INPUT_DEVICE SP string
9328
9329 </p>
9330 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
9331
9332 </p>
9333 <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
9334
9335 </p>
9336 </blockquote><p>
9337
9338 </p>
9339 <p>reset_instruction =
9340 </p>
9341 <blockquote class="text">
9342 <p>CHANNEL SP sampler_channel
9343
9344 </p>
9345 </blockquote><p>
9346
9347 </p>
9348 <p>clear_instruction =
9349 </p>
9350 <blockquote class="text">
9351 <p>MIDI_INSTRUMENTS SP midi_map
9352
9353 </p>
9354 <p>/ MIDI_INSTRUMENTS SP ALL
9355
9356 </p>
9357 </blockquote><p>
9358
9359 </p>
9360 <p>find_instruction =
9361 </p>
9362 <blockquote class="text">
9363 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP pathname SP query_val_list
9364
9365 </p>
9366 <p>/ DB_INSTRUMENTS SP pathname SP query_val_list
9367
9368 </p>
9369 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP pathname SP query_val_list
9370
9371 </p>
9372 <p>/ DB_INSTRUMENT_DIRECTORIES SP pathname SP query_val_list
9373
9374 </p>
9375 </blockquote><p>
9376
9377 </p>
9378 <p>move_instruction =
9379 </p>
9380 <blockquote class="text">
9381 <p>DB_INSTRUMENT_DIRECTORY SP pathname SP pathname
9382
9383 </p>
9384 <p>/ DB_INSTRUMENT SP pathname SP pathname
9385
9386 </p>
9387 </blockquote><p>
9388
9389 </p>
9390 <p>copy_instruction =
9391 </p>
9392 <blockquote class="text">
9393 <p>DB_INSTRUMENT_DIRECTORY SP pathname SP pathname
9394
9395 </p>
9396 <p>/ DB_INSTRUMENT SP pathname SP pathname
9397
9398 </p>
9399 </blockquote><p>
9400
9401 </p>
9402 <p>destroy_instruction =
9403 </p>
9404 <blockquote class="text">
9405 <p>AUDIO_OUTPUT_DEVICE SP number
9406
9407 </p>
9408 <p>/ MIDI_INPUT_DEVICE SP number
9409
9410 </p>
9411 <p>/ FX_SEND SP sampler_channel SP fx_send_id
9412
9413 </p>
9414 </blockquote><p>
9415
9416 </p>
9417 <p>load_instruction =
9418 </p>
9419 <blockquote class="text">
9420 <p>INSTRUMENT SP load_instr_args
9421
9422 </p>
9423 <p>/ ENGINE SP load_engine_args
9424
9425 </p>
9426 </blockquote><p>
9427
9428 </p>
9429 <p>set_chan_instruction =
9430 </p>
9431 <blockquote class="text">
9432 <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
9433
9434 </p>
9435 <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
9436
9437 </p>
9438 <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
9439
9440 </p>
9441 <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
9442
9443 </p>
9444 <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
9445
9446 </p>
9447 <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
9448
9449 </p>
9450 <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
9451
9452 </p>
9453 <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
9454
9455 </p>
9456 <p>/ VOLUME SP sampler_channel SP volume_value
9457
9458 </p>
9459 <p>/ MUTE SP sampler_channel SP boolean
9460
9461 </p>
9462 <p>/ SOLO SP sampler_channel SP boolean
9463
9464 </p>
9465 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
9466
9467 </p>
9468 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
9469
9470 </p>
9471 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
9472
9473 </p>
9474 </blockquote><p>
9475
9476 </p>
9477 <p>modal_arg =
9478 </p>
9479 <blockquote class="text">
9480 <p>/* epsilon (empty argument) */
9481
9482 </p>
9483 <p>/ NON_MODAL SP
9484
9485 </p>
9486 </blockquote><p>
9487
9488 </p>
9489 <p>key_val_list =
9490 </p>
9491 <blockquote class="text">
9492 <p>string '=' param_val_list
9493
9494 </p>
9495 <p>/ key_val_list SP string '=' param_val_list
9496
9497 </p>
9498 </blockquote><p>
9499
9500 </p>
9501 <p>buffer_size_type =
9502 </p>
9503 <blockquote class="text">
9504 <p>BYTES
9505
9506 </p>
9507 <p>/ PERCENTAGE
9508
9509 </p>
9510 </blockquote><p>
9511
9512 </p>
9513 <p>list_instruction =
9514 </p>
9515 <blockquote class="text">
9516 <p>AUDIO_OUTPUT_DEVICES
9517
9518 </p>
9519 <p>/ MIDI_INPUT_DEVICES
9520
9521 </p>
9522 <p>/ CHANNELS
9523
9524 </p>
9525 <p>/ AVAILABLE_ENGINES
9526
9527 </p>
9528 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
9529
9530 </p>
9531 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
9532
9533 </p>
9534 <p>/ MIDI_INSTRUMENTS SP midi_map
9535
9536 </p>
9537 <p>/ MIDI_INSTRUMENTS SP ALL
9538
9539 </p>
9540 <p>/ MIDI_INSTRUMENT_MAPS
9541
9542 </p>
9543 <p>/ FX_SENDS SP sampler_channel
9544
9545 </p>
9546 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP pathname
9547
9548 </p>
9549 <p>/ DB_INSTRUMENT_DIRECTORIES SP pathname
9550
9551 </p>
9552 <p>/ DB_INSTRUMENTS SP RECURSIVE SP pathname
9553
9554 </p>
9555 <p>/ DB_INSTRUMENTS SP pathname
9556
9557 </p>
9558 </blockquote><p>
9559
9560 </p>
9561 <p>load_instr_args =
9562 </p>
9563 <blockquote class="text">
9564 <p>filename SP instrument_index SP sampler_channel
9565
9566 </p>
9567 <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
9568
9569 </p>
9570 </blockquote><p>
9571
9572 </p>
9573 <p>load_engine_args =
9574 </p>
9575 <blockquote class="text">
9576 <p>engine_name SP sampler_channel
9577
9578 </p>
9579 </blockquote><p>
9580
9581 </p>
9582 <p>instr_load_mode =
9583 </p>
9584 <blockquote class="text">
9585 <p>ON_DEMAND
9586
9587 </p>
9588 <p>/ ON_DEMAND_HOLD
9589
9590 </p>
9591 <p>/ PERSISTENT
9592
9593 </p>
9594 </blockquote><p>
9595
9596 </p>
9597 <p>device_index =
9598 </p>
9599 <blockquote class="text">
9600 <p>number
9601
9602 </p>
9603 </blockquote><p>
9604
9605 </p>
9606 <p>audio_channel_index =
9607 </p>
9608 <blockquote class="text">
9609 <p>number
9610
9611 </p>
9612 </blockquote><p>
9613
9614 </p>
9615 <p>audio_output_type_name =
9616 </p>
9617 <blockquote class="text">
9618 <p>string
9619
9620 </p>
9621 </blockquote><p>
9622
9623 </p>
9624 <p>midi_input_port_index =
9625 </p>
9626 <blockquote class="text">
9627 <p>number
9628
9629 </p>
9630 </blockquote><p>
9631
9632 </p>
9633 <p>midi_input_channel_index =
9634 </p>
9635 <blockquote class="text">
9636 <p>number
9637
9638 </p>
9639 <p>/ ALL
9640
9641 </p>
9642 </blockquote><p>
9643
9644 </p>
9645 <p>midi_input_type_name =
9646 </p>
9647 <blockquote class="text">
9648 <p>string
9649
9650 </p>
9651 </blockquote><p>
9652
9653 </p>
9654 <p>midi_map =
9655 </p>
9656 <blockquote class="text">
9657 <p>number
9658
9659 </p>
9660 </blockquote><p>
9661
9662 </p>
9663 <p>midi_bank =
9664 </p>
9665 <blockquote class="text">
9666 <p>number
9667
9668 </p>
9669 </blockquote><p>
9670
9671 </p>
9672 <p>midi_prog =
9673 </p>
9674 <blockquote class="text">
9675 <p>number
9676
9677 </p>
9678 </blockquote><p>
9679
9680 </p>
9681 <p>midi_ctrl =
9682 </p>
9683 <blockquote class="text">
9684 <p>number
9685
9686 </p>
9687 </blockquote><p>
9688
9689 </p>
9690 <p>volume_value =
9691 </p>
9692 <blockquote class="text">
9693 <p>dotnum
9694
9695 </p>
9696 <p>/ number
9697
9698 </p>
9699 </blockquote><p>
9700
9701 </p>
9702 <p>sampler_channel =
9703 </p>
9704 <blockquote class="text">
9705 <p>number
9706
9707 </p>
9708 </blockquote><p>
9709
9710 </p>
9711 <p>instrument_index =
9712 </p>
9713 <blockquote class="text">
9714 <p>number
9715
9716 </p>
9717 </blockquote><p>
9718
9719 </p>
9720 <p>fx_send_id =
9721 </p>
9722 <blockquote class="text">
9723 <p>number
9724
9725 </p>
9726 </blockquote><p>
9727
9728 </p>
9729 <p>engine_name =
9730 </p>
9731 <blockquote class="text">
9732 <p>string
9733
9734 </p>
9735 </blockquote><p>
9736
9737 </p>
9738 <p>pathname =
9739 </p>
9740 <blockquote class="text">
9741 <p>stringval
9742
9743 </p>
9744 </blockquote><p>
9745
9746 </p>
9747 <p>dirname =
9748 </p>
9749 <blockquote class="text">
9750 <p>stringval
9751
9752 </p>
9753 </blockquote><p>
9754
9755 </p>
9756 <p>filename =
9757 </p>
9758 <blockquote class="text">
9759 <p>stringval
9760
9761 </p>
9762 </blockquote><p>
9763
9764 </p>
9765 <p>map_name =
9766 </p>
9767 <blockquote class="text">
9768 <p>stringval
9769
9770 </p>
9771 </blockquote><p>
9772
9773 </p>
9774 <p>entry_name =
9775 </p>
9776 <blockquote class="text">
9777 <p>stringval
9778
9779 </p>
9780 </blockquote><p>
9781
9782 </p>
9783 <p>fx_send_name =
9784 </p>
9785 <blockquote class="text">
9786 <p>stringval
9787
9788 </p>
9789 </blockquote><p>
9790
9791 </p>
9792 <p>param_val_list =
9793 </p>
9794 <blockquote class="text">
9795 <p>param_val
9796
9797 </p>
9798 <p>/ param_val_list','param_val
9799
9800 </p>
9801 </blockquote><p>
9802
9803 </p>
9804 <p>param_val =
9805 </p>
9806 <blockquote class="text">
9807 <p>string
9808
9809 </p>
9810 <p>/ stringval
9811
9812 </p>
9813 <p>/ number
9814
9815 </p>
9816 <p>/ dotnum
9817
9818 </p>
9819 </blockquote><p>
9820
9821 </p>
9822 <p>query_val_list =
9823 </p>
9824 <blockquote class="text">
9825 <p>string '=' query_val
9826
9827 </p>
9828 <p>/ query_val_list SP string '=' query_val
9829
9830 </p>
9831 </blockquote><p>
9832
9833 </p>
9834 <p>query_val =
9835 </p>
9836 <blockquote class="text">
9837 <p>string
9838
9839 </p>
9840 <p>/ stringval
9841
9842 </p>
9843 </blockquote><p>
9844
9845 </p>
9846 <a name="events"></a><br /><hr />
9847 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9848 <a name="rfc.section.8"></a><h3>8.&nbsp;
9849 Events</h3>
9850
9851 <p>This chapter will describe all currently defined events supported by LinuxSampler.
9852 </p>
9853 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
9854 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9855 <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
9856 Number of audio output devices changed</h3>
9857
9858 <p>Client may want to be notified when the total number of audio output devices on the
9859 back-end changes by issuing the following command:
9860 </p>
9861 <p>
9862 </p>
9863 <blockquote class="text">
9864 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
9865 </p>
9866 </blockquote><p>
9867
9868 </p>
9869 <p>Server will start sending the following notification messages:
9870 </p>
9871 <p>
9872 </p>
9873 <blockquote class="text">
9874 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
9875 </p>
9876 </blockquote><p>
9877
9878 </p>
9879 <p>where &lt;devices&gt; will be replaced by the new number
9880 of audio output devices.
9881 </p>
9882 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
9883 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9884 <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
9885 Audio output device's settings changed</h3>
9886
9887 <p>Client may want to be notified when changes were made to audio output devices on the
9888 back-end by issuing the following command:
9889 </p>
9890 <p>
9891 </p>
9892 <blockquote class="text">
9893 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
9894 </p>
9895 </blockquote><p>
9896
9897 </p>
9898 <p>Server will start sending the following notification messages:
9899 </p>
9900 <p>
9901 </p>
9902 <blockquote class="text">
9903 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
9904 </p>
9905 </blockquote><p>
9906
9907 </p>
9908 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
9909 which settings has been changed. The front-end will have to send
9910 the respective command to actually get the audio output device info. Because these messages
9911 will be triggered by LSCP commands issued by other clients rather than real
9912 time events happening on the server, it is believed that an empty notification
9913 message is sufficient here.
9914 </p>
9915 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
9916 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9917 <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
9918 Number of MIDI input devices changed</h3>
9919
9920 <p>Client may want to be notified when the total number of MIDI input devices on the
9921 back-end changes by issuing the following command:
9922 </p>
9923 <p>
9924 </p>
9925 <blockquote class="text">
9926 <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
9927 </p>
9928 </blockquote><p>
9929
9930 </p>
9931 <p>Server will start sending the following notification messages:
9932 </p>
9933 <p>
9934 </p>
9935 <blockquote class="text">
9936 <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
9937 </p>
9938 </blockquote><p>
9939
9940 </p>
9941 <p>where &lt;devices&gt; will be replaced by the new number
9942 of MIDI input devices.
9943 </p>
9944 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
9945 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9946 <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
9947 MIDI input device's settings changed</h3>
9948
9949 <p>Client may want to be notified when changes were made to MIDI input devices on the
9950 back-end by issuing the following command:
9951 </p>
9952 <p>
9953 </p>
9954 <blockquote class="text">
9955 <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
9956 </p>
9957 </blockquote><p>
9958
9959 </p>
9960 <p>Server will start sending the following notification messages:
9961 </p>
9962 <p>
9963 </p>
9964 <blockquote class="text">
9965 <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
9966 </p>
9967 </blockquote><p>
9968
9969 </p>
9970 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
9971 which settings has been changed. The front-end will have to send
9972 the respective command to actually get the MIDI input device info. Because these messages
9973 will be triggered by LSCP commands issued by other clients rather than real
9974 time events happening on the server, it is believed that an empty notification
9975 message is sufficient here.
9976 </p>
9977 <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
9978 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9979 <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
9980 Number of sampler channels changed</h3>
9981
9982 <p>Client may want to be notified when the total number of channels on the
9983 back-end changes by issuing the following command:
9984 </p>
9985 <p>
9986 </p>
9987 <blockquote class="text">
9988 <p>SUBSCRIBE CHANNEL_COUNT
9989 </p>
9990 </blockquote><p>
9991
9992 </p>
9993 <p>Server will start sending the following notification messages:
9994 </p>
9995 <p>
9996 </p>
9997 <blockquote class="text">
9998 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
9999 </p>
10000 </blockquote><p>
10001
10002 </p>
10003 <p>where &lt;channels&gt; will be replaced by the new number
10004 of sampler channels.
10005 </p>
10006 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
10007 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10008 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
10009 Number of active voices changed</h3>
10010
10011 <p>Client may want to be notified when the number of voices on the
10012 back-end changes by issuing the following command:
10013 </p>
10014 <p>
10015 </p>
10016 <blockquote class="text">
10017 <p>SUBSCRIBE VOICE_COUNT
10018 </p>
10019 </blockquote><p>
10020
10021 </p>
10022 <p>Server will start sending the following notification messages:
10023 </p>
10024 <p>
10025 </p>
10026 <blockquote class="text">
10027 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
10028 </p>
10029 </blockquote><p>
10030
10031 </p>
10032 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10033 voice count change occurred and &lt;voices&gt; by the new number of
10034 active voices on that channel.
10035 </p>
10036 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
10037 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10038 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
10039 Number of active disk streams changed</h3>
10040
10041 <p>Client may want to be notified when the number of streams on the back-end
10042 changes by issuing the following command: SUBSCRIBE STREAM_COUNT
10043 </p>
10044 <p>
10045 </p>
10046 <blockquote class="text">
10047 <p>SUBSCRIBE STREAM_COUNT
10048 </p>
10049 </blockquote><p>
10050
10051 </p>
10052 <p>Server will start sending the following notification messages:
10053 </p>
10054 <p>
10055 </p>
10056 <blockquote class="text">
10057 <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
10058 </p>
10059 </blockquote><p>
10060
10061 </p>
10062 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10063 stream count change occurred and &lt;streams&gt; by the new number of
10064 active disk streams on that channel.
10065 </p>
10066 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
10067 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10068 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
10069 Disk stream buffer fill state changed</h3>
10070
10071 <p>Client may want to be notified when the buffer fill state of a disk stream
10072 on the back-end changes by issuing the following command:
10073 </p>
10074 <p>
10075 </p>
10076 <blockquote class="text">
10077 <p>SUBSCRIBE BUFFER_FILL
10078 </p>
10079 </blockquote><p>
10080
10081 </p>
10082 <p>Server will start sending the following notification messages:
10083 </p>
10084 <p>
10085 </p>
10086 <blockquote class="text">
10087 <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
10088 </p>
10089 </blockquote><p>
10090
10091 </p>
10092 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10093 buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
10094 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>
10095 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.
10096 </p>
10097 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
10098 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10099 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
10100 Channel information changed</h3>
10101
10102 <p>Client may want to be notified when changes were made to sampler channels on the
10103 back-end by issuing the following command:
10104 </p>
10105 <p>
10106 </p>
10107 <blockquote class="text">
10108 <p>SUBSCRIBE CHANNEL_INFO
10109 </p>
10110 </blockquote><p>
10111
10112 </p>
10113 <p>Server will start sending the following notification messages:
10114 </p>
10115 <p>
10116 </p>
10117 <blockquote class="text">
10118 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
10119 </p>
10120 </blockquote><p>
10121
10122 </p>
10123 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10124 channel info change occurred. The front-end will have to send
10125 the respective command to actually get the channel info. Because these messages
10126 will be triggered by LSCP commands issued by other clients rather than real
10127 time events happening on the server, it is believed that an empty notification
10128 message is sufficient here.
10129 </p>
10130 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
10131 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10132 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
10133 Number of effect sends changed</h3>
10134
10135 <p>Client may want to be notified when the number of effect sends on
10136 a particular sampler channel is changed by issuing the following command:
10137 </p>
10138 <p>
10139 </p>
10140 <blockquote class="text">
10141 <p>SUBSCRIBE FX_SEND_COUNT
10142 </p>
10143 </blockquote><p>
10144
10145 </p>
10146 <p>Server will start sending the following notification messages:
10147 </p>
10148 <p>
10149 </p>
10150 <blockquote class="text">
10151 <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
10152 </p>
10153 </blockquote><p>
10154
10155 </p>
10156 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
10157 channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
10158 be replaced by the new number of effect sends on that channel.
10159 </p>
10160 <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
10161 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10162 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
10163 Effect send information changed</h3>
10164
10165 <p>Client may want to be notified when changes were made to effect sends on a
10166 a particular sampler channel by issuing the following command:
10167 </p>
10168 <p>
10169 </p>
10170 <blockquote class="text">
10171 <p>SUBSCRIBE FX_SEND_INFO
10172 </p>
10173 </blockquote><p>
10174
10175 </p>
10176 <p>Server will start sending the following notification messages:
10177 </p>
10178 <p>
10179 </p>
10180 <blockquote class="text">
10181 <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
10182 </p>
10183 </blockquote><p>
10184
10185 </p>
10186 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
10187 channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
10188 be replaced by the numerical ID of the changed effect send.
10189 </p>
10190 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
10191 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10192 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
10193 Total number of active voices changed</h3>
10194
10195 <p>Client may want to be notified when the total number of voices on the
10196 back-end changes by issuing the following command:
10197 </p>
10198 <p>
10199 </p>
10200 <blockquote class="text">
10201 <p>SUBSCRIBE TOTAL_VOICE_COUNT
10202 </p>
10203 </blockquote><p>
10204
10205 </p>
10206 <p>Server will start sending the following notification messages:
10207 </p>
10208 <p>
10209 </p>
10210 <blockquote class="text">
10211 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
10212 </p>
10213 </blockquote><p>
10214
10215 </p>
10216 <p>where &lt;voices&gt; will be replaced by the new number of
10217 all currently active voices.
10218 </p>
10219 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
10220 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10221 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
10222 Number of MIDI instrument maps changed</h3>
10223
10224 <p>Client may want to be notified when the number of MIDI instrument maps on the
10225 back-end changes by issuing the following command:
10226 </p>
10227 <p>
10228 </p>
10229 <blockquote class="text">
10230 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
10231 </p>
10232 </blockquote><p>
10233
10234 </p>
10235 <p>Server will start sending the following notification messages:
10236 </p>
10237 <p>
10238 </p>
10239 <blockquote class="text">
10240 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
10241 </p>
10242 </blockquote><p>
10243
10244 </p>
10245 <p>where &lt;maps&gt; will be replaced by the new number
10246 of MIDI instrument maps.
10247 </p>
10248 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
10249 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10250 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
10251 MIDI instrument map information changed</h3>
10252
10253 <p>Client may want to be notified when changes were made to MIDI instrument maps on the
10254 back-end by issuing the following command:
10255 </p>
10256 <p>
10257 </p>
10258 <blockquote class="text">
10259 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
10260 </p>
10261 </blockquote><p>
10262
10263 </p>
10264 <p>Server will start sending the following notification messages:
10265 </p>
10266 <p>
10267 </p>
10268 <blockquote class="text">
10269 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
10270 </p>
10271 </blockquote><p>
10272
10273 </p>
10274 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
10275 for which information changes occurred. The front-end will have to send
10276 the respective command to actually get the MIDI instrument map info. Because these messages
10277 will be triggered by LSCP commands issued by other clients rather than real
10278 time events happening on the server, it is believed that an empty notification
10279 message is sufficient here.
10280 </p>
10281 <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
10282 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10283 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
10284 Number of MIDI instruments changed</h3>
10285
10286 <p>Client may want to be notified when the number of MIDI instrument maps on the
10287 back-end changes by issuing the following command:
10288 </p>
10289 <p>
10290 </p>
10291 <blockquote class="text">
10292 <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
10293 </p>
10294 </blockquote><p>
10295
10296 </p>
10297 <p>Server will start sending the following notification messages:
10298 </p>
10299 <p>
10300 </p>
10301 <blockquote class="text">
10302 <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
10303 </p>
10304 </blockquote><p>
10305
10306 </p>
10307 <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
10308 the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
10309 the new number of MIDI instruments in the specified map.
10310 </p>
10311 <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
10312 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10313 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
10314 MIDI instrument information changed</h3>
10315
10316 <p>Client may want to be notified when changes were made to MIDI instruments on the
10317 back-end by issuing the following command:
10318 </p>
10319 <p>
10320 </p>
10321 <blockquote class="text">
10322 <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
10323 </p>
10324 </blockquote><p>
10325
10326 </p>
10327 <p>Server will start sending the following notification messages:
10328 </p>
10329 <p>
10330 </p>
10331 <blockquote class="text">
10332 <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
10333 </p>
10334 </blockquote><p>
10335
10336 </p>
10337 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
10338 in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
10339 the location of the changed MIDI instrument in the map. The front-end will have to send
10340 the respective command to actually get the MIDI instrument info. Because these messages
10341 will be triggered by LSCP commands issued by other clients rather than real
10342 time events happening on the server, it is believed that an empty notification
10343 message is sufficient here.
10344 </p>
10345 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
10346 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10347 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
10348 Global settings changed</h3>
10349
10350 <p>Client may want to be notified when changes to the global settings
10351 of the sampler were made by issuing the following command:
10352 </p>
10353 <p>
10354 </p>
10355 <blockquote class="text">
10356 <p>SUBSCRIBE GLOBAL_INFO
10357 </p>
10358 </blockquote><p>
10359
10360 </p>
10361 <p>Server will start sending the following types of notification messages:
10362 </p>
10363 <p>
10364 </p>
10365 <blockquote class="text">
10366 <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
10367 golbal volume of the sampler is changed, where &lt;volume&gt; will be
10368 replaced by the optional dotted floating point value, reflecting the
10369 new global volume parameter.
10370 </p>
10371 </blockquote><p>
10372
10373 </p>
10374 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
10375 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10376 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
10377 Number of database instrument directories changed</h3>
10378
10379 <p>Client may want to be notified when the number of instrument
10380 directories in a particular directory in the instruments database
10381 is changed by issuing the following command:
10382 </p>
10383 <p>
10384 </p>
10385 <blockquote class="text">
10386 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
10387 </p>
10388 </blockquote><p>
10389
10390 </p>
10391 <p>Server will start sending the following notification messages:
10392 </p>
10393 <p>
10394 </p>
10395 <blockquote class="text">
10396 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
10397 </p>
10398 </blockquote><p>
10399
10400 </p>
10401 <p>where &lt;dir-path&gt; will be replaced by the absolute path
10402 name of the directory in the instruments database,
10403 in which the number of directories is changed.
10404 </p>
10405 <p>Note that when a non-empty directory is removed, this event
10406 is not sent for the subdirectories in that directory.
10407 </p>
10408 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
10409 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10410 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
10411 Database instrument directory information changed</h3>
10412
10413 <p>Client may want to be notified when changes were made to directories
10414 in the instruments database by issuing the following command:
10415 </p>
10416 <p>
10417 </p>
10418 <blockquote class="text">
10419 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
10420 </p>
10421 </blockquote><p>
10422
10423 </p>
10424 <p>Server will start sending the following notification messages:
10425 </p>
10426 <p>
10427 </p>
10428 <blockquote class="text">
10429 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
10430 </p>
10431 </blockquote><p>
10432
10433 </p>
10434 <p>where &lt;dir-path&gt; will be replaced by the absolute path name
10435 of the directory, for which information changes occurred. The front-end will have to send
10436 the respective command to actually get the updated directory info. Because these messages
10437 will be triggered by LSCP commands issued by other clients rather than real
10438 time events happening on the server, it is believed that an empty notification
10439 message is sufficient here.
10440 </p>
10441 <p>
10442 </p>
10443 <blockquote class="text">
10444 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
10445 </p>
10446 </blockquote><p>
10447
10448 </p>
10449 <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
10450 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
10451 the new name of the directory, encapsulated into apostrophes.
10452 </p>
10453 <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
10454 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10455 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
10456 Number of database instruments changed</h3>
10457
10458 <p>Client may want to be notified when the number of instruments
10459 in a particular directory in the instruments database
10460 is changed by issuing the following command:
10461 </p>
10462 <p>
10463 </p>
10464 <blockquote class="text">
10465 <p>SUBSCRIBE DB_INSTRUMENT_COUNT
10466 </p>
10467 </blockquote><p>
10468
10469 </p>
10470 <p>Server will start sending the following notification messages:
10471 </p>
10472 <p>
10473 </p>
10474 <blockquote class="text">
10475 <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
10476 </p>
10477 </blockquote><p>
10478
10479 </p>
10480 <p>where &lt;dir-path&gt; will be replaced by the absolute path
10481 name of the directory in the instruments database,
10482 in which the number of instruments is changed.
10483 </p>
10484 <p>Note that when a non-empty directory is removed, this event
10485 is not sent for the instruments in that directory.
10486 </p>
10487 <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
10488 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10489 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
10490 Database instrument information changed</h3>
10491
10492 <p>Client may want to be notified when changes were made to instruments
10493 in the instruments database by issuing the following command:
10494 </p>
10495 <p>
10496 </p>
10497 <blockquote class="text">
10498 <p>SUBSCRIBE DB_INSTRUMENT_INFO
10499 </p>
10500 </blockquote><p>
10501
10502 </p>
10503 <p>Server will start sending the following notification messages:
10504 </p>
10505 <p>
10506 </p>
10507 <blockquote class="text">
10508 <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
10509 </p>
10510 </blockquote><p>
10511
10512 </p>
10513 <p>where &lt;instr-path&gt; will be replaced by the absolute path name
10514 of the instrument, which settings are changed. The front-end will have to send
10515 the respective command to actually get the updated directory info. Because these messages
10516 will be triggered by LSCP commands issued by other clients rather than real
10517 time events happening on the server, it is believed that an empty notification
10518 message is sufficient here.
10519 </p>
10520 <p>
10521 </p>
10522 <blockquote class="text">
10523 <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
10524 </p>
10525 </blockquote><p>
10526
10527 </p>
10528 <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
10529 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
10530 the new name of the instrument, encapsulated into apostrophes.
10531 </p>
10532 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
10533 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10534 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
10535 Miscellaneous and debugging events</h3>
10536
10537 <p>Client may want to be notified of miscellaneous and debugging events occurring at
10538 the server by issuing the following command:
10539 </p>
10540 <p>
10541 </p>
10542 <blockquote class="text">
10543 <p>SUBSCRIBE MISCELLANEOUS
10544 </p>
10545 </blockquote><p>
10546
10547 </p>
10548 <p>Server will start sending the following notification messages:
10549 </p>
10550 <p>
10551 </p>
10552 <blockquote class="text">
10553 <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
10554 </p>
10555 </blockquote><p>
10556
10557 </p>
10558 <p>where &lt;string&gt; will be replaced by whatever data server
10559 wants to send to the client. Client MAY display this data to the
10560 user AS IS to facilitate debugging.
10561 </p>
10562 <a name="anchor14"></a><br /><hr />
10563 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10564 <a name="rfc.section.9"></a><h3>9.&nbsp;
10565 Security Considerations</h3>
10566
10567 <p>As there is so far no method of authentication and authorization
10568 defined and so not required for a client applications to succeed to
10569 connect, running LinuxSampler might be a security risk for the host
10570 system the LinuxSampler instance is running on.
10571 </p>
10572 <a name="anchor15"></a><br /><hr />
10573 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10574 <a name="rfc.section.10"></a><h3>10.&nbsp;
10575 Acknowledgments</h3>
10576
10577 <p>This document has benefited greatly from the comments of the
10578 following people, discussed on the LinuxSampler developer's mailing
10579 list:
10580 </p>
10581 <p>
10582 </p>
10583 <blockquote class="text">
10584 <p>Rui Nuno Capela
10585 </p>
10586 <p>Vladimir Senkov
10587 </p>
10588 <p>Mark Knecht
10589 </p>
10590 <p>Grigor Iliev
10591 </p>
10592 </blockquote><p>
10593
10594 </p>
10595 <a name="rfc.references1"></a><br /><hr />
10596 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10597 <h3>11.&nbsp;References</h3>
10598 <table width="99%" border="0">
10599 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
10600 <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>
10601 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
10602 <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>
10603 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
10604 <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>
10605 </table>
10606
10607 <a name="rfc.authors"></a><br /><hr />
10608 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10609 <h3>Author's Address</h3>
10610 <table width="99%" border="0" cellpadding="0" cellspacing="0">
10611 <tr><td class="author-text">&nbsp;</td>
10612 <td class="author-text">C.
10613 Schoenebeck</td></tr>
10614 <tr><td class="author-text">&nbsp;</td>
10615 <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
10616 <tr><td class="author-text">&nbsp;</td>
10617 <td class="author-text">Max-Planck-Str. 39</td></tr>
10618 <tr><td class="author-text">&nbsp;</td>
10619 <td class="author-text">74081 Heilbronn</td></tr>
10620 <tr><td class="author-text">&nbsp;</td>
10621 <td class="author-text">Germany</td></tr>
10622 <tr><td class="author" align="right">Email:&nbsp;</td>
10623 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
10624 </table>
10625 <a name="rfc.copyright"></a><br /><hr />
10626 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10627 <h3>Full Copyright Statement</h3>
10628 <p class='copyright'>
10629 Copyright &copy; The IETF Trust (2007).</p>
10630 <p class='copyright'>
10631 This document is subject to the rights,
10632 licenses and restrictions contained in BCP&nbsp;78,
10633 and except as set forth therein,
10634 the authors retain all their rights.</p>
10635 <p class='copyright'>
10636 This document and the information contained herein are provided
10637 on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
10638 THE ORGANIZATION HE/SHE REPRESENTS
10639 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
10640 AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
10641 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
10642 THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
10643 IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
10644 PURPOSE.</p>
10645 <h3>Intellectual Property</h3>
10646 <p class='copyright'>
10647 The IETF takes no position regarding the validity or scope of any
10648 Intellectual Property Rights or other rights that might be claimed
10649 to pertain to the implementation or use of the technology
10650 described in this document or the extent to which any license
10651 under such rights might or might not be available; nor does it
10652 represent that it has made any independent effort to identify any
10653 such rights.
10654 Information on the procedures with respect to
10655 rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
10656 <p class='copyright'>
10657 Copies of IPR disclosures made to the IETF Secretariat and any
10658 assurances of licenses to be made available,
10659 or the result of an attempt made to obtain a general license or
10660 permission for the use of such proprietary rights by implementers or
10661 users of this specification can be obtained from the IETF on-line IPR
10662 repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
10663 <p class='copyright'>
10664 The IETF invites any interested party to bring to its attention
10665 any copyrights,
10666 patents or patent applications,
10667 or other
10668 proprietary rights that may cover technology that may be required
10669 to implement this standard.
10670 Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
10671 <h3>Acknowledgment</h3>
10672 <p class='copyright'>
10673 Funding for the RFC Editor function is provided by
10674 the IETF Administrative Support Activity (IASA).</p>
10675 </body></html>

  ViewVC Help
Powered by ViewVC