/[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 1390 - (show annotations) (download) (as text)
Sun Oct 7 14:07:48 2007 UTC (16 years, 6 months ago) by schoenebeck
File MIME type: text/html
File size: 393691 byte(s)
* updated LSCP specs draft regarding escape sequences

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 (draft)</title>
3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4 <meta name="description" content="LinuxSampler Control Protocol (draft)">
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: April 9, 2008</td><td class="header">October 7, 2007</td></tr>
149 </table></td></tr></table>
150 <h1><br />LinuxSampler Control Protocol (draft)<br />LSCP 1.2cvs</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 April 9, 2008.</p>
177
178 <h3>Copyright Notice</h3>
179 <p>
180 Copyright &copy; The IETF Trust (2007).</p>
181
182 <h3>Abstract</h3>
183
184 <p>The LinuxSampler Control Protocol (LSCP) is an
185 application-level protocol primarily intended for local and
186 remote controlling the LinuxSampler backend application, which is a
187 sophisticated server-like console application essentially playing
188 back audio samples and manipulating the samples in real time to
189 certain extent.
190 </p><a name="toc"></a><br /><hr />
191 <h3>Table of Contents</h3>
192 <p class="toc">
193 <a href="#anchor1">1.</a>&nbsp;
194 Requirements notation<br />
195 <a href="#LSCP versioning">2.</a>&nbsp;
196 Versioning of this specification<br />
197 <a href="#anchor2">3.</a>&nbsp;
198 Introduction<br />
199 <a href="#anchor3">4.</a>&nbsp;
200 Focus of this protocol<br />
201 <a href="#anchor4">5.</a>&nbsp;
202 Communication Overview<br />
203 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
204 Request/response communication method<br />
205 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
206 Result format<br />
207 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
208 Subscribe/notify communication method<br />
209 <a href="#control_commands">6.</a>&nbsp;
210 Description for control commands<br />
211 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
212 Ignored lines and comments<br />
213 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
214 Configuring audio drivers<br />
215 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
216 Getting amount of available audio output drivers<br />
217 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
218 Getting all available audio output drivers<br />
219 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
220 Getting information about a specific audio
221 output driver<br />
222 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
223 Getting information about specific audio
224 output driver parameter<br />
225 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
226 Creating an audio output device<br />
227 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
228 Destroying an audio output device<br />
229 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
230 Getting all created audio output device count<br />
231 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
232 Getting all created audio output device list<br />
233 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
234 Getting current settings of an audio output device<br />
235 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
236 Changing settings of audio output devices<br />
237 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
238 Getting information about an audio channel<br />
239 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
240 Getting information about specific audio channel parameter<br />
241 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
242 Changing settings of audio output channels<br />
243 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
244 Configuring MIDI input drivers<br />
245 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
246 Getting amount of available MIDI input drivers<br />
247 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
248 Getting all available MIDI input drivers<br />
249 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
250 Getting information about a specific MIDI input driver<br />
251 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
252 Getting information about specific MIDI input driver parameter<br />
253 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
254 Creating a MIDI input device<br />
255 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
256 Destroying a MIDI input device<br />
257 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
258 Getting all created MIDI input device count<br />
259 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
260 Getting all created MIDI input device list<br />
261 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
262 Getting current settings of a MIDI input device<br />
263 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
264 Changing settings of MIDI input devices<br />
265 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
266 Getting information about a MIDI port<br />
267 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
268 Getting information about specific MIDI port parameter<br />
269 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
270 Changing settings of MIDI input ports<br />
271 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
272 Configuring sampler channels<br />
273 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
274 Loading an instrument<br />
275 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
276 Loading a sampler engine<br />
277 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
278 Getting all created sampler channel count<br />
279 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
280 Getting all created sampler channel list<br />
281 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
282 Adding a new sampler channel<br />
283 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
284 Removing a sampler channel<br />
285 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
286 Getting amount of available engines<br />
287 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
288 Getting all available engines<br />
289 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
290 Getting information about an engine<br />
291 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
292 Getting sampler channel information<br />
293 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
294 Current number of active voices<br />
295 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
296 Current number of active disk streams<br />
297 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
298 Current fill state of disk stream buffers<br />
299 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
300 Setting audio output device<br />
301 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
302 Setting audio output type<br />
303 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
304 Setting audio output channel<br />
305 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
306 Setting MIDI input device<br />
307 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
308 Setting MIDI input type<br />
309 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
310 Setting MIDI input port<br />
311 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
312 Setting MIDI input channel<br />
313 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
314 Setting channel volume<br />
315 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
316 Muting a sampler channel<br />
317 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
318 Soloing a sampler channel<br />
319 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
320 Assigning a MIDI instrument map to a sampler channel<br />
321 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
322 Adding an effect send to a sampler channel<br />
323 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
324 Removing an effect send from a sampler channel<br />
325 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
326 Getting amount of effect sends on a sampler channel<br />
327 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
328 Listing all effect sends on a sampler channel<br />
329 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
330 Getting effect send information<br />
331 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
332 Changing effect send's name<br />
333 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
334 Altering effect send's audio routing<br />
335 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.32.</a>&nbsp;
336 Altering effect send's MIDI controller<br />
337 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.33.</a>&nbsp;
338 Altering effect send's send level<br />
339 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.34.</a>&nbsp;
340 Resetting a sampler channel<br />
341 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
342 Controlling connection<br />
343 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
344 Register front-end for receiving event messages<br />
345 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
346 Unregister front-end for not receiving event messages<br />
347 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
348 Enable or disable echo of commands<br />
349 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
350 Close client connection<br />
351 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
352 Global commands<br />
353 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
354 Current number of active voices<br />
355 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
356 Maximum amount of active voices<br />
357 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#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 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
434 Getting job status information<br />
435 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
436 Formatting the instruments database<br />
437 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
438 Editing Instruments<br />
439 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
440 Opening an appropriate instrument editor application<br />
441 <a href="#command_syntax">7.</a>&nbsp;
442 Command Syntax<br />
443 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
444 Character Set and Escape Sequences<br />
445 <a href="#events">8.</a>&nbsp;
446 Events<br />
447 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
448 Number of audio output devices changed<br />
449 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
450 Audio output device's settings changed<br />
451 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
452 Number of MIDI input devices changed<br />
453 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
454 MIDI input device's settings changed<br />
455 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
456 Number of sampler channels changed<br />
457 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.6.</a>&nbsp;
458 Number of active voices changed<br />
459 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.7.</a>&nbsp;
460 Number of active disk streams changed<br />
461 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.8.</a>&nbsp;
462 Disk stream buffer fill state changed<br />
463 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.9.</a>&nbsp;
464 Channel information changed<br />
465 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.10.</a>&nbsp;
466 Number of effect sends changed<br />
467 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.11.</a>&nbsp;
468 Effect send information changed<br />
469 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.12.</a>&nbsp;
470 Total number of active voices changed<br />
471 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.13.</a>&nbsp;
472 Number of MIDI instrument maps changed<br />
473 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.14.</a>&nbsp;
474 MIDI instrument map information changed<br />
475 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.15.</a>&nbsp;
476 Number of MIDI instruments changed<br />
477 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.16.</a>&nbsp;
478 MIDI instrument information changed<br />
479 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.17.</a>&nbsp;
480 Global settings changed<br />
481 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.18.</a>&nbsp;
482 Number of database instrument directories changed<br />
483 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.19.</a>&nbsp;
484 Database instrument directory information changed<br />
485 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.20.</a>&nbsp;
486 Number of database instruments changed<br />
487 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.21.</a>&nbsp;
488 Database instrument information changed<br />
489 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.22.</a>&nbsp;
490 Database job status information changed<br />
491 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.23.</a>&nbsp;
492 Miscellaneous and debugging events<br />
493 <a href="#anchor14">9.</a>&nbsp;
494 Security Considerations<br />
495 <a href="#anchor15">10.</a>&nbsp;
496 Acknowledgments<br />
497 <a href="#rfc.references1">11.</a>&nbsp;
498 References<br />
499 <a href="#rfc.authors">&#167;</a>&nbsp;
500 Author's Address<br />
501 <a href="#rfc.copyright">&#167;</a>&nbsp;
502 Intellectual Property and Copyright Statements<br />
503 </p>
504 <br clear="all" />
505
506 <a name="anchor1"></a><br /><hr />
507 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
508 <a name="rfc.section.1"></a><h3>1.&nbsp;
509 Requirements notation</h3>
510
511 <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
512 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
513 and "OPTIONAL" in this document are to be interpreted as
514 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>.
515 </p>
516 <p>This protocol is always case-sensitive if not explicitly
517 claimed the opposite.
518 </p>
519 <p>In examples, "C:" and "S:" indicate lines sent by the client
520 (front-end) and server (LinuxSampler) respectively. Lines in
521 examples must be interpreted as every line being CRLF
522 terminated (carriage return character followed by line feed
523 character as defined in the ASCII standard <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>),
524 thus the following example:
525 </p>
526 <p>
527 </p>
528 <blockquote class="text">
529 <p>C: "some line"
530 </p>
531 <p>&nbsp;&nbsp;&nbsp;"another line"
532 </p>
533 </blockquote><p>
534
535 </p>
536 <p>must actually be interpreted as client sending the following
537 message:
538 </p>
539 <p>
540 </p>
541 <blockquote class="text">
542 <p>"some line&lt;CR&gt;&lt;LF&gt;another
543 line&lt;CR&gt;&lt;LF&gt;"
544 </p>
545 </blockquote><p>
546
547 </p>
548 <p>where &lt;CR&gt; symbolizes the carriage return character and
549 &lt;LF&gt; the line feed character as defined in the ASCII
550 standard.
551 </p>
552 <p>Due to technical reasons, messages can arbitrary be
553 fragmented, means the following example:
554 </p>
555 <p>
556 </p>
557 <blockquote class="text">
558 <p>S: "abcd"
559 </p>
560 </blockquote><p>
561
562 </p>
563 <p>could also happen to be sent in three messages like in the
564 following sequence scenario:
565 </p>
566 <p>
567 </p>
568 <ul class="text">
569 <li>server sending message "a"
570 </li>
571 <li>followed by a delay (pause) with
572 arbitrary duration
573 </li>
574 <li>followed by server sending message
575 "bcd&lt;CR&gt;"
576 </li>
577 <li>again followed by a delay (pause) with arbitrary
578 duration
579 </li>
580 <li>followed by server sending the message
581 "&lt;LF&gt;"
582 </li>
583 </ul><p>
584
585 </p>
586 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
587 return and line feed characters respectively.
588 </p>
589 <a name="LSCP versioning"></a><br /><hr />
590 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
591 <a name="rfc.section.2"></a><h3>2.&nbsp;
592 Versioning of this specification</h3>
593
594 <p>LSCP will certainly be extended and enhanced by-and-by. Each official
595 release of the LSCP specification will be tagged with a unique version
596 tuple. The version tuple consists at least of a major and minor version
597 number like:
598
599 </p>
600 <p>
601 </p>
602 <blockquote class="text">
603 <p>"1.2"
604 </p>
605 </blockquote><p>
606
607 </p>
608 <p>
609 In this example the major version number would be "1" and the minor
610 version number would be "2". Note that the version tuple might also
611 have more than two elements. The major version number defines a
612 group of backward compatible versions. That means a frontend is
613 compatible to the connected sampler if and only if the LSCP versions
614 to which each of the two parties complies to, match both of the
615 following rules:
616
617 </p>
618 <p>Compatibility:
619 </p>
620 <p>
621 </p>
622 <ol class="text">
623 <li>The frontend's LSCP major version and the sampler's LSCP
624 major version are exactly equal.
625 </li>
626 <li>The frontend's LSCP minor version is less or equal than
627 the sampler's LSCP minor version.
628 </li>
629 </ol><p>
630
631 </p>
632 <p>
633 Compatibility can only be claimed if both rules are true.
634 The frontend can use the
635 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
636 get the version of the LSCP specification the sampler complies with.
637
638 </p>
639 <a name="anchor2"></a><br /><hr />
640 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
641 <a name="rfc.section.3"></a><h3>3.&nbsp;
642 Introduction</h3>
643
644 <p>LinuxSampler is a so called software sampler application
645 capable to playback audio samples from a computer's Random
646 Access Memory (RAM) as well as directly streaming it from disk.
647 LinuxSampler is designed to be modular. It provides several so
648 called "sampler engines" where each engine is specialized for a
649 certain purpose. LinuxSampler has virtual channels which will be
650 referred in this document as "sampler channels". The channels
651 are in such way virtual as they can be connected to an
652 arbitrary MIDI input method and arbitrary MIDI channel (e.g.
653 sampler channel 17 could be connected to an ALSA sequencer
654 device 64:0 and listening to MIDI channel 1 there). Each sampler
655 channel will be associated with an instance of one of the available
656 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
657 each sampler channel can be routed to an arbitrary audio output
658 method (ALSA / JACK) and an arbitrary audio output channel
659 there.
660 </p>
661 <a name="anchor3"></a><br /><hr />
662 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
663 <a name="rfc.section.4"></a><h3>4.&nbsp;
664 Focus of this protocol</h3>
665
666 <p>Main focus of this protocol is to provide a way to configure
667 a running LinuxSampler instance and to retrieve information
668 about it. The focus of this protocol is not to provide a way to
669 control synthesis parameters or even to trigger or release
670 notes. Or in other words; the focus are those functionalities
671 which are not covered by MIDI or which may at most be handled
672 via MIDI System Exclusive Messages.
673 </p>
674 <a name="anchor4"></a><br /><hr />
675 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
676 <a name="rfc.section.5"></a><h3>5.&nbsp;
677 Communication Overview</h3>
678
679 <p>There are two distinct methods of communication between a
680 running instance of LinuxSampler and one or more control
681 applications, so called "front-ends": a simple request/response
682 communication method used by the clients to give commands to the
683 server as well as to inquire about server's status and a
684 subscribe/notify communication method used by the client to
685 subscribe to and receive notifications of certain events as they
686 happen on the server. The latter needs more effort to be
687 implemented in the front-end application. The two communication
688 methods will be described next.
689 </p>
690 <a name="anchor5"></a><br /><hr />
691 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
692 <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
693 Request/response communication method</h3>
694
695 <p>This simple communication method is based on
696 <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
697 front-end application establishes a TCP connection to the
698 LinuxSampler instance on a certain host system. Then the
699 front-end application will send certain ASCII based commands
700 as defined in this document (every command line must be CRLF
701 terminated - see "Conventions used in this document" at the
702 beginning of this document) and the LinuxSampler application
703 will response after a certain process time with an
704 appropriate ASCII based answer, also as defined in this
705 document. So this TCP communication is simply based on query
706 and answer paradigm. That way LinuxSampler is only able to
707 answer on queries from front-ends, but not able to
708 automatically send messages to the client if it's not asked
709 to. The fronted should not reconnect to LinuxSampler for
710 every single command, instead it should keep the connection
711 established and simply resend message(s) for subsequent
712 commands. To keep information in the front-end up-to-date
713 the front-end has to periodically send new requests to get
714 the current information from the LinuxSampler instance. This
715 is often referred to as "polling". While polling is simple
716 to implement and may be OK to use in some cases, there may
717 be disadvantages to polling such as network traffic overhead
718 and information being out of date.
719 It is possible for a client or several clients to open more
720 than one connection to the server at the same time. It is
721 also possible to send more than one request to the server
722 at the same time but if those requests are sent over the
723 same connection server MUST execute them sequentially. Upon
724 executing a request server will produce a result set and
725 send it to the client. Each and every request made by the
726 client MUST result in a result set being sent back to the
727 client. No other data other than a result set may be sent by
728 a server to a client. No result set may be sent to a client
729 without the client sending request to the server first. On
730 any particular connection, result sets MUST be sent in their
731 entirety without being interrupted by other result sets. If
732 several requests got queued up at the server they MUST be
733 processed in the order they were received and result sets
734 MUST be sent back in the same order.
735 </p>
736 <a name="anchor6"></a><br /><hr />
737 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
738 <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
739 Result format</h3>
740
741 <p>Result set could be one of the following types:
742 </p>
743 <p>
744 </p>
745 <ol class="text">
746 <li>Normal
747 </li>
748 <li>Warning
749 </li>
750 <li>Error
751 </li>
752 </ol><p>
753
754 </p>
755 <p>Warning and Error result sets MUST be single line and
756 have the following format:
757 </p>
758 <p>
759 </p>
760 <ul class="text">
761 <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
762 </li>
763 <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
764 </li>
765 </ul><p>
766
767 </p>
768 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
769 numeric unique identifiers of the warning or error and
770 &lt;warning-message&gt; and &lt;error-message&gt; are
771 human readable descriptions of the warning or error
772 respectively.
773 </p>
774 <p>Examples:
775 </p>
776 <p>
777 </p>
778 <blockquote class="text">
779 <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
780 </p>
781 <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
782 </p>
783 </blockquote><p>
784
785 </p>
786 <p>
787 </p>
788 <blockquote class="text">
789 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
790 </p>
791 <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
792 </p>
793 </blockquote><p>
794
795 </p>
796 <p>
797 </p>
798 <blockquote class="text">
799 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
800 </p>
801 <p>S: "ERR:9:There is no audio output device with index 123456."
802 </p>
803 </blockquote><p>
804
805 </p>
806 <p>Normal result sets could be:
807 </p>
808 <p>
809 </p>
810 <ol class="text">
811 <li>Empty
812 </li>
813 <li>Single line
814 </li>
815 <li>Multi-line
816 </li>
817 </ol><p>
818
819 </p>
820 <p> Empty result set is issued when the server only
821 needed to acknowledge the fact that the request was
822 received and it was processed successfully and no
823 additional information is available. This result set has
824 the following format:
825 </p>
826 <p>
827 </p>
828 <blockquote class="text">
829 <p>"OK"
830 </p>
831 </blockquote><p>
832
833 </p>
834 <p>Example:
835 </p>
836 <p>
837 </p>
838 <blockquote class="text">
839 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
840 </p>
841 <p>S: "OK"
842 </p>
843 </blockquote><p>
844
845 </p>
846 <p>Single line result sets are command specific. One
847 example of a single line result set is an empty line.
848 Multi-line result sets are command specific and may
849 include one or more lines of information. They MUST
850 always end with the following line:
851 </p>
852 <p>
853 </p>
854 <blockquote class="text">
855 <p>"."
856 </p>
857 </blockquote><p>
858
859 </p>
860 <p>Example:
861 </p>
862 <p>
863 </p>
864 <blockquote class="text">
865 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
866 </p>
867 <p>S: "DRIVER: ALSA"
868 </p>
869 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
870 </p>
871 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
872 </p>
873 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
874 </p>
875 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
876 </p>
877 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
878 </p>
879 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
880 </p>
881 <p>&nbsp;&nbsp;&nbsp;"."
882 </p>
883 </blockquote><p>
884
885 </p>
886 <p>In addition to above mentioned formats, warnings and
887 empty result sets MAY be indexed. In this case, they
888 have the following formats respectively:
889 </p>
890 <p>
891 </p>
892 <ul class="text">
893 <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
894 </li>
895 <li>"OK[&lt;index&gt;]"
896 </li>
897 </ul><p>
898
899 </p>
900 <p>where &lt;index&gt; is command specific and is used
901 to indicate channel number that the result set was
902 related to or other integer value.
903 </p>
904 <p>Each line of the result set MUST end with
905 &lt;CRLF&gt;.
906 </p>
907 <p>Examples:
908 </p>
909 <p>
910 </p>
911 <blockquote class="text">
912 <p>C: "ADD CHANNEL"
913 </p>
914 <p>S: "OK[12]"
915 </p>
916 </blockquote><p>
917
918 </p>
919 <p>
920 </p>
921 <blockquote class="text">
922 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
923 </p>
924 <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
925 </p>
926 </blockquote><p>
927
928 </p>
929 <a name="anchor7"></a><br /><hr />
930 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
931 <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
932 Subscribe/notify communication method</h3>
933
934 <p>This more sophisticated communication method is actually
935 only an extension of the simple request/response
936 communication method. The front-end still uses a TCP
937 connection and sends the same commands on the TCP
938 connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
939 commands that allow a client to tell the server that it is
940 interested in receiving notifications about certain events
941 as they happen on the server. The SUBSCRIBE command has the
942 following syntax:
943 </p>
944 <p>
945 </p>
946 <blockquote class="text">
947 <p>SUBSCRIBE &lt;event-id&gt;
948 </p>
949 </blockquote><p>
950
951 </p>
952 <p>where &lt;event-id&gt; will be replaced by the respective
953 event that client wants to subscribe to. Upon receiving such
954 request, server SHOULD respond with OK and start sending
955 EVENT notifications when a given even has occurred to the
956 front-end when an event has occurred. It MAY be possible
957 certain events may be sent before OK response during real
958 time nature of their generation. Event messages have the
959 following format:
960 </p>
961 <p>
962 </p>
963 <blockquote class="text">
964 <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
965 </p>
966 </blockquote><p>
967
968 </p>
969 <p>where &lt;event-id&gt; uniquely identifies the event that
970 has occurred and &lt;custom-event-data&gt; is event
971 specific.
972 </p>
973 <p>Several rules must be followed by the server when
974 generating events:
975 </p>
976 <p>
977 </p>
978 <ol class="text">
979 <li>Events MUST NOT be sent to any client who has not
980 issued an appropriate SUBSCRIBE command.
981 </li>
982 <li>Events MUST only be sent using the same
983 connection that was used to subscribe to them.
984 </li>
985 <li>When response is being sent to the client, event
986 MUST be inserted in the stream before or after the
987 response, but NOT in the middle. Same is true about
988 the response. It should never be inserted in the
989 middle of the event message as well as any other
990 response.
991 </li>
992 </ol><p>
993
994 </p>
995 <p>If the client is not interested in a particular event
996 anymore it MAY issue UNSUBSCRIBE command using the following
997 syntax:
998 </p>
999 <p>
1000 </p>
1001 <blockquote class="text">
1002 <p>UNSUBSCRIBE &lt;event-id&gt;
1003 </p>
1004 </blockquote><p>
1005
1006 </p>
1007 <p>where &lt;event-id&gt; will be replace by the respective
1008 event that client is no longer interested in receiving. For
1009 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1010 </p>
1011 <p>Example: the fill states of disk stream buffers have
1012 changed on sampler channel 4 and the LinuxSampler instance
1013 will react by sending the following message to all clients
1014 who subscribed to this event:
1015 </p>
1016 <p>
1017 </p>
1018 <blockquote class="text">
1019 <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1020 </p>
1021 </blockquote><p>
1022
1023 </p>
1024 <p>Which means there are currently three active streams on
1025 sampler channel 4, where the stream with ID "35" is filled
1026 by 62%, stream with ID 33 is filled by 80% and stream with
1027 ID 37 is filled by 98%.
1028 </p>
1029 <p>Clients may choose to open more than one connection to
1030 the server and use some connections to receive notifications
1031 while using other connections to issue commands to the
1032 back-end. This is entirely legal and up to the
1033 implementation. This does not change the protocol in any way
1034 and no special restrictions exist on the server to allow or
1035 disallow this or to track what connections belong to what
1036 front-ends. Server will listen on a single port, accept
1037 multiple connections and support protocol described in this
1038 specification in it's entirety on this single port on each
1039 connection that it accepted.
1040 </p>
1041 <p>Due to the fact that TCP is used for this communication,
1042 dead peers will be detected automatically by the OS TCP
1043 stack. While it may take a while to detect dead peers if no
1044 traffic is being sent from server to client (TCP keep-alive
1045 timer is set to 2 hours on many OSes) it will not be an
1046 issue here as when notifications are sent by the server,
1047 dead client will be detected quickly.
1048 </p>
1049 <p>When connection is closed for any reason server MUST
1050 forget all subscriptions that were made on this connection.
1051 If client reconnects it MUST resubscribe to all events that
1052 it wants to receive.
1053 </p>
1054 <a name="control_commands"></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"></a><h3>6.&nbsp;
1057 Description for control commands</h3>
1058
1059 <p>This chapter will describe the available control commands
1060 that can be sent on the TCP connection in detail. Some certain
1061 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>
1062 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
1063 multiple-line responses. In this case LinuxSampler signals the
1064 end of the response by a "." (single dot) line.
1065 </p>
1066 <a name="anchor8"></a><br /><hr />
1067 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1068 <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1069 Ignored lines and comments</h3>
1070
1071 <p>White lines, that is lines which only contain space and
1072 tabulator characters, and lines that start with a "#"
1073 character are ignored, thus it's possible for example to
1074 group commands and to place comments in a LSCP script
1075 file.
1076 </p>
1077 <a name="anchor9"></a><br /><hr />
1078 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1079 <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1080 Configuring audio drivers</h3>
1081
1082 <p>Instances of drivers in LinuxSampler are called devices.
1083 You can use multiple audio devices simultaneously, e.g. to
1084 output the sound of one sampler channel using the ALSA audio
1085 output driver, and on another sampler channel you might want
1086 to use the JACK audio output driver. For particular audio
1087 output systems it's also possible to create several devices
1088 of the same audio output driver, e.g. two separate ALSA
1089 audio output devices for using two different sound cards at
1090 the same time. This chapter describes all commands to
1091 configure LinuxSampler's audio output devices and their
1092 parameters.
1093 </p>
1094 <p>Instead of defining commands and parameters for each
1095 driver individually, all possible parameters, their meanings
1096 and possible values have to be obtained at runtime. This
1097 makes the protocol a bit abstract, but has the advantage,
1098 that front-ends can be written independently of what drivers
1099 are currently implemented and what parameters these drivers
1100 are actually offering. This means front-ends can even handle
1101 drivers which are implemented somewhere in future without
1102 modifying the front-end at all.
1103 </p>
1104 <p>Note: examples in this chapter showing particular
1105 parameters of drivers are not meant as specification of the
1106 drivers' parameters. Driver implementations in LinuxSampler
1107 might have complete different parameter names and meanings
1108 than shown in these examples or might change in future, so
1109 these examples are only meant for showing how to retrieve
1110 what parameters drivers are offering, how to retrieve their
1111 possible values, etc.
1112 </p>
1113 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1114 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1115 <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1116 Getting amount of available audio output drivers</h3>
1117
1118 <p>Use the following command to get the number of
1119 audio output drivers currently available for the
1120 LinuxSampler instance:
1121 </p>
1122 <p>
1123 </p>
1124 <blockquote class="text">
1125 <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1126 </p>
1127 </blockquote><p>
1128
1129 </p>
1130 <p>Possible Answers:
1131 </p>
1132 <p>
1133 </p>
1134 <blockquote class="text">
1135 <p>LinuxSampler will answer by sending the
1136 number of audio output drivers.
1137 </p>
1138 </blockquote><p>
1139
1140 </p>
1141 <p>Example:
1142 </p>
1143 <p>
1144 </p>
1145 <blockquote class="text">
1146 <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1147 </p>
1148 <p>S: "2"
1149 </p>
1150 </blockquote><p>
1151
1152 </p>
1153 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1154 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1155 <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1156 Getting all available audio output drivers</h3>
1157
1158 <p>Use the following command to list all audio output
1159 drivers currently available for the LinuxSampler
1160 instance:
1161 </p>
1162 <p>
1163 </p>
1164 <blockquote class="text">
1165 <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1166 </p>
1167 </blockquote><p>
1168
1169 </p>
1170 <p>Possible Answers:
1171 </p>
1172 <p>
1173 </p>
1174 <blockquote class="text">
1175 <p>LinuxSampler will answer by sending comma
1176 separated character strings, each symbolizing an
1177 audio output driver.
1178 </p>
1179 </blockquote><p>
1180
1181 </p>
1182 <p>Example:
1183 </p>
1184 <p>
1185 </p>
1186 <blockquote class="text">
1187 <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1188 </p>
1189 <p>S: "ALSA,JACK"
1190 </p>
1191 </blockquote><p>
1192
1193 </p>
1194 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1195 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1196 <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1197 Getting information about a specific audio
1198 output driver</h3>
1199
1200 <p>Use the following command to get detailed information
1201 about a specific audio output driver:
1202 </p>
1203 <p>
1204 </p>
1205 <blockquote class="text">
1206 <p>GET AUDIO_OUTPUT_DRIVER INFO
1207 &lt;audio-output-driver&gt;
1208 </p>
1209 </blockquote><p>
1210
1211 </p>
1212 <p>Where &lt;audio-output-driver&gt; is the name of the
1213 audio output driver, returned by the
1214 <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.
1215 </p>
1216 <p>Possible Answers:
1217 </p>
1218 <p>
1219 </p>
1220 <blockquote class="text">
1221 <p>LinuxSampler will answer by sending a
1222 &lt;CRLF&gt; separated list. Each answer line
1223 begins with the information category name
1224 followed by a colon and then a space character
1225 &lt;SP&gt; and finally the info character string
1226 to that info category. At the moment the
1227 following information categories are
1228 defined:
1229 </p>
1230 <p>
1231 </p>
1232 <blockquote class="text">
1233 <p>DESCRIPTION -
1234 </p>
1235 <blockquote class="text">
1236 <p> character string describing the
1237 audio output driver
1238 </p>
1239 </blockquote>
1240
1241
1242 <p>VERSION -
1243 </p>
1244 <blockquote class="text">
1245 <p>character string reflecting the
1246 driver's version
1247 </p>
1248 </blockquote>
1249
1250
1251 <p>PARAMETERS -
1252 </p>
1253 <blockquote class="text">
1254 <p>comma separated list of all
1255 parameters available for the given
1256 audio output driver, at least
1257 parameters 'channels', 'samplerate'
1258 and 'active' are offered by all audio
1259 output drivers
1260 </p>
1261 </blockquote>
1262
1263
1264 </blockquote>
1265
1266
1267 <p>The mentioned fields above don't have to be
1268 in particular order.
1269 </p>
1270 </blockquote><p>
1271
1272 </p>
1273 <p>Example:
1274 </p>
1275 <p>
1276 </p>
1277 <blockquote class="text">
1278 <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1279 </p>
1280 <p>S: "DESCRIPTION: Advanced Linux Sound
1281 Architecture"
1282 </p>
1283 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1284 </p>
1285 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1286 DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1287 FRAGMENTSIZE,CARD"
1288 </p>
1289 <p>&nbsp;&nbsp;&nbsp;"."
1290 </p>
1291 </blockquote><p>
1292
1293 </p>
1294 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1295 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1296 <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1297 Getting information about specific audio
1298 output driver parameter</h3>
1299
1300 <p>Use the following command to get detailed information
1301 about a specific audio output driver parameter:
1302 </p>
1303 <p>
1304 </p>
1305 <blockquote class="text">
1306 <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1307 </p>
1308 </blockquote><p>
1309
1310 </p>
1311 <p>Where &lt;audio&gt; is the name of the audio output
1312 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,
1313 &lt;prm&gt; a specific parameter name for which information should be
1314 obtained (as returned by the
1315 <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
1316 &lt;deplist&gt; is an optional list of parameters on which the sought
1317 parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1318 pairs in form of "key1=val1 key2=val2 ...", where character string values
1319 are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1320 which are not dependency parameters of &lt;prm&gt; will be ignored, means
1321 the front-end application can simply put all parameters into &lt;deplist&gt;
1322 with the values already selected by the user.
1323 </p>
1324 <p>Possible Answers:
1325 </p>
1326 <p>
1327 </p>
1328 <blockquote class="text">
1329 <p>LinuxSampler will answer by sending a
1330 &lt;CRLF&gt; separated list.
1331 Each answer line begins with the information category name
1332 followed by a colon and then a space character &lt;SP&gt; and
1333 finally
1334 the info character string to that info category. There are
1335 information which is always returned, independently of the
1336 given driver parameter and there are optional information
1337 which is only shown dependently to given driver parameter. At
1338 the moment the following information categories are defined:
1339 </p>
1340 </blockquote><p>
1341
1342 </p>
1343 <p>
1344 </p>
1345 <blockquote class="text">
1346 <p>TYPE -
1347 </p>
1348 <blockquote class="text">
1349 <p>either "BOOL" for boolean value(s) or
1350 "INT" for integer
1351 value(s) or "FLOAT" for dotted number(s) or "STRING" for
1352 character string(s)
1353 (always returned, no matter which driver parameter)
1354 </p>
1355 </blockquote>
1356
1357
1358 <p>DESCRIPTION -
1359 </p>
1360 <blockquote class="text">
1361 <p>arbitrary text describing the purpose of the parameter
1362 (always returned, no matter which driver parameter)
1363 </p>
1364 </blockquote>
1365
1366
1367 <p>MANDATORY -
1368 </p>
1369 <blockquote class="text">
1370 <p>either true or false, defines if this parameter must be
1371 given when the device is to be created with the
1372 <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>
1373 command (always returned, no matter which driver parameter)
1374 </p>
1375 </blockquote>
1376
1377
1378 <p>FIX -
1379 </p>
1380 <blockquote class="text">
1381 <p>either true or false, if false then this parameter can
1382 be changed at any time, once the device is created by
1383 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>
1384 command (always returned, no matter which driver parameter)
1385 </p>
1386 </blockquote>
1387
1388
1389 <p>MULTIPLICITY -
1390 </p>
1391 <blockquote class="text">
1392 <p>either true or false, defines if this parameter allows
1393 only one value or a list of values, where true means
1394 multiple values and false only a single value allowed
1395 (always returned, no matter which driver parameter)
1396 </p>
1397 </blockquote>
1398
1399
1400 <p>DEPENDS -
1401 </p>
1402 <blockquote class="text">
1403 <p>comma separated list of parameters this parameter depends
1404 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1405 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1406 listed parameters, for example assuming that an audio
1407 driver (like the ALSA driver) offers parameters 'card'
1408 and 'samplerate' then parameter 'samplerate' would
1409 depend on 'card' because the possible values for
1410 'samplerate' depends on the sound card which can be
1411 chosen by the 'card' parameter
1412 (optionally returned, dependent to driver parameter)
1413 </p>
1414 </blockquote>
1415
1416
1417 <p>DEFAULT -
1418 </p>
1419 <blockquote class="text">
1420 <p>reflects the default value for this parameter which is
1421 used when the device is created and not explicitly
1422 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,
1423 in case of MULTIPLCITY=true, this is a comma separated
1424 list, that's why character strings are encapsulated into
1425 apostrophes (')
1426 (optionally returned, dependent to driver parameter)
1427 </p>
1428 </blockquote>
1429
1430
1431 <p>RANGE_MIN -
1432 </p>
1433 <blockquote class="text">
1434 <p>defines lower 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
1437 with RANGE_MAX, but may also appear without
1438 (optionally returned, dependent to driver parameter)
1439 </p>
1440 </blockquote>
1441
1442
1443 <p>RANGE_MAX -
1444 </p>
1445 <blockquote class="text">
1446 <p>defines upper limit of the allowed value range for this
1447 parameter, can be an integer value as well as a dotted
1448 number, this parameter is often used in conjunction with
1449 RANGE_MIN, but may also appear without
1450 (optionally returned, dependent to driver parameter)
1451 </p>
1452 </blockquote>
1453
1454
1455 <p>POSSIBILITIES -
1456 </p>
1457 <blockquote class="text">
1458 <p>comma separated list of possible values for this
1459 parameter, character strings are encapsulated into
1460 apostrophes
1461 (optionally returned, dependent to driver parameter)
1462 </p>
1463 </blockquote>
1464
1465
1466 </blockquote><p>
1467
1468 </p>
1469 <p>The mentioned fields above don't have to be in particular order.
1470 </p>
1471 <p>Examples:
1472 </p>
1473 <p>
1474 </p>
1475 <blockquote class="text">
1476 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1477 </p>
1478 <p>S: "DESCRIPTION: sound card to be used"
1479 </p>
1480 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1481 </p>
1482 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1483 </p>
1484 <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1485 </p>
1486 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1487 </p>
1488 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1489 </p>
1490 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1491 </p>
1492 <p>&nbsp;&nbsp;&nbsp;"."
1493 </p>
1494 </blockquote><p>
1495
1496 </p>
1497 <p>
1498 </p>
1499 <blockquote class="text">
1500 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1501 </p>
1502 <p>S: "DESCRIPTION: output sample rate in Hz"
1503 </p>
1504 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1505 </p>
1506 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1507 </p>
1508 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1509 </p>
1510 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1511 </p>
1512 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1513 </p>
1514 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1515 </p>
1516 <p>&nbsp;&nbsp;&nbsp;"."
1517 </p>
1518 </blockquote><p>
1519
1520 </p>
1521 <p>
1522 </p>
1523 <blockquote class="text">
1524 <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1525 </p>
1526 <p>S: "DESCRIPTION: output sample rate in Hz"
1527 </p>
1528 <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1529 </p>
1530 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1531 </p>
1532 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1533 </p>
1534 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1535 </p>
1536 <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1537 </p>
1538 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1539 </p>
1540 <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1541 </p>
1542 <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1543 </p>
1544 <p>&nbsp;&nbsp;&nbsp;"."
1545 </p>
1546 </blockquote><p>
1547
1548 </p>
1549 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1550 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1551 <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1552 Creating an audio output device</h3>
1553
1554 <p>Use the following command to create a new audio output device for the desired audio output system:
1555 </p>
1556 <p>
1557 </p>
1558 <blockquote class="text">
1559 <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1560 </p>
1561 </blockquote><p>
1562
1563 </p>
1564 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1565 output system as returned by the
1566 <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>
1567 command and &lt;param-list&gt; by an optional list of driver
1568 specific parameters in form of "key1=val1 key2=val2 ...", where
1569 character string values should be encapsulated into apostrophes (').
1570 Note that there might be drivers which require parameter(s) to be
1571 given with this command. Use the previously described commands in
1572 this chapter to get this information.
1573 </p>
1574 <p>Possible Answers:
1575 </p>
1576 <p>
1577 </p>
1578 <blockquote class="text">
1579 <p>"OK[&lt;device-id&gt;]" -
1580 </p>
1581 <blockquote class="text">
1582 <p>in case the device was successfully created, where
1583 &lt;device-id&gt; is the numerical ID of the new device
1584 </p>
1585 </blockquote>
1586
1587
1588 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1589 </p>
1590 <blockquote class="text">
1591 <p>in case the device was created successfully, where
1592 &lt;device-id&gt; is the numerical ID of the new device, but there
1593 are noteworthy issue(s) related (e.g. sound card doesn't
1594 support given hardware parameters and the driver is using
1595 fall-back values), providing an appropriate warning code and
1596 warning message
1597 </p>
1598 </blockquote>
1599
1600
1601 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1602 </p>
1603 <blockquote class="text">
1604 <p>in case it failed, providing an appropriate error code and error message
1605 </p>
1606 </blockquote>
1607
1608
1609 </blockquote><p>
1610
1611 </p>
1612 <p>Examples:
1613 </p>
1614 <p>
1615 </p>
1616 <blockquote class="text">
1617 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1618 </p>
1619 <p>S: "OK[0]"
1620 </p>
1621 </blockquote><p>
1622
1623 </p>
1624 <p>
1625 </p>
1626 <blockquote class="text">
1627 <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1628 </p>
1629 <p>S: "OK[1]"
1630 </p>
1631 </blockquote><p>
1632
1633 </p>
1634 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1635 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1636 <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1637 Destroying an audio output device</h3>
1638
1639 <p>Use the following command to destroy a created output device:
1640 </p>
1641 <p>
1642 </p>
1643 <blockquote class="text">
1644 <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1645 </p>
1646 </blockquote><p>
1647
1648 </p>
1649 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1650 audio output device as given by the
1651 <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>
1652 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>
1653 command.
1654 </p>
1655 <p>Possible Answers:
1656 </p>
1657 <p>
1658 </p>
1659 <blockquote class="text">
1660 <p>"OK" -
1661 </p>
1662 <blockquote class="text">
1663 <p>in case the device was successfully destroyed
1664 </p>
1665 </blockquote>
1666
1667
1668 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1669 </p>
1670 <blockquote class="text">
1671 <p>in case the device was destroyed successfully, but there are
1672 noteworthy issue(s) related (e.g. an audio over ethernet
1673 driver was unloaded but the other host might not be
1674 informed about this situation), providing an appropriate
1675 warning code and warning message
1676 </p>
1677 </blockquote>
1678
1679
1680 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1681 </p>
1682 <blockquote class="text">
1683 <p>in case it failed, providing an appropriate error code and
1684 error message
1685 </p>
1686 </blockquote>
1687
1688
1689 </blockquote><p>
1690
1691 </p>
1692 <p>Example:
1693 </p>
1694 <p>
1695 </p>
1696 <blockquote class="text">
1697 <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1698 </p>
1699 <p>S: "OK"
1700 </p>
1701 </blockquote><p>
1702
1703 </p>
1704 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1705 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1706 <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1707 Getting all created audio output device count</h3>
1708
1709 <p>Use the following command to count all created audio output devices:
1710 </p>
1711 <p>
1712 </p>
1713 <blockquote class="text">
1714 <p>GET AUDIO_OUTPUT_DEVICES
1715 </p>
1716 </blockquote><p>
1717
1718 </p>
1719 <p>Possible Answers:
1720 </p>
1721 <p>
1722 </p>
1723 <blockquote class="text">
1724 <p>LinuxSampler will answer by sending the current number of all
1725 audio output devices.
1726 </p>
1727 </blockquote><p>
1728
1729 </p>
1730 <p>Example:
1731 </p>
1732 <p>
1733 </p>
1734 <blockquote class="text">
1735 <p>C: "GET AUDIO_OUTPUT_DEVICES"
1736 </p>
1737 <p>S: "4"
1738 </p>
1739 </blockquote><p>
1740
1741 </p>
1742 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1743 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1744 <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1745 Getting all created audio output device list</h3>
1746
1747 <p>Use the following command to list all created audio output devices:
1748 </p>
1749 <p>
1750 </p>
1751 <blockquote class="text">
1752 <p>LIST AUDIO_OUTPUT_DEVICES
1753 </p>
1754 </blockquote><p>
1755
1756 </p>
1757 <p>Possible Answers:
1758 </p>
1759 <p>
1760 </p>
1761 <blockquote class="text">
1762 <p>LinuxSampler will answer by sending a comma separated list with
1763 the numerical IDs of all audio output devices.
1764 </p>
1765 </blockquote><p>
1766
1767 </p>
1768 <p>Example:
1769 </p>
1770 <p>
1771 </p>
1772 <blockquote class="text">
1773 <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1774 </p>
1775 <p>S: "0,1,4,5"
1776 </p>
1777 </blockquote><p>
1778
1779 </p>
1780 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1781 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1782 <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1783 Getting current settings of an audio output device</h3>
1784
1785 <p>Use the following command to get current settings of a specific, created audio output device:
1786 </p>
1787 <p>
1788 </p>
1789 <blockquote class="text">
1790 <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1791 </p>
1792 </blockquote><p>
1793
1794 </p>
1795 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1796 of the audio output device as e.g. returned by the
1797 <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.
1798 </p>
1799 <p>Possible Answers:
1800 </p>
1801 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1802 Each answer line begins with the information category name
1803 followed by a colon and then a space character &lt;SP&gt; and finally
1804 the info character string to that info category. As some
1805 parameters might allow multiple values, character strings are
1806 encapsulated into apostrophes ('). At the moment the following
1807 information categories are defined (independently of device):
1808 </p>
1809 <p>
1810 </p>
1811 <blockquote class="text">
1812 <p>DRIVER -
1813 </p>
1814 <blockquote class="text">
1815 <p>identifier of the used audio output driver, as also
1816 returned by the
1817 <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>
1818 command
1819 </p>
1820 </blockquote>
1821
1822
1823 <p>CHANNELS -
1824 </p>
1825 <blockquote class="text">
1826 <p>amount of audio output channels this device currently
1827 offers
1828 </p>
1829 </blockquote>
1830
1831
1832 <p>SAMPLERATE -
1833 </p>
1834 <blockquote class="text">
1835 <p>playback sample rate the device uses
1836 </p>
1837 </blockquote>
1838
1839
1840 <p>ACTIVE -
1841 </p>
1842 <blockquote class="text">
1843 <p>either true or false, if false then the audio device is
1844 inactive and doesn't output any sound, nor do the
1845 sampler channels connected to this audio device render
1846 any audio
1847 </p>
1848 </blockquote>
1849
1850
1851 </blockquote><p>
1852
1853 </p>
1854 <p>The mentioned fields above don't have to be in particular
1855 order. The fields above are only those fields which are
1856 returned by all audio output devices. Every audio output driver
1857 might have its own, additional driver specific parameters (see
1858 <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>)
1859 which are also returned by this command.
1860 </p>
1861 <p>Example:
1862 </p>
1863 <p>
1864 </p>
1865 <blockquote class="text">
1866 <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1867 </p>
1868 <p>S: "DRIVER: ALSA"
1869 </p>
1870 <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1871 </p>
1872 <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1873 </p>
1874 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1875 </p>
1876 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1877 </p>
1878 <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1879 </p>
1880 <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1881 </p>
1882 <p>&nbsp;&nbsp;&nbsp;"."
1883 </p>
1884 </blockquote><p>
1885
1886 </p>
1887 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1888 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1889 <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1890 Changing settings of audio output devices</h3>
1891
1892 <p>Use the following command to alter a specific setting of a created audio output device:
1893 </p>
1894 <p>
1895 </p>
1896 <blockquote class="text">
1897 <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1898 </p>
1899 </blockquote><p>
1900
1901 </p>
1902 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1903 audio output device as given by the
1904 <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>
1905 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>
1906 command, &lt;key&gt; by the name of the parameter to change
1907 and &lt;value&gt; by the new value for this parameter.
1908 </p>
1909 <p>Possible Answers:
1910 </p>
1911 <p>
1912 </p>
1913 <blockquote class="text">
1914 <p>"OK" -
1915 </p>
1916 <blockquote class="text">
1917 <p>in case setting was successfully changed
1918 </p>
1919 </blockquote>
1920
1921
1922 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1923 </p>
1924 <blockquote class="text">
1925 <p>in case setting was changed successfully, but there are
1926 noteworthy issue(s) related, providing an appropriate
1927 warning code and warning message
1928 </p>
1929 </blockquote>
1930
1931
1932 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1933 </p>
1934 <blockquote class="text">
1935 <p>in case it failed, providing an appropriate error code and
1936 error message
1937 </p>
1938 </blockquote>
1939
1940
1941 </blockquote><p>
1942
1943 </p>
1944 <p>Example:
1945 </p>
1946 <p>
1947 </p>
1948 <blockquote class="text">
1949 <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1950 </p>
1951 <p>S: "OK"
1952 </p>
1953 </blockquote><p>
1954
1955 </p>
1956 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
1957 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1958 <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
1959 Getting information about an audio channel</h3>
1960
1961 <p>Use the following command to get information about an audio channel:
1962 </p>
1963 <p>
1964 </p>
1965 <blockquote class="text">
1966 <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1967 </p>
1968 </blockquote><p>
1969
1970 </p>
1971 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1972 <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>
1973 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>
1974 command and &lt;audio-chan&gt; the audio channel number.
1975 </p>
1976 <p>Possible Answers:
1977 </p>
1978 <p>
1979 </p>
1980 <blockquote class="text">
1981 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1982 Each answer line begins with the information category name
1983 followed by a colon and then a space character &lt;SP&gt; and finally
1984 the info character string to that info category. At the moment
1985 the following information categories are defined:
1986 </p>
1987 <p>
1988 </p>
1989 <blockquote class="text">
1990 <p>NAME -
1991 </p>
1992 <blockquote class="text">
1993 <p>arbitrary character string naming the channel, which
1994 doesn't have to be unique (always returned by all audio channels)
1995 </p>
1996 </blockquote>
1997
1998
1999 <p>IS_MIX_CHANNEL -
2000 </p>
2001 <blockquote class="text">
2002 <p>either true or false, a mix-channel is not a real,
2003 independent audio channel, but a virtual channel which
2004 is mixed to another real channel, this mechanism is
2005 needed for sampler engines which need more audio
2006 channels than the used audio system might be able to offer
2007 (always returned by all audio channels)
2008 </p>
2009 </blockquote>
2010
2011
2012 <p>MIX_CHANNEL_DESTINATION -
2013 </p>
2014 <blockquote class="text">
2015 <p>numerical ID (positive integer including 0)
2016 which reflects the real audio channel (of the same audio
2017 output device) this mix channel refers to, means where
2018 the audio signal actually will be routed / added to
2019 (only returned in case the audio channel is mix channel)
2020 </p>
2021 </blockquote>
2022
2023
2024 </blockquote>
2025
2026
2027 </blockquote><p>
2028
2029 </p>
2030 <p>The mentioned fields above don't have to be in particular
2031 order. The fields above are only those fields which are
2032 generally returned for the described cases by all audio
2033 channels regardless of the audio driver. Every audio channel
2034 might have its own, additional driver and channel specific
2035 parameters.
2036 </p>
2037 <p>Examples:
2038 </p>
2039 <p>
2040 </p>
2041 <blockquote class="text">
2042 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2043 </p>
2044 <p>S: "NAME: studio monitor left"
2045 </p>
2046 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2047 </p>
2048 <p>&nbsp;&nbsp;&nbsp;"."
2049 </p>
2050 </blockquote><p>
2051
2052 </p>
2053 <p>
2054 </p>
2055 <blockquote class="text">
2056 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2057 </p>
2058 <p>S: "NAME: studio monitor right"
2059 </p>
2060 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2061 </p>
2062 <p>&nbsp;&nbsp;&nbsp;"."
2063 </p>
2064 </blockquote><p>
2065
2066 </p>
2067 <p>
2068 </p>
2069 <blockquote class="text">
2070 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2071 </p>
2072 <p>S: "NAME: studio monitor left"
2073 </p>
2074 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2075 </p>
2076 <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2077 </p>
2078 <p>&nbsp;&nbsp;&nbsp;"."
2079 </p>
2080 </blockquote><p>
2081
2082 </p>
2083 <p>
2084 </p>
2085 <blockquote class="text">
2086 <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2087 </p>
2088 <p>S: "NAME: 'ardour (left)'"
2089 </p>
2090 <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2091 </p>
2092 <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2093 </p>
2094 <p>&nbsp;&nbsp;&nbsp;"."
2095 </p>
2096 </blockquote><p>
2097
2098 </p>
2099 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2100 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2101 <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2102 Getting information about specific audio channel parameter</h3>
2103
2104 <p>Use the following command to get detailed information about specific audio channel parameter:
2105 </p>
2106 <p>
2107 </p>
2108 <blockquote class="text">
2109 <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2110 </p>
2111 </blockquote><p>
2112
2113 </p>
2114 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2115 <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>
2116 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>
2117 command, &lt;chan&gt; the audio channel number
2118 and &lt;param&gt; a specific channel parameter name for which information should
2119 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).
2120 </p>
2121 <p>Possible Answers:
2122 </p>
2123 <p>
2124 </p>
2125 <blockquote class="text">
2126 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2127 Each answer line begins with the information category name
2128 followed by a colon and then a space character &lt;SP&gt; and finally
2129 the info character string to that info category. There are
2130 information which is always returned, independently of the
2131 given channel parameter and there is optional information
2132 which is only shown dependently to the given audio channel. At
2133 the moment the following information categories are defined:
2134 </p>
2135 <p>
2136 </p>
2137 <blockquote class="text">
2138 <p>TYPE -
2139 </p>
2140 <blockquote class="text">
2141 <p>either "BOOL" for boolean value(s) or "INT" for integer
2142 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2143 character string(s)
2144 (always returned)
2145 </p>
2146 </blockquote>
2147
2148
2149 <p>DESCRIPTION -
2150 </p>
2151 <blockquote class="text">
2152 <p>arbitrary text describing the purpose of the parameter (always returned)
2153 </p>
2154 </blockquote>
2155
2156
2157 <p>FIX -
2158 </p>
2159 <blockquote class="text">
2160 <p>either true or false, if true then this parameter is
2161 read only, thus cannot be altered
2162 (always returned)
2163 </p>
2164 </blockquote>
2165
2166
2167 <p>MULTIPLICITY -
2168 </p>
2169 <blockquote class="text">
2170 <p>either true or false, defines if this parameter allows
2171 only one value or a list of values, where true means
2172 multiple values and false only a single value allowed
2173 (always returned)
2174 </p>
2175 </blockquote>
2176
2177
2178 <p>RANGE_MIN -
2179 </p>
2180 <blockquote class="text">
2181 <p>defines lower limit of the allowed value range for this
2182 parameter, can be an integer value as well as a dotted
2183 number, usually used in conjunction with 'RANGE_MAX',
2184 but may also appear without
2185 (optionally returned, dependent to driver and channel
2186 parameter)
2187 </p>
2188 </blockquote>
2189
2190
2191 <p>RANGE_MAX -
2192 </p>
2193 <blockquote class="text">
2194 <p>defines upper limit of the allowed value range for this
2195 parameter, can be an integer value as well as a dotted
2196 number, usually used in conjunction with 'RANGE_MIN',
2197 but may also appear without
2198 (optionally returned, dependent to driver and channel
2199 parameter)
2200 </p>
2201 </blockquote>
2202
2203
2204 <p>POSSIBILITIES -
2205 </p>
2206 <blockquote class="text">
2207 <p>comma separated list of possible values for this
2208 parameter, character strings are encapsulated into
2209 apostrophes
2210 (optionally returned, dependent to driver and channel
2211 parameter)
2212 </p>
2213 </blockquote>
2214
2215
2216 </blockquote>
2217
2218
2219 <p>The mentioned fields above don't have to be in particular order.
2220 </p>
2221 </blockquote><p>
2222
2223 </p>
2224 <p>Example:
2225 </p>
2226 <p>
2227 </p>
2228 <blockquote class="text">
2229 <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2230 </p>
2231 <p>S: "DESCRIPTION: bindings to other JACK clients"
2232 </p>
2233 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2234 </p>
2235 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2236 </p>
2237 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2238 </p>
2239 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2240 </p>
2241 <p>&nbsp;&nbsp;&nbsp;"."
2242 </p>
2243 </blockquote><p>
2244
2245 </p>
2246 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2247 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2248 <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2249 Changing settings of audio output channels</h3>
2250
2251 <p>Use the following command to alter a specific setting of an audio output channel:
2252 </p>
2253 <p>
2254 </p>
2255 <blockquote class="text">
2256 <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2257 </p>
2258 </blockquote><p>
2259
2260 </p>
2261 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2262 <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>
2263 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>
2264 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2265 parameter to change and &lt;value&gt; by the new value for this parameter.
2266 </p>
2267 <p>Possible Answers:
2268 </p>
2269 <p>
2270 </p>
2271 <blockquote class="text">
2272 <p>"OK" -
2273 </p>
2274 <blockquote class="text">
2275 <p>in case setting was successfully changed
2276 </p>
2277 </blockquote>
2278
2279
2280 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2281 </p>
2282 <blockquote class="text">
2283 <p>in case setting was changed successfully, but there are
2284 noteworthy issue(s) related, providing an appropriate
2285 warning code and warning message
2286 </p>
2287 </blockquote>
2288
2289
2290 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2291 </p>
2292 <blockquote class="text">
2293 <p>in case it failed, providing an appropriate error code and
2294 error message
2295 </p>
2296 </blockquote>
2297
2298
2299 </blockquote><p>
2300
2301 </p>
2302 <p>Example:
2303 </p>
2304 <p>
2305 </p>
2306 <blockquote class="text">
2307 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2308 </p>
2309 <p>S: "OK"
2310 </p>
2311 </blockquote><p>
2312
2313 </p>
2314 <p>
2315 </p>
2316 <blockquote class="text">
2317 <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2318 </p>
2319 <p>S: "OK"
2320 </p>
2321 </blockquote><p>
2322
2323 </p>
2324 <a name="anchor10"></a><br /><hr />
2325 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2326 <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2327 Configuring MIDI input drivers</h3>
2328
2329 <p>Instances of drivers in LinuxSampler are called devices. You can use
2330 multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2331 MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2332 channel. For particular MIDI input systems it's also possible to create
2333 several devices of the same MIDI input type. This chapter describes all
2334 commands to configure LinuxSampler's MIDI input devices and their parameters.
2335 </p>
2336 <p>Instead of defining commands and parameters for each driver individually,
2337 all possible parameters, their meanings and possible values have to be obtained
2338 at runtime. This makes the protocol a bit abstract, but has the advantage, that
2339 front-ends can be written independently of what drivers are currently implemented
2340 and what parameters these drivers are actually offering. This means front-ends can
2341 even handle drivers which are implemented somewhere in future without modifying
2342 the front-end at all.
2343 </p>
2344 <p>Commands for configuring MIDI input devices are pretty much the same as the
2345 commands for configuring audio output drivers, already described in the last
2346 chapter.
2347 </p>
2348 <p>Note: examples in this chapter showing particular parameters of drivers are
2349 not meant as specification of the drivers' parameters. Driver implementations in
2350 LinuxSampler might have complete different parameter names and meanings than shown
2351 in these examples or might change in future, so these examples are only meant for
2352 showing how to retrieve what parameters drivers are offering, how to retrieve their
2353 possible values, etc.
2354 </p>
2355 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2356 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2357 <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2358 Getting amount of available MIDI input drivers</h3>
2359
2360 <p>Use the following command to get the number of
2361 MIDI input drivers currently available for the
2362 LinuxSampler instance:
2363 </p>
2364 <p>
2365 </p>
2366 <blockquote class="text">
2367 <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2368 </p>
2369 </blockquote><p>
2370
2371 </p>
2372 <p>Possible Answers:
2373 </p>
2374 <p>
2375 </p>
2376 <blockquote class="text">
2377 <p>LinuxSampler will answer by sending the
2378 number of available MIDI input drivers.
2379 </p>
2380 </blockquote><p>
2381
2382 </p>
2383 <p>Example:
2384 </p>
2385 <p>
2386 </p>
2387 <blockquote class="text">
2388 <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2389 </p>
2390 <p>S: "2"
2391 </p>
2392 </blockquote><p>
2393
2394 </p>
2395 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2396 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2397 <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2398 Getting all available MIDI input drivers</h3>
2399
2400 <p>Use the following command to list all MIDI input drivers currently available
2401 for the LinuxSampler instance:
2402 </p>
2403 <p>
2404 </p>
2405 <blockquote class="text">
2406 <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2407 </p>
2408 </blockquote><p>
2409
2410 </p>
2411 <p>Possible Answers:
2412 </p>
2413 <p>
2414 </p>
2415 <blockquote class="text">
2416 <p>LinuxSampler will answer by sending comma separated character
2417 strings, each symbolizing a MIDI input driver.
2418 </p>
2419 </blockquote><p>
2420
2421 </p>
2422 <p>Example:
2423 </p>
2424 <p>
2425 </p>
2426 <blockquote class="text">
2427 <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2428 </p>
2429 <p>S: "ALSA,JACK"
2430 </p>
2431 </blockquote><p>
2432
2433 </p>
2434 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2435 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2436 <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2437 Getting information about a specific MIDI input driver</h3>
2438
2439 <p>Use the following command to get detailed information about a specific MIDI input driver:
2440 </p>
2441 <p>
2442 </p>
2443 <blockquote class="text">
2444 <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2445 </p>
2446 </blockquote><p>
2447
2448 </p>
2449 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2450 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.
2451 </p>
2452 <p>Possible Answers:
2453 </p>
2454 <p>
2455 </p>
2456 <blockquote class="text">
2457 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2458 Each answer line begins with the information category name
2459 followed by a colon and then a space character &lt;SP&gt; and finally
2460 the info character string to that info category. At the moment
2461 the following information categories are defined:
2462 </p>
2463 <p>
2464 </p>
2465 <blockquote class="text">
2466 <p>DESCRIPTION -
2467 </p>
2468 <blockquote class="text">
2469 <p>arbitrary description text about the MIDI input driver
2470 </p>
2471 </blockquote>
2472
2473
2474 <p>VERSION -
2475 </p>
2476 <blockquote class="text">
2477 <p>arbitrary character string regarding the driver's version
2478 </p>
2479 </blockquote>
2480
2481
2482 <p>PARAMETERS -
2483 </p>
2484 <blockquote class="text">
2485 <p>comma separated list of all parameters available for the given MIDI input driver
2486 </p>
2487 </blockquote>
2488
2489
2490 </blockquote>
2491
2492
2493 <p>The mentioned fields above don't have to be in particular order.
2494 </p>
2495 </blockquote><p>
2496
2497 </p>
2498 <p>Example:
2499 </p>
2500 <p>
2501 </p>
2502 <blockquote class="text">
2503 <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2504 </p>
2505 <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2506 </p>
2507 <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2508 </p>
2509 <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2510 </p>
2511 <p>&nbsp;&nbsp;&nbsp;"."
2512 </p>
2513 </blockquote><p>
2514
2515 </p>
2516 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2517 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2518 <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2519 Getting information about specific MIDI input driver parameter</h3>
2520
2521 <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2522 </p>
2523 <p>
2524 </p>
2525 <blockquote class="text">
2526 <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2527 </p>
2528 </blockquote><p>
2529
2530 </p>
2531 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2532 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
2533 parameter name for which information should be obtained (as returned by the
2534 <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
2535 of parameters on which the sought parameter &lt;param&gt; depends on,
2536 &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2537 where character string values are encapsulated into apostrophes ('). Arguments
2538 given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2539 will be ignored, means the front-end application can simply put all parameters
2540 in &lt;deplist&gt; with the values selected by the user.
2541 </p>
2542 <p>Possible Answers:
2543 </p>
2544 <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2545 Each answer line begins with the information category name
2546 followed by a colon and then a space character &lt;SP> and finally
2547 the info character string to that info category. There is
2548 information which is always returned, independent of the
2549 given driver parameter and there is optional information
2550 which is only shown dependent to given driver parameter. At
2551 the moment the following information categories are defined:
2552 </p>
2553 <p>
2554 </p>
2555 <blockquote class="text">
2556 <p>TYPE -
2557 </p>
2558 <blockquote class="text">
2559 <p>either "BOOL" for boolean value(s) or "INT" for integer
2560 value(s) or "FLOAT" for dotted number(s) or "STRING" for
2561 character string(s)
2562 (always returned, no matter which driver parameter)
2563 </p>
2564 </blockquote>
2565
2566
2567 <p>DESCRIPTION -
2568 </p>
2569 <blockquote class="text">
2570 <p>arbitrary text describing the purpose of the parameter
2571 (always returned, no matter which driver parameter)
2572 </p>
2573 </blockquote>
2574
2575
2576 <p>MANDATORY -
2577 </p>
2578 <blockquote class="text">
2579 <p>either true or false, defines if this parameter must be
2580 given when the device is to be created with the
2581 <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
2582 (always returned, no matter which driver parameter)
2583 </p>
2584 </blockquote>
2585
2586
2587 <p>FIX -
2588 </p>
2589 <blockquote class="text">
2590 <p>either true or false, if false then this parameter can
2591 be changed at any time, once the device is created by
2592 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
2593 (always returned, no matter which driver parameter)
2594 </p>
2595 </blockquote>
2596
2597
2598 <p>MULTIPLICITY -
2599 </p>
2600 <blockquote class="text">
2601 <p>either true or false, defines if this parameter allows
2602 only one value or a list of values, where true means
2603 multiple values and false only a single value allowed
2604 (always returned, no matter which driver parameter)
2605 </p>
2606 </blockquote>
2607
2608
2609 <p>DEPENDS -
2610 </p>
2611 <blockquote class="text">
2612 <p>comma separated list of parameters this parameter depends
2613 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2614 'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2615 listed parameters, for example assuming that an audio
2616 driver (like the ALSA driver) offers parameters 'card'
2617 and 'samplerate' then parameter 'samplerate' would
2618 depend on 'card' because the possible values for
2619 'samplerate' depends on the sound card which can be
2620 chosen by the 'card' parameter
2621 (optionally returned, dependent to driver parameter)
2622 </p>
2623 </blockquote>
2624
2625
2626 <p>DEFAULT -
2627 </p>
2628 <blockquote class="text">
2629 <p>reflects the default value for this parameter which is
2630 used when the device is created and not explicitly
2631 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,
2632 in case of MULTIPLCITY=true, this is a comma separated
2633 list, that's why character strings are encapsulated into
2634 apostrophes (')
2635 (optionally returned, dependent to driver parameter)
2636 </p>
2637 </blockquote>
2638
2639
2640 <p>RANGE_MIN -
2641 </p>
2642 <blockquote class="text">
2643 <p>defines lower 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
2646 with RANGE_MAX, but may also appear without
2647 (optionally returned, dependent to driver parameter)
2648 </p>
2649 </blockquote>
2650
2651
2652 <p>RANGE_MAX -
2653 </p>
2654 <blockquote class="text">
2655 <p>defines upper limit of the allowed value range for this
2656 parameter, can be an integer value as well as a dotted
2657 number, this parameter is often used in conjunction with
2658 RANGE_MIN, but may also appear without
2659 (optionally returned, dependent to driver parameter)
2660 </p>
2661 </blockquote>
2662
2663
2664 <p>POSSIBILITIES -
2665 </p>
2666 <blockquote class="text">
2667 <p>comma separated list of possible values for this
2668 parameter, character strings are encapsulated into
2669 apostrophes
2670 (optionally returned, dependent to driver parameter)
2671 </p>
2672 </blockquote>
2673
2674
2675 </blockquote><p>
2676
2677 </p>
2678 <p>The mentioned fields above don't have to be in particular order.
2679 </p>
2680 <p>Example:
2681 </p>
2682 <p>
2683 </p>
2684 <blockquote class="text">
2685 <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2686 </p>
2687 <p>S: "DESCRIPTION: Whether device is enabled"
2688 </p>
2689 <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2690 </p>
2691 <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2692 </p>
2693 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2694 </p>
2695 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2696 </p>
2697 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2698 </p>
2699 <p>&nbsp;&nbsp;&nbsp;"."
2700 </p>
2701 </blockquote><p>
2702
2703 </p>
2704 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2705 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2706 <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2707 Creating a MIDI input device</h3>
2708
2709 <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2710 </p>
2711 <p>
2712 </p>
2713 <blockquote class="text">
2714 <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2715 </p>
2716 </blockquote><p>
2717
2718 </p>
2719 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2720 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
2721 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2722 character string values should be encapsulated into apostrophes (').
2723 Note that there might be drivers which require parameter(s) to be
2724 given with this command. Use the previously described commands in
2725 this chapter to get that information.
2726 </p>
2727 <p>Possible Answers:
2728 </p>
2729 <p>
2730 </p>
2731 <blockquote class="text">
2732 <p>"OK[&lt;device-id&gt;]" -
2733 </p>
2734 <blockquote class="text">
2735 <p>in case the device was successfully created, where
2736 &lt;device-id&gt; is the numerical ID of the new device
2737 </p>
2738 </blockquote>
2739
2740
2741 <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2742 </p>
2743 <blockquote class="text">
2744 <p>in case the driver was loaded successfully, where
2745 &lt;device-id&gt; is the numerical ID of the new device, but
2746 there are noteworthy issue(s) related, providing an
2747 appropriate warning code and warning message
2748 </p>
2749 </blockquote>
2750
2751
2752 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2753 </p>
2754 <blockquote class="text">
2755 <p>in case it failed, providing an appropriate error code and error message
2756 </p>
2757 </blockquote>
2758
2759
2760 </blockquote><p>
2761
2762 </p>
2763 <p>Example:
2764 </p>
2765 <p>
2766 </p>
2767 <blockquote class="text">
2768 <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2769 </p>
2770 <p>S: "OK[0]"
2771 </p>
2772 </blockquote><p>
2773
2774 </p>
2775 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2776 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2777 <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2778 Destroying a MIDI input device</h3>
2779
2780 <p>Use the following command to destroy a created MIDI input device:
2781 </p>
2782 <p>
2783 </p>
2784 <blockquote class="text">
2785 <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2786 </p>
2787 </blockquote><p>
2788
2789 </p>
2790 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2791 <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>
2792 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>
2793 command.
2794 </p>
2795 <p>Possible Answers:
2796 </p>
2797 <p>
2798 </p>
2799 <blockquote class="text">
2800 <p>"OK" -
2801 </p>
2802 <blockquote class="text">
2803 <p>in case the device was successfully destroyed
2804 </p>
2805 </blockquote>
2806
2807
2808 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2809 </p>
2810 <blockquote class="text">
2811 <p>in case the device was destroyed, but there are noteworthy
2812 issue(s) related, providing an appropriate warning code and
2813 warning message
2814 </p>
2815 </blockquote>
2816
2817
2818 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2819 </p>
2820 <blockquote class="text">
2821 <p>in case it failed, providing an appropriate error code and error message
2822 </p>
2823 </blockquote>
2824
2825
2826 </blockquote><p>
2827
2828 </p>
2829 <p>Example:
2830 </p>
2831 <p>
2832 </p>
2833 <blockquote class="text">
2834 <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2835 </p>
2836 <p>S: "OK"
2837 </p>
2838 </blockquote><p>
2839
2840 </p>
2841 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2842 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2843 <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2844 Getting all created MIDI input device count</h3>
2845
2846 <p>Use the following command to count all created MIDI input devices:
2847 </p>
2848 <p>
2849 </p>
2850 <blockquote class="text">
2851 <p>GET MIDI_INPUT_DEVICES
2852 </p>
2853 </blockquote><p>
2854
2855 </p>
2856 <p>Possible Answers:
2857 </p>
2858 <p>
2859 </p>
2860 <blockquote class="text">
2861 <p>LinuxSampler will answer by sending the current number of all
2862 MIDI input devices.
2863 </p>
2864 </blockquote><p>
2865
2866 </p>
2867 <p>Example:
2868 </p>
2869 <p>
2870 </p>
2871 <blockquote class="text">
2872 <p>C: "GET MIDI_INPUT_DEVICES"
2873 </p>
2874 <p>S: "3"
2875 </p>
2876 </blockquote><p>
2877
2878 </p>
2879 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2880 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2881 <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2882 Getting all created MIDI input device list</h3>
2883
2884 <p>Use the following command to list all created MIDI input devices:
2885 </p>
2886 <p>
2887 </p>
2888 <blockquote class="text">
2889 <p>LIST MIDI_INPUT_DEVICES
2890 </p>
2891 </blockquote><p>
2892
2893 </p>
2894 <p>Possible Answers:
2895 </p>
2896 <p>
2897 </p>
2898 <blockquote class="text">
2899 <p>LinuxSampler will answer by sending a comma separated list
2900 with the numerical Ids of all created MIDI input devices.
2901 </p>
2902 </blockquote><p>
2903
2904 </p>
2905 <p>Examples:
2906 </p>
2907 <p>
2908 </p>
2909 <blockquote class="text">
2910 <p>C: "LIST MIDI_INPUT_DEVICES"
2911 </p>
2912 <p>S: "0,1,2"
2913 </p>
2914 </blockquote><p>
2915
2916 </p>
2917 <p>
2918 </p>
2919 <blockquote class="text">
2920 <p>C: "LIST MIDI_INPUT_DEVICES"
2921 </p>
2922 <p>S: "1,3"
2923 </p>
2924 </blockquote><p>
2925
2926 </p>
2927 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2928 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2929 <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2930 Getting current settings of a MIDI input device</h3>
2931
2932 <p>Use the following command to get current settings of a specific, created MIDI input device:
2933 </p>
2934 <p>
2935 </p>
2936 <blockquote class="text">
2937 <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2938 </p>
2939 </blockquote><p>
2940
2941 </p>
2942 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2943 <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>
2944 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>
2945 command.
2946 </p>
2947 <p>Possible Answers:
2948 </p>
2949 <p>
2950 </p>
2951 <blockquote class="text">
2952 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2953 Each answer line begins with the information category name
2954 followed by a colon and then a space character &lt;SP&gt; and finally
2955 the info character string to that info category. As some
2956 parameters might allow multiple values, character strings are
2957 encapsulated into apostrophes ('). At the moment the following
2958 information categories are defined (independent of driver):
2959 </p>
2960 <p>
2961 </p>
2962 <blockquote class="text">
2963 <p>DRIVER -
2964 </p>
2965 <blockquote class="text">
2966 <p>identifier of the used MIDI input driver, as e.g.
2967 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>
2968 command
2969 </p>
2970 </blockquote>
2971
2972
2973 </blockquote>
2974
2975 <blockquote class="text">
2976 <p>ACTIVE -
2977 </p>
2978 <blockquote class="text">
2979 <p>either true or false, if false then the MIDI device is
2980 inactive and doesn't listen to any incoming MIDI events
2981 and thus doesn't forward them to connected sampler
2982 channels
2983 </p>
2984 </blockquote>
2985
2986
2987 </blockquote>
2988
2989
2990 </blockquote><p>
2991
2992 </p>
2993 <p>The mentioned fields above don't have to be in particular
2994 order. The fields above are only those fields which are
2995 returned by all MIDI input devices. Every MIDI input driver
2996 might have its own, additional driver specific parameters (see
2997 <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
2998 by this command.
2999 </p>
3000 <p>Example:
3001 </p>
3002 <p>
3003 </p>
3004 <blockquote class="text">
3005 <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3006 </p>
3007 <p>S: "DRIVER: ALSA"
3008 </p>
3009 <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3010 </p>
3011 <p>&nbsp;&nbsp;&nbsp;"."
3012 </p>
3013 </blockquote><p>
3014
3015 </p>
3016 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3017 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3018 <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3019 Changing settings of MIDI input devices</h3>
3020
3021 <p>Use the following command to alter a specific setting of a created MIDI input device:
3022 </p>
3023 <p>
3024 </p>
3025 <blockquote class="text">
3026 <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3027 </p>
3028 </blockquote><p>
3029
3030 </p>
3031 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3032 MIDI input device as returned by the
3033 <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>
3034 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>
3035 command, &lt;key&gt; by the name of the parameter to change and
3036 &lt;value&gt; by the new value for this parameter.
3037 </p>
3038 <p>Possible Answers:
3039 </p>
3040 <p>
3041 </p>
3042 <blockquote class="text">
3043 <p>"OK" -
3044 </p>
3045 <blockquote class="text">
3046 <p>in case setting was successfully changed
3047 </p>
3048 </blockquote>
3049
3050
3051 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3052 </p>
3053 <blockquote class="text">
3054 <p>in case setting was changed successfully, but there are
3055 noteworthy issue(s) related, providing an appropriate
3056 warning code and warning message
3057 </p>
3058 </blockquote>
3059
3060
3061 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3062 </p>
3063 <blockquote class="text">
3064 <p>in case it failed, providing an appropriate error code and error message
3065 </p>
3066 </blockquote>
3067
3068
3069 </blockquote><p>
3070
3071 </p>
3072 <p>Example:
3073 </p>
3074 <p>
3075 </p>
3076 <blockquote class="text">
3077 <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3078 </p>
3079 <p>S: "OK"
3080 </p>
3081 </blockquote><p>
3082
3083 </p>
3084 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3085 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3086 <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3087 Getting information about a MIDI port</h3>
3088
3089 <p>Use the following command to get information about a MIDI port:
3090 </p>
3091 <p>
3092 </p>
3093 <blockquote class="text">
3094 <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3095 </p>
3096 </blockquote><p>
3097
3098 </p>
3099 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3100 <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>
3101 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>
3102 command and &lt;midi-port&gt; the MIDI input port number.
3103 </p>
3104 <p>Possible Answers:
3105 </p>
3106 <p>
3107 </p>
3108 <blockquote class="text">
3109 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3110 Each answer line begins with the information category name
3111 followed by a colon and then a space character &lt;SP&gt; and finally
3112 the info character string to that info category. At the moment
3113 the following information categories are defined:
3114 </p>
3115 <p>NAME -
3116 </p>
3117 <blockquote class="text">
3118 <p>arbitrary character string naming the port
3119 </p>
3120 </blockquote>
3121
3122
3123 </blockquote><p>
3124
3125 </p>
3126 <p>The field above is only the one which is returned by all MIDI
3127 ports regardless of the MIDI driver and port. Every MIDI port
3128 might have its own, additional driver and port specific
3129 parameters.
3130 </p>
3131 <p>Example:
3132 </p>
3133 <p>
3134 </p>
3135 <blockquote class="text">
3136 <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3137 </p>
3138 <p>S: "NAME: 'Masterkeyboard'"
3139 </p>
3140 <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3141 </p>
3142 <p>&nbsp;&nbsp;&nbsp;"."
3143 </p>
3144 </blockquote><p>
3145
3146 </p>
3147 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3148 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3149 <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3150 Getting information about specific MIDI port parameter</h3>
3151
3152 <p>Use the following command to get detailed information about specific MIDI port parameter:
3153 </p>
3154 <p>
3155 </p>
3156 <blockquote class="text">
3157 <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3158 </p>
3159 </blockquote><p>
3160
3161 </p>
3162 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3163 <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>
3164 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>
3165 command, &lt;port&gt; the MIDI port number and
3166 &lt;param&gt; a specific port parameter name for which information should be
3167 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).
3168 </p>
3169 <p>Possible Answers:
3170 </p>
3171 <p>
3172 </p>
3173 <blockquote class="text">
3174 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3175 Each answer line begins with the information category name
3176 followed by a colon and then a space character &lt;SP&gt; and finally
3177 the info character string to that info category. There is
3178 information which is always returned, independently of the
3179 given channel parameter and there is optional information
3180 which are only shown dependently to the given MIDI port. At the
3181 moment the following information categories are defined:
3182 </p>
3183 <p>TYPE -
3184 </p>
3185 <blockquote class="text">
3186 <p>either "BOOL" for boolean value(s) or "INT" for integer
3187 value(s) or "FLOAT" for dotted number(s) or "STRING" for
3188 character string(s)
3189 (always returned)
3190 </p>
3191 </blockquote>
3192
3193
3194 <p>DESCRIPTION -
3195 </p>
3196 <blockquote class="text">
3197 <p>arbitrary text describing the purpose of the parameter
3198 (always returned)
3199 </p>
3200 </blockquote>
3201
3202
3203 <p>FIX -
3204 </p>
3205 <blockquote class="text">
3206 <p>either true or false, if true then this parameter is
3207 read only, thus cannot be altered
3208 (always returned)
3209 </p>
3210 </blockquote>
3211
3212
3213 <p>MULTIPLICITY -
3214 </p>
3215 <blockquote class="text">
3216 <p>either true or false, defines if this parameter allows
3217 only one value or a list of values, where true means
3218 multiple values and false only a single value allowed
3219 (always returned)
3220 </p>
3221 </blockquote>
3222
3223
3224 <p>RANGE_MIN -
3225 </p>
3226 <blockquote class="text">
3227 <p>defines lower limit of the allowed value range for this
3228 parameter, can be an integer value as well as a dotted
3229 number, this parameter is usually used in conjunction
3230 with 'RANGE_MAX' but may also appear without
3231 (optionally returned, dependent to driver and port
3232 parameter)
3233 </p>
3234 </blockquote>
3235
3236
3237 <p>RANGE_MAX -
3238 </p>
3239 <blockquote class="text">
3240 <p>defines upper limit of the allowed value range for this
3241 parameter, can be an integer value as well as a dotted
3242 number, this parameter is usually used in conjunction
3243 with 'RANGE_MIN' but may also appear without
3244 (optionally returned, dependent to driver and port
3245 parameter)
3246 </p>
3247 </blockquote>
3248
3249
3250 <p>POSSIBILITIES -
3251 </p>
3252 <blockquote class="text">
3253 <p>comma separated list of possible values for this
3254 parameter, character strings are encapsulated into
3255 apostrophes
3256 (optionally returned, dependent to device and port
3257 parameter)
3258 </p>
3259 </blockquote>
3260
3261
3262 </blockquote><p>
3263
3264 </p>
3265 <p>The mentioned fields above don't have to be in particular order.
3266 </p>
3267 <p>Example:
3268 </p>
3269 <p>
3270 </p>
3271 <blockquote class="text">
3272 <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3273 </p>
3274 <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3275 </p>
3276 <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3277 </p>
3278 <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3279 </p>
3280 <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3281 </p>
3282 <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3283 </p>
3284 <p>&nbsp;&nbsp;&nbsp;"."
3285 </p>
3286 </blockquote><p>
3287
3288 </p>
3289 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3290 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3291 <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3292 Changing settings of MIDI input ports</h3>
3293
3294 <p>Use the following command to alter a specific setting of a MIDI input port:
3295 </p>
3296 <p>
3297 </p>
3298 <blockquote class="text">
3299 <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3300 </p>
3301 </blockquote><p>
3302
3303 </p>
3304 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3305 MIDI device as returned by the
3306 <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>
3307 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>
3308 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3309 the parameter to change and &lt;value&gt; by the new value for this
3310 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3311 for specifying no value for parameters allowing a list of values.
3312 </p>
3313 <p>Possible Answers:
3314 </p>
3315 <p>
3316 </p>
3317 <blockquote class="text">
3318 <p>"OK" -
3319 </p>
3320 <blockquote class="text">
3321 <p>in case setting was successfully changed
3322 </p>
3323 </blockquote>
3324
3325
3326 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3327 </p>
3328 <blockquote class="text">
3329 <p>in case setting was changed successfully, but there are
3330 noteworthy issue(s) related, providing an appropriate
3331 warning code and warning message
3332 </p>
3333 </blockquote>
3334
3335
3336 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3337 </p>
3338 <blockquote class="text">
3339 <p>in case it failed, providing an appropriate error code and error message
3340 </p>
3341 </blockquote>
3342
3343
3344 </blockquote><p>
3345
3346 </p>
3347 <p>Example:
3348 </p>
3349 <p>
3350 </p>
3351 <blockquote class="text">
3352 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3353 </p>
3354 <p>S: "OK"
3355 </p>
3356 </blockquote><p>
3357
3358 </p>
3359 <p>
3360 </p>
3361 <blockquote class="text">
3362 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3363 </p>
3364 <p>S: "OK"
3365 </p>
3366 </blockquote><p>
3367
3368 </p>
3369 <a name="anchor11"></a><br /><hr />
3370 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3371 <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3372 Configuring sampler channels</h3>
3373
3374 <p>The following commands describe how to add and remove sampler channels, associate a
3375 sampler channel with a sampler engine, load instruments and connect sampler channels to
3376 MIDI and audio devices.
3377 </p>
3378 <a name="LOAD INSTRUMENT"></a><br /><hr />
3379 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3380 <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3381 Loading an instrument</h3>
3382
3383 <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3384 </p>
3385 <p>
3386 </p>
3387 <blockquote class="text">
3388 <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3389 </p>
3390 </blockquote><p>
3391
3392 </p>
3393 <p>Where &lt;filename&gt; is the name of the instrument file on the
3394 LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3395 instrument in the instrument file and &lt;sampler-channel> is the
3396 number of the sampler channel the instrument should be assigned to.
3397 Each sampler channel can only have one instrument.
3398 </p>
3399 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3400 escape characters for special characters (see chapter
3401 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"
3402 for details) and accordingly backslash characters in the filename
3403 MUST now be escaped as well!
3404 </p>
3405 <p>The difference between regular and NON_MODAL versions of the command
3406 is that the regular command returns OK only after the instrument has been
3407 fully loaded and the channel is ready to be used while NON_MODAL version
3408 returns immediately and a background process is launched to load the instrument
3409 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>
3410 command can be used to obtain loading
3411 progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3412 such as making sure that the file could be read and it is of a proper format
3413 and SHOULD return ERR and SHOULD not launch the background process should any
3414 errors be detected at that point.
3415 </p>
3416 <p>Possible Answers:
3417 </p>
3418 <p>
3419 </p>
3420 <blockquote class="text">
3421 <p>"OK" -
3422 </p>
3423 <blockquote class="text">
3424 <p>in case the instrument was successfully loaded
3425 </p>
3426 </blockquote>
3427
3428
3429 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3430 </p>
3431 <blockquote class="text">
3432 <p>in case the instrument was loaded successfully, but there
3433 are noteworthy issue(s) related (e.g. Engine doesn't support
3434 one or more patch parameters provided by the loaded
3435 instrument file), providing an appropriate warning code and
3436 warning message
3437 </p>
3438 </blockquote>
3439
3440
3441 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3442 </p>
3443 <blockquote class="text">
3444 <p>in case it failed, providing an appropriate error code and error message
3445 </p>
3446 </blockquote>
3447
3448
3449 </blockquote><p>
3450
3451 </p>
3452 <p>Example:
3453 </p>
3454 <p>
3455 </p>
3456 <blockquote class="text">
3457 <p>
3458 </p>
3459 </blockquote><p>
3460
3461 </p>
3462 <a name="LOAD ENGINE"></a><br /><hr />
3463 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3464 <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3465 Loading a sampler engine</h3>
3466
3467 <p>A sampler engine type can be associated to a specific sampler
3468 channel by the following command:
3469 </p>
3470 <p>
3471 </p>
3472 <blockquote class="text">
3473 <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3474 </p>
3475 </blockquote><p>
3476
3477 </p>
3478 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3479 <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;
3480 the sampler channel as returned by the
3481 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3482 <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
3483 the engine type should be assigned to. This command should be issued
3484 after adding a new sampler channel and before any other control
3485 commands on the new sampler channel. It can also be used to change
3486 the engine type of a sampler channel. This command has (currently) no
3487 way to define or force if a new engine instance should be created and
3488 assigned to the given sampler channel or if an already existing
3489 instance of that engine type, shared with other sampler channels,
3490 should be used.
3491 </p>
3492 <p>Possible Answers:
3493 </p>
3494 <p>
3495 </p>
3496 <blockquote class="text">
3497 <p>"OK" -
3498 </p>
3499 <blockquote class="text">
3500 <p>in case the engine was successfully deployed
3501 </p>
3502 </blockquote>
3503
3504
3505 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3506 </p>
3507 <blockquote class="text">
3508 <p>in case the engine was deployed successfully, but there
3509 are noteworthy issue(s) related, providing an appropriate
3510 warning code and warning message
3511 </p>
3512 </blockquote>
3513
3514
3515 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3516 </p>
3517 <blockquote class="text">
3518 <p>in case it failed, providing an appropriate error code and
3519 error message
3520 </p>
3521 </blockquote>
3522
3523
3524 </blockquote><p>
3525
3526 </p>
3527 <p>Example:
3528 </p>
3529 <p>
3530 </p>
3531 <blockquote class="text">
3532 <p>
3533 </p>
3534 </blockquote><p>
3535
3536 </p>
3537 <a name="GET CHANNELS"></a><br /><hr />
3538 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3539 <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3540 Getting all created sampler channel count</h3>
3541
3542 <p>The number of sampler channels can change on runtime. To get the
3543 current amount of sampler channels, the front-end can send the
3544 following command:
3545 </p>
3546 <p>
3547 </p>
3548 <blockquote class="text">
3549 <p>GET CHANNELS
3550 </p>
3551 </blockquote><p>
3552
3553 </p>
3554 <p>Possible Answers:
3555 </p>
3556 <p>
3557 </p>
3558 <blockquote class="text">
3559 <p>LinuxSampler will answer by returning the current number of sampler channels.
3560 </p>
3561 </blockquote><p>
3562
3563 </p>
3564 <p>Example:
3565 </p>
3566 <p>
3567 </p>
3568 <blockquote class="text">
3569 <p>C: "GET CHANNELS"
3570 </p>
3571 <p>S: "12"
3572 </p>
3573 </blockquote><p>
3574
3575 </p>
3576 <a name="LIST CHANNELS"></a><br /><hr />
3577 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3578 <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3579 Getting all created sampler channel list</h3>
3580
3581 <p>The number of sampler channels can change on runtime. To get the
3582 current list of sampler channels, the front-end can send the
3583 following command:
3584 </p>
3585 <p>
3586 </p>
3587 <blockquote class="text">
3588 <p>LIST CHANNELS
3589 </p>
3590 </blockquote><p>
3591
3592 </p>
3593 <p>Possible Answers:
3594 </p>
3595 <p>
3596 </p>
3597 <blockquote class="text">
3598 <p>LinuxSampler will answer by returning a comma separated list
3599 with all sampler channels numerical IDs.
3600 </p>
3601 </blockquote><p>
3602
3603 </p>
3604 <p>Example:
3605 </p>
3606 <p>
3607 </p>
3608 <blockquote class="text">
3609 <p>C: "LIST CHANNELS"
3610 </p>
3611 <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3612 </p>
3613 </blockquote><p>
3614
3615 </p>
3616 <a name="ADD CHANNEL"></a><br /><hr />
3617 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3618 <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3619 Adding a new sampler channel</h3>
3620
3621 <p>A new sampler channel can be added to the end of the sampler
3622 channel list by sending the following command:
3623 </p>
3624 <p>
3625 </p>
3626 <blockquote class="text">
3627 <p>ADD CHANNEL
3628 </p>
3629 </blockquote><p>
3630
3631 </p>
3632 <p>This will increment the sampler channel count by one and the new
3633 sampler channel will be appended to the end of the sampler channel
3634 list. The front-end should send the respective, related commands
3635 right after to e.g. load an engine, load an instrument and setting
3636 input, output method and eventually other commands to initialize
3637 the new channel. The front-end should use the sampler channel
3638 returned by the answer of this command to perform the previously
3639 recommended commands, to avoid race conditions e.g. with other
3640 front-ends that might also have sent an "ADD CHANNEL" command.
3641 </p>
3642 <p>Possible Answers:
3643 </p>
3644 <p>
3645 </p>
3646 <blockquote class="text">
3647 <p>"OK[&lt;sampler-channel&gt;]" -
3648 </p>
3649 <blockquote class="text">
3650 <p>in case a new sampler channel could be added, where
3651 &lt;sampler-channel&gt; reflects the channel number of the new
3652 created sampler channel which should be used to set up
3653 the sampler channel by sending subsequent initialization
3654 commands
3655 </p>
3656 </blockquote>
3657
3658
3659 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3660 </p>
3661 <blockquote class="text">
3662 <p>in case a new channel was added successfully, but there are
3663 noteworthy issue(s) related, providing an appropriate
3664 warning code and warning message
3665 </p>
3666 </blockquote>
3667
3668
3669 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3670 </p>
3671 <blockquote class="text">
3672 <p>in case it failed, providing an appropriate error code and
3673 error message
3674 </p>
3675 </blockquote>
3676
3677
3678 </blockquote><p>
3679
3680 </p>
3681 <p>Example:
3682 </p>
3683 <p>
3684 </p>
3685 <blockquote class="text">
3686 <p>
3687 </p>
3688 </blockquote><p>
3689
3690 </p>
3691 <a name="REMOVE CHANNEL"></a><br /><hr />
3692 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3693 <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3694 Removing a sampler channel</h3>
3695
3696 <p>A sampler channel can be removed by sending the following command:
3697 </p>
3698 <p>
3699 </p>
3700 <blockquote class="text">
3701 <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3702 </p>
3703 </blockquote><p>
3704
3705 </p>
3706 <p>Where &lt;sampler-channel&gt; should be replaced by the
3707 number of the sampler channel as given by the
3708 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3709 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3710 command. The channel numbers of all subsequent sampler channels
3711 remain the same.
3712 </p>
3713 <p>Possible Answers:
3714 </p>
3715 <p>
3716 </p>
3717 <blockquote class="text">
3718 <p>"OK" -
3719 </p>
3720 <blockquote class="text">
3721 <p>in case the given sampler channel could be removed
3722 </p>
3723 </blockquote>
3724
3725
3726 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3727 </p>
3728 <blockquote class="text">
3729 <p>in case the given channel was removed, but there are
3730 noteworthy issue(s) related, providing an appropriate
3731 warning code and warning message
3732 </p>
3733 </blockquote>
3734
3735
3736 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3737 </p>
3738 <blockquote class="text">
3739 <p>in case it failed, providing an appropriate error code and
3740 error message
3741 </p>
3742 </blockquote>
3743
3744
3745 </blockquote><p>
3746
3747 </p>
3748 <p>Example:
3749 </p>
3750 <p>
3751 </p>
3752 <blockquote class="text">
3753 <p>
3754 </p>
3755 </blockquote><p>
3756
3757 </p>
3758 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3759 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3760 <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3761 Getting amount of available engines</h3>
3762
3763 <p>The front-end can ask for the number of available engines by sending the following command:
3764 </p>
3765 <p>
3766 </p>
3767 <blockquote class="text">
3768 <p>GET AVAILABLE_ENGINES
3769 </p>
3770 </blockquote><p>
3771
3772 </p>
3773 <p>Possible Answers:
3774 </p>
3775 <p>
3776 </p>
3777 <blockquote class="text">
3778 <p>LinuxSampler will answer by sending the number of available engines.
3779 </p>
3780 </blockquote><p>
3781
3782 </p>
3783 <p>Example:
3784 </p>
3785 <p>
3786 </p>
3787 <blockquote class="text">
3788 <p>C: "GET AVAILABLE_ENGINES"
3789 </p>
3790 <p>S: "4"
3791 </p>
3792 </blockquote><p>
3793
3794 </p>
3795 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3796 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3797 <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3798 Getting all available engines</h3>
3799
3800 <p>The front-end can ask for a list of all available engines by sending the following command:
3801 </p>
3802 <p>
3803 </p>
3804 <blockquote class="text">
3805 <p>LIST AVAILABLE_ENGINES
3806 </p>
3807 </blockquote><p>
3808
3809 </p>
3810 <p>Possible Answers:
3811 </p>
3812 <p>
3813 </p>
3814 <blockquote class="text">
3815 <p>LinuxSampler will answer by sending a comma separated list
3816 of the engines' names encapsulated into apostrophes (').
3817 Engine names can consist of lower and upper cases,
3818 digits and underlines ("_" character).
3819 </p>
3820 </blockquote><p>
3821
3822 </p>
3823 <p>Example:
3824 </p>
3825 <p>
3826 </p>
3827 <blockquote class="text">
3828 <p>C: "LIST AVAILABLE_ENGINES"
3829 </p>
3830 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3831 </p>
3832 </blockquote><p>
3833
3834 </p>
3835 <a name="GET ENGINE INFO"></a><br /><hr />
3836 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3837 <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3838 Getting information about an engine</h3>
3839
3840 <p>The front-end can ask for information about a specific engine by
3841 sending the following command:
3842 </p>
3843 <p>
3844 </p>
3845 <blockquote class="text">
3846 <p>GET ENGINE INFO &lt;engine-name&gt;
3847 </p>
3848 </blockquote><p>
3849
3850 </p>
3851 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3852 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3853 </p>
3854 <p>Possible Answers:
3855 </p>
3856 <p>
3857 </p>
3858 <blockquote class="text">
3859 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3860 Each answer line begins with the information category name
3861 followed by a colon and then a space character &lt;SP&gt; and finally
3862 the info character string to that info category. At the moment
3863 the following categories are defined:
3864 </p>
3865 <p>
3866 </p>
3867 <blockquote class="text">
3868 <p>DESCRIPTION -
3869 </p>
3870 <blockquote class="text">
3871 <p>arbitrary description text about the engine
3872 </p>
3873 </blockquote>
3874
3875
3876 <p>VERSION -
3877 </p>
3878 <blockquote class="text">
3879 <p>arbitrary character string regarding the engine's version
3880 </p>
3881 </blockquote>
3882
3883
3884 </blockquote>
3885
3886
3887 </blockquote><p>
3888
3889 </p>
3890 <p>The mentioned fields above don't have to be in particular order.
3891 </p>
3892 <p>Example:
3893 </p>
3894 <p>
3895 </p>
3896 <blockquote class="text">
3897 <p>C: "GET ENGINE INFO JoesCustomEngine"
3898 </p>
3899 <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3900 </p>
3901 <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3902 </p>
3903 <p>&nbsp;&nbsp;&nbsp;"."
3904 </p>
3905 </blockquote><p>
3906
3907 </p>
3908 <a name="GET CHANNEL INFO"></a><br /><hr />
3909 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3910 <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3911 Getting sampler channel information</h3>
3912
3913 <p>The front-end can ask for the current settings of a sampler channel
3914 by sending the following command:
3915 </p>
3916 <p>
3917 </p>
3918 <blockquote class="text">
3919 <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3920 </p>
3921 </blockquote><p>
3922
3923 </p>
3924 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3925 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>
3926 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.
3927 </p>
3928 <p>Possible Answers:
3929 </p>
3930 <p>
3931 </p>
3932 <blockquote class="text">
3933 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3934 Each answer line begins with the settings category name
3935 followed by a colon and then a space character &lt;SP&gt; and finally
3936 the info character string to that setting category. At the
3937 moment the following categories are defined:
3938 </p>
3939 <p>
3940 </p>
3941 <blockquote class="text">
3942 <p>ENGINE_NAME -
3943 </p>
3944 <blockquote class="text">
3945 <p>name of the engine that is associated with the sampler
3946 channel, "NONE" if there's no engine associated yet for
3947 this sampler channel
3948 </p>
3949 </blockquote>
3950
3951
3952 <p>AUDIO_OUTPUT_DEVICE -
3953 </p>
3954 <blockquote class="text">
3955 <p>numerical ID of the audio output device which is
3956 currently connected to this sampler channel to output
3957 the audio signal, "NONE" if there's no device
3958 connected to this sampler channel
3959 </p>
3960 </blockquote>
3961
3962
3963 <p>AUDIO_OUTPUT_CHANNELS -
3964 </p>
3965 <blockquote class="text">
3966 <p>number of output channels the sampler channel offers
3967 (dependent to used sampler engine and loaded instrument)
3968 </p>
3969 </blockquote>
3970
3971
3972 <p>AUDIO_OUTPUT_ROUTING -
3973 </p>
3974 <blockquote class="text">
3975 <p>comma separated list which reflects to which audio
3976 channel of the selected audio output device each
3977 sampler output channel is routed to, e.g. "0,3" would
3978 mean the engine's output channel 0 is routed to channel
3979 0 of the audio output device and the engine's output
3980 channel 1 is routed to the channel 3 of the audio
3981 output device
3982 </p>
3983 </blockquote>
3984
3985
3986 <p>INSTRUMENT_FILE -
3987 </p>
3988 <blockquote class="text">
3989 <p>the file name of the loaded instrument, "NONE" if
3990 there's no instrument yet loaded for this sampler
3991 channel
3992 </p>
3993 </blockquote>
3994
3995
3996 <p>INSTRUMENT_NR -
3997 </p>
3998 <blockquote class="text">
3999 <p>the instrument index number of the loaded instrument
4000 </p>
4001 </blockquote>
4002
4003
4004 <p>INSTRUMENT_NAME -
4005 </p>
4006 <blockquote class="text">
4007 <p>the instrument name of the loaded instrument
4008 </p>
4009 </blockquote>
4010
4011
4012 <p>INSTRUMENT_STATUS -
4013 </p>
4014 <blockquote class="text">
4015 <p>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative
4016 value indicates a loading exception. Value of 100 indicates that the instrument is fully
4017 loaded.
4018 </p>
4019 </blockquote>
4020
4021
4022 <p>MIDI_INPUT_DEVICE -
4023 </p>
4024 <blockquote class="text">
4025 <p>numerical ID of the MIDI input device which is
4026 currently connected to this sampler channel to deliver
4027 MIDI input commands, "NONE" if there's no device
4028 connected to this sampler channel
4029 </p>
4030 </blockquote>
4031
4032
4033 <p>MIDI_INPUT_PORT -
4034 </p>
4035 <blockquote class="text">
4036 <p>port number of the MIDI input device
4037 </p>
4038 </blockquote>
4039
4040
4041 <p>MIDI_INPUT_CHANNEL -
4042 </p>
4043 <blockquote class="text">
4044 <p>the MIDI input channel number this sampler channel
4045 should listen to or "ALL" to listen on all MIDI channels
4046 </p>
4047 </blockquote>
4048
4049
4050 <p>VOLUME -
4051 </p>
4052 <blockquote class="text">
4053 <p>optionally dotted number for the channel volume factor
4054 (where a value &lt; 1.0 means attenuation and a value >
4055 1.0 means amplification)
4056 </p>
4057 </blockquote>
4058
4059
4060 <p>MUTE -
4061 </p>
4062 <blockquote class="text">
4063 <p>Determines whether the channel is muted, "true" if the
4064 channel is muted, "false" if the channel is not muted, and
4065 "MUTED_BY_SOLO" if the channel is muted because of the
4066 presence of a solo channel and will be unmuted when
4067 there are no solo channels left
4068 </p>
4069 </blockquote>
4070
4071
4072 <p>SOLO -
4073 </p>
4074 <blockquote class="text">
4075 <p>Determines whether this is a solo channel, "true" if
4076 the channel is a solo channel; "false" otherwise
4077 </p>
4078 </blockquote>
4079
4080
4081 <p>MIDI_INSTRUMENT_MAP -
4082 </p>
4083 <blockquote class="text">
4084 <p>Determines to which MIDI instrument map this sampler
4085 channel is assigned to. Read chapter
4086 <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>
4087 for a list of possible values.
4088 </p>
4089 </blockquote>
4090
4091
4092 </blockquote>
4093
4094
4095 </blockquote><p>
4096
4097 </p>
4098 <p>The mentioned fields above don't have to be in particular order.
4099 </p>
4100 <p>Example:
4101 </p>
4102 <p>
4103 </p>
4104 <blockquote class="text">
4105 <p>C: "GET CHANNEL INFO 34"
4106 </p>
4107 <p>S: "ENGINE_NAME: GigEngine"
4108 </p>
4109 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4110 </p>
4111 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4112 </p>
4113 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4114 </p>
4115 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4116 </p>
4117 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4118 </p>
4119 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4120 </p>
4121 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4122 </p>
4123 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4124 </p>
4125 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4126 </p>
4127 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4128 </p>
4129 <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4130 </p>
4131 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4132 </p>
4133 <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4134 </p>
4135 <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4136 </p>
4137 <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4138 </p>
4139 <p>&nbsp;&nbsp;&nbsp;"."
4140 </p>
4141 </blockquote><p>
4142
4143 </p>
4144 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4145 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4146 <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4147 Current number of active voices</h3>
4148
4149 <p>The front-end can ask for the current number of active voices on a
4150 sampler channel by sending the following command:
4151 </p>
4152 <p>
4153 </p>
4154 <blockquote class="text">
4155 <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4156 </p>
4157 </blockquote><p>
4158
4159 </p>
4160 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4161 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>
4162 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.
4163 </p>
4164 <p>Possible Answers:
4165 </p>
4166 <p>
4167 </p>
4168 <blockquote class="text">
4169 <p>LinuxSampler will answer by returning the number of active
4170 voices on that channel.
4171 </p>
4172 </blockquote><p>
4173
4174 </p>
4175 <p>Example:
4176 </p>
4177 <p>
4178 </p>
4179 <blockquote class="text">
4180 <p>
4181 </p>
4182 </blockquote><p>
4183
4184 </p>
4185 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4186 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4187 <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4188 Current number of active disk streams</h3>
4189
4190 <p>The front-end can ask for the current number of active disk streams
4191 on a sampler channel by sending the following command:
4192 </p>
4193 <p>
4194 </p>
4195 <blockquote class="text">
4196 <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4197 </p>
4198 </blockquote><p>
4199
4200 </p>
4201 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4202 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>
4203 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.
4204 </p>
4205 <p>Possible Answers:
4206 </p>
4207 <p>
4208 </p>
4209 <blockquote class="text">
4210 <p>LinuxSampler will answer by returning the number of active
4211 disk streams on that channel in case the engine supports disk
4212 streaming, if the engine doesn't support disk streaming it will
4213 return "NA" for not available.
4214 </p>
4215 </blockquote><p>
4216
4217 </p>
4218 <p>Example:
4219 </p>
4220 <p>
4221 </p>
4222 <blockquote class="text">
4223 <p>
4224 </p>
4225 </blockquote><p>
4226
4227 </p>
4228 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4229 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4230 <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4231 Current fill state of disk stream buffers</h3>
4232
4233 <p>The front-end can ask for the current fill state of all disk streams
4234 on a sampler channel by sending the following command:
4235 </p>
4236 <p>
4237 </p>
4238 <blockquote class="text">
4239 <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4240 </p>
4241 </blockquote><p>
4242
4243 </p>
4244 <p>to get the fill state in bytes or
4245 </p>
4246 <p>
4247 </p>
4248 <blockquote class="text">
4249 <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4250 </p>
4251 </blockquote><p>
4252
4253 </p>
4254 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4255 sampler channel number the front-end is interested in
4256 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>
4257 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.
4258 </p>
4259 <p>Possible Answers:
4260 </p>
4261 <p>
4262 </p>
4263 <blockquote class="text">
4264 <p>LinuxSampler will either answer by returning a comma separated
4265 string with the fill state of all disk stream buffers on that
4266 channel or an empty line if there are no active disk streams or
4267 "NA" for *not available* in case the engine which is deployed
4268 doesn't support disk streaming. Each entry in the answer list
4269 will begin with the stream's ID in brackets followed by the
4270 numerical representation of the fill size (either in bytes or
4271 percentage). Note: due to efficiency reasons the fill states in
4272 the response are not in particular order, thus the front-end has
4273 to sort them by itself if necessary.
4274 </p>
4275 </blockquote><p>
4276
4277 </p>
4278 <p>Examples:
4279 </p>
4280 <p>
4281 </p>
4282 <blockquote class="text">
4283 <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4284 </p>
4285 <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4286 </p>
4287 </blockquote><p>
4288
4289 </p>
4290 <blockquote class="text">
4291 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4292 </p>
4293 <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4294 </p>
4295 </blockquote><p>
4296
4297 </p>
4298 <blockquote class="text">
4299 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4300 </p>
4301 <p>S: ""
4302 </p>
4303 </blockquote><p>
4304
4305 </p>
4306 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4307 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4308 <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4309 Setting audio output device</h3>
4310
4311 <p>The front-end can set the audio output device on a specific sampler
4312 channel by sending the following command:
4313 </p>
4314 <p>
4315 </p>
4316 <blockquote class="text">
4317 <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4318 </p>
4319 </blockquote><p>
4320
4321 </p>
4322 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4323 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>
4324 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
4325 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4326 <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>
4327 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>
4328 command.
4329 </p>
4330 <p>Possible Answers:
4331 </p>
4332 <p>
4333 </p>
4334 <blockquote class="text">
4335 <p>"OK" -
4336 </p>
4337 <blockquote class="text">
4338 <p>on success
4339 </p>
4340 </blockquote>
4341
4342
4343 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4344 </p>
4345 <blockquote class="text">
4346 <p>if audio output device was set, but there are noteworthy
4347 issue(s) related, providing an appropriate warning code and
4348 warning message
4349 </p>
4350 </blockquote>
4351
4352
4353 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4354 </p>
4355 <blockquote class="text">
4356 <p>in case it failed, providing an appropriate error code and error message
4357 </p>
4358 </blockquote>
4359
4360
4361 </blockquote><p>
4362
4363 </p>
4364 <p>Examples:
4365 </p>
4366 <p>
4367 </p>
4368 <blockquote class="text">
4369 <p>
4370 </p>
4371 </blockquote><p>
4372
4373 </p>
4374 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4375 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4376 <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4377 Setting audio output type</h3>
4378
4379 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4380 </p>
4381 <p>The front-end can alter the audio output type on a specific sampler
4382 channel by sending the following command:
4383 </p>
4384 <p>
4385 </p>
4386 <blockquote class="text">
4387 <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4388 </p>
4389 </blockquote><p>
4390
4391 </p>
4392 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4393 &lt;sampler-channel&gt; is the respective sampler channel number.
4394 </p>
4395 <p>Possible Answers:
4396 </p>
4397 <p>
4398 </p>
4399 <blockquote class="text">
4400 <p>"OK" -
4401 </p>
4402 <blockquote class="text">
4403 <p>on success
4404 </p>
4405 </blockquote>
4406
4407
4408 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4409 </p>
4410 <blockquote class="text">
4411 <p>if audio output type was set, but there are noteworthy
4412 issue(s) related, providing an appropriate warning code and
4413 warning message
4414 </p>
4415 </blockquote>
4416
4417
4418 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4419 </p>
4420 <blockquote class="text">
4421 <p>in case it failed, providing an appropriate error code and error message
4422 </p>
4423 </blockquote>
4424
4425
4426 </blockquote><p>
4427
4428 </p>
4429 <p>Examples:
4430 </p>
4431 <p>
4432 </p>
4433 <blockquote class="text">
4434 <p>
4435 </p>
4436 </blockquote><p>
4437
4438 </p>
4439 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4440 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4441 <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4442 Setting audio output channel</h3>
4443
4444 <p>The front-end can alter the audio output channel on a specific
4445 sampler channel by sending the following command:
4446 </p>
4447 <p>
4448 </p>
4449 <blockquote class="text">
4450 <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4451 </p>
4452 </blockquote><p>
4453
4454 </p>
4455 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4456 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>
4457 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
4458 numerical ID of the sampler channel's audio output channel which should be
4459 rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4460 output device where &lt;audio-out&gt; should be routed to.
4461 </p>
4462 <p>Possible Answers:
4463 </p>
4464 <p>
4465 </p>
4466 <blockquote class="text">
4467 <p>"OK" -
4468 </p>
4469 <blockquote class="text">
4470 <p>on success
4471 </p>
4472 </blockquote>
4473
4474
4475 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4476 </p>
4477 <blockquote class="text">
4478 <p>if audio output channel was set, but there are noteworthy
4479 issue(s) related, providing an appropriate warning code and
4480 warning message
4481 </p>
4482 </blockquote>
4483
4484
4485 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4486 </p>
4487 <blockquote class="text">
4488 <p>in case it failed, providing an appropriate error code and error message
4489 </p>
4490 </blockquote>
4491
4492
4493 </blockquote><p>
4494
4495 </p>
4496 <p>Examples:
4497 </p>
4498 <p>
4499 </p>
4500 <blockquote class="text">
4501 <p>
4502 </p>
4503 </blockquote><p>
4504
4505 </p>
4506 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4507 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4508 <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4509 Setting MIDI input device</h3>
4510
4511 <p>The front-end can set the MIDI input device on a specific sampler
4512 channel by sending the following command:
4513 </p>
4514 <p>
4515 </p>
4516 <blockquote class="text">
4517 <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4518 </p>
4519 </blockquote><p>
4520
4521 </p>
4522 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4523 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>
4524 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
4525 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4526 <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>
4527 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.
4528 </p>
4529 <p>Possible Answers:
4530 </p>
4531 <p>
4532 </p>
4533 <blockquote class="text">
4534 <p>"OK" -
4535 </p>
4536 <blockquote class="text">
4537 <p>on success
4538 </p>
4539 </blockquote>
4540
4541
4542 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4543 </p>
4544 <blockquote class="text">
4545 <p>if MIDI input device was set, but there are noteworthy
4546 issue(s) related, providing an appropriate warning code and
4547 warning message
4548 </p>
4549 </blockquote>
4550
4551
4552 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4553 </p>
4554 <blockquote class="text">
4555 <p>in case it failed, providing an appropriate error code and error message
4556 </p>
4557 </blockquote>
4558
4559
4560 </blockquote><p>
4561
4562 </p>
4563 <p>Examples:
4564 </p>
4565 <p>
4566 </p>
4567 <blockquote class="text">
4568 <p>
4569 </p>
4570 </blockquote><p>
4571
4572 </p>
4573 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4574 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4575 <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4576 Setting MIDI input type</h3>
4577
4578 <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4579 </p>
4580 <p>The front-end can alter the MIDI input type on a specific sampler
4581 channel by sending the following command:
4582 </p>
4583 <p>
4584 </p>
4585 <blockquote class="text">
4586 <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4587 </p>
4588 </blockquote><p>
4589
4590 </p>
4591 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4592 &lt;sampler-channel&gt; is the respective sampler channel number.
4593 </p>
4594 <p>Possible Answers:
4595 </p>
4596 <p>
4597 </p>
4598 <blockquote class="text">
4599 <p>"OK" -
4600 </p>
4601 <blockquote class="text">
4602 <p>on success
4603 </p>
4604 </blockquote>
4605
4606
4607 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4608 </p>
4609 <blockquote class="text">
4610 <p>if MIDI input type was set, but there are noteworthy
4611 issue(s) related, providing an appropriate warning code and
4612 warning message
4613 </p>
4614 </blockquote>
4615
4616
4617 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4618 </p>
4619 <blockquote class="text">
4620 <p>in case it failed, providing an appropriate error code and error message
4621 </p>
4622 </blockquote>
4623
4624
4625 </blockquote><p>
4626
4627 </p>
4628 <p>Examples:
4629 </p>
4630 <p>
4631 </p>
4632 <blockquote class="text">
4633 <p>
4634 </p>
4635 </blockquote><p>
4636
4637 </p>
4638 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4639 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4640 <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4641 Setting MIDI input port</h3>
4642
4643 <p>The front-end can alter the MIDI input port on a specific sampler
4644 channel by sending the following command:
4645 </p>
4646 <p>
4647 </p>
4648 <blockquote class="text">
4649 <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4650 </p>
4651 </blockquote><p>
4652
4653 </p>
4654 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4655 MIDI input device connected to the sampler channel given by
4656 &lt;sampler-channel&gt;.
4657 </p>
4658 <p>Possible Answers:
4659 </p>
4660 <p>
4661 </p>
4662 <blockquote class="text">
4663 <p>"OK" -
4664 </p>
4665 <blockquote class="text">
4666 <p>on success
4667 </p>
4668 </blockquote>
4669
4670
4671 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4672 </p>
4673 <blockquote class="text">
4674 <p>if MIDI input port was set, but there are noteworthy
4675 issue(s) related, providing an appropriate warning code and
4676 warning message
4677 </p>
4678 </blockquote>
4679
4680
4681 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4682 </p>
4683 <blockquote class="text">
4684 <p>in case it failed, providing an appropriate error code and error message
4685 </p>
4686 </blockquote>
4687
4688
4689 </blockquote><p>
4690
4691 </p>
4692 <p>Examples:
4693 </p>
4694 <p>
4695 </p>
4696 <blockquote class="text">
4697 <p>
4698 </p>
4699 </blockquote><p>
4700
4701 </p>
4702 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4703 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4704 <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4705 Setting MIDI input channel</h3>
4706
4707 <p>The front-end can alter the MIDI channel a sampler channel should
4708 listen to by sending the following command:
4709 </p>
4710 <p>
4711 </p>
4712 <blockquote class="text">
4713 <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4714 </p>
4715 </blockquote><p>
4716
4717 </p>
4718 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4719 &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4720 channels.
4721 </p>
4722 <p>Possible Answers:
4723 </p>
4724 <p>
4725 </p>
4726 <blockquote class="text">
4727 <p>"OK" -
4728 </p>
4729 <blockquote class="text">
4730 <p>on success
4731 </p>
4732 </blockquote>
4733
4734
4735 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4736 </p>
4737 <blockquote class="text">
4738 <p>if MIDI input channel was set, but there are noteworthy
4739 issue(s) related, providing an appropriate warning code and
4740 warning message
4741 </p>
4742 </blockquote>
4743
4744
4745 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4746 </p>
4747 <blockquote class="text">
4748 <p>in case it failed, providing an appropriate error code and error message
4749 </p>
4750 </blockquote>
4751
4752
4753 </blockquote><p>
4754
4755 </p>
4756 <p>Examples:
4757 </p>
4758 <p>
4759 </p>
4760 <blockquote class="text">
4761 <p>
4762 </p>
4763 </blockquote><p>
4764
4765 </p>
4766 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4767 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4768 <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4769 Setting channel volume</h3>
4770
4771 <p>The front-end can alter the volume of a sampler channel by sending
4772 the following command:
4773 </p>
4774 <p>
4775 </p>
4776 <blockquote class="text">
4777 <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4778 </p>
4779 </blockquote><p>
4780
4781 </p>
4782 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4783 smaller than 1.0 means attenuation, whereas a value greater than
4784 1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4785 channel where this volume factor should be set.
4786 </p>
4787 <p>Possible Answers:
4788 </p>
4789 <p>
4790 </p>
4791 <blockquote class="text">
4792 <p>"OK" -
4793 </p>
4794 <blockquote class="text">
4795 <p>on success
4796 </p>
4797 </blockquote>
4798
4799
4800 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4801 </p>
4802 <blockquote class="text">
4803 <p>if channel volume was set, but there are noteworthy
4804 issue(s) related, providing an appropriate warning code and
4805 warning message
4806 </p>
4807 </blockquote>
4808
4809
4810 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4811 </p>
4812 <blockquote class="text">
4813 <p>in case it failed, providing an appropriate error code and error message
4814 </p>
4815 </blockquote>
4816
4817
4818 </blockquote><p>
4819
4820 </p>
4821 <p>Examples:
4822 </p>
4823 <p>
4824 </p>
4825 <blockquote class="text">
4826 <p>
4827 </p>
4828 </blockquote><p>
4829
4830 </p>
4831 <a name="SET CHANNEL MUTE"></a><br /><hr />
4832 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4833 <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4834 Muting a sampler channel</h3>
4835
4836 <p>The front-end can mute/unmute a specific sampler
4837 channel by sending the following command:
4838 </p>
4839 <p>
4840 </p>
4841 <blockquote class="text">
4842 <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4843 </p>
4844 </blockquote><p>
4845
4846 </p>
4847 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4848 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>
4849 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
4850 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4851 to unmute the channel.
4852 </p>
4853 <p>Possible Answers:
4854 </p>
4855 <p>
4856 </p>
4857 <blockquote class="text">
4858 <p>"OK" -
4859 </p>
4860 <blockquote class="text">
4861 <p>on success
4862 </p>
4863 </blockquote>
4864
4865
4866 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4867 </p>
4868 <blockquote class="text">
4869 <p>if the channel was muted/unmuted, but there are noteworthy
4870 issue(s) related, providing an appropriate warning code and
4871 warning message
4872 </p>
4873 </blockquote>
4874
4875
4876 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4877 </p>
4878 <blockquote class="text">
4879 <p>in case it failed, providing an appropriate error code and error message
4880 </p>
4881 </blockquote>
4882
4883
4884 </blockquote><p>
4885
4886 </p>
4887 <p>Examples:
4888 </p>
4889 <p>
4890 </p>
4891 <blockquote class="text">
4892 <p>
4893 </p>
4894 </blockquote><p>
4895
4896 </p>
4897 <a name="SET CHANNEL SOLO"></a><br /><hr />
4898 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4899 <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4900 Soloing a sampler channel</h3>
4901
4902 <p>The front-end can solo/unsolo a specific sampler channel
4903 by sending the following command:
4904 </p>
4905 <p>
4906 </p>
4907 <blockquote class="text">
4908 <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4909 </p>
4910 </blockquote><p>
4911
4912 </p>
4913 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4914 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>
4915 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
4916 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
4917 to unsolo the channel.
4918 </p>
4919 <p>Possible Answers:
4920 </p>
4921 <p>
4922 </p>
4923 <blockquote class="text">
4924 <p>"OK" -
4925 </p>
4926 <blockquote class="text">
4927 <p>on success
4928 </p>
4929 </blockquote>
4930
4931
4932 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4933 </p>
4934 <blockquote class="text">
4935 <p>if the channel was soloed/unsoloed, but there are noteworthy
4936 issue(s) related, providing an appropriate warning code and
4937 warning message
4938 </p>
4939 </blockquote>
4940
4941
4942 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4943 </p>
4944 <blockquote class="text">
4945 <p>in case it failed, providing an appropriate error code and error message
4946 </p>
4947 </blockquote>
4948
4949
4950 </blockquote><p>
4951
4952 </p>
4953 <p>Examples:
4954 </p>
4955 <p>
4956 </p>
4957 <blockquote class="text">
4958 <p>
4959 </p>
4960 </blockquote><p>
4961
4962 </p>
4963 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
4964 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4965 <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
4966 Assigning a MIDI instrument map to a sampler channel</h3>
4967
4968 <p>The front-end can assign a MIDI instrument map to a specific sampler channel
4969 by sending the following command:
4970 </p>
4971 <p>
4972 </p>
4973 <blockquote class="text">
4974 <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
4975 </p>
4976 </blockquote><p>
4977
4978 </p>
4979 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4980 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>
4981 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
4982 &lt;map&gt; can have the following possibilites:
4983 </p>
4984 <p>
4985 </p>
4986 <blockquote class="text">
4987 <p>"NONE" -
4988 </p>
4989 <blockquote class="text">
4990 <p>This is the default setting. In this case
4991 the sampler channel is not assigned any MIDI
4992 instrument map and thus will ignore all MIDI
4993 program change messages.
4994 </p>
4995 </blockquote>
4996
4997
4998 <p>"DEFAULT" -
4999 </p>
5000 <blockquote class="text">
5001 <p>The sampler channel will always use the
5002 default MIDI instrument map to handle MIDI
5003 program change messages.
5004 </p>
5005 </blockquote>
5006
5007
5008 <p>numeric ID -
5009 </p>
5010 <blockquote class="text">
5011 <p>You can assign a specific MIDI instrument map
5012 by replacing &lt;map&gt; with the respective numeric
5013 ID of the MIDI instrument map as returned by the
5014 <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>
5015 command. Once that map will be deleted, the sampler
5016 channel would fall back to "NONE".
5017 </p>
5018 </blockquote>
5019
5020
5021 </blockquote><p>
5022
5023 </p>
5024 <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>
5025 for details regarding MIDI instrument mapping.
5026 </p>
5027 <p>Possible Answers:
5028 </p>
5029 <p>
5030 </p>
5031 <blockquote class="text">
5032 <p>"OK" -
5033 </p>
5034 <blockquote class="text">
5035 <p>on success
5036 </p>
5037 </blockquote>
5038
5039
5040 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5041 </p>
5042 <blockquote class="text">
5043 <p>in case it failed, providing an appropriate error code and error message
5044 </p>
5045 </blockquote>
5046
5047
5048 </blockquote><p>
5049
5050 </p>
5051 <p>Examples:
5052 </p>
5053 <p>
5054 </p>
5055 <blockquote class="text">
5056 <p>
5057 </p>
5058 </blockquote><p>
5059
5060 </p>
5061 <a name="CREATE FX_SEND"></a><br /><hr />
5062 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5063 <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5064 Adding an effect send to a sampler channel</h3>
5065
5066 <p>The front-end can create an additional effect send on a specific sampler channel
5067 by sending the following command:
5068 </p>
5069 <p>
5070 </p>
5071 <blockquote class="text">
5072 <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5073 </p>
5074 </blockquote><p>
5075
5076 </p>
5077 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5078 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>
5079 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
5080 sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5081 is a number between 0..127 defining the MIDI controller which can alter the
5082 effect send level and &lt;name&gt; is an optional argument defining a name
5083 for the effect send entity. The name does not have to be unique, but MUST be
5084 encapsulated into apostrophes and supports escape sequences as described in chapter
5085 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
5086 </p>
5087 <p>By default, that is as initial routing, the effect send's audio channels
5088 are automatically routed to the last audio channels of the sampler channel's
5089 audio output device, that way you can i.e. first increase the amount of audio
5090 channels on the audio output device for having dedicated effect send output
5091 channels and when "CREATE FX_SEND" is called, those channels will automatically
5092 be picked. You can alter the destination channels however with
5093 <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>.
5094
5095 </p>
5096 <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5097 sends on a sampler channel will decrease runtime performance, because for implementing channel
5098 effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5099 the voices and route the audio signal afterwards to the master outputs and effect send
5100 outputs (along with their respective effect send levels). A sampler channel without effect
5101 sends however can mix its voices directly into the audio output devices's audio buffers
5102 and is thus faster.
5103
5104 </p>
5105 <p>Possible Answers:
5106 </p>
5107 <p>
5108 </p>
5109 <blockquote class="text">
5110 <p>"OK[&lt;fx-send-id&gt;]" -
5111 </p>
5112 <blockquote class="text">
5113 <p>in case a new effect send could be added to the
5114 sampler channel, where &lt;fx-send-id&gt; reflects the
5115 unique ID of the newly created effect send entity
5116 </p>
5117 </blockquote>
5118
5119
5120 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5121 </p>
5122 <blockquote class="text">
5123 <p>when a new effect send could not be added, i.e.
5124 due to invalid parameters
5125 </p>
5126 </blockquote>
5127
5128
5129 </blockquote><p>
5130
5131 </p>
5132 <p>Examples:
5133 </p>
5134 <p>
5135 </p>
5136 <blockquote class="text">
5137 <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5138 </p>
5139 <p>S: "OK[0]"
5140 </p>
5141 </blockquote><p>
5142
5143 </p>
5144 <p>
5145 </p>
5146 <blockquote class="text">
5147 <p>C: "CREATE FX_SEND 0 93"
5148 </p>
5149 <p>S: "OK[1]"
5150 </p>
5151 </blockquote><p>
5152
5153 </p>
5154 <a name="DESTROY FX_SEND"></a><br /><hr />
5155 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5156 <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5157 Removing an effect send from a sampler channel</h3>
5158
5159 <p>The front-end can remove an existing effect send on a specific sampler channel
5160 by sending the following command:
5161 </p>
5162 <p>
5163 </p>
5164 <blockquote class="text">
5165 <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5166 </p>
5167 </blockquote><p>
5168
5169 </p>
5170 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5171 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>
5172 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
5173 sampler channel from which the effect send should be removed from and
5174 &lt;fx-send-id&gt; is the respective effect send number as returned by the
5175 <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>
5176 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.
5177 </p>
5178 <p>Possible Answers:
5179 </p>
5180 <p>
5181 </p>
5182 <blockquote class="text">
5183 <p>"OK" -
5184 </p>
5185 <blockquote class="text">
5186 <p>on success
5187 </p>
5188 </blockquote>
5189
5190
5191 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5192 </p>
5193 <blockquote class="text">
5194 <p>in case it failed, providing an appropriate error code and
5195 error message
5196 </p>
5197 </blockquote>
5198
5199
5200 </blockquote><p>
5201
5202 </p>
5203 <p>Example:
5204 </p>
5205 <p>
5206 </p>
5207 <blockquote class="text">
5208 <p>C: "DESTROY FX_SEND 0 0"
5209 </p>
5210 <p>S: "OK"
5211 </p>
5212 </blockquote><p>
5213
5214 </p>
5215 <a name="GET FX_SENDS"></a><br /><hr />
5216 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5217 <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5218 Getting amount of effect sends on a sampler channel</h3>
5219
5220 <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5221 by sending the following command:
5222 </p>
5223 <p>
5224 </p>
5225 <blockquote class="text">
5226 <p>GET FX_SENDS &lt;sampler-channel&gt;
5227 </p>
5228 </blockquote><p>
5229
5230 </p>
5231 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5232 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>
5233 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.
5234 </p>
5235 <p>Possible Answers:
5236 </p>
5237 <p>
5238 </p>
5239 <blockquote class="text">
5240 <p>The sampler will answer by returning the number of effect
5241 sends on the given sampler channel.
5242 </p>
5243 </blockquote><p>
5244
5245 </p>
5246 <p>Example:
5247 </p>
5248 <p>
5249 </p>
5250 <blockquote class="text">
5251 <p>C: "GET FX_SENDS 0"
5252 </p>
5253 <p>S: "2"
5254 </p>
5255 </blockquote><p>
5256
5257 </p>
5258 <a name="LIST FX_SENDS"></a><br /><hr />
5259 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5260 <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5261 Listing all effect sends on a sampler channel</h3>
5262
5263 <p>The front-end can ask for a list of effect sends on a specific sampler channel
5264 by sending the following command:
5265 </p>
5266 <p>
5267 </p>
5268 <blockquote class="text">
5269 <p>LIST FX_SENDS &lt;sampler-channel&gt;
5270 </p>
5271 </blockquote><p>
5272
5273 </p>
5274 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5275 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>
5276 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.
5277 </p>
5278 <p>Possible Answers:
5279 </p>
5280 <p>
5281 </p>
5282 <blockquote class="text">
5283 <p>The sampler will answer by returning a comma separated list
5284 with all effect sends' numerical IDs on the given sampler
5285 channel.
5286 </p>
5287 </blockquote><p>
5288
5289 </p>
5290 <p>Examples:
5291 </p>
5292 <p>
5293 </p>
5294 <blockquote class="text">
5295 <p>C: "LIST FX_SENDS 0"
5296 </p>
5297 <p>S: "0,1"
5298 </p>
5299 </blockquote><p>
5300
5301 </p>
5302 <p>
5303 </p>
5304 <blockquote class="text">
5305 <p>C: "LIST FX_SENDS 1"
5306 </p>
5307 <p>S: ""
5308 </p>
5309 </blockquote><p>
5310
5311 </p>
5312 <a name="GET FX_SEND INFO"></a><br /><hr />
5313 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5314 <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5315 Getting effect send information</h3>
5316
5317 <p>The front-end can ask for the current settings of an effect send entity
5318 by sending the following command:
5319 </p>
5320 <p>
5321 </p>
5322 <blockquote class="text">
5323 <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5324 </p>
5325 </blockquote><p>
5326
5327 </p>
5328 <p>Where &lt;sampler-channel&gt; is the sampler channel number
5329 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>
5330 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
5331 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5332 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>
5333 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.
5334
5335 </p>
5336 <p>Possible Answers:
5337 </p>
5338 <p>
5339 </p>
5340 <blockquote class="text">
5341 <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5342 Each answer line begins with the settings category name
5343 followed by a colon and then a space character &lt;SP&gt; and finally
5344 the info character string to that setting category. At the
5345 moment the following categories are defined:
5346 </p>
5347 <p>
5348 </p>
5349 <blockquote class="text">
5350 <p>NAME -
5351 </p>
5352 <blockquote class="text">
5353 <p>name of the effect send entity
5354 </p>
5355 </blockquote>
5356
5357
5358 <p>MIDI_CONTROLLER -
5359 </p>
5360 <blockquote class="text">
5361 <p>a value between 0 and 127 reflecting the MIDI controller
5362 which is able to modify the effect send's send level
5363 </p>
5364 </blockquote>
5365
5366
5367 <p>LEVEL -
5368 </p>
5369 <blockquote class="text">
5370 <p>optionally dotted number reflecting the effect send's
5371 current send level (where a value &lt; 1.0 means attenuation
5372 and a value > 1.0 means amplification)
5373 </p>
5374 </blockquote>
5375
5376
5377 <p>AUDIO_OUTPUT_ROUTING -
5378 </p>
5379 <blockquote class="text">
5380 <p>comma separated list which reflects to which audio
5381 channel of the selected audio output device each
5382 effect send output channel is routed to, e.g. "0,3" would
5383 mean the effect send's output channel 0 is routed to channel
5384 0 of the audio output device and the effect send's output
5385 channel 1 is routed to the channel 3 of the audio
5386 output device (see
5387 <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>
5388 for details)
5389 </p>
5390 </blockquote>
5391
5392
5393 </blockquote>
5394
5395
5396 </blockquote><p>
5397
5398 </p>
5399 <p>The mentioned fields above don't have to be in particular order.
5400 </p>
5401 <p>Example:
5402 </p>
5403 <p>
5404 </p>
5405 <blockquote class="text">
5406 <p>C: "GET FX_SEND INFO 0 0"
5407 </p>
5408 <p>S: "NAME: Reverb Send"
5409 </p>
5410 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5411 </p>
5412 <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5413 </p>
5414 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5415 </p>
5416 <p>&nbsp;&nbsp;&nbsp;"."
5417 </p>
5418 </blockquote><p>
5419
5420 </p>
5421 <a name="SET FX_SEND NAME"></a><br /><hr />
5422 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5423 <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5424 Changing effect send's name</h3>
5425
5426 <p>The front-end can alter the current name of an effect
5427 send entity by sending the following command:
5428 </p>
5429 <p>
5430 </p>
5431 <blockquote class="text">
5432 <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5433 </p>
5434 </blockquote><p>
5435
5436 </p>
5437 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5438 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>
5439 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,
5440 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5441 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>
5442 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
5443 &lt;name&gt; is the new name of the effect send entity, which
5444 does not have to be unique (name MUST be encapsulated into apostrophes
5445 and supports escape sequences as described in chapter
5446 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
5447
5448 </p>
5449 <p>Possible Answers:
5450 </p>
5451 <p>
5452 </p>
5453 <blockquote class="text">
5454 <p>"OK" -
5455 </p>
5456 <blockquote class="text">
5457 <p>on success
5458 </p>
5459 </blockquote>
5460
5461
5462 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5463 </p>
5464 <blockquote class="text">
5465 <p>in case it failed, providing an appropriate error code and error message
5466 </p>
5467 </blockquote>
5468
5469
5470 </blockquote><p>
5471
5472 </p>
5473 <p>Example:
5474 </p>
5475 <p>
5476 </p>
5477 <blockquote class="text">
5478 <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5479 </p>
5480 <p>S: "OK"
5481 </p>
5482 </blockquote><p>
5483
5484 </p>
5485 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5486 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5487 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5488 Altering effect send's audio routing</h3>
5489
5490 <p>The front-end can alter the destination of an effect send's audio channel on a specific
5491 sampler channel by sending the following command:
5492 </p>
5493 <p>
5494 </p>
5495 <blockquote class="text">
5496 <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5497 </p>
5498 </blockquote><p>
5499
5500 </p>
5501 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5502 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>
5503 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,
5504 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5505 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>
5506 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,
5507 &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5508 which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5509 the audio channel of the selected audio output device where &lt;audio-src&gt;
5510 should be routed to.
5511 </p>
5512 <p>Note that effect sends can only route audio to the same audio output
5513 device as assigned to the effect send's sampler channel. Also note that an
5514 effect send entity does always have exactly as much audio channels as its
5515 sampler channel. So if the sampler channel is stereo, the effect send does
5516 have two audio channels as well. Also keep in mind that the amount of audio
5517 channels on a sampler channel might be dependant not only to the deployed
5518 sampler engine on the sampler channel, but also dependant to the instrument
5519 currently loaded. However you can (effectively) turn an i.e. stereo effect
5520 send into a mono one by simply altering its audio routing appropriately.
5521 </p>
5522 <p>Possible Answers:
5523 </p>
5524 <p>
5525 </p>
5526 <blockquote class="text">
5527 <p>"OK" -
5528 </p>
5529 <blockquote class="text">
5530 <p>on success
5531 </p>
5532 </blockquote>
5533
5534
5535 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5536 </p>
5537 <blockquote class="text">
5538 <p>if audio output channel was set, but there are noteworthy
5539 issue(s) related, providing an appropriate warning code and
5540 warning message
5541 </p>
5542 </blockquote>
5543
5544
5545 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5546 </p>
5547 <blockquote class="text">
5548 <p>in case it failed, providing an appropriate error code and error message
5549 </p>
5550 </blockquote>
5551
5552
5553 </blockquote><p>
5554
5555 </p>
5556 <p>Example:
5557 </p>
5558 <p>
5559 </p>
5560 <blockquote class="text">
5561 <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5562 </p>
5563 <p>S: "OK"
5564 </p>
5565 </blockquote><p>
5566
5567 </p>
5568 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5569 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5570 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5571 Altering effect send's MIDI controller</h3>
5572
5573 <p>The front-end can alter the MIDI controller of an effect
5574 send entity by sending the following command:
5575 </p>
5576 <p>
5577 </p>
5578 <blockquote class="text">
5579 <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5580 </p>
5581 </blockquote><p>
5582
5583 </p>
5584 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5585 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>
5586 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,
5587 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5588 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>
5589 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
5590 &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5591 able to modify the effect send's send level.
5592 </p>
5593 <p>Possible Answers:
5594 </p>
5595 <p>
5596 </p>
5597 <blockquote class="text">
5598 <p>"OK" -
5599 </p>
5600 <blockquote class="text">
5601 <p>on success
5602 </p>
5603 </blockquote>
5604
5605
5606 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5607 </p>
5608 <blockquote class="text">
5609 <p>if MIDI controller was set, but there are noteworthy
5610 issue(s) related, providing an appropriate warning code and
5611 warning message
5612 </p>
5613 </blockquote>
5614
5615
5616 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5617 </p>
5618 <blockquote class="text">
5619 <p>in case it failed, providing an appropriate error code and error message
5620 </p>
5621 </blockquote>
5622
5623
5624 </blockquote><p>
5625
5626 </p>
5627 <p>Example:
5628 </p>
5629 <p>
5630 </p>
5631 <blockquote class="text">
5632 <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5633 </p>
5634 <p>S: "OK"
5635 </p>
5636 </blockquote><p>
5637
5638 </p>
5639 <a name="SET FX_SEND LEVEL"></a><br /><hr />
5640 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5641 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5642 Altering effect send's send level</h3>
5643
5644 <p>The front-end can alter the current send level of an effect
5645 send entity by sending the following command:
5646 </p>
5647 <p>
5648 </p>
5649 <blockquote class="text">
5650 <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5651 </p>
5652 </blockquote><p>
5653
5654 </p>
5655 <p>Where &lt;sampler-chan&gt; is the sampler channel number
5656 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>
5657 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,
5658 &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5659 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>
5660 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
5661 &lt;volume&gt; is an optionally dotted positive number (a value
5662 smaller than 1.0 means attenuation, whereas a value greater than
5663 1.0 means amplification) reflecting the new send level.
5664 </p>
5665 <p>Possible Answers:
5666 </p>
5667 <p>
5668 </p>
5669 <blockquote class="text">
5670 <p>"OK" -
5671 </p>
5672 <blockquote class="text">
5673 <p>on success
5674 </p>
5675 </blockquote>
5676
5677
5678 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5679 </p>
5680 <blockquote class="text">
5681 <p>if new send level was set, but there are noteworthy
5682 issue(s) related, providing an appropriate warning code and
5683 warning message
5684 </p>
5685 </blockquote>
5686
5687
5688 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5689 </p>
5690 <blockquote class="text">
5691 <p>in case it failed, providing an appropriate error code and error message
5692 </p>
5693 </blockquote>
5694
5695
5696 </blockquote><p>
5697
5698 </p>
5699 <p>Example:
5700 </p>
5701 <p>
5702 </p>
5703 <blockquote class="text">
5704 <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5705 </p>
5706 <p>S: "OK"
5707 </p>
5708 </blockquote><p>
5709
5710 </p>
5711 <a name="RESET CHANNEL"></a><br /><hr />
5712 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5713 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5714 Resetting a sampler channel</h3>
5715
5716 <p>The front-end can reset a particular sampler channel by sending the following command:
5717 </p>
5718 <p>
5719 </p>
5720 <blockquote class="text">
5721 <p>RESET CHANNEL &lt;sampler-channel&gt;
5722 </p>
5723 </blockquote><p>
5724
5725 </p>
5726 <p>
5727 Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
5728 This will cause the engine on that sampler channel, its voices and
5729 eventually disk streams and all control and status variables to be
5730 reset.
5731 </p>
5732 <p>Possible Answers:
5733 </p>
5734 <p>
5735 </p>
5736 <blockquote class="text">
5737 <p>"OK" -
5738 </p>
5739 <blockquote class="text">
5740 <p>on success
5741 </p>
5742 </blockquote>
5743
5744
5745 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5746 </p>
5747 <blockquote class="text">
5748 <p>if channel was reset, but there are noteworthy issue(s)
5749 related, providing an appropriate warning code and warning
5750 message
5751 </p>
5752 </blockquote>
5753
5754
5755 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5756 </p>
5757 <blockquote class="text">
5758 <p>in case it failed, providing an appropriate error code and
5759 error message
5760 </p>
5761 </blockquote>
5762
5763
5764 </blockquote><p>
5765
5766 </p>
5767 <p>Examples:
5768 </p>
5769 <p>
5770 </p>
5771 <blockquote class="text">
5772 <p>
5773 </p>
5774 </blockquote><p>
5775
5776 </p>
5777 <a name="anchor12"></a><br /><hr />
5778 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5779 <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
5780 Controlling connection</h3>
5781
5782 <p>The following commands are used to control the connection to LinuxSampler.
5783 </p>
5784 <a name="SUBSCRIBE"></a><br /><hr />
5785 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5786 <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
5787 Register front-end for receiving event messages</h3>
5788
5789 <p>The front-end can register itself to the LinuxSampler application to
5790 be informed about noteworthy events by sending this command:
5791 </p>
5792 <p>
5793 </p>
5794 <blockquote class="text">
5795 <p>SUBSCRIBE &lt;event-id&gt;
5796 </p>
5797 </blockquote><p>
5798
5799 </p>
5800 <p>where &lt;event-id&gt; will be replaced by the respective event that
5801 client wants to subscribe to.
5802 </p>
5803 <p>Possible Answers:
5804 </p>
5805 <p>
5806 </p>
5807 <blockquote class="text">
5808 <p>"OK" -
5809 </p>
5810 <blockquote class="text">
5811 <p>on success
5812 </p>
5813 </blockquote>
5814
5815
5816 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5817 </p>
5818 <blockquote class="text">
5819 <p>if registration succeeded, but there are noteworthy
5820 issue(s) related, providing an appropriate warning code and
5821 warning message
5822 </p>
5823 </blockquote>
5824
5825
5826 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5827 </p>
5828 <blockquote class="text">
5829 <p>in case it failed, providing an appropriate error code and
5830 error message
5831 </p>
5832 </blockquote>
5833
5834
5835 </blockquote><p>
5836
5837 </p>
5838 <p>Examples:
5839 </p>
5840 <p>
5841 </p>
5842 <blockquote class="text">
5843 <p>
5844 </p>
5845 </blockquote><p>
5846
5847 </p>
5848 <a name="UNSUBSCRIBE"></a><br /><hr />
5849 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5850 <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
5851 Unregister front-end for not receiving event messages</h3>
5852
5853 <p>The front-end can unregister itself if it doesn't want to receive event
5854 messages anymore by sending the following command:
5855 </p>
5856 <p>
5857 </p>
5858 <blockquote class="text">
5859 <p>UNSUBSCRIBE &lt;event-id&gt;
5860 </p>
5861 </blockquote><p>
5862
5863 </p>
5864 <p>Where &lt;event-id&gt; will be replaced by the respective event that
5865 client doesn't want to receive anymore.
5866 </p>
5867 <p>Possible Answers:
5868 </p>
5869 <p>
5870 </p>
5871 <blockquote class="text">
5872 <p>"OK" -
5873 </p>
5874 <blockquote class="text">
5875 <p>on success
5876 </p>
5877 </blockquote>
5878
5879
5880 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5881 </p>
5882 <blockquote class="text">
5883 <p>if unregistration succeeded, but there are noteworthy
5884 issue(s) related, providing an appropriate warning code and
5885 warning message
5886 </p>
5887 </blockquote>
5888
5889
5890 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5891 </p>
5892 <blockquote class="text">
5893 <p>in case it failed, providing an appropriate error code and
5894 error message
5895 </p>
5896 </blockquote>
5897
5898
5899 </blockquote><p>
5900
5901 </p>
5902 <p>Examples:
5903 </p>
5904 <p>
5905 </p>
5906 <blockquote class="text">
5907 <p>
5908 </p>
5909 </blockquote><p>
5910
5911 </p>
5912 <a name="SET ECHO"></a><br /><hr />
5913 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5914 <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
5915 Enable or disable echo of commands</h3>
5916
5917 <p>To enable or disable back sending of commands to the client the following command can be used:
5918 </p>
5919 <p>
5920 </p>
5921 <blockquote class="text">
5922 <p>SET ECHO &lt;value&gt;
5923 </p>
5924 </blockquote><p>
5925
5926 </p>
5927 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
5928 or "0" to disable echo mode. When echo mode is enabled, all
5929 commands send to LinuxSampler will be immediately send back and
5930 after this echo the actual response to the command will be
5931 returned. Echo mode will only be altered for the client connection
5932 that issued the "SET ECHO" command, not globally for all client
5933 connections.
5934 </p>
5935 <p>Possible Answers:
5936 </p>
5937 <p>
5938 </p>
5939 <blockquote class="text">
5940 <p>"OK" -
5941 </p>
5942 <blockquote class="text">
5943 <p>usually
5944 </p>
5945 </blockquote>
5946
5947
5948 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5949 </p>
5950 <blockquote class="text">
5951 <p>on syntax error, e.g. non boolean value
5952 </p>
5953 </blockquote>
5954
5955
5956 </blockquote><p>
5957
5958 </p>
5959 <p>Examples:
5960 </p>
5961 <p>
5962 </p>
5963 <blockquote class="text">
5964 <p>
5965 </p>
5966 </blockquote><p>
5967
5968 </p>
5969 <a name="QUIT"></a><br /><hr />
5970 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5971 <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
5972 Close client connection</h3>
5973
5974 <p>The client can close its network connection to LinuxSampler by sending the following command:
5975 </p>
5976 <p>
5977 </p>
5978 <blockquote class="text">
5979 <p>QUIT
5980 </p>
5981 </blockquote><p>
5982
5983 </p>
5984 <p>This is probably more interesting for manual telnet connections to
5985 LinuxSampler than really useful for a front-end implementation.
5986 </p>
5987 <a name="anchor13"></a><br /><hr />
5988 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5989 <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
5990 Global commands</h3>
5991
5992 <p>The following commands have global impact on the sampler.
5993 </p>
5994 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
5995 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5996 <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
5997 Current number of active voices</h3>
5998
5999 <p>The front-end can ask for the current number of active voices on
6000 the sampler by sending the following command:
6001 </p>
6002 <p>
6003 </p>
6004 <blockquote class="text">
6005 <p>GET TOTAL_VOICE_COUNT
6006 </p>
6007 </blockquote><p>
6008
6009 </p>
6010 <p>Possible Answers:
6011 </p>
6012 <p>
6013 </p>
6014 <blockquote class="text">
6015 <p>LinuxSampler will answer by returning the number of all active
6016 voices on the sampler.
6017 </p>
6018 </blockquote><p>
6019
6020 </p>
6021 <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6022 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6023 <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6024 Maximum amount of active voices</h3>
6025
6026 <p>The front-end can ask for the maximum number of active voices
6027 by sending the following command:
6028 </p>
6029 <p>
6030 </p>
6031 <blockquote class="text">
6032 <p>GET TOTAL_VOICE_COUNT_MAX
6033 </p>
6034 </blockquote><p>
6035
6036 </p>
6037 <p>Possible Answers:
6038 </p>
6039 <p>
6040 </p>
6041 <blockquote class="text">
6042 <p>LinuxSampler will answer by returning the maximum number
6043 of active voices.
6044 </p>
6045 </blockquote><p>
6046
6047 </p>
6048 <a name="RESET"></a><br /><hr />
6049 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6050 <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6051 Reset sampler</h3>
6052
6053 <p>The front-end can reset the whole sampler by sending the following command:
6054 </p>
6055 <p>
6056 </p>
6057 <blockquote class="text">
6058 <p>RESET
6059 </p>
6060 </blockquote><p>
6061
6062 </p>
6063 <p>Possible Answers:
6064 </p>
6065 <p>
6066 </p>
6067 <blockquote class="text">
6068 <p>"OK" -
6069 </p>
6070 <blockquote class="text">
6071 <p>always
6072 </p>
6073 </blockquote>
6074
6075
6076 </blockquote><p>
6077
6078 </p>
6079 <p>Examples:
6080 </p>
6081 <p>
6082 </p>
6083 <blockquote class="text">
6084 <p>
6085 </p>
6086 </blockquote><p>
6087
6088 </p>
6089 <a name="GET SERVER INFO"></a><br /><hr />
6090 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6091 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6092 General sampler informations</h3>
6093
6094 <p>The client can ask for general informations about the LinuxSampler
6095 instance by sending the following command:
6096 </p>
6097 <p>
6098 </p>
6099 <blockquote class="text">
6100 <p>GET SERVER INFO
6101 </p>
6102 </blockquote><p>
6103
6104 </p>
6105 <p>Possible Answers:
6106 </p>
6107 <p>
6108 </p>
6109 <blockquote class="text">
6110 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6111 Each answer line begins with the information category name
6112 followed by a colon and then a space character &lt;SP&gt; and finally
6113 the info character string to that information category. At the
6114 moment the following categories are defined:
6115
6116 </p>
6117 <p>
6118 </p>
6119 <blockquote class="text">
6120 <p>DESCRIPTION -
6121 </p>
6122 <blockquote class="text">
6123 <p>arbitrary textual description about the sampler
6124 (note that the character string may contain
6125 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6126 </p>
6127 </blockquote>
6128
6129
6130 <p>VERSION -
6131 </p>
6132 <blockquote class="text">
6133 <p>version of the sampler
6134 </p>
6135 </blockquote>
6136
6137
6138 <p>PROTOCOL_VERSION -
6139 </p>
6140 <blockquote class="text">
6141 <p>version of the LSCP specification the sampler
6142 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)
6143 </p>
6144 </blockquote>
6145
6146
6147 <p>INSTRUMENTS_DB_SUPPORT -
6148 </p>
6149 <blockquote class="text">
6150 <p>either yes or no, specifies whether the
6151 sampler is build with instruments database support.
6152 </p>
6153 </blockquote>
6154
6155
6156 </blockquote>
6157
6158
6159 </blockquote><p>
6160
6161 </p>
6162 <p>The mentioned fields above don't have to be in particular order.
6163 Other fields might be added in future.
6164 </p>
6165 <a name="GET VOLUME"></a><br /><hr />
6166 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6167 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6168 Getting global volume attenuation</h3>
6169
6170 <p>The client can ask for the current global sampler-wide volume
6171 attenuation by sending the following command:
6172 </p>
6173 <p>
6174 </p>
6175 <blockquote class="text">
6176 <p>GET VOLUME
6177 </p>
6178 </blockquote><p>
6179
6180 </p>
6181 <p>Possible Answers:
6182 </p>
6183 <p>
6184 </p>
6185 <blockquote class="text">
6186 <p>The sampler will always answer by returning the optional
6187 dotted floating point coefficient, reflecting the current
6188 global volume attenuation.
6189
6190 </p>
6191 </blockquote><p>
6192
6193 </p>
6194 <p>Note: it is up to the respective sampler engine whether to obey
6195 that global volume parameter or not, but in general all engines SHOULD
6196 use this parameter.
6197 </p>
6198 <a name="SET VOLUME"></a><br /><hr />
6199 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6200 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6201 Setting global volume attenuation</h3>
6202
6203 <p>The client can alter the current global sampler-wide volume
6204 attenuation by sending the following command:
6205 </p>
6206 <p>
6207 </p>
6208 <blockquote class="text">
6209 <p>SET VOLUME &lt;volume&gt;
6210 </p>
6211 </blockquote><p>
6212
6213 </p>
6214 <p>Where &lt;volume&gt; should be replaced by the optional dotted
6215 floating point value, reflecting the new global volume parameter.
6216 This value might usually be in the range between 0.0 and 1.0, that
6217 is for attenuating the overall volume.
6218 </p>
6219 <p>Possible Answers:
6220 </p>
6221 <p>
6222 </p>
6223 <blockquote class="text">
6224 <p>"OK" -
6225 </p>
6226 <blockquote class="text">
6227 <p>on success
6228 </p>
6229 </blockquote>
6230
6231
6232 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6233 </p>
6234 <blockquote class="text">
6235 <p>if the global volume was set, but there are noteworthy
6236 issue(s) related, providing an appropriate warning code and
6237 warning message
6238 </p>
6239 </blockquote>
6240
6241
6242 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6243 </p>
6244 <blockquote class="text">
6245 <p>in case it failed, providing an appropriate error code and error message
6246 </p>
6247 </blockquote>
6248
6249
6250 </blockquote><p>
6251
6252 </p>
6253 <a name="MIDI Instrument Mapping"></a><br /><hr />
6254 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6255 <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6256 MIDI Instrument Mapping</h3>
6257
6258 <p>The MIDI protocol provides a way to switch between instruments
6259 by sending so called MIDI bank select and MIDI program change
6260 messages which are essentially just numbers. The following commands
6261 allow to actually map arbitrary MIDI bank select / program change
6262 numbers with real instruments.
6263 </p>
6264 <p>The sampler allows to manage an arbitrary amount of MIDI
6265 instrument maps which define which instrument to load on
6266 which MIDI program change message.
6267 </p>
6268 <p>By default, that is when the sampler is launched, there is no
6269 map, thus the sampler will simply ignore all program change
6270 messages. The front-end has to explicitly create at least one
6271 map, add entries to the map and tell the respective sampler
6272 channel(s) which MIDI instrument map to use, so the sampler
6273 knows how to react on a given program change message on the
6274 respective sampler channel, that is by switching to the
6275 respectively defined engine type and loading the respective
6276 instrument. See command
6277 <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>
6278 for how to assign a MIDI instrument map to a sampler channel.
6279 </p>
6280 <p>Also note per MIDI specification a bank select message does not
6281 cause to switch to another instrument. Instead when receiving a
6282 bank select message the bank value will be stored and a subsequent
6283 program change message (which may occur at any time) will finally
6284 cause the sampler to switch to the respective instrument as
6285 reflected by the current MIDI instrument map.
6286 </p>
6287 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6288 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6289 <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6290 Create a new MIDI instrument map</h3>
6291
6292 <p>The front-end can add a new MIDI instrument map by sending
6293 the following command:
6294 </p>
6295 <p>
6296 </p>
6297 <blockquote class="text">
6298 <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6299 </p>
6300 </blockquote><p>
6301
6302 </p>
6303 <p>Where &lt;name&gt; is an optional argument allowing to
6304 assign a custom name to the new map. MIDI instrument Map
6305 names do not have to be unique, but MUST be encapsulated
6306 into apostrophes and support escape sequences as described
6307 in chapter "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
6308
6309 </p>
6310 <p>Possible Answers:
6311 </p>
6312 <p>
6313 </p>
6314 <blockquote class="text">
6315 <p>"OK[&lt;map&gt;]" -
6316 </p>
6317 <blockquote class="text">
6318 <p>in case a new MIDI instrument map could
6319 be added, where &lt;map&gt; reflects the
6320 unique ID of the newly created MIDI
6321 instrument map
6322 </p>
6323 </blockquote>
6324
6325
6326 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6327 </p>
6328 <blockquote class="text">
6329 <p>when a new map could not be created, which
6330 might never occur in practice
6331 </p>
6332 </blockquote>
6333
6334
6335 </blockquote><p>
6336
6337 </p>
6338 <p>Examples:
6339 </p>
6340 <p>
6341 </p>
6342 <blockquote class="text">
6343 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6344 </p>
6345 <p>S: "OK[0]"
6346 </p>
6347 </blockquote><p>
6348
6349 </p>
6350 <p>
6351 </p>
6352 <blockquote class="text">
6353 <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6354 </p>
6355 <p>S: "OK[1]"
6356 </p>
6357 </blockquote><p>
6358
6359 </p>
6360 <p>
6361 </p>
6362 <blockquote class="text">
6363 <p>C: "ADD MIDI_INSTRUMENT_MAP"
6364 </p>
6365 <p>S: "OK[5]"
6366 </p>
6367 </blockquote><p>
6368
6369 </p>
6370 <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6371 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6372 <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6373 Delete one particular or all MIDI instrument maps</h3>
6374
6375 <p>The front-end can delete a particular MIDI instrument map
6376 by sending the following command:
6377 </p>
6378 <p>
6379 </p>
6380 <blockquote class="text">
6381 <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6382 </p>
6383 </blockquote><p>
6384
6385 </p>
6386 <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6387 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>
6388 command.
6389 </p>
6390 <p>The front-end can delete all MIDI instrument maps by
6391 sending the following command:
6392 </p>
6393 <p>
6394 </p>
6395 <blockquote class="text">
6396 <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6397 </p>
6398 </blockquote><p>
6399
6400 </p>
6401 <p>Possible Answers:
6402 </p>
6403 <p>
6404 </p>
6405 <blockquote class="text">
6406 <p>"OK" -
6407 </p>
6408 <blockquote class="text">
6409 <p>in case the map(s) could be deleted
6410 </p>
6411 </blockquote>
6412
6413
6414 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6415 </p>
6416 <blockquote class="text">
6417 <p>when the given map does not exist
6418 </p>
6419 </blockquote>
6420
6421
6422 </blockquote><p>
6423
6424 </p>
6425 <p>Examples:
6426 </p>
6427 <p>
6428 </p>
6429 <blockquote class="text">
6430 <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6431 </p>
6432 <p>S: "OK"
6433 </p>
6434 </blockquote><p>
6435
6436 </p>
6437 <p>
6438 </p>
6439 <blockquote class="text">
6440 <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
6441 </p>
6442 <p>S: "OK"
6443 </p>
6444 </blockquote><p>
6445
6446 </p>
6447 <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6448 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6449 <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
6450 Get amount of existing MIDI instrument maps</h3>
6451
6452 <p>The front-end can retrieve the current amount of MIDI
6453 instrument maps by sending the following command:
6454 </p>
6455 <p>
6456 </p>
6457 <blockquote class="text">
6458 <p>GET MIDI_INSTRUMENT_MAPS
6459 </p>
6460 </blockquote><p>
6461
6462 </p>
6463 <p>Possible Answers:
6464 </p>
6465 <p>
6466 </p>
6467 <blockquote class="text">
6468 <p>The sampler will answer by returning the current
6469 number of MIDI instrument maps.
6470 </p>
6471 </blockquote><p>
6472
6473 </p>
6474 <p>Example:
6475 </p>
6476 <p>
6477 </p>
6478 <blockquote class="text">
6479 <p>C: "GET MIDI_INSTRUMENT_MAPS"
6480 </p>
6481 <p>S: "2"
6482 </p>
6483 </blockquote><p>
6484
6485 </p>
6486 <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6487 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6488 <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
6489 Getting all created MIDI instrument maps</h3>
6490
6491 <p>The number of MIDI instrument maps can change on runtime. To get the
6492 current list of MIDI instrument maps, the front-end can send the
6493 following command:
6494 </p>
6495 <p>
6496 </p>
6497 <blockquote class="text">
6498 <p>LIST MIDI_INSTRUMENT_MAPS
6499 </p>
6500 </blockquote><p>
6501
6502 </p>
6503 <p>Possible Answers:
6504 </p>
6505 <p>
6506 </p>
6507 <blockquote class="text">
6508 <p>The sampler will answer by returning a comma separated list
6509 with all MIDI instrument maps' numerical IDs.
6510 </p>
6511 </blockquote><p>
6512
6513 </p>
6514 <p>Example:
6515 </p>
6516 <p>
6517 </p>
6518 <blockquote class="text">
6519 <p>C: "LIST MIDI_INSTRUMENT_MAPS"
6520 </p>
6521 <p>S: "0,1,5,12"
6522 </p>
6523 </blockquote><p>
6524
6525 </p>
6526 <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
6527 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6528 <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
6529 Getting MIDI instrument map information</h3>
6530
6531 <p>The front-end can ask for the current settings of a MIDI
6532 instrument map by sending the following command:
6533 </p>
6534 <p>
6535 </p>
6536 <blockquote class="text">
6537 <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
6538 </p>
6539 </blockquote><p>
6540
6541 </p>
6542 <p>Where &lt;map&gt; is the numerical ID of the map the
6543 front-end is interested in as returned by the
6544 <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>
6545 command.
6546 </p>
6547 <p>Possible Answers:
6548 </p>
6549 <p>
6550 </p>
6551 <blockquote class="text">
6552 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6553 Each answer line begins with the settings category name
6554 followed by a colon and then a space character &lt;SP&gt; and finally
6555 the info character string to that setting category. At the
6556 moment the following categories are defined:
6557 </p>
6558 <p>
6559 </p>
6560 <blockquote class="text">
6561 <p>NAME -
6562 </p>
6563 <blockquote class="text">
6564 <p>custom name of the given map,
6565 which does not have to be unique
6566 </p>
6567 </blockquote>
6568
6569
6570 <p>DEFAULT -
6571 </p>
6572 <blockquote class="text">
6573 <p>either true or false,
6574 defines whether this map is the default map
6575 </p>
6576 </blockquote>
6577
6578
6579 </blockquote>
6580
6581
6582 </blockquote><p>
6583
6584 </p>
6585 <p>The mentioned fields above don't have to be in particular order.
6586 </p>
6587 <p>Example:
6588 </p>
6589 <p>
6590 </p>
6591 <blockquote class="text">
6592 <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
6593 </p>
6594 <p>S: "NAME: Standard Map"
6595 </p>
6596 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
6597 </p>
6598 <p>&nbsp;&nbsp;&nbsp;"."
6599 </p>
6600 </blockquote><p>
6601
6602 </p>
6603 <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
6604 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6605 <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
6606 Renaming a MIDI instrument map</h3>
6607
6608 <p>The front-end can alter the custom name of a MIDI
6609 instrument map by sending the following command:
6610 </p>
6611 <p>
6612 </p>
6613 <blockquote class="text">
6614 <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
6615 </p>
6616 </blockquote><p>
6617
6618 </p>
6619 <p>Where &lt;map&gt; is the numerical ID of the map and
6620 &lt;name&gt; the new custom name of the map, which does not
6621 have to be unique (name MUST be encapsulated into apostrophes
6622 and supports escape sequences as described in chapter
6623 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
6624
6625 </p>
6626 <p>Possible Answers:
6627 </p>
6628 <p>
6629 </p>
6630 <blockquote class="text">
6631 <p>"OK" -
6632 </p>
6633 <blockquote class="text">
6634 <p>on success
6635 </p>
6636 </blockquote>
6637
6638
6639 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6640 </p>
6641 <blockquote class="text">
6642 <p>in case the given map does not exist
6643 </p>
6644 </blockquote>
6645
6646
6647 </blockquote><p>
6648
6649 </p>
6650 <p>Example:
6651 </p>
6652 <p>
6653 </p>
6654 <blockquote class="text">
6655 <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
6656 </p>
6657 <p>S: "OK"
6658 </p>
6659 </blockquote><p>
6660
6661 </p>
6662 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
6663 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6664 <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
6665 Create or replace a MIDI instrument map entry</h3>
6666
6667 <p>The front-end can create a new or replace an existing entry
6668 in a sampler's MIDI instrument map by sending the following
6669 command:
6670 </p>
6671 <p>
6672 </p>
6673 <blockquote class="text">
6674 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
6675 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
6676 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
6677 [&lt;instr_load_mode&gt;] [&lt;name&gt;]
6678 </p>
6679 </blockquote><p>
6680
6681 </p>
6682 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
6683 &lt;midi_bank&gt; is an integer value between
6684 0..16383 reflecting the MIDI bank select index,
6685 &lt;midi_prog&gt; an
6686 integer value between 0..127 reflecting the MIDI program change
6687 index, &lt;engine_name&gt; a sampler engine name as returned by
6688 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
6689 command (not encapsulated into apostrophes), &lt;filename&gt; the name
6690 of the instrument's file to be deployed (encapsulated into apostrophes,
6691 supporting escape sequences as described in chapter
6692 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"),
6693 &lt;instrument_index&gt; the index (integer value) of the instrument
6694 within the given file, &lt;volume_value&gt; reflects the master
6695 volume of the instrument as optionally dotted number (where a
6696 value &lt; 1.0 means attenuation and a value > 1.0 means
6697 amplification). This parameter easily allows to adjust the
6698 volume of all intruments within a custom instrument map
6699 without having to adjust their instrument files. The
6700 OPTIONAL &lt;instr_load_mode&gt; argument defines the life
6701 time of the instrument, that is when the instrument should
6702 be loaded, when freed and has exactly the following
6703 possibilities:
6704 </p>
6705 <p>
6706 </p>
6707 <blockquote class="text">
6708 <p>"ON_DEMAND" -
6709 </p>
6710 <blockquote class="text">
6711 <p>The instrument will be loaded when needed,
6712 that is when demanded by at least one sampler
6713 channel. It will immediately be freed from memory
6714 when not needed by any sampler channel anymore.
6715 </p>
6716 </blockquote>
6717
6718
6719 <p>"ON_DEMAND_HOLD" -
6720 </p>
6721 <blockquote class="text">
6722 <p>The instrument will be loaded when needed,
6723 that is when demanded by at least one sampler
6724 channel. It will be kept in memory even when
6725 not needed by any sampler channel anymore.
6726 Instruments with this mode are only freed
6727 when the sampler is reset or all mapping
6728 entries with this mode (and respective
6729 instrument) are explicitly changed to
6730 "ON_DEMAND" and no sampler channel is using
6731 the instrument anymore.
6732 </p>
6733 </blockquote>
6734
6735
6736 <p>"PERSISTENT" -
6737 </p>
6738 <blockquote class="text">
6739 <p>The instrument will immediately be loaded
6740 into memory when this mapping
6741 command is sent and the instrument is kept all
6742 the time. Instruments with this mode are
6743 only freed when the sampler is reset or all
6744 mapping entries with this mode (and
6745 respective instrument) are explicitly
6746 changed to "ON_DEMAND" and no sampler
6747 channel is using the instrument anymore.
6748 </p>
6749 </blockquote>
6750
6751
6752 <p>not supplied -
6753 </p>
6754 <blockquote class="text">
6755 <p>In case there is no &lt;instr_load_mode&gt;
6756 argument given, it will be up to the
6757 InstrumentManager to decide which mode to use.
6758 Usually it will use "ON_DEMAND" if an entry
6759 for the given instrument does not exist in
6760 the InstrumentManager's list yet, otherwise
6761 if an entry already exists, it will simply
6762 stick with the mode currently reflected by
6763 the already existing entry, that is it will
6764 not change the mode.
6765 </p>
6766 </blockquote>
6767
6768
6769 </blockquote><p>
6770
6771 </p>
6772 <p>
6773 The &lt;instr_load_mode&gt; argument thus allows to define an
6774 appropriate strategy (low memory consumption vs. fast
6775 instrument switching) for each instrument individually. Note, the
6776 following restrictions apply to this argument: "ON_DEMAND_HOLD" and
6777 "PERSISTENT" have to be supported by the respective sampler engine
6778 (which is technically the case when the engine provides an
6779 InstrumentManager for its format). If this is not the case the
6780 argument will automatically fall back to the default value
6781 "ON_DEMAND". Also the load mode of one instrument may
6782 automatically change the laod mode of other instrument(s), i.e.
6783 because the instruments are part of the same file and the
6784 engine does not allow a way to manage load modes for them
6785 individually. Due to this, in case the frontend shows the
6786 load modes of entries, the frontend should retrieve the actual
6787 mode by i.e. sending
6788 <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>
6789 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
6790 (encapsulated into apostrophes, supporting escape sequences as described in chapter
6791 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") for the
6792 mapping entry, useful for frontends for displaying an appropriate name for
6793 mapped instruments (using
6794 <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>).
6795
6796 </p>
6797 <p>
6798 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
6799 completely established in the sampler. The OPTIONAL "NON_MODAL" argument
6800 however causes the respective "MAP MIDI_INSTRUMENT" command to return
6801 immediately, that is to let the sampler establish the mapping in the
6802 background. So this argument might be especially useful for mappings with
6803 a "PERSISTENT" type, because these have to load the respective instruments
6804 immediately and might thus block for a very long time. It is recommended
6805 however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
6806 because it has the following drawbacks: as "NON_MODAL" instructions return
6807 immediately, they may not necessarily return an error i.e. when the given
6808 instrument file turns out to be corrupt, beside that subsequent commands
6809 in a LSCP instruction sequence might fail, because mandatory mappings are
6810 not yet completed.
6811
6812 </p>
6813 <p>Possible Answers:
6814 </p>
6815 <p>
6816 </p>
6817 <blockquote class="text">
6818 <p>"OK" -
6819 </p>
6820 <blockquote class="text">
6821 <p>usually
6822 </p>
6823 </blockquote>
6824
6825
6826 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6827 </p>
6828 <blockquote class="text">
6829 <p>when the given map or engine does not exist or a value
6830 is out of range
6831 </p>
6832 </blockquote>
6833
6834
6835 </blockquote><p>
6836
6837 </p>
6838 <p>Examples:
6839 </p>
6840 <p>
6841 </p>
6842 <blockquote class="text">
6843 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
6844 </p>
6845 <p>S: "OK"
6846 </p>
6847 </blockquote><p>
6848
6849 </p>
6850 <p>
6851 </p>
6852 <blockquote class="text">
6853 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
6854 </p>
6855 <p>S: "OK"
6856 </p>
6857 </blockquote><p>
6858
6859 </p>
6860 <p>
6861 </p>
6862 <blockquote class="text">
6863 <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
6864 </p>
6865 <p>S: "OK"
6866 </p>
6867 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
6868 </p>
6869 <p>S: "OK"
6870 </p>
6871 </blockquote><p>
6872
6873 </p>
6874 <p>
6875 </p>
6876 <blockquote class="text">
6877 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
6878 </p>
6879 <p>S: "OK"
6880 </p>
6881 </blockquote><p>
6882
6883 </p>
6884 <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
6885 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6886 <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
6887 Getting ammount of MIDI instrument map entries</h3>
6888
6889 <p>The front-end can query the amount of currently existing
6890 entries in a MIDI instrument map by sending the following
6891 command:
6892 </p>
6893 <p>
6894 </p>
6895 <blockquote class="text">
6896 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
6897 </p>
6898 </blockquote><p>
6899
6900 </p>
6901 <p>The front-end can query the amount of currently existing
6902 entries in all MIDI instrument maps by sending the following
6903 command:
6904 </p>
6905 <p>
6906 </p>
6907 <blockquote class="text">
6908 <p>GET MIDI_INSTRUMENTS ALL
6909 </p>
6910 </blockquote><p>
6911
6912 </p>
6913 <p>Possible Answers:
6914 </p>
6915 <p>
6916 </p>
6917 <blockquote class="text">
6918 <p>The sampler will answer by sending the current number of
6919 entries in the MIDI instrument map(s).
6920 </p>
6921 </blockquote><p>
6922
6923 </p>
6924 <p>Example:
6925 </p>
6926 <p>
6927 </p>
6928 <blockquote class="text">
6929 <p>C: "GET MIDI_INSTRUMENTS 0"
6930 </p>
6931 <p>S: "234"
6932 </p>
6933 </blockquote><p>
6934
6935 </p>
6936 <p>
6937 </p>
6938 <blockquote class="text">
6939 <p>C: "GET MIDI_INSTRUMENTS ALL"
6940 </p>
6941 <p>S: "954"
6942 </p>
6943 </blockquote><p>
6944
6945 </p>
6946 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
6947 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6948 <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
6949 Getting indeces of all entries of a MIDI instrument map</h3>
6950
6951 <p>The front-end can query a list of all currently existing
6952 entries in a certain MIDI instrument map by sending the following
6953 command:
6954 </p>
6955 <p>
6956 </p>
6957 <blockquote class="text">
6958 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
6959 </p>
6960 </blockquote><p>
6961
6962 </p>
6963 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
6964 </p>
6965 <p>The front-end can query a list of all currently existing
6966 entries of all MIDI instrument maps by sending the following
6967 command:
6968 </p>
6969 <p>
6970 </p>
6971 <blockquote class="text">
6972 <p>LIST MIDI_INSTRUMENTS ALL
6973 </p>
6974 </blockquote><p>
6975
6976 </p>
6977 <p>Possible Answers:
6978 </p>
6979 <p>
6980 </p>
6981 <blockquote class="text">
6982 <p>The sampler will answer by sending a comma separated
6983 list of map ID - MIDI bank - MIDI program triples, where
6984 each triple is encapsulated into curly braces. The
6985 list is returned in one single line. Each triple
6986 just reflects the key of the respective map entry,
6987 thus subsequent
6988 <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>
6989 command(s) are necessary to retrieve detailed informations
6990 about each entry.
6991 </p>
6992 </blockquote><p>
6993
6994 </p>
6995 <p>Example:
6996 </p>
6997 <p>
6998 </p>
6999 <blockquote class="text">
7000 <p>C: "LIST MIDI_INSTRUMENTS 0"
7001 </p>
7002 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7003 </p>
7004 </blockquote><p>
7005
7006 </p>
7007 <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7008 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7009 <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7010 Remove an entry from the MIDI instrument map</h3>
7011
7012 <p>The front-end can delete an entry from a MIDI instrument
7013 map by sending the following command:
7014 </p>
7015 <p>
7016 </p>
7017 <blockquote class="text">
7018 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7019 </p>
7020 </blockquote><p>
7021
7022 </p>
7023 <p>
7024 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7025 &lt;midi_bank&gt; is an integer value between 0..16383
7026 reflecting the MIDI bank value and
7027 &lt;midi_prog&gt; an integer value between
7028 0..127 reflecting the MIDI program value of the map's entrie's key
7029 index triple.
7030
7031 </p>
7032 <p>Possible Answers:
7033 </p>
7034 <p>
7035 </p>
7036 <blockquote class="text">
7037 <p>"OK" -
7038 </p>
7039 <blockquote class="text">
7040 <p>usually
7041 </p>
7042 </blockquote>
7043
7044
7045 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7046 </p>
7047 <blockquote class="text">
7048 <p>when index out of bounds
7049 </p>
7050 </blockquote>
7051
7052
7053 </blockquote><p>
7054
7055 </p>
7056 <p>Example:
7057 </p>
7058 <p>
7059 </p>
7060 <blockquote class="text">
7061 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7062 </p>
7063 <p>S: "OK"
7064 </p>
7065 </blockquote><p>
7066
7067 </p>
7068 <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7069 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7070 <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7071 Get current settings of MIDI instrument map entry</h3>
7072
7073 <p>The front-end can retrieve the current settings of a certain
7074 instrument map entry by sending the following command:
7075 </p>
7076 <p>
7077 </p>
7078 <blockquote class="text">
7079 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7080 </p>
7081 </blockquote><p>
7082
7083 </p>
7084 <p>
7085 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7086 &lt;midi_bank&gt; is an integer value between 0..16383
7087 reflecting the MIDI bank value, &lt;midi_bank&gt;
7088 and &lt;midi_prog&gt; an integer value between
7089 0..127 reflecting the MIDI program value of the map's entrie's key
7090 index triple.
7091
7092 </p>
7093 <p>Possible Answers:
7094 </p>
7095 <p>
7096 </p>
7097 <blockquote class="text">
7098 <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7099 separated list. Each answer line begins with the
7100 information category name followed by a colon and then
7101 a space character &lt;SP&gt; and finally the info
7102 character string to that info category. At the moment
7103 the following categories are defined:
7104 </p>
7105 <p>"NAME" -
7106 </p>
7107 <blockquote class="text">
7108 <p>Name for this MIDI instrument map entry (if defined).
7109 This name shall be used by frontends for displaying a
7110 name for this mapped instrument. It can be set and
7111 changed with the
7112 <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>
7113 command and does not have to be unique.
7114 </p>
7115 </blockquote>
7116
7117
7118 <p>"ENGINE_NAME" -
7119 </p>
7120 <blockquote class="text">
7121 <p>Name of the engine to be deployed for this
7122 instrument.
7123 </p>
7124 </blockquote>
7125
7126
7127 <p>"INSTRUMENT_FILE" -
7128 </p>
7129 <blockquote class="text">
7130 <p>File name of the instrument.
7131 </p>
7132 </blockquote>
7133
7134
7135 <p>"INSTRUMENT_NR" -
7136 </p>
7137 <blockquote class="text">
7138 <p>Index of the instrument within the file.
7139 </p>
7140 </blockquote>
7141
7142
7143 <p>"INSTRUMENT_NAME" -
7144 </p>
7145 <blockquote class="text">
7146 <p>Name of the loaded instrument as reflected by its file.
7147 In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7148 cannot be changed.
7149 </p>
7150 </blockquote>
7151
7152
7153 <p>"LOAD_MODE" -
7154 </p>
7155 <blockquote class="text">
7156 <p>Life time of instrument
7157 (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).
7158 </p>
7159 </blockquote>
7160
7161
7162 <p>"VOLUME" -
7163 </p>
7164 <blockquote class="text">
7165 <p>master volume of the instrument as optionally
7166 dotted number (where a value &lt; 1.0 means attenuation
7167 and a value > 1.0 means amplification)
7168 </p>
7169 </blockquote>
7170
7171
7172 <p>The mentioned fields above don't have to be in particular order.
7173 </p>
7174 </blockquote><p>
7175
7176 </p>
7177 <p>Example:
7178 </p>
7179 <p>
7180 </p>
7181 <blockquote class="text">
7182 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7183 </p>
7184 <p>S: "NAME: Drums for Foo Song"
7185 </p>
7186 <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7187 </p>
7188 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7189 </p>
7190 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7191 </p>
7192 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7193 </p>
7194 <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7195 </p>
7196 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7197 </p>
7198 <p>&nbsp;&nbsp;&nbsp;"."
7199 </p>
7200 </blockquote><p>
7201
7202 </p>
7203 <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7204 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7205 <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7206 Clear MIDI instrument map</h3>
7207
7208 <p>The front-end can clear a whole MIDI instrument map, that
7209 is delete all its entries by sending the following command:
7210 </p>
7211 <p>
7212 </p>
7213 <blockquote class="text">
7214 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7215 </p>
7216 </blockquote><p>
7217
7218 </p>
7219 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7220 </p>
7221 <p>The front-end can clear all MIDI instrument maps, that
7222 is delete all entries of all maps by sending the following
7223 command:
7224 </p>
7225 <p>
7226 </p>
7227 <blockquote class="text">
7228 <p>CLEAR MIDI_INSTRUMENTS ALL
7229 </p>
7230 </blockquote><p>
7231
7232 </p>
7233 <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7234 maps, only their entries, thus the map's settings like
7235 custom name will be preservevd.
7236 </p>
7237 <p>Possible Answers:
7238 </p>
7239 <p>
7240 </p>
7241 <blockquote class="text">
7242 <p>"OK" -
7243 </p>
7244 <blockquote class="text">
7245 <p>always
7246 </p>
7247 </blockquote>
7248
7249
7250 </blockquote><p>
7251
7252 </p>
7253 <p>Examples:
7254 </p>
7255 <p>
7256 </p>
7257 <blockquote class="text">
7258 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7259 </p>
7260 <p>S: "OK"
7261 </p>
7262 </blockquote><p>
7263
7264 </p>
7265 <p>
7266 </p>
7267 <blockquote class="text">
7268 <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7269 </p>
7270 <p>S: "OK"
7271 </p>
7272 </blockquote><p>
7273
7274 </p>
7275 <a name="Managing Instruments Database"></a><br /><hr />
7276 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7277 <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7278 Managing Instruments Database</h3>
7279
7280 <p>The following commands describe how to use and manage
7281 the instruments database.
7282 </p>
7283 <p>Notice:
7284 </p>
7285 <p>
7286 </p>
7287 <blockquote class="text">
7288 <p>All command arguments representing a path or
7289 instrument/directory name support escape sequences as described in chapter
7290 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
7291
7292 </p>
7293 <p>All occurrences of a forward slash in instrument and directory
7294 names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7295
7296 </p>
7297 </blockquote><p>
7298
7299 </p>
7300 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7301 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7302 <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7303 Creating a new instrument directory</h3>
7304
7305 <p>The front-end can add a new instrument directory to the
7306 instruments database by sending the following command:
7307 </p>
7308 <p>
7309 </p>
7310 <blockquote class="text">
7311 <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7312 </p>
7313 </blockquote><p>
7314
7315 </p>
7316 <p>Where &lt;dir&gt; is the absolute path name of the directory
7317 to be created (encapsulated into apostrophes).
7318 </p>
7319 <p>Possible Answers:
7320 </p>
7321 <p>
7322 </p>
7323 <blockquote class="text">
7324 <p>"OK" -
7325 </p>
7326 <blockquote class="text">
7327 <p>on success
7328 </p>
7329 </blockquote>
7330
7331
7332 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7333 </p>
7334 <blockquote class="text">
7335 <p>when the directory could not be created, which
7336 can happen if the directory already exists or the
7337 name contains not allowed symbols
7338 </p>
7339 </blockquote>
7340
7341
7342 </blockquote><p>
7343
7344 </p>
7345 <p>Examples:
7346 </p>
7347 <p>
7348 </p>
7349 <blockquote class="text">
7350 <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7351 </p>
7352 <p>S: "OK"
7353 </p>
7354 </blockquote><p>
7355
7356 </p>
7357 <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7358 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7359 <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7360 Deleting an instrument directory</h3>
7361
7362 <p>The front-end can delete a particular instrument directory
7363 from the instruments database by sending the following command:
7364 </p>
7365 <p>
7366 </p>
7367 <blockquote class="text">
7368 <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7369 </p>
7370 </blockquote><p>
7371
7372 </p>
7373 <p>Where &lt;dir&gt; is the absolute path name of the directory
7374 to delete. The optional FORCE argument can be used to
7375 force the deletion of a non-empty directory and all its content.
7376 </p>
7377 <p>Possible Answers:
7378 </p>
7379 <p>
7380 </p>
7381 <blockquote class="text">
7382 <p>"OK" -
7383 </p>
7384 <blockquote class="text">
7385 <p>if the directory is deleted successfully
7386 </p>
7387 </blockquote>
7388
7389
7390 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7391 </p>
7392 <blockquote class="text">
7393 <p>if the given directory does not exist, or
7394 if trying to delete a non-empty directory,
7395 without using the FORCE argument.
7396 </p>
7397 </blockquote>
7398
7399
7400 </blockquote><p>
7401
7402 </p>
7403 <p>Examples:
7404 </p>
7405 <p>
7406 </p>
7407 <blockquote class="text">
7408 <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7409 </p>
7410 <p>S: "OK"
7411 </p>
7412 </blockquote><p>
7413
7414 </p>
7415 <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7416 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7417 <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7418 Getting amount of instrument directories</h3>
7419
7420 <p>The front-end can retrieve the current amount of
7421 directories in a specific directory by sending the following command:
7422 </p>
7423 <p>
7424 </p>
7425 <blockquote class="text">
7426 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7427 </p>
7428 </blockquote><p>
7429
7430 </p>
7431 <p>Where &lt;dir&gt; should be replaced by the absolute path
7432 name of the directory. If RECURSIVE is specified, the number of
7433 all directories, including those located in subdirectories of the
7434 specified directory, will be returned.
7435 </p>
7436 <p>Possible Answers:
7437 </p>
7438 <p>
7439 </p>
7440 <blockquote class="text">
7441 <p>The current number of instrument directories
7442 in the specified directory.
7443 </p>
7444 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7445 </p>
7446 <blockquote class="text">
7447 <p>if the given directory does not exist.
7448 </p>
7449 </blockquote>
7450
7451
7452 </blockquote><p>
7453
7454 </p>
7455 <p>Example:
7456 </p>
7457 <p>
7458 </p>
7459 <blockquote class="text">
7460 <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
7461 </p>
7462 <p>S: "2"
7463 </p>
7464 </blockquote><p>
7465
7466 </p>
7467 <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7468 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7469 <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
7470 Listing all directories in specific directory</h3>
7471
7472 <p>The front-end can retrieve the current list of directories
7473 in specific directory by sending the following command:
7474 </p>
7475 <p>
7476 </p>
7477 <blockquote class="text">
7478 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7479 </p>
7480 </blockquote><p>
7481
7482 </p>
7483 <p>Where &lt;dir&gt; should be replaced by the absolute path
7484 name of the directory. If RECURSIVE is specified, the absolute path names
7485 of all directories, including those located in subdirectories of the
7486 specified directory, will be returned.
7487 </p>
7488 <p>Possible Answers:
7489 </p>
7490 <p>
7491 </p>
7492 <blockquote class="text">
7493 <p>A comma separated list of all instrument directories
7494 (encapsulated into apostrophes) in the specified directory.
7495 </p>
7496 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7497 </p>
7498 <blockquote class="text">
7499 <p>if the given directory does not exist.
7500 </p>
7501 </blockquote>
7502
7503
7504 </blockquote><p>
7505
7506 </p>
7507 <p>Example:
7508 </p>
7509 <p>
7510 </p>
7511 <blockquote class="text">
7512 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
7513 </p>
7514 <p>S: "'Piano Collection','Percussion Collection'"
7515 </p>
7516 </blockquote><p>
7517
7518 </p>
7519 <p>
7520 </p>
7521 <blockquote class="text">
7522 <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
7523 </p>
7524 <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
7525 </p>
7526 </blockquote><p>
7527
7528 </p>
7529 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
7530 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7531 <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
7532 Getting instrument directory information</h3>
7533
7534 <p>The front-end can ask for the current settings of an
7535 instrument directory by sending the following command:
7536 </p>
7537 <p>
7538 </p>
7539 <blockquote class="text">
7540 <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
7541 </p>
7542 </blockquote><p>
7543
7544 </p>
7545 <p>Where &lt;dir&gt; should be replaced by the absolute path
7546 name of the directory the front-end is interested in.
7547 </p>
7548 <p>Possible Answers:
7549 </p>
7550 <p>
7551 </p>
7552 <blockquote class="text">
7553 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7554 Each answer line begins with the settings category name
7555 followed by a colon and then a space character &lt;SP&gt; and finally
7556 the info character string to that setting category. At the
7557 moment the following categories are defined:
7558 </p>
7559 <p>
7560 </p>
7561 <blockquote class="text">
7562 <p>DESCRIPTION -
7563 </p>
7564 <blockquote class="text">
7565 <p>A brief description of the directory content.
7566 Note that the character string may contain
7567 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
7568 </p>
7569 </blockquote>
7570
7571
7572 <p>CREATED -
7573 </p>
7574 <blockquote class="text">
7575 <p>The creation date and time of the directory,
7576 represented in "YYYY-MM-DD HH:MM:SS" format
7577 </p>
7578 </blockquote>
7579
7580
7581 <p>MODIFIED -
7582 </p>
7583 <blockquote class="text">
7584 <p>The date and time of the last modification of the
7585 directory, represented in "YYYY-MM-DD HH:MM:SS" format
7586 </p>
7587 </blockquote>
7588
7589
7590 </blockquote>
7591
7592
7593 </blockquote><p>
7594
7595 </p>
7596 <p>The mentioned fields above don't have to be in particular order.
7597 </p>
7598 <p>Example:
7599 </p>
7600 <p>
7601 </p>
7602 <blockquote class="text">
7603 <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
7604 </p>
7605 <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
7606 </p>
7607 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
7608 </p>
7609 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
7610 </p>
7611 <p>&nbsp;&nbsp;&nbsp;"."
7612 </p>
7613 </blockquote><p>
7614
7615 </p>
7616 <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
7617 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7618 <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
7619 Renaming an instrument directory</h3>
7620
7621 <p>The front-end can alter the name of a specific
7622 instrument directory by sending the following command:
7623 </p>
7624 <p>
7625 </p>
7626 <blockquote class="text">
7627 <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
7628 </p>
7629 </blockquote><p>
7630
7631 </p>
7632 <p>Where &lt;dir&gt; is the absolute path name of the directory and
7633 &lt;name&gt; is the new name for that directory.
7634 </p>
7635 <p>Possible Answers:
7636 </p>
7637 <p>
7638 </p>
7639 <blockquote class="text">
7640 <p>"OK" -
7641 </p>
7642 <blockquote class="text">
7643 <p>on success
7644 </p>
7645 </blockquote>
7646
7647
7648 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7649 </p>
7650 <blockquote class="text">
7651 <p>in case the given directory does not exists,
7652 or if a directory with name equal to the new
7653 name already exists.
7654 </p>
7655 </blockquote>
7656
7657
7658 </blockquote><p>
7659
7660 </p>
7661 <p>Example:
7662 </p>
7663 <p>
7664 </p>
7665 <blockquote class="text">
7666 <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
7667 </p>
7668 <p>S: "OK"
7669 </p>
7670 </blockquote><p>
7671
7672 </p>
7673 <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7674 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7675 <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
7676 Moving an instrument directory</h3>
7677
7678 <p>The front-end can move a specific
7679 instrument directory by sending the following command:
7680 </p>
7681 <p>
7682 </p>
7683 <blockquote class="text">
7684 <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7685 </p>
7686 </blockquote><p>
7687
7688 </p>
7689 <p>Where &lt;dir&gt; is the absolute path name of the directory
7690 to move and &lt;dst&gt; is the location where the directory will
7691 be moved to.
7692 </p>
7693 <p>Possible Answers:
7694 </p>
7695 <p>
7696 </p>
7697 <blockquote class="text">
7698 <p>"OK" -
7699 </p>
7700 <blockquote class="text">
7701 <p>on success
7702 </p>
7703 </blockquote>
7704
7705
7706 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7707 </p>
7708 <blockquote class="text">
7709 <p>in case a given directory does not exists,
7710 or if a directory with name equal to the name
7711 of the specified directory already exists in
7712 the destination directory. Error is also thrown
7713 when trying to move a directory to a subdirectory
7714 of itself.
7715 </p>
7716 </blockquote>
7717
7718
7719 </blockquote><p>
7720
7721 </p>
7722 <p>Example:
7723 </p>
7724 <p>
7725 </p>
7726 <blockquote class="text">
7727 <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
7728 </p>
7729 <p>S: "OK"
7730 </p>
7731 </blockquote><p>
7732
7733 </p>
7734 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7735 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7736 <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
7737 Copying instrument directories</h3>
7738
7739 <p>The front-end can copy a specific
7740 instrument directory by sending the following command:
7741 </p>
7742 <p>
7743 </p>
7744 <blockquote class="text">
7745 <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7746 </p>
7747 </blockquote><p>
7748
7749 </p>
7750 <p>Where &lt;dir&gt; is the absolute path name of the directory
7751 to copy and &lt;dst&gt; is the location where the directory will
7752 be copied to.
7753 </p>
7754 <p>Possible Answers:
7755 </p>
7756 <p>
7757 </p>
7758 <blockquote class="text">
7759 <p>"OK" -
7760 </p>
7761 <blockquote class="text">
7762 <p>on success
7763 </p>
7764 </blockquote>
7765
7766
7767 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7768 </p>
7769 <blockquote class="text">
7770 <p>in case a given directory does not exists,
7771 or if a directory with name equal to the name
7772 of the specified directory already exists in
7773 the destination directory. Error is also thrown
7774 when trying to copy a directory to a subdirectory
7775 of itself.
7776 </p>
7777 </blockquote>
7778
7779
7780 </blockquote><p>
7781
7782 </p>
7783 <p>Example:
7784 </p>
7785 <p>
7786 </p>
7787 <blockquote class="text">
7788 <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
7789 </p>
7790 <p>S: "OK"
7791 </p>
7792 </blockquote><p>
7793
7794 </p>
7795 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
7796 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7797 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
7798 Changing the description of directory</h3>
7799
7800 <p>The front-end can alter the description of a specific
7801 instrument directory by sending the following command:
7802 </p>
7803 <p>
7804 </p>
7805 <blockquote class="text">
7806 <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
7807 </p>
7808 </blockquote><p>
7809
7810 </p>
7811 <p>Where &lt;dir&gt; is the absolute path name of the directory and
7812 &lt;desc&gt; is the new description for the directory
7813 (encapsulated into apostrophes, supporting escape sequences as described in chapter
7814 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7815 </p>
7816 <p>Possible Answers:
7817 </p>
7818 <p>
7819 </p>
7820 <blockquote class="text">
7821 <p>"OK" -
7822 </p>
7823 <blockquote class="text">
7824 <p>on success
7825 </p>
7826 </blockquote>
7827
7828
7829 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7830 </p>
7831 <blockquote class="text">
7832 <p>in case the given directory does not exists.
7833 </p>
7834 </blockquote>
7835
7836
7837 </blockquote><p>
7838
7839 </p>
7840 <p>Example:
7841 </p>
7842 <p>
7843 </p>
7844 <blockquote class="text">
7845 <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
7846 </p>
7847 <p>S: "OK"
7848 </p>
7849 </blockquote><p>
7850
7851 </p>
7852 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7853 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7854 <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
7855 Finding directories</h3>
7856
7857 <p>The front-end can search for directories
7858 in specific directory by sending the following command:
7859 </p>
7860 <p>
7861 </p>
7862 <blockquote class="text">
7863 <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
7864 </p>
7865 </blockquote><p>
7866
7867 </p>
7868 <p>Where &lt;dir&gt; should be replaced by the absolute path
7869 name of the directory to search in. If NON_RECURSIVE is specified, the
7870 directories located in subdirectories of the specified directory will not
7871 be searched. &lt;criteria-list&gt; is a list of search criterias
7872 in form of "key1=val1 key2=val2 ...". The following criterias are
7873 allowed:
7874 </p>
7875 <p>
7876
7877 <p>NAME='&lt;search-string&gt;'
7878 </p>
7879 <blockquote class="text">
7880 <p>Restricts the search to directories, which names
7881 satisfy the supplied search string (encapsulated into apostrophes,
7882 supporting escape sequences as described in chapter
7883 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7884 </p>
7885 </blockquote><p>
7886
7887 </p>
7888
7889
7890 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7891 </p>
7892 <blockquote class="text">
7893 <p>Restricts the search to directories, which creation
7894 date satisfies the specified period, where &lt;date-after&gt;
7895 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
7896 If &lt;date-after&gt; is omitted the search is restricted to
7897 directories created before &lt;date-before&gt;. If
7898 &lt;date-before&gt; is omitted, the search is restricted
7899 to directories created after &lt;date-after&gt;.
7900 </p>
7901 </blockquote><p>
7902
7903 </p>
7904
7905
7906 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7907 </p>
7908 <blockquote class="text">
7909 <p>Restricts the search to directories, which
7910 date of last modification satisfies the specified period, where
7911 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
7912 format. If &lt;date-after&gt; is omitted the search is restricted to
7913 directories, which are last modified before &lt;date-before&gt;. If
7914 &lt;date-before&gt; is omitted, the search is restricted to directories,
7915 which are last modified after &lt;date-after&gt;.
7916 </p>
7917 </blockquote><p>
7918
7919 </p>
7920
7921
7922 <p>DESCRIPTION='&lt;search-string&gt;'
7923 </p>
7924 <blockquote class="text">
7925 <p>Restricts the search to directories with description
7926 that satisfies the supplied search string
7927 (encapsulated into apostrophes, supporting escape
7928 sequences as described in chapter
7929 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7930 </p>
7931 </blockquote><p>
7932
7933 </p>
7934
7935
7936 <p>Where &lt;search-string&gt; is either a regular expression, or a
7937 word list separated with spaces for OR search and with '+' for AND search.
7938 </p>
7939 <p>Possible Answers:
7940 </p>
7941 <p>
7942 </p>
7943 <blockquote class="text">
7944 <p>A comma separated list with the absolute path names (encapsulated into
7945 apostrophes) of all directories in the specified directory that satisfy
7946 the supplied search criterias.
7947 </p>
7948 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7949 </p>
7950 <blockquote class="text">
7951 <p>if the given directory does not exist.
7952 </p>
7953 </blockquote>
7954
7955
7956 </blockquote><p>
7957
7958 </p>
7959 <p>Example:
7960 </p>
7961 <p>
7962 </p>
7963 <blockquote class="text">
7964 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
7965 </p>
7966 <p>S: "'/Piano Collection'"
7967 </p>
7968 </blockquote><p>
7969
7970 </p>
7971 <p>
7972 </p>
7973 <blockquote class="text">
7974 <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
7975 </p>
7976 <p>S: "'/Piano Collection','/Percussions'"
7977 </p>
7978 </blockquote><p>
7979
7980 </p>
7981 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
7982 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7983 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
7984 Adding instruments to the instruments database</h3>
7985
7986 <p>The front-end can add one or more instruments
7987 to the instruments database by sending the following command:
7988 </p>
7989 <p>
7990 </p>
7991 <blockquote class="text">
7992 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
7993 </p>
7994 </blockquote><p>
7995
7996 </p>
7997 <p>Where &lt;db_dir&gt; is the absolute path name of a directory
7998 (encapsulated into apostrophes) in the instruments database in which
7999 only the new instruments (that are not already in the database) will
8000 be added, &lt;file_path&gt; is the absolute path name of a file or
8001 directory in the file system (encapsulated into apostrophes). In case
8002 an instrument file is supplied, only the instruments in the specified
8003 file will be added to the instruments database. If the optional
8004 &lt;instr_index&gt; (the index of the instrument within the given file)
8005 is supplied too, then only the specified instrument will be added.
8006 In case a directory is supplied, the instruments in that directory
8007 will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8008 when a directory is provided as &lt;file_path&gt; and specifies how the
8009 scanning will be done and has exactly the following possibilities:
8010 </p>
8011 <p>
8012 </p>
8013 <blockquote class="text">
8014 <p>"RECURSIVE" -
8015 </p>
8016 <blockquote class="text">
8017 <p>All instruments will be processed, including those
8018 in the subdirectories, and the respective subdirectory
8019 tree structure will be recreated in the instruments
8020 database
8021 </p>
8022 </blockquote>
8023
8024
8025 <p>"NON_RECURSIVE" -
8026 </p>
8027 <blockquote class="text">
8028 <p>Only the instruments in the specified directory
8029 will be added, the instruments in the subdirectories
8030 will not be processed.
8031 </p>
8032 </blockquote>
8033
8034
8035 <p>"FLAT" -
8036 </p>
8037 <blockquote class="text">
8038 <p>All instruments will be processed, including those
8039 in the subdirectories, but the respective subdirectory
8040 structure will not be recreated in the instruments
8041 database. All instruments will be added directly in
8042 the specified database directory.
8043 </p>
8044 </blockquote>
8045
8046
8047 </blockquote><p>
8048
8049 </p>
8050 <p>The difference between regular and NON_MODAL versions of the command
8051 is that the regular command returns when the scanning is finished
8052 while NON_MODAL version returns immediately and a background process is launched.
8053 The <a class='info' href='#GET DB_INSTRUMENTS_JOB INFO'>GET DB_INSTRUMENTS_JOB INFO<span> (</span><span class='info'>Getting job status information</span><span>)</span></a>
8054 command can be used to monitor the scanning progress.
8055 </p>
8056 <p>Possible Answers:
8057 </p>
8058 <p>
8059 </p>
8060 <blockquote class="text">
8061 <p>"OK" -
8062 </p>
8063 <blockquote class="text">
8064 <p>on success when NON_MODAL is not supplied
8065 </p>
8066 </blockquote>
8067
8068
8069 <p>"OK[&lt;job-id&gt;]" -
8070 </p>
8071 <blockquote class="text">
8072 <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8073 is a numerical ID used to obtain status information about the job progress.
8074 See <a class='info' href='#GET DB_INSTRUMENTS_JOB INFO'>GET DB_INSTRUMENTS_JOB INFO<span> (</span><span class='info'>Getting job status information</span><span>)</span></a>
8075
8076 </p>
8077 </blockquote>
8078
8079
8080 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8081 </p>
8082 <blockquote class="text">
8083 <p>if an invalid path is specified.
8084 </p>
8085 </blockquote>
8086
8087
8088 </blockquote><p>
8089
8090 </p>
8091 <p>Examples:
8092 </p>
8093 <p>
8094 </p>
8095 <blockquote class="text">
8096 <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8097 </p>
8098 <p>S: "OK"
8099 </p>
8100 </blockquote><p>
8101
8102 </p>
8103 <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8104 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8105 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8106 Removing an instrument</h3>
8107
8108 <p>The front-end can remove a particular instrument
8109 from the instruments database by sending the following command:
8110 </p>
8111 <p>
8112 </p>
8113 <blockquote class="text">
8114 <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8115 </p>
8116 </blockquote><p>
8117
8118 </p>
8119 <p>Where &lt;instr_path&gt; is the absolute path name
8120 (in the instruments database) of the instrument to remove.
8121 </p>
8122 <p>Possible Answers:
8123 </p>
8124 <p>
8125 </p>
8126 <blockquote class="text">
8127 <p>"OK" -
8128 </p>
8129 <blockquote class="text">
8130 <p>if the instrument is removed successfully
8131 </p>
8132 </blockquote>
8133
8134
8135 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8136 </p>
8137 <blockquote class="text">
8138 <p>if the given path does not exist or
8139 is a directory.
8140 </p>
8141 </blockquote>
8142
8143
8144 </blockquote><p>
8145
8146 </p>
8147 <p>Examples:
8148 </p>
8149 <p>
8150 </p>
8151 <blockquote class="text">
8152 <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8153 </p>
8154 <p>S: "OK"
8155 </p>
8156 </blockquote><p>
8157
8158 </p>
8159 <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8160 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8161 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8162 Getting amount of instruments</h3>
8163
8164 <p>The front-end can retrieve the current amount of
8165 instruments in a specific directory by sending the following command:
8166 </p>
8167 <p>
8168 </p>
8169 <blockquote class="text">
8170 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8171 </p>
8172 </blockquote><p>
8173
8174 </p>
8175 <p>Where &lt;dir&gt; should be replaced by the absolute path name
8176 of the directory. If RECURSIVE is specified, the number of all
8177 instruments, including those located in subdirectories of the
8178 specified directory, will be returned.
8179 </p>
8180 <p>Possible Answers:
8181 </p>
8182 <p>
8183 </p>
8184 <blockquote class="text">
8185 <p>The current number of instruments
8186 in the specified directory.
8187 </p>
8188 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8189 </p>
8190 <blockquote class="text">
8191 <p>if the given directory does not exist.
8192 </p>
8193 </blockquote>
8194
8195
8196 </blockquote><p>
8197
8198 </p>
8199 <p>Example:
8200 </p>
8201 <p>
8202 </p>
8203 <blockquote class="text">
8204 <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8205 </p>
8206 <p>S: "2"
8207 </p>
8208 </blockquote><p>
8209
8210 </p>
8211 <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8212 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8213 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8214 Listing all instruments in specific directory</h3>
8215
8216 <p>The front-end can retrieve the current list of instruments
8217 in specific directory by sending the following command:
8218 </p>
8219 <p>
8220 </p>
8221 <blockquote class="text">
8222 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8223 </p>
8224 </blockquote><p>
8225
8226 </p>
8227 <p>Where &lt;dir&gt; should be replaced by the absolute path
8228 name of the directory. If RECURSIVE is specified, the absolute path
8229 names of all instruments, including those located in subdirectories
8230 of the specified directory, will be returned.
8231 </p>
8232 <p>Possible Answers:
8233 </p>
8234 <p>
8235 </p>
8236 <blockquote class="text">
8237 <p>A comma separated list of all instruments
8238 (encapsulated into apostrophes) in the specified directory.
8239 </p>
8240 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8241 </p>
8242 <blockquote class="text">
8243 <p>if the given directory does not exist.
8244 </p>
8245 </blockquote>
8246
8247
8248 </blockquote><p>
8249
8250 </p>
8251 <p>Example:
8252 </p>
8253 <p>
8254 </p>
8255 <blockquote class="text">
8256 <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8257 </p>
8258 <p>S: "'Bosendorfer 290','Steinway D'"
8259 </p>
8260 </blockquote><p>
8261
8262 </p>
8263 <p>
8264 </p>
8265 <blockquote class="text">
8266 <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8267 </p>
8268 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8269 </p>
8270 </blockquote><p>
8271
8272 </p>
8273 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8274 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8275 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8276 Getting instrument information</h3>
8277
8278 <p>The front-end can ask for the current settings of an
8279 instrument by sending the following command:
8280 </p>
8281 <p>
8282 </p>
8283 <blockquote class="text">
8284 <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8285 </p>
8286 </blockquote><p>
8287
8288 </p>
8289 <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8290 name of the instrument the front-end is interested in.
8291 </p>
8292 <p>Possible Answers:
8293 </p>
8294 <p>
8295 </p>
8296 <blockquote class="text">
8297 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8298 Each answer line begins with the settings category name
8299 followed by a colon and then a space character &lt;SP&gt; and finally
8300 the info character string to that setting category. At the
8301 moment the following categories are defined:
8302 </p>
8303 <p>
8304 </p>
8305 <blockquote class="text">
8306 <p>INSTRUMENT_FILE -
8307 </p>
8308 <blockquote class="text">
8309 <p>File name of the instrument.
8310 Note that the character string may contain
8311 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8312 </p>
8313 </blockquote>
8314
8315
8316 <p>INSTRUMENT_NR -
8317 </p>
8318 <blockquote class="text">
8319 <p>Index of the instrument within the file.
8320 </p>
8321 </blockquote>
8322
8323
8324 <p>FORMAT_FAMILY -
8325 </p>
8326 <blockquote class="text">
8327 <p>The format family of the instrument.
8328 </p>
8329 </blockquote>
8330
8331
8332 <p>FORMAT_VERSION -
8333 </p>
8334 <blockquote class="text">
8335 <p>The format version of the instrument.
8336 </p>
8337 </blockquote>
8338
8339
8340 <p>SIZE -
8341 </p>
8342 <blockquote class="text">
8343 <p>The size of the instrument in bytes.
8344 </p>
8345 </blockquote>
8346
8347
8348 <p>CREATED -
8349 </p>
8350 <blockquote class="text">
8351 <p>The date and time when the instrument is added
8352 in the instruments database, represented in
8353 "YYYY-MM-DD HH:MM:SS" format
8354 </p>
8355 </blockquote>
8356
8357
8358 <p>MODIFIED -
8359 </p>
8360 <blockquote class="text">
8361 <p>The date and time of the last modification of the
8362 instrument's database settings, represented in
8363 "YYYY-MM-DD HH:MM:SS" format
8364 </p>
8365 </blockquote>
8366
8367
8368 <p>DESCRIPTION -
8369 </p>
8370 <blockquote class="text">
8371 <p>A brief description of the instrument.
8372 Note that the character string may contain
8373 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8374 </p>
8375 </blockquote>
8376
8377
8378 <p>IS_DRUM -
8379 </p>
8380 <blockquote class="text">
8381 <p>either true or false, determines whether the
8382 instrument is a drumkit or a chromatic instrument
8383 </p>
8384 </blockquote>
8385
8386
8387 <p>PRODUCT -
8388 </p>
8389 <blockquote class="text">
8390 <p>The product title of the instrument.
8391 Note that the character string may contain
8392 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8393 </p>
8394 </blockquote>
8395
8396
8397 <p>ARTISTS -
8398 </p>
8399 <blockquote class="text">
8400 <p>Lists the artist names.
8401 Note that the character string may contain
8402 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8403 </p>
8404 </blockquote>
8405
8406
8407 <p>KEYWORDS -
8408 </p>
8409 <blockquote class="text">
8410 <p>Provides a list of keywords that refer to the instrument.
8411 Keywords are separated with semicolon and blank.
8412 Note that the character string may contain
8413 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8414 </p>
8415 </blockquote>
8416
8417
8418 </blockquote>
8419
8420
8421 </blockquote><p>
8422
8423 </p>
8424 <p>The mentioned fields above don't have to be in particular order.
8425 </p>
8426 <p>Example:
8427 </p>
8428 <p>
8429 </p>
8430 <blockquote class="text">
8431 <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
8432 </p>
8433 <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
8434 </p>
8435 <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8436 </p>
8437 <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
8438 </p>
8439 <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
8440 </p>
8441 <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
8442 </p>
8443 <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8444 </p>
8445 <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8446 </p>
8447 <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
8448 </p>
8449 <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
8450 </p>
8451 <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
8452 </p>
8453 <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
8454 </p>
8455 <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
8456 </p>
8457 <p>&nbsp;&nbsp;&nbsp;"."
8458 </p>
8459 </blockquote><p>
8460
8461 </p>
8462 <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
8463 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8464 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
8465 Renaming an instrument</h3>
8466
8467 <p>The front-end can alter the name of a specific
8468 instrument by sending the following command:
8469 </p>
8470 <p>
8471 </p>
8472 <blockquote class="text">
8473 <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
8474 </p>
8475 </blockquote><p>
8476
8477 </p>
8478 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8479 &lt;name&gt; is the new name for that instrument.
8480 </p>
8481 <p>Possible Answers:
8482 </p>
8483 <p>
8484 </p>
8485 <blockquote class="text">
8486 <p>"OK" -
8487 </p>
8488 <blockquote class="text">
8489 <p>on success
8490 </p>
8491 </blockquote>
8492
8493
8494 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8495 </p>
8496 <blockquote class="text">
8497 <p>in case the given instrument does not exists,
8498 or if an instrument with name equal to the new
8499 name already exists.
8500 </p>
8501 </blockquote>
8502
8503
8504 </blockquote><p>
8505
8506 </p>
8507 <p>Example:
8508 </p>
8509 <p>
8510 </p>
8511 <blockquote class="text">
8512 <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
8513 </p>
8514 <p>S: "OK"
8515 </p>
8516 </blockquote><p>
8517
8518 </p>
8519 <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
8520 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8521 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
8522 Moving an instrument</h3>
8523
8524 <p>The front-end can move a specific instrument to another directory by
8525 sending the following command:
8526 </p>
8527 <p>
8528 </p>
8529 <blockquote class="text">
8530 <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8531 </p>
8532 </blockquote><p>
8533
8534 </p>
8535 <p>Where &lt;instr&gt; is the absolute path name of the instrument
8536 to move and &lt;dst&gt; is the directory where the instrument will
8537 be moved to.
8538 </p>
8539 <p>Possible Answers:
8540 </p>
8541 <p>
8542 </p>
8543 <blockquote class="text">
8544 <p>"OK" -
8545 </p>
8546 <blockquote class="text">
8547 <p>on success
8548 </p>
8549 </blockquote>
8550
8551
8552 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8553 </p>
8554 <blockquote class="text">
8555 <p>in case the given instrument does not exists,
8556 or if an instrument with name equal to the name of the
8557 specified instrument already exists in the destination
8558 directory.
8559 </p>
8560 </blockquote>
8561
8562
8563 </blockquote><p>
8564
8565 </p>
8566 <p>Example:
8567 </p>
8568 <p>
8569 </p>
8570 <blockquote class="text">
8571 <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
8572 </p>
8573 <p>S: "OK"
8574 </p>
8575 </blockquote><p>
8576
8577 </p>
8578 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
8579 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8580 <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
8581 Copying instruments</h3>
8582
8583 <p>The front-end can copy a specific instrument to another directory by
8584 sending the following command:
8585 </p>
8586 <p>
8587 </p>
8588 <blockquote class="text">
8589 <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8590 </p>
8591 </blockquote><p>
8592
8593 </p>
8594 <p>Where &lt;instr&gt; is the absolute path name of the instrument
8595 to copy and &lt;dst&gt; is the directory where the instrument will
8596 be copied to.
8597 </p>
8598 <p>Possible Answers:
8599 </p>
8600 <p>
8601 </p>
8602 <blockquote class="text">
8603 <p>"OK" -
8604 </p>
8605 <blockquote class="text">
8606 <p>on success
8607 </p>
8608 </blockquote>
8609
8610
8611 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8612 </p>
8613 <blockquote class="text">
8614 <p>in case the given instrument does not exists,
8615 or if an instrument with name equal to the name of the
8616 specified instrument already exists in the destination
8617 directory.
8618 </p>
8619 </blockquote>
8620
8621
8622 </blockquote><p>
8623
8624 </p>
8625 <p>Example:
8626 </p>
8627 <p>
8628 </p>
8629 <blockquote class="text">
8630 <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
8631 </p>
8632 <p>S: "OK"
8633 </p>
8634 </blockquote><p>
8635
8636 </p>
8637 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
8638 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8639 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
8640 Changing the description of instrument</h3>
8641
8642 <p>The front-end can alter the description of a specific
8643 instrument by sending the following command:
8644 </p>
8645 <p>
8646 </p>
8647 <blockquote class="text">
8648 <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
8649 </p>
8650 </blockquote><p>
8651
8652 </p>
8653 <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8654 &lt;desc&gt; is the new description for the instrument
8655 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8656 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8657 </p>
8658 <p>Possible Answers:
8659 </p>
8660 <p>
8661 </p>
8662 <blockquote class="text">
8663 <p>"OK" -
8664 </p>
8665 <blockquote class="text">
8666 <p>on success
8667 </p>
8668 </blockquote>
8669
8670
8671 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8672 </p>
8673 <blockquote class="text">
8674 <p>in case the given instrument does not exists.
8675 </p>
8676 </blockquote>
8677
8678
8679 </blockquote><p>
8680
8681 </p>
8682 <p>Example:
8683 </p>
8684 <p>
8685 </p>
8686 <blockquote class="text">
8687 <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
8688 </p>
8689 <p>S: "OK"
8690 </p>
8691 </blockquote><p>
8692
8693 </p>
8694 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
8695 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8696 <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
8697 Finding instruments</h3>
8698
8699 <p>The front-end can search for instruments
8700 in specific directory by sending the following command:
8701 </p>
8702 <p>
8703 </p>
8704 <blockquote class="text">
8705 <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8706 </p>
8707 </blockquote><p>
8708
8709 </p>
8710 <p>Where &lt;dir&gt; should be replaced by the absolute path
8711 name of the directory to search in. If NON_RECURSIVE is specified, the
8712 directories located in subdirectories of the specified directory will not
8713 be searched. &lt;criteria-list&gt; is a list of search criterias
8714 in form of "key1=val1 key2=val2 ...". The following criterias are
8715 allowed:
8716 </p>
8717 <p>
8718
8719 <p>NAME='&lt;search-string&gt;'
8720 </p>
8721 <blockquote class="text">
8722 <p>Restricts the search to instruments, which names
8723 satisfy the supplied search string (encapsulated into apostrophes,
8724 supporting escape sequences as described in chapter
8725 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8726 </p>
8727 </blockquote><p>
8728
8729 </p>
8730
8731
8732 <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
8733 </p>
8734 <blockquote class="text">
8735 <p>Restricts the search to instruments, which
8736 size is in the specified range. If &lt;min&gt; is omitted,
8737 the search results are restricted to instruments with size less then
8738 or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
8739 search is restricted to instruments with size greater then
8740 or equal to &lt;min&gt;.
8741 </p>
8742 </blockquote><p>
8743
8744 </p>
8745
8746
8747 <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8748 </p>
8749 <blockquote class="text">
8750 <p>Restricts the search to instruments, which creation
8751 date satisfies the specified period, where &lt;date-after&gt;
8752 and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8753 If &lt;date-after&gt; is omitted the search is restricted to
8754 instruments created before &lt;date-before&gt;. If
8755 &lt;date-before&gt; is omitted, the search is restricted
8756 to instruments created after &lt;date-after&gt;.
8757 </p>
8758 </blockquote><p>
8759
8760 </p>
8761
8762
8763 <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8764 </p>
8765 <blockquote class="text">
8766 <p>Restricts the search to instruments, which
8767 date of last modification satisfies the specified period, where
8768 &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8769 format. If &lt;date-after&gt; is omitted the search is restricted to
8770 instruments, which are last modified before &lt;date-before&gt;. If
8771 &lt;date-before&gt; is omitted, the search is restricted to instruments,
8772 which are last modified after &lt;date-after&gt;.
8773 </p>
8774 </blockquote><p>
8775
8776 </p>
8777
8778
8779 <p>DESCRIPTION='&lt;search-string&gt;'
8780 </p>
8781 <blockquote class="text">
8782 <p>Restricts the search to instruments with description
8783 that satisfies the supplied search string (encapsulated into apostrophes,
8784 supporting escape sequences as described in chapter
8785 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8786 </p>
8787 </blockquote><p>
8788
8789 </p>
8790
8791
8792 <p>PRODUCT='&lt;search-string&gt;'
8793 </p>
8794 <blockquote class="text">
8795 <p>Restricts the search to instruments with product info
8796 that satisfies the supplied search string (encapsulated into apostrophes,
8797 supporting escape sequences as described in chapter
8798 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8799 </p>
8800 </blockquote><p>
8801
8802 </p>
8803
8804
8805 <p>ARTISTS='&lt;search-string&gt;'
8806 </p>
8807 <blockquote class="text">
8808 <p>Restricts the search to instruments with artists info
8809 that satisfies the supplied search string (encapsulated into apostrophes,
8810 supporting escape sequences as described in chapter
8811 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8812 </p>
8813 </blockquote><p>
8814
8815 </p>
8816
8817
8818 <p>KEYWORDS='&lt;search-string&gt;'
8819 </p>
8820 <blockquote class="text">
8821 <p>Restricts the search to instruments with keyword list
8822 that satisfies the supplied search string (encapsulated into apostrophes,
8823 supporting escape sequences as described in chapter
8824 "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8825 </p>
8826 </blockquote><p>
8827
8828 </p>
8829
8830
8831 <p>IS_DRUM=true | false
8832 </p>
8833 <blockquote class="text">
8834 <p>Either true or false. Restricts the search to
8835 drum kits or chromatic instruments.
8836 </p>
8837 </blockquote><p>
8838
8839 </p>
8840
8841
8842 <p>FORMAT_FAMILIES='&lt;format-list&gt;'
8843 </p>
8844 <blockquote class="text">
8845 <p>Restricts the search to instruments of the supplied format families,
8846 where &lt;format-list&gt; is a comma separated list of format families.
8847 </p>
8848 </blockquote><p>
8849
8850 </p>
8851
8852
8853 <p>Where &lt;search-string&gt; is either a regular expression, or a
8854 word list separated with spaces for OR search and with '+' for AND search.
8855 </p>
8856 <p>Possible Answers:
8857 </p>
8858 <p>
8859 </p>
8860 <blockquote class="text">
8861 <p>A comma separated list with the absolute path names (encapsulated into
8862 apostrophes) of all instruments in the specified directory that satisfy
8863 the supplied search criterias.
8864 </p>
8865 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8866 </p>
8867 <blockquote class="text">
8868 <p>if the given directory does not exist.
8869 </p>
8870 </blockquote>
8871
8872
8873 </blockquote><p>
8874
8875 </p>
8876 <p>Example:
8877 </p>
8878 <p>
8879 </p>
8880 <blockquote class="text">
8881 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
8882 </p>
8883 <p>S: "'/Piano Collection/Bosendorfer 290'"
8884 </p>
8885 </blockquote><p>
8886
8887 </p>
8888 <p>
8889 </p>
8890 <blockquote class="text">
8891 <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
8892 </p>
8893 <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
8894 </p>
8895 </blockquote><p>
8896
8897 </p>
8898 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
8899 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8900 <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
8901 Getting job status information</h3>
8902
8903 <p>The front-end can ask for the current status of a
8904 particular database instruments job by sending the following command:
8905 </p>
8906 <p>
8907 </p>
8908 <blockquote class="text">
8909 <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
8910 </p>
8911 </blockquote><p>
8912
8913 </p>
8914 <p>Where &lt;job-id&gt; should be replaced by the numerical ID
8915 of the job the front-end is interested in.
8916 </p>
8917 <p>Possible Answers:
8918 </p>
8919 <p>
8920 </p>
8921 <blockquote class="text">
8922 <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8923 Each answer line begins with the settings category name
8924 followed by a colon and then a space character &lt;SP&gt; and finally
8925 the info character string to that setting category. At the
8926 moment the following categories are defined:
8927 </p>
8928 <p>
8929 </p>
8930 <blockquote class="text">
8931 <p>FILES_TOTAL -
8932 </p>
8933 <blockquote class="text">
8934 <p>The total number of files scheduled for scanning
8935 </p>
8936 </blockquote>
8937
8938
8939 <p>FILES_SCANNED -
8940 </p>
8941 <blockquote class="text">
8942 <p>The current number of scanned files
8943 </p>
8944 </blockquote>
8945
8946
8947 <p>SCANNING -
8948 </p>
8949 <blockquote class="text">
8950 <p>The absolute path name of the file which is currently
8951 being scanned
8952 </p>
8953 </blockquote>
8954
8955
8956 <p>STATUS -
8957 </p>
8958 <blockquote class="text">
8959 <p>An integer value between 0 and 100 indicating the
8960 scanning progress percentage of the file which is
8961 currently being scanned
8962 </p>
8963 </blockquote>
8964
8965
8966 </blockquote>
8967
8968
8969 </blockquote><p>
8970
8971 </p>
8972 <p>The mentioned fields above don't have to be in particular order.
8973 </p>
8974 <p>Example:
8975 </p>
8976 <p>
8977 </p>
8978 <blockquote class="text">
8979 <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
8980 </p>
8981 <p>S: "FILES_TOTAL: 12"
8982 </p>
8983 <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
8984 </p>
8985 <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
8986 </p>
8987 <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
8988 </p>
8989 <p>&nbsp;&nbsp;&nbsp;"."
8990 </p>
8991 </blockquote><p>
8992
8993 </p>
8994 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
8995 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8996 <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
8997 Formatting the instruments database</h3>
8998
8999 <p>The front-end can remove all instruments and directories and re-create
9000 the instruments database structure (e.g., in case of a database corruption)
9001 by sending the following command:
9002 </p>
9003 <p>
9004 </p>
9005 <blockquote class="text">
9006 <p>FORMAT INSTRUMENTS_DB
9007 </p>
9008 </blockquote><p>
9009
9010 </p>
9011 <p>Possible Answers:
9012 </p>
9013 <p>
9014 </p>
9015 <blockquote class="text">
9016 <p>"OK" -
9017 </p>
9018 <blockquote class="text">
9019 <p>on success
9020 </p>
9021 </blockquote>
9022
9023
9024 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9025 </p>
9026 <blockquote class="text">
9027 <p>If the formatting of the instruments database
9028 failed.
9029 </p>
9030 </blockquote>
9031
9032
9033 </blockquote><p>
9034
9035 </p>
9036 <a name="editing_instruments"></a><br /><hr />
9037 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9038 <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9039 Editing Instruments</h3>
9040
9041 <p>The sampler allows to edit instruments while playing with the
9042 sampler by spawning an external (3rd party) instrument editor
9043 application for a given instrument. The 3rd party instrument
9044 editor applications have to place a respective plugin DLL file
9045 into the sampler's plugins directory. The sampler will
9046 automatically try to load all plugin DLLs in that directory on
9047 startup and only on startup!
9048 </p>
9049 <p>At the moment there is only one command for this feature set,
9050 but this will most probably change in future.
9051 </p>
9052 <a name="EDIT INSTRUMENT"></a><br /><hr />
9053 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9054 <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9055 Opening an appropriate instrument editor application</h3>
9056
9057 <p>The front-end can request to open an appropriate instrument
9058 editor application by sending the following command:
9059 </p>
9060 <p>
9061 </p>
9062 <blockquote class="text">
9063 <p>EDIT INSTRUMENT &lt;sampler-channel&gt;
9064 </p>
9065 </blockquote><p>
9066
9067 </p>
9068 <p>Where &lt;sampler-channel&gt; should be replaced by the
9069 number of the sampler channel as given by the
9070 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9071 or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9072 command.
9073 </p>
9074 <p>The sampler will try to ask all registered instrument
9075 editors (or to be more specific: their sampler plugins)
9076 whether they are capable to handle the instrument on the
9077 given sampler channel. The sampler will simply use the first
9078 instrument editor application which replied with a positive
9079 answer and spawn that instrument editor application within
9080 the sampler's process and provide that application access
9081 to the instrument's data structures, so both applications
9082 can share and access the same instruments data at the same
9083 time, thus allowing to immediately hear changes with the
9084 sampler made by the instrument editor.
9085 </p>
9086 <p>Note: consequently instrument editors are always spawned
9087 locally on the same machine where the sampler is running
9088 on!
9089 </p>
9090 <p>Possible Answers:
9091 </p>
9092 <p>
9093 </p>
9094 <blockquote class="text">
9095 <p>"OK" -
9096 </p>
9097 <blockquote class="text">
9098 <p>when an appropriate instrument editor was
9099 launched
9100 </p>
9101 </blockquote>
9102
9103
9104 <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9105 </p>
9106 <blockquote class="text">
9107 <p>when an appropriate instrument editor was
9108 launched, but there are noteworthy issues
9109 </p>
9110 </blockquote>
9111
9112
9113 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9114 </p>
9115 <blockquote class="text">
9116 <p>when an appropriate instrument editor
9117 could not be launched
9118 </p>
9119 </blockquote>
9120
9121
9122 </blockquote><p>
9123
9124 </p>
9125 <p>Examples:
9126 </p>
9127 <p>
9128 </p>
9129 <blockquote class="text">
9130 <p>C: "EDIT INSTRUMENT 0"
9131 </p>
9132 <p>S: "OK"
9133 </p>
9134 </blockquote><p>
9135
9136 </p>
9137 <a name="command_syntax"></a><br /><hr />
9138 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9139 <a name="rfc.section.7"></a><h3>7.&nbsp;
9140 Command Syntax</h3>
9141
9142 <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>
9143 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>)
9144 where applicable.
9145
9146 </p>
9147 <p>input =
9148 </p>
9149 <blockquote class="text">
9150 <p>line LF
9151
9152 </p>
9153 <p>/ line CR LF
9154
9155 </p>
9156 </blockquote><p>
9157
9158 </p>
9159 <p>line =
9160 </p>
9161 <blockquote class="text">
9162 <p>/* epsilon (empty line ignored) */
9163
9164 </p>
9165 <p>/ comment
9166
9167 </p>
9168 <p>/ command
9169
9170 </p>
9171 <p>/ error
9172
9173 </p>
9174 </blockquote><p>
9175
9176 </p>
9177 <p>comment =
9178 </p>
9179 <blockquote class="text">
9180 <p>'#'
9181
9182 </p>
9183 <p>/ comment '#'
9184
9185 </p>
9186 <p>/ comment SP
9187
9188 </p>
9189 <p>/ comment number
9190
9191 </p>
9192 <p>/ comment string
9193
9194 </p>
9195 </blockquote><p>
9196
9197 </p>
9198 <p>command =
9199 </p>
9200 <blockquote class="text">
9201 <p>ADD SP add_instruction
9202
9203 </p>
9204 <p>/ MAP SP map_instruction
9205
9206 </p>
9207 <p>/ UNMAP SP unmap_instruction
9208
9209 </p>
9210 <p>/ GET SP get_instruction
9211
9212 </p>
9213 <p>/ CREATE SP create_instruction
9214
9215 </p>
9216 <p>/ DESTROY SP destroy_instruction
9217
9218 </p>
9219 <p>/ LIST SP list_instruction
9220
9221 </p>
9222 <p>/ LOAD SP load_instruction
9223
9224 </p>
9225 <p>/ REMOVE SP remove_instruction
9226
9227 </p>
9228 <p>/ SET SP set_instruction
9229
9230 </p>
9231 <p>/ SUBSCRIBE SP subscribe_event
9232
9233 </p>
9234 <p>/ UNSUBSCRIBE SP unsubscribe_event
9235
9236 </p>
9237 <p>/ RESET SP reset_instruction
9238
9239 </p>
9240 <p>/ CLEAR SP clear_instruction
9241
9242 </p>
9243 <p>/ FIND SP find_instruction
9244
9245 </p>
9246 <p>/ MOVE SP move_instruction
9247
9248 </p>
9249 <p>/ COPY SP copy_instruction
9250
9251 </p>
9252 <p>/ EDIT SP edit_instruction
9253
9254 </p>
9255 <p>/ FORMAT SP format_instruction
9256
9257 </p>
9258 <p>/ RESET
9259
9260 </p>
9261 <p>/ QUIT
9262
9263 </p>
9264 </blockquote><p>
9265
9266 </p>
9267 <p>add_instruction =
9268 </p>
9269 <blockquote class="text">
9270 <p>CHANNEL
9271
9272 </p>
9273 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9274
9275 </p>
9276 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
9277
9278 </p>
9279 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
9280
9281 </p>
9282 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
9283
9284 </p>
9285 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
9286
9287 </p>
9288 <p>/ DB_INSTRUMENTS SP db_path SP filename
9289
9290 </p>
9291 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
9292
9293 </p>
9294 <p>/ MIDI_INSTRUMENT_MAP
9295
9296 </p>
9297 <p>/ MIDI_INSTRUMENT_MAP SP map_name
9298
9299 </p>
9300 </blockquote><p>
9301
9302 </p>
9303 <p>subscribe_event =
9304 </p>
9305 <blockquote class="text">
9306 <p>AUDIO_OUTPUT_DEVICE_COUNT
9307
9308 </p>
9309 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9310
9311 </p>
9312 <p>/ MIDI_INPUT_DEVICE_COUNT
9313
9314 </p>
9315 <p>/ MIDI_INPUT_DEVICE_INFO
9316
9317 </p>
9318 <p>/ CHANNEL_COUNT
9319
9320 </p>
9321 <p>/ VOICE_COUNT
9322
9323 </p>
9324 <p>/ STREAM_COUNT
9325
9326 </p>
9327 <p>/ BUFFER_FILL
9328
9329 </p>
9330 <p>/ CHANNEL_INFO
9331
9332 </p>
9333 <p>/ FX_SEND_COUNT
9334
9335 </p>
9336 <p>/ FX_SEND_INFO
9337
9338 </p>
9339 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9340
9341 </p>
9342 <p>/ MIDI_INSTRUMENT_MAP_INFO
9343
9344 </p>
9345 <p>/ MIDI_INSTRUMENT_COUNT
9346
9347 </p>
9348 <p>/ MIDI_INSTRUMENT_INFO
9349
9350 </p>
9351 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9352
9353 </p>
9354 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9355
9356 </p>
9357 <p>/ DB_INSTRUMENT_COUNT
9358
9359 </p>
9360 <p>/ DB_INSTRUMENT_INFO
9361
9362 </p>
9363 <p>/ DB_INSTRUMENTS_JOB_INFO
9364
9365 </p>
9366 <p>/ MISCELLANEOUS
9367
9368 </p>
9369 <p>/ TOTAL_VOICE_COUNT
9370
9371 </p>
9372 <p>/ GLOBAL_INFO
9373
9374 </p>
9375 </blockquote><p>
9376
9377 </p>
9378 <p>unsubscribe_event =
9379 </p>
9380 <blockquote class="text">
9381 <p>AUDIO_OUTPUT_DEVICE_COUNT
9382
9383 </p>
9384 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9385
9386 </p>
9387 <p>/ MIDI_INPUT_DEVICE_COUNT
9388
9389 </p>
9390 <p>/ MIDI_INPUT_DEVICE_INFO
9391
9392 </p>
9393 <p>/ CHANNEL_COUNT
9394
9395 </p>
9396 <p>/ VOICE_COUNT
9397
9398 </p>
9399 <p>/ STREAM_COUNT
9400
9401 </p>
9402 <p>/ BUFFER_FILL
9403
9404 </p>
9405 <p>/ CHANNEL_INFO
9406
9407 </p>
9408 <p>/ FX_SEND_COUNT
9409
9410 </p>
9411 <p>/ FX_SEND_INFO
9412
9413 </p>
9414 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9415
9416 </p>
9417 <p>/ MIDI_INSTRUMENT_MAP_INFO
9418
9419 </p>
9420 <p>/ MIDI_INSTRUMENT_COUNT
9421
9422 </p>
9423 <p>/ MIDI_INSTRUMENT_INFO
9424
9425 </p>
9426 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9427
9428 </p>
9429 <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9430
9431 </p>
9432 <p>/ DB_INSTRUMENT_COUNT
9433
9434 </p>
9435 <p>/ DB_INSTRUMENT_INFO
9436
9437 </p>
9438 <p>/ DB_INSTRUMENTS_JOB_INFO
9439
9440 </p>
9441 <p>/ MISCELLANEOUS
9442
9443 </p>
9444 <p>/ TOTAL_VOICE_COUNT
9445
9446 </p>
9447 <p>/ GLOBAL_INFO
9448
9449 </p>
9450 </blockquote><p>
9451
9452 </p>
9453 <p>map_instruction =
9454 </p>
9455 <blockquote class="text">
9456 <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
9457
9458 </p>
9459 <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
9460
9461 </p>
9462 <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
9463
9464 </p>
9465 <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
9466
9467 </p>
9468 </blockquote><p>
9469
9470 </p>
9471 <p>unmap_instruction =
9472 </p>
9473 <blockquote class="text">
9474 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
9475
9476 </p>
9477 </blockquote><p>
9478
9479 </p>
9480 <p>remove_instruction =
9481 </p>
9482 <blockquote class="text">
9483 <p>CHANNEL SP sampler_channel
9484
9485 </p>
9486 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
9487
9488 </p>
9489 <p>/ MIDI_INSTRUMENT_MAP SP ALL
9490
9491 </p>
9492 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
9493
9494 </p>
9495 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9496
9497 </p>
9498 <p>/ DB_INSTRUMENT SP db_path
9499
9500 </p>
9501 </blockquote><p>
9502
9503 </p>
9504 <p>get_instruction =
9505 </p>
9506 <blockquote class="text">
9507 <p>AVAILABLE_ENGINES
9508
9509 </p>
9510 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
9511
9512 </p>
9513 <p>/ MIDI_INPUT_DRIVER SP INFO SP string
9514
9515 </p>
9516 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
9517
9518 </p>
9519 <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9520
9521 </p>
9522 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
9523
9524 </p>
9525 <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
9526
9527 </p>
9528 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
9529
9530 </p>
9531 <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9532
9533 </p>
9534 <p>/ AUDIO_OUTPUT_DEVICES
9535
9536 </p>
9537 <p>/ MIDI_INPUT_DEVICES
9538
9539 </p>
9540 <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
9541
9542 </p>
9543 <p>/ MIDI_INPUT_DEVICE SP INFO SP number
9544
9545 </p>
9546 <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
9547
9548 </p>
9549 <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
9550
9551 </p>
9552 <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
9553
9554 </p>
9555 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
9556
9557 </p>
9558 <p>/ CHANNELS
9559
9560 </p>
9561 <p>/ CHANNEL SP INFO SP sampler_channel
9562
9563 </p>
9564 <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
9565
9566 </p>
9567 <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
9568
9569 </p>
9570 <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
9571
9572 </p>
9573 <p>/ ENGINE SP INFO SP engine_name
9574
9575 </p>
9576 <p>/ SERVER SP INFO
9577
9578 </p>
9579 <p>/ TOTAL_VOICE_COUNT
9580
9581 </p>
9582 <p>/ TOTAL_VOICE_COUNT_MAX
9583
9584 </p>
9585 <p>/ MIDI_INSTRUMENTS SP midi_map
9586
9587 </p>
9588 <p>/ MIDI_INSTRUMENTS SP ALL
9589
9590 </p>
9591 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
9592
9593 </p>
9594 <p>/ MIDI_INSTRUMENT_MAPS
9595
9596 </p>
9597 <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
9598
9599 </p>
9600 <p>/ FX_SENDS SP sampler_channel
9601
9602 </p>
9603 <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
9604
9605 </p>
9606 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
9607
9608 </p>
9609 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
9610
9611 </p>
9612 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
9613
9614 </p>
9615 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
9616
9617 </p>
9618 <p>/ DB_INSTRUMENTS SP db_path
9619
9620 </p>
9621 <p>/ DB_INSTRUMENT SP INFO SP db_path
9622
9623 </p>
9624 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
9625
9626 </p>
9627 <p>/ VOLUME
9628
9629 </p>
9630 </blockquote><p>
9631
9632 </p>
9633 <p>set_instruction =
9634 </p>
9635 <blockquote class="text">
9636 <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9637
9638 </p>
9639 <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
9640
9641 </p>
9642 <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9643
9644 </p>
9645 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
9646
9647 </p>
9648 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
9649
9650 </p>
9651 <p>/ CHANNEL SP set_chan_instruction
9652
9653 </p>
9654 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
9655
9656 </p>
9657 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
9658
9659 </p>
9660 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
9661
9662 </p>
9663 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
9664
9665 </p>
9666 <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
9667
9668 </p>
9669 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
9670
9671 </p>
9672 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
9673
9674 </p>
9675 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
9676
9677 </p>
9678 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
9679
9680 </p>
9681 <p>/ ECHO SP boolean
9682
9683 </p>
9684 <p>/ VOLUME SP volume_value
9685
9686 </p>
9687 </blockquote><p>
9688
9689 </p>
9690 <p>create_instruction =
9691 </p>
9692 <blockquote class="text">
9693 <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
9694
9695 </p>
9696 <p>/ AUDIO_OUTPUT_DEVICE SP string
9697
9698 </p>
9699 <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
9700
9701 </p>
9702 <p>/ MIDI_INPUT_DEVICE SP string
9703
9704 </p>
9705 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
9706
9707 </p>
9708 <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
9709
9710 </p>
9711 </blockquote><p>
9712
9713 </p>
9714 <p>reset_instruction =
9715 </p>
9716 <blockquote class="text">
9717 <p>CHANNEL SP sampler_channel
9718
9719 </p>
9720 </blockquote><p>
9721
9722 </p>
9723 <p>clear_instruction =
9724 </p>
9725 <blockquote class="text">
9726 <p>MIDI_INSTRUMENTS SP midi_map
9727
9728 </p>
9729 <p>/ MIDI_INSTRUMENTS SP ALL
9730
9731 </p>
9732 </blockquote><p>
9733
9734 </p>
9735 <p>find_instruction =
9736 </p>
9737 <blockquote class="text">
9738 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
9739
9740 </p>
9741 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
9742
9743 </p>
9744 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
9745
9746 </p>
9747 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
9748
9749 </p>
9750 </blockquote><p>
9751
9752 </p>
9753 <p>move_instruction =
9754 </p>
9755 <blockquote class="text">
9756 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
9757
9758 </p>
9759 <p>/ DB_INSTRUMENT SP db_path SP db_path
9760
9761 </p>
9762 </blockquote><p>
9763
9764 </p>
9765 <p>copy_instruction =
9766 </p>
9767 <blockquote class="text">
9768 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
9769
9770 </p>
9771 <p>/ DB_INSTRUMENT SP db_path SP db_path
9772
9773 </p>
9774 </blockquote><p>
9775
9776 </p>
9777 <p>destroy_instruction =
9778 </p>
9779 <blockquote class="text">
9780 <p>AUDIO_OUTPUT_DEVICE SP number
9781
9782 </p>
9783 <p>/ MIDI_INPUT_DEVICE SP number
9784
9785 </p>
9786 <p>/ FX_SEND SP sampler_channel SP fx_send_id
9787
9788 </p>
9789 </blockquote><p>
9790
9791 </p>
9792 <p>load_instruction =
9793 </p>
9794 <blockquote class="text">
9795 <p>INSTRUMENT SP load_instr_args
9796
9797 </p>
9798 <p>/ ENGINE SP load_engine_args
9799
9800 </p>
9801 </blockquote><p>
9802
9803 </p>
9804 <p>set_chan_instruction =
9805 </p>
9806 <blockquote class="text">
9807 <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
9808
9809 </p>
9810 <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
9811
9812 </p>
9813 <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
9814
9815 </p>
9816 <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
9817
9818 </p>
9819 <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
9820
9821 </p>
9822 <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
9823
9824 </p>
9825 <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
9826
9827 </p>
9828 <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
9829
9830 </p>
9831 <p>/ VOLUME SP sampler_channel SP volume_value
9832
9833 </p>
9834 <p>/ MUTE SP sampler_channel SP boolean
9835
9836 </p>
9837 <p>/ SOLO SP sampler_channel SP boolean
9838
9839 </p>
9840 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
9841
9842 </p>
9843 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
9844
9845 </p>
9846 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
9847
9848 </p>
9849 </blockquote><p>
9850
9851 </p>
9852 <p>edit_instruction =
9853 </p>
9854 <blockquote class="text">
9855 <p>INSTRUMENT SP sampler_channel
9856
9857 </p>
9858 </blockquote><p>
9859
9860 </p>
9861 <p>format_instruction =
9862 </p>
9863 <blockquote class="text">
9864 <p>INSTRUMENTS_DB
9865
9866 </p>
9867 </blockquote><p>
9868
9869 </p>
9870 <p>modal_arg =
9871 </p>
9872 <blockquote class="text">
9873 <p>/* epsilon (empty argument) */
9874
9875 </p>
9876 <p>/ NON_MODAL SP
9877
9878 </p>
9879 </blockquote><p>
9880
9881 </p>
9882 <p>key_val_list =
9883 </p>
9884 <blockquote class="text">
9885 <p>string '=' param_val_list
9886
9887 </p>
9888 <p>/ key_val_list SP string '=' param_val_list
9889
9890 </p>
9891 </blockquote><p>
9892
9893 </p>
9894 <p>buffer_size_type =
9895 </p>
9896 <blockquote class="text">
9897 <p>BYTES
9898
9899 </p>
9900 <p>/ PERCENTAGE
9901
9902 </p>
9903 </blockquote><p>
9904
9905 </p>
9906 <p>list_instruction =
9907 </p>
9908 <blockquote class="text">
9909 <p>AUDIO_OUTPUT_DEVICES
9910
9911 </p>
9912 <p>/ MIDI_INPUT_DEVICES
9913
9914 </p>
9915 <p>/ CHANNELS
9916
9917 </p>
9918 <p>/ AVAILABLE_ENGINES
9919
9920 </p>
9921 <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
9922
9923 </p>
9924 <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
9925
9926 </p>
9927 <p>/ MIDI_INSTRUMENTS SP midi_map
9928
9929 </p>
9930 <p>/ MIDI_INSTRUMENTS SP ALL
9931
9932 </p>
9933 <p>/ MIDI_INSTRUMENT_MAPS
9934
9935 </p>
9936 <p>/ FX_SENDS SP sampler_channel
9937
9938 </p>
9939 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
9940
9941 </p>
9942 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
9943
9944 </p>
9945 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
9946
9947 </p>
9948 <p>/ DB_INSTRUMENTS SP db_path
9949
9950 </p>
9951 </blockquote><p>
9952
9953 </p>
9954 <p>load_instr_args =
9955 </p>
9956 <blockquote class="text">
9957 <p>filename SP instrument_index SP sampler_channel
9958
9959 </p>
9960 <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
9961
9962 </p>
9963 </blockquote><p>
9964
9965 </p>
9966 <p>load_engine_args =
9967 </p>
9968 <blockquote class="text">
9969 <p>engine_name SP sampler_channel
9970
9971 </p>
9972 </blockquote><p>
9973
9974 </p>
9975 <p>instr_load_mode =
9976 </p>
9977 <blockquote class="text">
9978 <p>ON_DEMAND
9979
9980 </p>
9981 <p>/ ON_DEMAND_HOLD
9982
9983 </p>
9984 <p>/ PERSISTENT
9985
9986 </p>
9987 </blockquote><p>
9988
9989 </p>
9990 <p>device_index =
9991 </p>
9992 <blockquote class="text">
9993 <p>number
9994
9995 </p>
9996 </blockquote><p>
9997
9998 </p>
9999 <p>audio_channel_index =
10000 </p>
10001 <blockquote class="text">
10002 <p>number
10003
10004 </p>
10005 </blockquote><p>
10006
10007 </p>
10008 <p>audio_output_type_name =
10009 </p>
10010 <blockquote class="text">
10011 <p>string
10012
10013 </p>
10014 </blockquote><p>
10015
10016 </p>
10017 <p>midi_input_port_index =
10018 </p>
10019 <blockquote class="text">
10020 <p>number
10021
10022 </p>
10023 </blockquote><p>
10024
10025 </p>
10026 <p>midi_input_channel_index =
10027 </p>
10028 <blockquote class="text">
10029 <p>number
10030
10031 </p>
10032 <p>/ ALL
10033
10034 </p>
10035 </blockquote><p>
10036
10037 </p>
10038 <p>midi_input_type_name =
10039 </p>
10040 <blockquote class="text">
10041 <p>string
10042
10043 </p>
10044 </blockquote><p>
10045
10046 </p>
10047 <p>midi_map =
10048 </p>
10049 <blockquote class="text">
10050 <p>number
10051
10052 </p>
10053 </blockquote><p>
10054
10055 </p>
10056 <p>midi_bank =
10057 </p>
10058 <blockquote class="text">
10059 <p>number
10060
10061 </p>
10062 </blockquote><p>
10063
10064 </p>
10065 <p>midi_prog =
10066 </p>
10067 <blockquote class="text">
10068 <p>number
10069
10070 </p>
10071 </blockquote><p>
10072
10073 </p>
10074 <p>midi_ctrl =
10075 </p>
10076 <blockquote class="text">
10077 <p>number
10078
10079 </p>
10080 </blockquote><p>
10081
10082 </p>
10083 <p>volume_value =
10084 </p>
10085 <blockquote class="text">
10086 <p>dotnum
10087
10088 </p>
10089 <p>/ number
10090
10091 </p>
10092 </blockquote><p>
10093
10094 </p>
10095 <p>sampler_channel =
10096 </p>
10097 <blockquote class="text">
10098 <p>number
10099
10100 </p>
10101 </blockquote><p>
10102
10103 </p>
10104 <p>instrument_index =
10105 </p>
10106 <blockquote class="text">
10107 <p>number
10108
10109 </p>
10110 </blockquote><p>
10111
10112 </p>
10113 <p>fx_send_id =
10114 </p>
10115 <blockquote class="text">
10116 <p>number
10117
10118 </p>
10119 </blockquote><p>
10120
10121 </p>
10122 <p>engine_name =
10123 </p>
10124 <blockquote class="text">
10125 <p>string
10126
10127 </p>
10128 </blockquote><p>
10129
10130 </p>
10131 <p>filename =
10132 </p>
10133 <blockquote class="text">
10134 <p>path
10135
10136 </p>
10137 </blockquote><p>
10138
10139 </p>
10140 <p>db_path =
10141 </p>
10142 <blockquote class="text">
10143 <p>path
10144
10145 </p>
10146 </blockquote><p>
10147
10148 </p>
10149 <p>map_name =
10150 </p>
10151 <blockquote class="text">
10152 <p>stringval_escaped
10153
10154 </p>
10155 </blockquote><p>
10156
10157 </p>
10158 <p>entry_name =
10159 </p>
10160 <blockquote class="text">
10161 <p>stringval_escaped
10162
10163 </p>
10164 </blockquote><p>
10165
10166 </p>
10167 <p>fx_send_name =
10168 </p>
10169 <blockquote class="text">
10170 <p>stringval_escaped
10171
10172 </p>
10173 </blockquote><p>
10174
10175 </p>
10176 <p>param_val_list =
10177 </p>
10178 <blockquote class="text">
10179 <p>param_val
10180
10181 </p>
10182 <p>/ param_val_list','param_val
10183
10184 </p>
10185 </blockquote><p>
10186
10187 </p>
10188 <p>param_val =
10189 </p>
10190 <blockquote class="text">
10191 <p>string
10192
10193 </p>
10194 <p>/ stringval
10195
10196 </p>
10197 <p>/ number
10198
10199 </p>
10200 <p>/ dotnum
10201
10202 </p>
10203 </blockquote><p>
10204
10205 </p>
10206 <p>query_val_list =
10207 </p>
10208 <blockquote class="text">
10209 <p>string '=' query_val
10210
10211 </p>
10212 <p>/ query_val_list SP string '=' query_val
10213
10214 </p>
10215 </blockquote><p>
10216
10217 </p>
10218 <p>query_val =
10219 </p>
10220 <blockquote class="text">
10221 <p>text_escaped
10222
10223 </p>
10224 <p>/ stringval_escaped
10225
10226 </p>
10227 </blockquote><p>
10228
10229 </p>
10230 <p>scan_mode =
10231 </p>
10232 <blockquote class="text">
10233 <p>RECURSIVE
10234
10235 </p>
10236 <p>/ NON_RECURSIVE
10237
10238 </p>
10239 <p>/ FLAT
10240
10241 </p>
10242 </blockquote><p>
10243
10244 </p>
10245 <a name="character_set"></a><br /><hr />
10246 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10247 <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
10248 Character Set and Escape Sequences</h3>
10249
10250 <p>Older versions of this protocol up to and including v1.1 only
10251 supported the standard ASCII character set (ASCII code 0 - 127)
10252 <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>, all younger versions of this protocol
10253 however support the Extended ASCII character set (ASCII code
10254 0 - 255). The same group of younger protocols also support
10255 escape sequences, but only for certain, explicitly declared
10256 parts of the protocol. The supported escape sequences are
10257 defined as follows:
10258 </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
10259 <col align="left"><col align="left">
10260 <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
10261 <tr>
10262 <td align="left">\n</td>
10263 <td align="left">new line</td>
10264 </tr>
10265 <tr>
10266 <td align="left">\r</td>
10267 <td align="left">carriage return</td>
10268 </tr>
10269 <tr>
10270 <td align="left">\f</td>
10271 <td align="left">form feed</td>
10272 </tr>
10273 <tr>
10274 <td align="left">\t</td>
10275 <td align="left">horizontal tab</td>
10276 </tr>
10277 <tr>
10278 <td align="left">\v</td>
10279 <td align="left">vertical tab</td>
10280 </tr>
10281 <tr>
10282 <td align="left">\'</td>
10283 <td align="left">apostrophe</td>
10284 </tr>
10285 <tr>
10286 <td align="left">\"</td>
10287 <td align="left">quotation mark</td>
10288 </tr>
10289 <tr>
10290 <td align="left">\\</td>
10291 <td align="left">backslash</td>
10292 </tr>
10293 <tr>
10294 <td align="left">\OOO</td>
10295 <td align="left">three digit octal ASCII code of the character</td>
10296 </tr>
10297 <tr>
10298 <td align="left">\xHH</td>
10299 <td align="left">two digit hex ASCII code of the character</td>
10300 </tr>
10301 </table>
10302
10303 <p>Notice: due to the transition of certain parts of the
10304 protocol which now support escape sequences, a slight backward
10305 incompatibility to protocols version v1.1 and younger has been
10306 introduced. The only difference is that in parts of the protocol
10307 where escape characters are now supported, a backslash characters
10308 MUST be escaped as well (that is as double backslash), whereas
10309 in the old versions a single backslash was sufficient.
10310 </p>
10311 <p>The following LSCP commands support escape sequences as part
10312 of their filename / path based arguments:
10313 </p>
10314 <blockquote class="text">
10315 <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
10316 </p>
10317 <p><a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
10318 </p>
10319 <p><a class='info' href='#ADD DB_INSTRUMENT_DIRECTORY'>"ADD DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Creating a new instrument directory</span><span>)</span></a>
10320 </p>
10321 <p><a class='info' href='#ADD DB_INSTRUMENTS'>"ADD DB_INSTRUMENTS"<span> (</span><span class='info'>Adding instruments to the instruments database</span><span>)</span></a>
10322 </p>
10323 <p><a class='info' href='#REMOVE DB_INSTRUMENT_DIRECTORY'>"REMOVE DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Deleting an instrument directory</span><span>)</span></a>
10324 </p>
10325 <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
10326 </p>
10327 <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORIES'>"GET DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Getting amount of instrument directories</span><span>)</span></a>
10328 </p>
10329 <p><a class='info' href='#LIST DB_INSTRUMENT_DIRECTORIES'>"LIST DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Listing all directories in specific directory</span><span>)</span></a>
10330 </p>
10331 <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORY INFO'>"GET DB_INSTRUMENT_DIRECTORY INFO"<span> (</span><span class='info'>Getting instrument directory information</span><span>)</span></a>
10332 </p>
10333 <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
10334 </p>
10335 <p><a class='info' href='#LIST DB_INSTRUMENTS'>"LIST DB_INSTRUMENTS"<span> (</span><span class='info'>Listing all instruments in specific directory</span><span>)</span></a>
10336 </p>
10337 <p><a class='info' href='#GET DB_INSTRUMENT INFO'>"GET DB_INSTRUMENT INFO"<span> (</span><span class='info'>Getting instrument information</span><span>)</span></a>
10338 </p>
10339 <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY NAME'>"SET DB_INSTRUMENT_DIRECTORY NAME"<span> (</span><span class='info'>Renaming an instrument directory</span><span>)</span></a>
10340 </p>
10341 <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION'>"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"<span> (</span><span class='info'>Changing the description of directory</span><span>)</span></a>
10342 </p>
10343 <p><a class='info' href='#SET DB_INSTRUMENT NAME'>"SET DB_INSTRUMENT NAME"<span> (</span><span class='info'>Renaming an instrument</span><span>)</span></a>
10344 </p>
10345 <p><a class='info' href='#SET DB_INSTRUMENT DESCRIPTION'>"SET DB_INSTRUMENT DESCRIPTION"<span> (</span><span class='info'>Changing the description of instrument</span><span>)</span></a>
10346 </p>
10347 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10348 </p>
10349 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10350 </p>
10351 <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
10352 </p>
10353 <p><a class='info' href='#MOVE DB_INSTRUMENT_DIRECTORY'>"MOVE DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Moving an instrument directory</span><span>)</span></a>
10354 </p>
10355 <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
10356 </p>
10357 <p><a class='info' href='#COPY DB_INSTRUMENT_DIRECTORY'>"COPY DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Copying instrument directories</span><span>)</span></a>
10358 </p>
10359 </blockquote><p>
10360 Note that the forward slash character ('/') has a special meaning in
10361 filename / path based arguments: it acts as separator of the nodes in
10362 the path, thus if a directory- or filename includes a forward slash
10363 (not intended as path node separator), you MUST escape that slash
10364 either with the respective hex escape sequence ("\x2f") or with the
10365 respective octal escape sequence ("\057").
10366
10367 </p>
10368 <p>
10369 The following LSCP commands even support escape sequences as
10370 part of at least one of their text-based arguments (i.e. entity name,
10371 description):
10372 </p>
10373 <blockquote class="text">
10374 <p><a class='info' href='#ADD MIDI_INSTRUMENT_MAP'>"ADD MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Create a new MIDI instrument map</span><span>)</span></a>
10375 </p>
10376 <p><a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
10377 </p>
10378 <p><a class='info' href='#SET MIDI_INSTRUMENT_MAP NAME'>"SET MIDI_INSTRUMENT_MAP NAME"<span> (</span><span class='info'>Renaming a MIDI instrument map</span><span>)</span></a>
10379 </p>
10380 <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY NAME'>"SET DB_INSTRUMENT_DIRECTORY NAME"<span> (</span><span class='info'>Renaming an instrument directory</span><span>)</span></a>
10381 </p>
10382 <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION'>"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"<span> (</span><span class='info'>Changing the description of directory</span><span>)</span></a>
10383 </p>
10384 <p><a class='info' href='#SET DB_INSTRUMENT NAME'>"SET DB_INSTRUMENT NAME"<span> (</span><span class='info'>Renaming an instrument</span><span>)</span></a>
10385 </p>
10386 <p><a class='info' href='#SET DB_INSTRUMENT DESCRIPTION'>"SET DB_INSTRUMENT DESCRIPTION"<span> (</span><span class='info'>Changing the description of instrument</span><span>)</span></a>
10387 </p>
10388 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10389 </p>
10390 </blockquote><p>
10391 Please note that these lists are manually maintained. If you
10392 find a command that also supports escape sequences we forgot to
10393 mention here, please report it!
10394
10395 </p>
10396 <a name="events"></a><br /><hr />
10397 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10398 <a name="rfc.section.8"></a><h3>8.&nbsp;
10399 Events</h3>
10400
10401 <p>This chapter will describe all currently defined events supported by LinuxSampler.
10402 </p>
10403 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
10404 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10405 <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
10406 Number of audio output devices changed</h3>
10407
10408 <p>Client may want to be notified when the total number of audio output devices on the
10409 back-end changes by issuing the following command:
10410 </p>
10411 <p>
10412 </p>
10413 <blockquote class="text">
10414 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
10415 </p>
10416 </blockquote><p>
10417
10418 </p>
10419 <p>Server will start sending the following notification messages:
10420 </p>
10421 <p>
10422 </p>
10423 <blockquote class="text">
10424 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
10425 </p>
10426 </blockquote><p>
10427
10428 </p>
10429 <p>where &lt;devices&gt; will be replaced by the new number
10430 of audio output devices.
10431 </p>
10432 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
10433 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10434 <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
10435 Audio output device's settings changed</h3>
10436
10437 <p>Client may want to be notified when changes were made to audio output devices on the
10438 back-end by issuing the following command:
10439 </p>
10440 <p>
10441 </p>
10442 <blockquote class="text">
10443 <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
10444 </p>
10445 </blockquote><p>
10446
10447 </p>
10448 <p>Server will start sending the following notification messages:
10449 </p>
10450 <p>
10451 </p>
10452 <blockquote class="text">
10453 <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
10454 </p>
10455 </blockquote><p>
10456
10457 </p>
10458 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
10459 which settings has been changed. The front-end will have to send
10460 the respective command to actually get the audio output device info. Because these messages
10461 will be triggered by LSCP commands issued by other clients rather than real
10462 time events happening on the server, it is believed that an empty notification
10463 message is sufficient here.
10464 </p>
10465 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
10466 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10467 <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
10468 Number of MIDI input devices changed</h3>
10469
10470 <p>Client may want to be notified when the total number of MIDI input devices on the
10471 back-end changes by issuing the following command:
10472 </p>
10473 <p>
10474 </p>
10475 <blockquote class="text">
10476 <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
10477 </p>
10478 </blockquote><p>
10479
10480 </p>
10481 <p>Server will start sending the following notification messages:
10482 </p>
10483 <p>
10484 </p>
10485 <blockquote class="text">
10486 <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
10487 </p>
10488 </blockquote><p>
10489
10490 </p>
10491 <p>where &lt;devices&gt; will be replaced by the new number
10492 of MIDI input devices.
10493 </p>
10494 <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
10495 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10496 <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
10497 MIDI input device's settings changed</h3>
10498
10499 <p>Client may want to be notified when changes were made to MIDI input devices on the
10500 back-end by issuing the following command:
10501 </p>
10502 <p>
10503 </p>
10504 <blockquote class="text">
10505 <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
10506 </p>
10507 </blockquote><p>
10508
10509 </p>
10510 <p>Server will start sending the following notification messages:
10511 </p>
10512 <p>
10513 </p>
10514 <blockquote class="text">
10515 <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
10516 </p>
10517 </blockquote><p>
10518
10519 </p>
10520 <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
10521 which settings has been changed. The front-end will have to send
10522 the respective command to actually get the MIDI input device info. Because these messages
10523 will be triggered by LSCP commands issued by other clients rather than real
10524 time events happening on the server, it is believed that an empty notification
10525 message is sufficient here.
10526 </p>
10527 <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
10528 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10529 <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
10530 Number of sampler channels changed</h3>
10531
10532 <p>Client may want to be notified when the total number of channels on the
10533 back-end changes by issuing the following command:
10534 </p>
10535 <p>
10536 </p>
10537 <blockquote class="text">
10538 <p>SUBSCRIBE CHANNEL_COUNT
10539 </p>
10540 </blockquote><p>
10541
10542 </p>
10543 <p>Server will start sending the following notification messages:
10544 </p>
10545 <p>
10546 </p>
10547 <blockquote class="text">
10548 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
10549 </p>
10550 </blockquote><p>
10551
10552 </p>
10553 <p>where &lt;channels&gt; will be replaced by the new number
10554 of sampler channels.
10555 </p>
10556 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
10557 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10558 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
10559 Number of active voices changed</h3>
10560
10561 <p>Client may want to be notified when the number of voices on the
10562 back-end changes by issuing the following command:
10563 </p>
10564 <p>
10565 </p>
10566 <blockquote class="text">
10567 <p>SUBSCRIBE VOICE_COUNT
10568 </p>
10569 </blockquote><p>
10570
10571 </p>
10572 <p>Server will start sending the following notification messages:
10573 </p>
10574 <p>
10575 </p>
10576 <blockquote class="text">
10577 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
10578 </p>
10579 </blockquote><p>
10580
10581 </p>
10582 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10583 voice count change occurred and &lt;voices&gt; by the new number of
10584 active voices on that channel.
10585 </p>
10586 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
10587 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10588 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
10589 Number of active disk streams changed</h3>
10590
10591 <p>Client may want to be notified when the number of streams on the back-end
10592 changes by issuing the following command: SUBSCRIBE STREAM_COUNT
10593 </p>
10594 <p>
10595 </p>
10596 <blockquote class="text">
10597 <p>SUBSCRIBE STREAM_COUNT
10598 </p>
10599 </blockquote><p>
10600
10601 </p>
10602 <p>Server will start sending the following notification messages:
10603 </p>
10604 <p>
10605 </p>
10606 <blockquote class="text">
10607 <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
10608 </p>
10609 </blockquote><p>
10610
10611 </p>
10612 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10613 stream count change occurred and &lt;streams&gt; by the new number of
10614 active disk streams on that channel.
10615 </p>
10616 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
10617 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10618 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
10619 Disk stream buffer fill state changed</h3>
10620
10621 <p>Client may want to be notified when the buffer fill state of a disk stream
10622 on the back-end changes by issuing the following command:
10623 </p>
10624 <p>
10625 </p>
10626 <blockquote class="text">
10627 <p>SUBSCRIBE BUFFER_FILL
10628 </p>
10629 </blockquote><p>
10630
10631 </p>
10632 <p>Server will start sending the following notification messages:
10633 </p>
10634 <p>
10635 </p>
10636 <blockquote class="text">
10637 <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
10638 </p>
10639 </blockquote><p>
10640
10641 </p>
10642 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10643 buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
10644 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>
10645 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.
10646 </p>
10647 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
10648 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10649 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
10650 Channel information changed</h3>
10651
10652 <p>Client may want to be notified when changes were made to sampler channels on the
10653 back-end by issuing the following command:
10654 </p>
10655 <p>
10656 </p>
10657 <blockquote class="text">
10658 <p>SUBSCRIBE CHANNEL_INFO
10659 </p>
10660 </blockquote><p>
10661
10662 </p>
10663 <p>Server will start sending the following notification messages:
10664 </p>
10665 <p>
10666 </p>
10667 <blockquote class="text">
10668 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
10669 </p>
10670 </blockquote><p>
10671
10672 </p>
10673 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10674 channel info change occurred. The front-end will have to send
10675 the respective command to actually get the channel info. Because these messages
10676 will be triggered by LSCP commands issued by other clients rather than real
10677 time events happening on the server, it is believed that an empty notification
10678 message is sufficient here.
10679 </p>
10680 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
10681 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10682 <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
10683 Number of effect sends changed</h3>
10684
10685 <p>Client may want to be notified when the number of effect sends on
10686 a particular sampler channel is changed by issuing the following command:
10687 </p>
10688 <p>
10689 </p>
10690 <blockquote class="text">
10691 <p>SUBSCRIBE FX_SEND_COUNT
10692 </p>
10693 </blockquote><p>
10694
10695 </p>
10696 <p>Server will start sending the following notification messages:
10697 </p>
10698 <p>
10699 </p>
10700 <blockquote class="text">
10701 <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
10702 </p>
10703 </blockquote><p>
10704
10705 </p>
10706 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
10707 channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
10708 be replaced by the new number of effect sends on that channel.
10709 </p>
10710 <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
10711 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10712 <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
10713 Effect send information changed</h3>
10714
10715 <p>Client may want to be notified when changes were made to effect sends on a
10716 a particular sampler channel by issuing the following command:
10717 </p>
10718 <p>
10719 </p>
10720 <blockquote class="text">
10721 <p>SUBSCRIBE FX_SEND_INFO
10722 </p>
10723 </blockquote><p>
10724
10725 </p>
10726 <p>Server will start sending the following notification messages:
10727 </p>
10728 <p>
10729 </p>
10730 <blockquote class="text">
10731 <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
10732 </p>
10733 </blockquote><p>
10734
10735 </p>
10736 <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
10737 channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
10738 be replaced by the numerical ID of the changed effect send.
10739 </p>
10740 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
10741 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10742 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
10743 Total number of active voices changed</h3>
10744
10745 <p>Client may want to be notified when the total number of voices on the
10746 back-end changes by issuing the following command:
10747 </p>
10748 <p>
10749 </p>
10750 <blockquote class="text">
10751 <p>SUBSCRIBE TOTAL_VOICE_COUNT
10752 </p>
10753 </blockquote><p>
10754
10755 </p>
10756 <p>Server will start sending the following notification messages:
10757 </p>
10758 <p>
10759 </p>
10760 <blockquote class="text">
10761 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
10762 </p>
10763 </blockquote><p>
10764
10765 </p>
10766 <p>where &lt;voices&gt; will be replaced by the new number of
10767 all currently active voices.
10768 </p>
10769 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
10770 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10771 <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
10772 Number of MIDI instrument maps changed</h3>
10773
10774 <p>Client may want to be notified when the number of MIDI instrument maps on the
10775 back-end changes by issuing the following command:
10776 </p>
10777 <p>
10778 </p>
10779 <blockquote class="text">
10780 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
10781 </p>
10782 </blockquote><p>
10783
10784 </p>
10785 <p>Server will start sending the following notification messages:
10786 </p>
10787 <p>
10788 </p>
10789 <blockquote class="text">
10790 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
10791 </p>
10792 </blockquote><p>
10793
10794 </p>
10795 <p>where &lt;maps&gt; will be replaced by the new number
10796 of MIDI instrument maps.
10797 </p>
10798 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
10799 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10800 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
10801 MIDI instrument map information changed</h3>
10802
10803 <p>Client may want to be notified when changes were made to MIDI instrument maps on the
10804 back-end by issuing the following command:
10805 </p>
10806 <p>
10807 </p>
10808 <blockquote class="text">
10809 <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
10810 </p>
10811 </blockquote><p>
10812
10813 </p>
10814 <p>Server will start sending the following notification messages:
10815 </p>
10816 <p>
10817 </p>
10818 <blockquote class="text">
10819 <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
10820 </p>
10821 </blockquote><p>
10822
10823 </p>
10824 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
10825 for which information changes occurred. The front-end will have to send
10826 the respective command to actually get the MIDI instrument map info. Because these messages
10827 will be triggered by LSCP commands issued by other clients rather than real
10828 time events happening on the server, it is believed that an empty notification
10829 message is sufficient here.
10830 </p>
10831 <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
10832 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10833 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
10834 Number of MIDI instruments changed</h3>
10835
10836 <p>Client may want to be notified when the number of MIDI instrument maps on the
10837 back-end changes by issuing the following command:
10838 </p>
10839 <p>
10840 </p>
10841 <blockquote class="text">
10842 <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
10843 </p>
10844 </blockquote><p>
10845
10846 </p>
10847 <p>Server will start sending the following notification messages:
10848 </p>
10849 <p>
10850 </p>
10851 <blockquote class="text">
10852 <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
10853 </p>
10854 </blockquote><p>
10855
10856 </p>
10857 <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
10858 the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
10859 the new number of MIDI instruments in the specified map.
10860 </p>
10861 <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
10862 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10863 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
10864 MIDI instrument information changed</h3>
10865
10866 <p>Client may want to be notified when changes were made to MIDI instruments on the
10867 back-end by issuing the following command:
10868 </p>
10869 <p>
10870 </p>
10871 <blockquote class="text">
10872 <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
10873 </p>
10874 </blockquote><p>
10875
10876 </p>
10877 <p>Server will start sending the following notification messages:
10878 </p>
10879 <p>
10880 </p>
10881 <blockquote class="text">
10882 <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
10883 </p>
10884 </blockquote><p>
10885
10886 </p>
10887 <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
10888 in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
10889 the location of the changed MIDI instrument in the map. The front-end will have to send
10890 the respective command to actually get the MIDI instrument info. Because these messages
10891 will be triggered by LSCP commands issued by other clients rather than real
10892 time events happening on the server, it is believed that an empty notification
10893 message is sufficient here.
10894 </p>
10895 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
10896 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10897 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
10898 Global settings changed</h3>
10899
10900 <p>Client may want to be notified when changes to the global settings
10901 of the sampler were made by issuing the following command:
10902 </p>
10903 <p>
10904 </p>
10905 <blockquote class="text">
10906 <p>SUBSCRIBE GLOBAL_INFO
10907 </p>
10908 </blockquote><p>
10909
10910 </p>
10911 <p>Server will start sending the following types of notification messages:
10912 </p>
10913 <p>
10914 </p>
10915 <blockquote class="text">
10916 <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
10917 golbal volume of the sampler is changed, where &lt;volume&gt; will be
10918 replaced by the optional dotted floating point value, reflecting the
10919 new global volume parameter.
10920 </p>
10921 </blockquote><p>
10922
10923 </p>
10924 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
10925 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10926 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
10927 Number of database instrument directories changed</h3>
10928
10929 <p>Client may want to be notified when the number of instrument
10930 directories in a particular directory in the instruments database
10931 is changed by issuing the following command:
10932 </p>
10933 <p>
10934 </p>
10935 <blockquote class="text">
10936 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
10937 </p>
10938 </blockquote><p>
10939
10940 </p>
10941 <p>Server will start sending the following notification messages:
10942 </p>
10943 <p>
10944 </p>
10945 <blockquote class="text">
10946 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
10947 </p>
10948 </blockquote><p>
10949
10950 </p>
10951 <p>where &lt;dir-path&gt; will be replaced by the absolute path
10952 name of the directory in the instruments database,
10953 in which the number of directories is changed.
10954 </p>
10955 <p>Note that when a non-empty directory is removed, this event
10956 is not sent for the subdirectories in that directory.
10957 </p>
10958 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
10959 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10960 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
10961 Database instrument directory information changed</h3>
10962
10963 <p>Client may want to be notified when changes were made to directories
10964 in the instruments database by issuing the following command:
10965 </p>
10966 <p>
10967 </p>
10968 <blockquote class="text">
10969 <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
10970 </p>
10971 </blockquote><p>
10972
10973 </p>
10974 <p>Server will start sending the following notification messages:
10975 </p>
10976 <p>
10977 </p>
10978 <blockquote class="text">
10979 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
10980 </p>
10981 </blockquote><p>
10982
10983 </p>
10984 <p>where &lt;dir-path&gt; will be replaced by the absolute path name
10985 of the directory, for which information changes occurred. The front-end will have to send
10986 the respective command to actually get the updated directory info. Because these messages
10987 will be triggered by LSCP commands issued by other clients rather than real
10988 time events happening on the server, it is believed that an empty notification
10989 message is sufficient here.
10990 </p>
10991 <p>
10992 </p>
10993 <blockquote class="text">
10994 <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
10995 </p>
10996 </blockquote><p>
10997
10998 </p>
10999 <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
11000 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11001 the new name of the directory, encapsulated into apostrophes.
11002 </p>
11003 <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
11004 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11005 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
11006 Number of database instruments changed</h3>
11007
11008 <p>Client may want to be notified when the number of instruments
11009 in a particular directory in the instruments database
11010 is changed by issuing the following command:
11011 </p>
11012 <p>
11013 </p>
11014 <blockquote class="text">
11015 <p>SUBSCRIBE DB_INSTRUMENT_COUNT
11016 </p>
11017 </blockquote><p>
11018
11019 </p>
11020 <p>Server will start sending the following notification messages:
11021 </p>
11022 <p>
11023 </p>
11024 <blockquote class="text">
11025 <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
11026 </p>
11027 </blockquote><p>
11028
11029 </p>
11030 <p>where &lt;dir-path&gt; will be replaced by the absolute path
11031 name of the directory in the instruments database,
11032 in which the number of instruments is changed.
11033 </p>
11034 <p>Note that when a non-empty directory is removed, this event
11035 is not sent for the instruments in that directory.
11036 </p>
11037 <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
11038 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11039 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
11040 Database instrument information changed</h3>
11041
11042 <p>Client may want to be notified when changes were made to instruments
11043 in the instruments database by issuing the following command:
11044 </p>
11045 <p>
11046 </p>
11047 <blockquote class="text">
11048 <p>SUBSCRIBE DB_INSTRUMENT_INFO
11049 </p>
11050 </blockquote><p>
11051
11052 </p>
11053 <p>Server will start sending the following notification messages:
11054 </p>
11055 <p>
11056 </p>
11057 <blockquote class="text">
11058 <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
11059 </p>
11060 </blockquote><p>
11061
11062 </p>
11063 <p>where &lt;instr-path&gt; will be replaced by the absolute path name
11064 of the instrument, which settings are changed. The front-end will have to send
11065 the respective command to actually get the updated directory info. Because these messages
11066 will be triggered by LSCP commands issued by other clients rather than real
11067 time events happening on the server, it is believed that an empty notification
11068 message is sufficient here.
11069 </p>
11070 <p>
11071 </p>
11072 <blockquote class="text">
11073 <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
11074 </p>
11075 </blockquote><p>
11076
11077 </p>
11078 <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
11079 (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11080 the new name of the instrument, encapsulated into apostrophes.
11081 </p>
11082 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
11083 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11084 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
11085 Database job status information changed</h3>
11086
11087 <p>Client may want to be notified when the status of particular database
11088 instruments job is changed by issuing the following command:
11089 </p>
11090 <p>
11091 </p>
11092 <blockquote class="text">
11093 <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
11094 </p>
11095 </blockquote><p>
11096
11097 </p>
11098 <p>Server will start sending the following notification messages:
11099 </p>
11100 <p>
11101 </p>
11102 <blockquote class="text">
11103 <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
11104 </p>
11105 </blockquote><p>
11106
11107 </p>
11108 <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
11109 which status is changed. The front-end will have to send the respective
11110 command to actually get the status info. Because these messages
11111 will be triggered by LSCP commands issued by other clients rather than real
11112 time events happening on the server, it is believed that an empty notification
11113 message is sufficient here.
11114 </p>
11115 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
11116 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11117 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
11118 Miscellaneous and debugging events</h3>
11119
11120 <p>Client may want to be notified of miscellaneous and debugging events occurring at
11121 the server by issuing the following command:
11122 </p>
11123 <p>
11124 </p>
11125 <blockquote class="text">
11126 <p>SUBSCRIBE MISCELLANEOUS
11127 </p>
11128 </blockquote><p>
11129
11130 </p>
11131 <p>Server will start sending the following notification messages:
11132 </p>
11133 <p>
11134 </p>
11135 <blockquote class="text">
11136 <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
11137 </p>
11138 </blockquote><p>
11139
11140 </p>
11141 <p>where &lt;string&gt; will be replaced by whatever data server
11142 wants to send to the client. Client MAY display this data to the
11143 user AS IS to facilitate debugging.
11144 </p>
11145 <a name="anchor14"></a><br /><hr />
11146 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11147 <a name="rfc.section.9"></a><h3>9.&nbsp;
11148 Security Considerations</h3>
11149
11150 <p>As there is so far no method of authentication and authorization
11151 defined and so not required for a client applications to succeed to
11152 connect, running LinuxSampler might be a security risk for the host
11153 system the LinuxSampler instance is running on.
11154 </p>
11155 <a name="anchor15"></a><br /><hr />
11156 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11157 <a name="rfc.section.10"></a><h3>10.&nbsp;
11158 Acknowledgments</h3>
11159
11160 <p>This document has benefited greatly from the comments of the
11161 following people, discussed on the LinuxSampler developer's mailing
11162 list:
11163 </p>
11164 <p>
11165 </p>
11166 <blockquote class="text">
11167 <p>Rui Nuno Capela
11168 </p>
11169 <p>Vladimir Senkov
11170 </p>
11171 <p>Mark Knecht
11172 </p>
11173 <p>Grigor Iliev
11174 </p>
11175 </blockquote><p>
11176
11177 </p>
11178 <a name="rfc.references1"></a><br /><hr />
11179 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11180 <h3>11.&nbsp;References</h3>
11181 <table width="99%" border="0">
11182 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
11183 <td class="author-text">UCLA, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc20.txt">ASCII format for Network Interchange</a>,&rdquo; RFC&nbsp;20, 1969.</td></tr>
11184 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
11185 <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>
11186 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
11187 <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>
11188 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
11189 <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>
11190 </table>
11191
11192 <a name="rfc.authors"></a><br /><hr />
11193 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11194 <h3>Author's Address</h3>
11195 <table width="99%" border="0" cellpadding="0" cellspacing="0">
11196 <tr><td class="author-text">&nbsp;</td>
11197 <td class="author-text">C.
11198 Schoenebeck</td></tr>
11199 <tr><td class="author-text">&nbsp;</td>
11200 <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
11201 <tr><td class="author-text">&nbsp;</td>
11202 <td class="author-text">Max-Planck-Str. 39</td></tr>
11203 <tr><td class="author-text">&nbsp;</td>
11204 <td class="author-text">74081 Heilbronn</td></tr>
11205 <tr><td class="author-text">&nbsp;</td>
11206 <td class="author-text">Germany</td></tr>
11207 <tr><td class="author" align="right">Email:&nbsp;</td>
11208 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
11209 </table>
11210 <a name="rfc.copyright"></a><br /><hr />
11211 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11212 <h3>Full Copyright Statement</h3>
11213 <p class='copyright'>
11214 Copyright &copy; The IETF Trust (2007).</p>
11215 <p class='copyright'>
11216 This document is subject to the rights,
11217 licenses and restrictions contained in BCP&nbsp;78,
11218 and except as set forth therein,
11219 the authors retain all their rights.</p>
11220 <p class='copyright'>
11221 This document and the information contained herein are provided
11222 on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
11223 THE ORGANIZATION HE/SHE REPRESENTS
11224 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
11225 AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
11226 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
11227 THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
11228 IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
11229 PURPOSE.</p>
11230 <h3>Intellectual Property</h3>
11231 <p class='copyright'>
11232 The IETF takes no position regarding the validity or scope of any
11233 Intellectual Property Rights or other rights that might be claimed
11234 to pertain to the implementation or use of the technology
11235 described in this document or the extent to which any license
11236 under such rights might or might not be available; nor does it
11237 represent that it has made any independent effort to identify any
11238 such rights.
11239 Information on the procedures with respect to
11240 rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
11241 <p class='copyright'>
11242 Copies of IPR disclosures made to the IETF Secretariat and any
11243 assurances of licenses to be made available,
11244 or the result of an attempt made to obtain a general license or
11245 permission for the use of such proprietary rights by implementers or
11246 users of this specification can be obtained from the IETF on-line IPR
11247 repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
11248 <p class='copyright'>
11249 The IETF invites any interested party to bring to its attention
11250 any copyrights,
11251 patents or patent applications,
11252 or other
11253 proprietary rights that may cover technology that may be required
11254 to implement this standard.
11255 Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
11256 <h3>Acknowledgment</h3>
11257 <p class='copyright'>
11258 Funding for the RFC Editor function is provided by
11259 the IETF Administrative Support Activity (IASA).</p>
11260 </body></html>
11261

  ViewVC Help
Powered by ViewVC