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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1572 - (hide annotations) (download) (as text)
Fri Dec 7 01:07:11 2007 UTC (16 years, 4 months ago) by schoenebeck
File MIME type: text/html
File size: 410947 byte(s)
* new LS release (0.5.1)

1 senoner 542 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 schoenebeck 1430 <html lang="en"><head><title>LinuxSampler Control Protocol</title>
3 senoner 542 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4 schoenebeck 1430 <meta name="description" content="LinuxSampler Control Protocol">
5 senoner 542 <meta name="keywords" content="LSCP">
6 iliev 1110 <meta name="generator" content="xml2rfc v1.32 (http://xml.resource.org/)">
7 schoenebeck 974 <style type='text/css'><!--
8 iliev 1110 body {
9     font-family: verdana, charcoal, helvetica, arial, sans-serif;
10     font-size: small; color: #000; background-color: #FFF;
11     margin: 2em;
12     }
13 schoenebeck 974 h1, h2, h3, h4, h5, h6 {
14 iliev 1110 font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
15     font-weight: bold; font-style: normal;
16     }
17     h1 { color: #900; background-color: transparent; text-align: right; }
18     h3 { color: #333; background-color: transparent; }
19 senoner 542
20 iliev 1110 td.RFCbug {
21     font-size: x-small; text-decoration: none;
22     width: 30px; height: 30px; padding-top: 2px;
23     text-align: justify; vertical-align: middle;
24     background-color: #000;
25     }
26     td.RFCbug span.RFC {
27     font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
28     font-weight: bold; color: #666;
29     }
30     td.RFCbug span.hotText {
31     font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
32     font-weight: normal; text-align: center; color: #FFF;
33     }
34 senoner 542
35 iliev 1110 table.TOCbug { width: 30px; height: 15px; }
36     td.TOCbug {
37     text-align: center; width: 30px; height: 15px;
38     color: #FFF; background-color: #900;
39     }
40     td.TOCbug a {
41     font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
42     font-weight: bold; font-size: x-small; text-decoration: none;
43     color: #FFF; background-color: transparent;
44     }
45 senoner 542
46 iliev 1110 td.header {
47     font-family: arial, helvetica, sans-serif; font-size: x-small;
48     vertical-align: top; width: 33%;
49     color: #FFF; background-color: #666;
50     }
51     td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
52     td.author-text { font-size: x-small; }
53 senoner 542
54 iliev 1110 /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
55     a.info {
56     /* This is the key. */
57     position: relative;
58     z-index: 24;
59     text-decoration: none;
60     }
61     a.info:hover {
62     z-index: 25;
63     color: #FFF; background-color: #900;
64     }
65     a.info span { display: none; }
66     a.info:hover span.info {
67     /* The span will display just on :hover state. */
68     display: block;
69     position: absolute;
70     font-size: smaller;
71     top: 2em; left: -5em; width: 15em;
72     padding: 2px; border: 1px solid #333;
73     color: #900; background-color: #EEE;
74     text-align: left;
75     }
76 senoner 542
77 iliev 1110 a { font-weight: bold; }
78     a:link { color: #900; background-color: transparent; }
79     a:visited { color: #633; background-color: transparent; }
80     a:active { color: #633; background-color: transparent; }
81 senoner 542
82 iliev 1110 p { margin-left: 2em; margin-right: 2em; }
83     p.copyright { font-size: x-small; }
84     p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
85     table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
86     td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
87 senoner 542
88 iliev 1110 ol.text { margin-left: 2em; margin-right: 2em; }
89     ul.text { margin-left: 2em; margin-right: 2em; }
90     li { margin-left: 3em; }
91 senoner 542
92 iliev 1110 /* RFC-2629 <spanx>s and <artwork>s. */
93     em { font-style: italic; }
94     strong { font-weight: bold; }
95     dfn { font-weight: bold; font-style: normal; }
96     cite { font-weight: normal; font-style: normal; }
97     tt { color: #036; }
98 schoenebeck 974 tt, pre, pre dfn, pre em, pre cite, pre span {
99 iliev 1110 font-family: "Courier New", Courier, monospace; font-size: small;
100     }
101     pre {
102     text-align: left; padding: 4px;
103     color: #000; background-color: #CCC;
104     }
105     pre dfn { color: #900; }
106     pre em { color: #66F; background-color: #FFC; font-weight: normal; }
107     pre .key { color: #33C; font-weight: bold; }
108     pre .id { color: #900; }
109     pre .str { color: #000; background-color: #CFF; }
110     pre .val { color: #066; }
111     pre .rep { color: #909; }
112     pre .oth { color: #000; background-color: #FCF; }
113     pre .err { background-color: #FCC; }
114 schoenebeck 708
115 iliev 1110 /* RFC-2629 <texttable>s. */
116     table.all, table.full, table.headers, table.none {
117     font-size: small; text-align: center; border-width: 2px;
118     vertical-align: top; border-collapse: collapse;
119     }
120     table.all, table.full { border-style: solid; border-color: black; }
121     table.headers, table.none { border-style: none; }
122     th {
123     font-weight: bold; border-color: black;
124     border-width: 2px 2px 3px 2px;
125     }
126     table.all th, table.full th { border-style: solid; }
127     table.headers th { border-style: none none solid none; }
128     table.none th { border-style: none; }
129     table.all td {
130     border-style: solid; border-color: #333;
131     border-width: 1px 2px;
132     }
133     table.full td, table.headers td, table.none td { border-style: none; }
134 senoner 542
135 iliev 1110 hr { height: 1px; }
136     hr.insert {
137     width: 80%; border-style: none; border-width: 0;
138     color: #CCC; background-color: #CCC;
139     }
140 schoenebeck 974 --></style>
141 senoner 542 </head>
142     <body>
143 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
144 senoner 542 <table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
145     <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146     <tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr>
147 schoenebeck 974 <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148 schoenebeck 1572 <tr><td class="header">Expires: June 7, 2008</td><td class="header">December 5, 2007</td></tr>
149 senoner 542 </table></td></tr></table>
150 schoenebeck 1572 <h1><br />LinuxSampler Control Protocol<br />LSCP 1.3</h1>
151 senoner 542
152     <h3>Status of this Memo</h3>
153     <p>
154 schoenebeck 974 By submitting this Internet-Draft,
155     each author represents that any applicable patent or other IPR claims of which
156     he or she is aware have been or will be disclosed,
157     and any of which he or she becomes aware will be disclosed,
158     in accordance with Section&nbsp;6 of BCP&nbsp;79.</p>
159 senoner 542 <p>
160     Internet-Drafts are working documents of the Internet Engineering
161     Task Force (IETF), its areas, and its working groups.
162     Note that other groups may also distribute working documents as
163     Internet-Drafts.</p>
164     <p>
165     Internet-Drafts are draft documents valid for a maximum of six months
166     and may be updated, replaced, or obsoleted by other documents at any time.
167     It is inappropriate to use Internet-Drafts as reference material or to cite
168 schoenebeck 708 them other than as &ldquo;work in progress.&rdquo;</p>
169 senoner 542 <p>
170     The list of current Internet-Drafts can be accessed at
171     <a href='http://www.ietf.org/ietf/1id-abstracts.txt'>http://www.ietf.org/ietf/1id-abstracts.txt</a>.</p>
172     <p>
173     The list of Internet-Draft Shadow Directories can be accessed at
174     <a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>
175     <p>
176 schoenebeck 1572 This Internet-Draft will expire on June 7, 2008.</p>
177 senoner 542
178     <h3>Copyright Notice</h3>
179     <p>
180 iliev 1110 Copyright &copy; The IETF Trust (2007).</p>
181 senoner 542
182     <h3>Abstract</h3>
183    
184     <p>The LinuxSampler Control Protocol (LSCP) is an
185     application-level protocol primarily intended for local and
186 schoenebeck 575 remote controlling the LinuxSampler backend application, which is a
187     sophisticated server-like console application essentially playing
188     back audio samples and manipulating the samples in real time to
189     certain extent.
190 senoner 542 </p><a name="toc"></a><br /><hr />
191     <h3>Table of Contents</h3>
192     <p class="toc">
193     <a href="#anchor1">1.</a>&nbsp;
194     Requirements notation<br />
195 schoenebeck 575 <a href="#LSCP versioning">2.</a>&nbsp;
196     Versioning of this specification<br />
197     <a href="#anchor2">3.</a>&nbsp;
198 senoner 542 Introduction<br />
199 schoenebeck 575 <a href="#anchor3">4.</a>&nbsp;
200 senoner 542 Focus of this protocol<br />
201 schoenebeck 575 <a href="#anchor4">5.</a>&nbsp;
202 senoner 542 Communication Overview<br />
203 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">5.1.</a>&nbsp;
204 senoner 542 Request/response communication method<br />
205 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">5.1.1.</a>&nbsp;
206 senoner 542 Result format<br />
207 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">5.2.</a>&nbsp;
208 senoner 542 Subscribe/notify communication method<br />
209 schoenebeck 575 <a href="#control_commands">6.</a>&nbsp;
210 senoner 542 Description for control commands<br />
211 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">6.1.</a>&nbsp;
212 senoner 542 Ignored lines and comments<br />
213 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">6.2.</a>&nbsp;
214 senoner 542 Configuring audio drivers<br />
215 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.1.</a>&nbsp;
216 senoner 542 Getting amount of available audio output drivers<br />
217 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS">6.2.2.</a>&nbsp;
218 senoner 542 Getting all available audio output drivers<br />
219 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER INFO">6.2.3.</a>&nbsp;
220 senoner 542 Getting information about a specific audio
221     output driver<br />
222 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO">6.2.4.</a>&nbsp;
223 senoner 542 Getting information about specific audio
224     output driver parameter<br />
225 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE AUDIO_OUTPUT_DEVICE">6.2.5.</a>&nbsp;
226 senoner 542 Creating an audio output device<br />
227 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY AUDIO_OUTPUT_DEVICE">6.2.6.</a>&nbsp;
228 senoner 542 Destroying an audio output device<br />
229 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICES">6.2.7.</a>&nbsp;
230 senoner 542 Getting all created audio output device count<br />
231 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AUDIO_OUTPUT_DEVICES">6.2.8.</a>&nbsp;
232 senoner 542 Getting all created audio output device list<br />
233 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_DEVICE INFO">6.2.9.</a>&nbsp;
234 senoner 542 Getting current settings of an audio output device<br />
235 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_DEVICE_PARAMETER">6.2.10.</a>&nbsp;
236 senoner 542 Changing settings of audio output devices<br />
237 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL INFO">6.2.11.</a>&nbsp;
238 senoner 542 Getting information about an audio channel<br />
239 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO">6.2.12.</a>&nbsp;
240 senoner 542 Getting information about specific audio channel parameter<br />
241 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET AUDIO_OUTPUT_CHANNEL_PARAMETER">6.2.13.</a>&nbsp;
242 senoner 542 Changing settings of audio output channels<br />
243 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">6.3.</a>&nbsp;
244 senoner 542 Configuring MIDI input drivers<br />
245 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_MIDI_INPUT_DRIVERS">6.3.1.</a>&nbsp;
246 senoner 542 Getting amount of available MIDI input drivers<br />
247 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_MIDI_INPUT_DRIVERS">6.3.2.</a>&nbsp;
248 senoner 542 Getting all available MIDI input drivers<br />
249 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER INFO">6.3.3.</a>&nbsp;
250 senoner 542 Getting information about a specific MIDI input driver<br />
251 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DRIVER_PARAMETER INFO">6.3.4.</a>&nbsp;
252 senoner 542 Getting information about specific MIDI input driver parameter<br />
253 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE MIDI_INPUT_DEVICE">6.3.5.</a>&nbsp;
254 senoner 542 Creating a MIDI input device<br />
255 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY MIDI_INPUT_DEVICE">6.3.6.</a>&nbsp;
256 senoner 542 Destroying a MIDI input device<br />
257 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICES">6.3.7.</a>&nbsp;
258 senoner 542 Getting all created MIDI input device count<br />
259 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INPUT_DEVICES">6.3.8.</a>&nbsp;
260 senoner 542 Getting all created MIDI input device list<br />
261 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_DEVICE INFO">6.3.9.</a>&nbsp;
262 senoner 542 Getting current settings of a MIDI input device<br />
263 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_DEVICE_PARAMETER">6.3.10.</a>&nbsp;
264 senoner 542 Changing settings of MIDI input devices<br />
265 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT INFO">6.3.11.</a>&nbsp;
266 senoner 542 Getting information about a MIDI port<br />
267 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INPUT_PORT_PARAMETER INFO">6.3.12.</a>&nbsp;
268 senoner 542 Getting information about specific MIDI port parameter<br />
269 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INPUT_PORT_PARAMETER">6.3.13.</a>&nbsp;
270 senoner 542 Changing settings of MIDI input ports<br />
271 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">6.4.</a>&nbsp;
272 senoner 542 Configuring sampler channels<br />
273 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD INSTRUMENT">6.4.1.</a>&nbsp;
274 senoner 542 Loading an instrument<br />
275 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LOAD ENGINE">6.4.2.</a>&nbsp;
276 senoner 542 Loading a sampler engine<br />
277 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNELS">6.4.3.</a>&nbsp;
278 senoner 542 Getting all created sampler channel count<br />
279 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST CHANNELS">6.4.4.</a>&nbsp;
280 senoner 542 Getting all created sampler channel list<br />
281 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD CHANNEL">6.4.5.</a>&nbsp;
282 senoner 542 Adding a new sampler channel<br />
283 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE CHANNEL">6.4.6.</a>&nbsp;
284 senoner 542 Removing a sampler channel<br />
285 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET AVAILABLE_ENGINES">6.4.7.</a>&nbsp;
286 senoner 542 Getting amount of available engines<br />
287 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST AVAILABLE_ENGINES">6.4.8.</a>&nbsp;
288 senoner 542 Getting all available engines<br />
289 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET ENGINE INFO">6.4.9.</a>&nbsp;
290 senoner 542 Getting information about an engine<br />
291 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL INFO">6.4.10.</a>&nbsp;
292 senoner 542 Getting sampler channel information<br />
293 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL VOICE_COUNT">6.4.11.</a>&nbsp;
294 senoner 542 Current number of active voices<br />
295 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL STREAM_COUNT">6.4.12.</a>&nbsp;
296 senoner 542 Current number of active disk streams<br />
297 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET CHANNEL BUFFER_FILL">6.4.13.</a>&nbsp;
298 senoner 542 Current fill state of disk stream buffers<br />
299 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_DEVICE">6.4.14.</a>&nbsp;
300 senoner 542 Setting audio output device<br />
301 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_TYPE">6.4.15.</a>&nbsp;
302 senoner 542 Setting audio output type<br />
303 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL AUDIO_OUTPUT_CHANNEL">6.4.16.</a>&nbsp;
304 senoner 542 Setting audio output channel<br />
305 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_DEVICE">6.4.17.</a>&nbsp;
306 senoner 542 Setting MIDI input device<br />
307 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_TYPE">6.4.18.</a>&nbsp;
308 senoner 542 Setting MIDI input type<br />
309 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_PORT">6.4.19.</a>&nbsp;
310 senoner 542 Setting MIDI input port<br />
311 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INPUT_CHANNEL">6.4.20.</a>&nbsp;
312 senoner 542 Setting MIDI input channel<br />
313 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL VOLUME">6.4.21.</a>&nbsp;
314 senoner 542 Setting channel volume<br />
315 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MUTE">6.4.22.</a>&nbsp;
316 schoenebeck 708 Muting a sampler channel<br />
317 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL SOLO">6.4.23.</a>&nbsp;
318 schoenebeck 708 Soloing a sampler channel<br />
319 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET CHANNEL MIDI_INSTRUMENT_MAP">6.4.24.</a>&nbsp;
320     Assigning a MIDI instrument map to a sampler channel<br />
321 schoenebeck 1002 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CREATE FX_SEND">6.4.25.</a>&nbsp;
322     Adding an effect send to a sampler channel<br />
323     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#DESTROY FX_SEND">6.4.26.</a>&nbsp;
324     Removing an effect send from a sampler channel<br />
325     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SENDS">6.4.27.</a>&nbsp;
326     Getting amount of effect sends on a sampler channel<br />
327     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FX_SENDS">6.4.28.</a>&nbsp;
328     Listing all effect sends on a sampler channel<br />
329     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FX_SEND INFO">6.4.29.</a>&nbsp;
330     Getting effect send information<br />
331 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND NAME">6.4.30.</a>&nbsp;
332     Changing effect send's name<br />
333     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND AUDIO_OUTPUT_CHANNEL">6.4.31.</a>&nbsp;
334 schoenebeck 1002 Altering effect send's audio routing<br />
335 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND MIDI_CONTROLLER">6.4.32.</a>&nbsp;
336 schoenebeck 1028 Altering effect send's MIDI controller<br />
337 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET FX_SEND LEVEL">6.4.33.</a>&nbsp;
338 schoenebeck 1028 Altering effect send's send level<br />
339 iliev 1137 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET CHANNEL">6.4.34.</a>&nbsp;
340 senoner 542 Resetting a sampler channel<br />
341 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">6.5.</a>&nbsp;
342 senoner 542 Controlling connection<br />
343 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE">6.5.1.</a>&nbsp;
344 senoner 542 Register front-end for receiving event messages<br />
345 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNSUBSCRIBE">6.5.2.</a>&nbsp;
346 senoner 542 Unregister front-end for not receiving event messages<br />
347 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET ECHO">6.5.3.</a>&nbsp;
348 senoner 542 Enable or disable echo of commands<br />
349 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#QUIT">6.5.4.</a>&nbsp;
350 senoner 542 Close client connection<br />
351 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">6.6.</a>&nbsp;
352 senoner 542 Global commands<br />
353 schoenebeck 940 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT">6.6.1.</a>&nbsp;
354     Current number of active voices<br />
355     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_VOICE_COUNT_MAX">6.6.2.</a>&nbsp;
356     Maximum amount of active voices<br />
357 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET TOTAL_STREAM_COUNT">6.6.3.</a>&nbsp;
358     Current number of active disk streams<br />
359     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#RESET">6.6.4.</a>&nbsp;
360 senoner 542 Reset sampler<br />
361 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET SERVER INFO">6.6.5.</a>&nbsp;
362 schoenebeck 575 General sampler informations<br />
363 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET VOLUME">6.6.6.</a>&nbsp;
364 schoenebeck 1006 Getting global volume attenuation<br />
365 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET VOLUME">6.6.7.</a>&nbsp;
366 schoenebeck 1006 Setting global volume attenuation<br />
367 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
368 schoenebeck 945 MIDI Instrument Mapping<br />
369 schoenebeck 1390 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
370 schoenebeck 974 Create a new MIDI instrument map<br />
371     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
372     Delete one particular or all MIDI instrument maps<br />
373     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAPS">6.7.3.</a>&nbsp;
374     Get amount of existing MIDI instrument maps<br />
375     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENT_MAPS">6.7.4.</a>&nbsp;
376     Getting all created MIDI instrument maps<br />
377     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT_MAP INFO">6.7.5.</a>&nbsp;
378     Getting MIDI instrument map information<br />
379     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET MIDI_INSTRUMENT_MAP NAME">6.7.6.</a>&nbsp;
380     Renaming a MIDI instrument map<br />
381     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MAP MIDI_INSTRUMENT">6.7.7.</a>&nbsp;
382 schoenebeck 945 Create or replace a MIDI instrument map entry<br />
383 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENTS">6.7.8.</a>&nbsp;
384 schoenebeck 945 Getting ammount of MIDI instrument map entries<br />
385 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST MIDI_INSTRUMENTS">6.7.9.</a>&nbsp;
386     Getting indeces of all entries of a MIDI instrument map<br />
387     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#UNMAP MIDI_INSTRUMENT">6.7.10.</a>&nbsp;
388 schoenebeck 945 Remove an entry from the MIDI instrument map<br />
389 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET MIDI_INSTRUMENT INFO">6.7.11.</a>&nbsp;
390 schoenebeck 945 Get current settings of MIDI instrument map entry<br />
391 schoenebeck 974 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
392 schoenebeck 945 Clear MIDI instrument map<br />
393 iliev 1162 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
394     Managing Instruments Database<br />
395     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
396     Creating a new instrument directory<br />
397     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
398     Deleting an instrument directory<br />
399     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
400     Getting amount of instrument directories<br />
401     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
402     Listing all directories in specific directory<br />
403     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
404     Getting instrument directory information<br />
405     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
406     Renaming an instrument directory<br />
407     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
408     Moving an instrument directory<br />
409 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
410     Copying instrument directories<br />
411     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
412 iliev 1162 Changing the description of directory<br />
413 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
414     Finding directories<br />
415     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
416 iliev 1162 Adding instruments to the instruments database<br />
417 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
418 iliev 1162 Removing an instrument<br />
419 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
420 iliev 1162 Getting amount of instruments<br />
421 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
422 iliev 1162 Listing all instruments in specific directory<br />
423 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
424 iliev 1162 Getting instrument information<br />
425 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
426 iliev 1162 Renaming an instrument<br />
427 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
428 iliev 1162 Moving an instrument<br />
429 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
430     Copying instruments<br />
431     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
432 iliev 1162 Changing the description of instrument<br />
433 iliev 1189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
434     Finding instruments<br />
435 iliev 1201 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
436     Getting job status information<br />
437 schoenebeck 1363 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
438     Formatting the instruments database<br />
439     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
440     Editing Instruments<br />
441     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
442     Opening an appropriate instrument editor application<br />
443 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#file_management">6.10.</a>&nbsp;
444     Managing Files<br />
445     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENTS">6.10.1.</a>&nbsp;
446     Retrieving amount of instruments of a file<br />
447     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST FILE INSTRUMENTS">6.10.2.</a>&nbsp;
448     Retrieving all instruments of a file<br />
449     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET FILE INSTRUMENT INFO">6.10.3.</a>&nbsp;
450     Retrieving informations about one instrument in a file<br />
451 schoenebeck 575 <a href="#command_syntax">7.</a>&nbsp;
452 senoner 542 Command Syntax<br />
453 schoenebeck 1251 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
454     Character Set and Escape Sequences<br />
455 schoenebeck 575 <a href="#events">8.</a>&nbsp;
456 senoner 542 Events<br />
457 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
458     Number of audio output devices changed<br />
459     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">8.2.</a>&nbsp;
460     Audio output device's settings changed<br />
461     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">8.3.</a>&nbsp;
462     Number of MIDI input devices changed<br />
463     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INPUT_DEVICE_INFO">8.4.</a>&nbsp;
464     MIDI input device's settings changed<br />
465     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_COUNT">8.5.</a>&nbsp;
466 senoner 542 Number of sampler channels changed<br />
467 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE VOICE_COUNT">8.6.</a>&nbsp;
468 senoner 542 Number of active voices changed<br />
469 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE STREAM_COUNT">8.7.</a>&nbsp;
470 senoner 542 Number of active disk streams changed<br />
471 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE BUFFER_FILL">8.8.</a>&nbsp;
472 senoner 542 Disk stream buffer fill state changed<br />
473 iliev 992 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE CHANNEL_INFO">8.9.</a>&nbsp;
474 senoner 542 Channel information changed<br />
475 iliev 1110 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_COUNT">8.10.</a>&nbsp;
476     Number of effect sends changed<br />
477     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE FX_SEND_INFO">8.11.</a>&nbsp;
478     Effect send information changed<br />
479     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_VOICE_COUNT">8.12.</a>&nbsp;
480 schoenebeck 940 Total number of active voices changed<br />
481 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE TOTAL_STREAM_COUNT">8.13.</a>&nbsp;
482     Total number of active disk streams changed<br />
483     &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">8.14.</a>&nbsp;
484 iliev 992 Number of MIDI instrument maps changed<br />
485 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">8.15.</a>&nbsp;
486 iliev 992 MIDI instrument map information changed<br />
487 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_COUNT">8.16.</a>&nbsp;
488 iliev 992 Number of MIDI instruments changed<br />
489 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MIDI_INSTRUMENT_INFO">8.17.</a>&nbsp;
490 iliev 992 MIDI instrument information changed<br />
491 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.18.</a>&nbsp;
492 iliev 1110 Global settings changed<br />
493 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.19.</a>&nbsp;
494 iliev 1162 Number of database instrument directories changed<br />
495 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.20.</a>&nbsp;
496 iliev 1162 Database instrument directory information changed<br />
497 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.21.</a>&nbsp;
498 iliev 1162 Number of database instruments changed<br />
499 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.22.</a>&nbsp;
500 iliev 1162 Database instrument information changed<br />
501 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.23.</a>&nbsp;
502 iliev 1201 Database job status information changed<br />
503 schoenebeck 1572 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.24.</a>&nbsp;
504 senoner 542 Miscellaneous and debugging events<br />
505 schoenebeck 974 <a href="#anchor14">9.</a>&nbsp;
506 senoner 542 Security Considerations<br />
507 schoenebeck 974 <a href="#anchor15">10.</a>&nbsp;
508 senoner 542 Acknowledgments<br />
509 schoenebeck 575 <a href="#rfc.references1">11.</a>&nbsp;
510 senoner 542 References<br />
511     <a href="#rfc.authors">&#167;</a>&nbsp;
512     Author's Address<br />
513     <a href="#rfc.copyright">&#167;</a>&nbsp;
514     Intellectual Property and Copyright Statements<br />
515     </p>
516     <br clear="all" />
517    
518     <a name="anchor1"></a><br /><hr />
519 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
520     <a name="rfc.section.1"></a><h3>1.&nbsp;
521     Requirements notation</h3>
522 senoner 542
523     <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
524     "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
525     and "OPTIONAL" in this document are to be interpreted as
526 schoenebeck 974 described in <a class='info' href='#RFC2119'>[RFC2119]<span> (</span><span class='info'>Bradner, S., &ldquo;Key words for use in RFCs to Indicate Requirement Levels,&rdquo; 1997.</span><span>)</span></a>.
527 senoner 542 </p>
528     <p>This protocol is always case-sensitive if not explicitly
529     claimed the opposite.
530     </p>
531     <p>In examples, "C:" and "S:" indicate lines sent by the client
532     (front-end) and server (LinuxSampler) respectively. Lines in
533     examples must be interpreted as every line being CRLF
534     terminated (carriage return character followed by line feed
535 schoenebeck 1251 character as defined in the ASCII standard <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>),
536     thus the following example:
537 senoner 542 </p>
538 schoenebeck 708 <p>
539     </p>
540 senoner 542 <blockquote class="text">
541     <p>C: "some line"
542     </p>
543     <p>&nbsp;&nbsp;&nbsp;"another line"
544     </p>
545 schoenebeck 708 </blockquote><p>
546 schoenebeck 940
547 schoenebeck 708 </p>
548 senoner 542 <p>must actually be interpreted as client sending the following
549     message:
550     </p>
551 schoenebeck 708 <p>
552     </p>
553 senoner 542 <blockquote class="text">
554     <p>"some line&lt;CR&gt;&lt;LF&gt;another
555     line&lt;CR&gt;&lt;LF&gt;"
556     </p>
557 schoenebeck 708 </blockquote><p>
558 schoenebeck 940
559 schoenebeck 708 </p>
560 senoner 542 <p>where &lt;CR&gt; symbolizes the carriage return character and
561     &lt;LF&gt; the line feed character as defined in the ASCII
562     standard.
563     </p>
564     <p>Due to technical reasons, messages can arbitrary be
565     fragmented, means the following example:
566     </p>
567 schoenebeck 708 <p>
568     </p>
569 senoner 542 <blockquote class="text">
570     <p>S: "abcd"
571     </p>
572 schoenebeck 708 </blockquote><p>
573 schoenebeck 940
574 schoenebeck 708 </p>
575 senoner 542 <p>could also happen to be sent in three messages like in the
576     following sequence scenario:
577     </p>
578 schoenebeck 708 <p>
579     </p>
580 senoner 542 <ul class="text">
581     <li>server sending message "a"
582     </li>
583     <li>followed by a delay (pause) with
584     arbitrary duration
585     </li>
586     <li>followed by server sending message
587     "bcd&lt;CR&gt;"
588     </li>
589     <li>again followed by a delay (pause) with arbitrary
590     duration
591     </li>
592     <li>followed by server sending the message
593     "&lt;LF&gt;"
594     </li>
595 schoenebeck 708 </ul><p>
596 schoenebeck 940
597 schoenebeck 708 </p>
598 senoner 542 <p>where again &lt;CR&gt; and &lt;LF&gt; symbolize the carriage
599     return and line feed characters respectively.
600     </p>
601 schoenebeck 575 <a name="LSCP versioning"></a><br /><hr />
602 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
603     <a name="rfc.section.2"></a><h3>2.&nbsp;
604     Versioning of this specification</h3>
605 schoenebeck 575
606     <p>LSCP will certainly be extended and enhanced by-and-by. Each official
607     release of the LSCP specification will be tagged with a unique version
608     tuple. The version tuple consists at least of a major and minor version
609     number like:
610 schoenebeck 940
611 schoenebeck 575 </p>
612 schoenebeck 708 <p>
613     </p>
614 schoenebeck 575 <blockquote class="text">
615     <p>"1.2"
616     </p>
617 schoenebeck 708 </blockquote><p>
618 schoenebeck 940
619 schoenebeck 708 </p>
620 schoenebeck 575 <p>
621     In this example the major version number would be "1" and the minor
622     version number would be "2". Note that the version tuple might also
623     have more than two elements. The major version number defines a
624     group of backward compatible versions. That means a frontend is
625     compatible to the connected sampler if and only if the LSCP versions
626     to which each of the two parties complies to, match both of the
627     following rules:
628 schoenebeck 940
629 schoenebeck 575 </p>
630     <p>Compatibility:
631     </p>
632 schoenebeck 708 <p>
633     </p>
634 schoenebeck 575 <ol class="text">
635     <li>The frontend's LSCP major version and the sampler's LSCP
636     major version are exactly equal.
637     </li>
638     <li>The frontend's LSCP minor version is less or equal than
639     the sampler's LSCP minor version.
640     </li>
641 schoenebeck 708 </ol><p>
642 schoenebeck 940
643 schoenebeck 708 </p>
644 schoenebeck 575 <p>
645     Compatibility can only be claimed if both rules are true.
646     The frontend can use the
647 schoenebeck 974 <a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a> command to
648 schoenebeck 575 get the version of the LSCP specification the sampler complies with.
649 schoenebeck 940
650 schoenebeck 575 </p>
651 senoner 542 <a name="anchor2"></a><br /><hr />
652 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
653     <a name="rfc.section.3"></a><h3>3.&nbsp;
654     Introduction</h3>
655 senoner 542
656     <p>LinuxSampler is a so called software sampler application
657     capable to playback audio samples from a computer's Random
658     Access Memory (RAM) as well as directly streaming it from disk.
659     LinuxSampler is designed to be modular. It provides several so
660     called "sampler engines" where each engine is specialized for a
661     certain purpose. LinuxSampler has virtual channels which will be
662     referred in this document as "sampler channels". The channels
663     are in such way virtual as they can be connected to an
664     arbitrary MIDI input method and arbitrary MIDI channel (e.g.
665     sampler channel 17 could be connected to an ALSA sequencer
666     device 64:0 and listening to MIDI channel 1 there). Each sampler
667 schoenebeck 575 channel will be associated with an instance of one of the available
668 senoner 542 sampler engines (e.g. GigEngine, DLSEngine). The audio output of
669     each sampler channel can be routed to an arbitrary audio output
670     method (ALSA / JACK) and an arbitrary audio output channel
671     there.
672     </p>
673     <a name="anchor3"></a><br /><hr />
674 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
675     <a name="rfc.section.4"></a><h3>4.&nbsp;
676     Focus of this protocol</h3>
677 senoner 542
678     <p>Main focus of this protocol is to provide a way to configure
679     a running LinuxSampler instance and to retrieve information
680     about it. The focus of this protocol is not to provide a way to
681     control synthesis parameters or even to trigger or release
682     notes. Or in other words; the focus are those functionalities
683     which are not covered by MIDI or which may at most be handled
684     via MIDI System Exclusive Messages.
685     </p>
686     <a name="anchor4"></a><br /><hr />
687 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
688     <a name="rfc.section.5"></a><h3>5.&nbsp;
689     Communication Overview</h3>
690 senoner 542
691     <p>There are two distinct methods of communication between a
692     running instance of LinuxSampler and one or more control
693     applications, so called "front-ends": a simple request/response
694     communication method used by the clients to give commands to the
695     server as well as to inquire about server's status and a
696     subscribe/notify communication method used by the client to
697     subscribe to and receive notifications of certain events as they
698     happen on the server. The latter needs more effort to be
699     implemented in the front-end application. The two communication
700     methods will be described next.
701     </p>
702 schoenebeck 940 <a name="anchor5"></a><br /><hr />
703 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
704     <a name="rfc.section.5.1"></a><h3>5.1.&nbsp;
705     Request/response communication method</h3>
706 senoner 542
707 schoenebeck 575 <p>This simple communication method is based on
708 schoenebeck 974 <a class='info' href='#RFC793'>TCP<span> (</span><span class='info'>Defense Advanced Research Projects Agency, &ldquo;TRANSMISSION CONTROL PROTOCOL,&rdquo; 1981.</span><span>)</span></a> [RFC793]. The
709 senoner 542 front-end application establishes a TCP connection to the
710     LinuxSampler instance on a certain host system. Then the
711     front-end application will send certain ASCII based commands
712     as defined in this document (every command line must be CRLF
713     terminated - see "Conventions used in this document" at the
714     beginning of this document) and the LinuxSampler application
715     will response after a certain process time with an
716     appropriate ASCII based answer, also as defined in this
717     document. So this TCP communication is simply based on query
718     and answer paradigm. That way LinuxSampler is only able to
719     answer on queries from front-ends, but not able to
720     automatically send messages to the client if it's not asked
721     to. The fronted should not reconnect to LinuxSampler for
722     every single command, instead it should keep the connection
723     established and simply resend message(s) for subsequent
724     commands. To keep information in the front-end up-to-date
725     the front-end has to periodically send new requests to get
726     the current information from the LinuxSampler instance. This
727     is often referred to as "polling". While polling is simple
728     to implement and may be OK to use in some cases, there may
729     be disadvantages to polling such as network traffic overhead
730     and information being out of date.
731     It is possible for a client or several clients to open more
732     than one connection to the server at the same time. It is
733     also possible to send more than one request to the server
734     at the same time but if those requests are sent over the
735     same connection server MUST execute them sequentially. Upon
736     executing a request server will produce a result set and
737     send it to the client. Each and every request made by the
738     client MUST result in a result set being sent back to the
739     client. No other data other than a result set may be sent by
740     a server to a client. No result set may be sent to a client
741     without the client sending request to the server first. On
742     any particular connection, result sets MUST be sent in their
743     entirety without being interrupted by other result sets. If
744     several requests got queued up at the server they MUST be
745     processed in the order they were received and result sets
746     MUST be sent back in the same order.
747     </p>
748 schoenebeck 940 <a name="anchor6"></a><br /><hr />
749 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
750     <a name="rfc.section.5.1.1"></a><h3>5.1.1.&nbsp;
751     Result format</h3>
752 senoner 542
753     <p>Result set could be one of the following types:
754     </p>
755 schoenebeck 708 <p>
756     </p>
757 senoner 542 <ol class="text">
758     <li>Normal
759     </li>
760     <li>Warning
761     </li>
762     <li>Error
763     </li>
764 schoenebeck 708 </ol><p>
765 schoenebeck 940
766 schoenebeck 708 </p>
767 senoner 542 <p>Warning and Error result sets MUST be single line and
768     have the following format:
769     </p>
770 schoenebeck 708 <p>
771     </p>
772 senoner 542 <ul class="text">
773     <li>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;"
774     </li>
775     <li>"ERR:&lt;error-code&gt;:&lt;error-message&gt;"
776     </li>
777 schoenebeck 708 </ul><p>
778 schoenebeck 940
779 schoenebeck 708 </p>
780 senoner 542 <p>Where &lt;warning-code&gt; and &lt;error-code&gt; are
781     numeric unique identifiers of the warning or error and
782     &lt;warning-message&gt; and &lt;error-message&gt; are
783     human readable descriptions of the warning or error
784     respectively.
785     </p>
786     <p>Examples:
787     </p>
788 schoenebeck 708 <p>
789     </p>
790 senoner 542 <blockquote class="text">
791     <p>C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
792     </p>
793     <p>S: "WRN:32:This is a 24 bit patch which is not supported natively yet."
794     </p>
795 schoenebeck 708 </blockquote><p>
796 schoenebeck 940
797 schoenebeck 708 </p>
798     <p>
799     </p>
800 senoner 542 <blockquote class="text">
801     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
802     </p>
803     <p>S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter 'EAR'."
804     </p>
805 schoenebeck 708 </blockquote><p>
806 schoenebeck 940
807 schoenebeck 708 </p>
808     <p>
809     </p>
810 senoner 542 <blockquote class="text">
811     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
812     </p>
813     <p>S: "ERR:9:There is no audio output device with index 123456."
814     </p>
815 schoenebeck 708 </blockquote><p>
816 schoenebeck 940
817 schoenebeck 708 </p>
818 senoner 542 <p>Normal result sets could be:
819     </p>
820 schoenebeck 708 <p>
821     </p>
822 senoner 542 <ol class="text">
823     <li>Empty
824     </li>
825     <li>Single line
826     </li>
827     <li>Multi-line
828     </li>
829 schoenebeck 708 </ol><p>
830 schoenebeck 940
831 schoenebeck 708 </p>
832 senoner 542 <p> Empty result set is issued when the server only
833     needed to acknowledge the fact that the request was
834     received and it was processed successfully and no
835     additional information is available. This result set has
836     the following format:
837     </p>
838 schoenebeck 708 <p>
839     </p>
840 senoner 542 <blockquote class="text">
841     <p>"OK"
842     </p>
843 schoenebeck 708 </blockquote><p>
844 schoenebeck 940
845 schoenebeck 708 </p>
846 senoner 542 <p>Example:
847     </p>
848 schoenebeck 708 <p>
849     </p>
850 senoner 542 <blockquote class="text">
851     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
852     </p>
853     <p>S: "OK"
854     </p>
855 schoenebeck 708 </blockquote><p>
856 schoenebeck 940
857 schoenebeck 708 </p>
858 senoner 542 <p>Single line result sets are command specific. One
859     example of a single line result set is an empty line.
860     Multi-line result sets are command specific and may
861     include one or more lines of information. They MUST
862     always end with the following line:
863     </p>
864 schoenebeck 708 <p>
865     </p>
866 senoner 542 <blockquote class="text">
867     <p>"."
868     </p>
869 schoenebeck 708 </blockquote><p>
870 schoenebeck 940
871 schoenebeck 708 </p>
872 senoner 542 <p>Example:
873     </p>
874 schoenebeck 708 <p>
875     </p>
876 senoner 542 <blockquote class="text">
877     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
878     </p>
879     <p>S: "DRIVER: ALSA"
880     </p>
881     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
882     </p>
883     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
884     </p>
885     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
886     </p>
887     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
888     </p>
889     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
890     </p>
891     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
892     </p>
893     <p>&nbsp;&nbsp;&nbsp;"."
894     </p>
895 schoenebeck 708 </blockquote><p>
896 schoenebeck 940
897 schoenebeck 708 </p>
898 senoner 542 <p>In addition to above mentioned formats, warnings and
899     empty result sets MAY be indexed. In this case, they
900     have the following formats respectively:
901     </p>
902 schoenebeck 708 <p>
903     </p>
904 senoner 542 <ul class="text">
905     <li>"WRN[&lt;index&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;"
906     </li>
907     <li>"OK[&lt;index&gt;]"
908     </li>
909 schoenebeck 708 </ul><p>
910 schoenebeck 940
911 schoenebeck 708 </p>
912 senoner 542 <p>where &lt;index&gt; is command specific and is used
913     to indicate channel number that the result set was
914     related to or other integer value.
915     </p>
916     <p>Each line of the result set MUST end with
917     &lt;CRLF&gt;.
918     </p>
919     <p>Examples:
920     </p>
921 schoenebeck 708 <p>
922     </p>
923 senoner 542 <blockquote class="text">
924     <p>C: "ADD CHANNEL"
925     </p>
926     <p>S: "OK[12]"
927     </p>
928 schoenebeck 708 </blockquote><p>
929 schoenebeck 940
930 schoenebeck 708 </p>
931     <p>
932     </p>
933 senoner 542 <blockquote class="text">
934     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
935     </p>
936     <p>S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
937     </p>
938 schoenebeck 708 </blockquote><p>
939 schoenebeck 940
940 schoenebeck 708 </p>
941 schoenebeck 940 <a name="anchor7"></a><br /><hr />
942 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
943     <a name="rfc.section.5.2"></a><h3>5.2.&nbsp;
944     Subscribe/notify communication method</h3>
945 senoner 542
946     <p>This more sophisticated communication method is actually
947     only an extension of the simple request/response
948     communication method. The front-end still uses a TCP
949     connection and sends the same commands on the TCP
950     connection. Two extra commands are SUBSCRIBE and UNSUBSCRIBE
951     commands that allow a client to tell the server that it is
952     interested in receiving notifications about certain events
953     as they happen on the server. The SUBSCRIBE command has the
954     following syntax:
955     </p>
956 schoenebeck 708 <p>
957     </p>
958 senoner 542 <blockquote class="text">
959     <p>SUBSCRIBE &lt;event-id&gt;
960     </p>
961 schoenebeck 708 </blockquote><p>
962 schoenebeck 940
963 schoenebeck 708 </p>
964 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective
965     event that client wants to subscribe to. Upon receiving such
966     request, server SHOULD respond with OK and start sending
967     EVENT notifications when a given even has occurred to the
968     front-end when an event has occurred. It MAY be possible
969     certain events may be sent before OK response during real
970     time nature of their generation. Event messages have the
971     following format:
972     </p>
973 schoenebeck 708 <p>
974     </p>
975 senoner 542 <blockquote class="text">
976     <p>NOTIFY:&lt;event-id&gt;:&lt;custom-event-data&gt;
977     </p>
978 schoenebeck 708 </blockquote><p>
979 schoenebeck 940
980 schoenebeck 708 </p>
981 senoner 542 <p>where &lt;event-id&gt; uniquely identifies the event that
982     has occurred and &lt;custom-event-data&gt; is event
983     specific.
984     </p>
985     <p>Several rules must be followed by the server when
986     generating events:
987     </p>
988 schoenebeck 708 <p>
989     </p>
990 senoner 542 <ol class="text">
991     <li>Events MUST NOT be sent to any client who has not
992     issued an appropriate SUBSCRIBE command.
993     </li>
994     <li>Events MUST only be sent using the same
995     connection that was used to subscribe to them.
996     </li>
997     <li>When response is being sent to the client, event
998     MUST be inserted in the stream before or after the
999     response, but NOT in the middle. Same is true about
1000     the response. It should never be inserted in the
1001     middle of the event message as well as any other
1002     response.
1003     </li>
1004 schoenebeck 708 </ol><p>
1005 schoenebeck 940
1006 schoenebeck 708 </p>
1007 senoner 542 <p>If the client is not interested in a particular event
1008     anymore it MAY issue UNSUBSCRIBE command using the following
1009     syntax:
1010     </p>
1011 schoenebeck 708 <p>
1012     </p>
1013 senoner 542 <blockquote class="text">
1014     <p>UNSUBSCRIBE &lt;event-id&gt;
1015     </p>
1016 schoenebeck 708 </blockquote><p>
1017 schoenebeck 940
1018 schoenebeck 708 </p>
1019 senoner 542 <p>where &lt;event-id&gt; will be replace by the respective
1020     event that client is no longer interested in receiving. For
1021 schoenebeck 974 a list of supported events see <a class='info' href='#events'>Section&nbsp;8<span> (</span><span class='info'>Events</span><span>)</span></a>.
1022 senoner 542 </p>
1023     <p>Example: the fill states of disk stream buffers have
1024     changed on sampler channel 4 and the LinuxSampler instance
1025     will react by sending the following message to all clients
1026     who subscribed to this event:
1027     </p>
1028 schoenebeck 708 <p>
1029     </p>
1030 senoner 542 <blockquote class="text">
1031     <p>NOTIFY:CHANNEL_BUFFER_FILL:4 [35]62%,[33]80%,[37]98%
1032     </p>
1033 schoenebeck 708 </blockquote><p>
1034 schoenebeck 940
1035 schoenebeck 708 </p>
1036 senoner 542 <p>Which means there are currently three active streams on
1037     sampler channel 4, where the stream with ID "35" is filled
1038     by 62%, stream with ID 33 is filled by 80% and stream with
1039     ID 37 is filled by 98%.
1040     </p>
1041     <p>Clients may choose to open more than one connection to
1042     the server and use some connections to receive notifications
1043     while using other connections to issue commands to the
1044     back-end. This is entirely legal and up to the
1045     implementation. This does not change the protocol in any way
1046     and no special restrictions exist on the server to allow or
1047     disallow this or to track what connections belong to what
1048     front-ends. Server will listen on a single port, accept
1049     multiple connections and support protocol described in this
1050     specification in it's entirety on this single port on each
1051     connection that it accepted.
1052     </p>
1053     <p>Due to the fact that TCP is used for this communication,
1054     dead peers will be detected automatically by the OS TCP
1055     stack. While it may take a while to detect dead peers if no
1056     traffic is being sent from server to client (TCP keep-alive
1057     timer is set to 2 hours on many OSes) it will not be an
1058     issue here as when notifications are sent by the server,
1059     dead client will be detected quickly.
1060     </p>
1061     <p>When connection is closed for any reason server MUST
1062     forget all subscriptions that were made on this connection.
1063     If client reconnects it MUST resubscribe to all events that
1064     it wants to receive.
1065     </p>
1066 schoenebeck 575 <a name="control_commands"></a><br /><hr />
1067 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1068     <a name="rfc.section.6"></a><h3>6.&nbsp;
1069     Description for control commands</h3>
1070 senoner 542
1071     <p>This chapter will describe the available control commands
1072     that can be sent on the TCP connection in detail. Some certain
1073 schoenebeck 974 commands (e.g. <a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
1074     or <a class='info' href='#GET ENGINE INFO'>"GET ENGINE INFO"<span> (</span><span class='info'>Getting information about an engine</span><span>)</span></a>) lead to
1075 senoner 542 multiple-line responses. In this case LinuxSampler signals the
1076     end of the response by a "." (single dot) line.
1077     </p>
1078 schoenebeck 940 <a name="anchor8"></a><br /><hr />
1079 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1080     <a name="rfc.section.6.1"></a><h3>6.1.&nbsp;
1081     Ignored lines and comments</h3>
1082 senoner 542
1083     <p>White lines, that is lines which only contain space and
1084     tabulator characters, and lines that start with a "#"
1085     character are ignored, thus it's possible for example to
1086     group commands and to place comments in a LSCP script
1087     file.
1088     </p>
1089 schoenebeck 940 <a name="anchor9"></a><br /><hr />
1090 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1091     <a name="rfc.section.6.2"></a><h3>6.2.&nbsp;
1092     Configuring audio drivers</h3>
1093 senoner 542
1094     <p>Instances of drivers in LinuxSampler are called devices.
1095     You can use multiple audio devices simultaneously, e.g. to
1096     output the sound of one sampler channel using the ALSA audio
1097     output driver, and on another sampler channel you might want
1098     to use the JACK audio output driver. For particular audio
1099     output systems it's also possible to create several devices
1100     of the same audio output driver, e.g. two separate ALSA
1101     audio output devices for using two different sound cards at
1102     the same time. This chapter describes all commands to
1103     configure LinuxSampler's audio output devices and their
1104     parameters.
1105     </p>
1106     <p>Instead of defining commands and parameters for each
1107     driver individually, all possible parameters, their meanings
1108     and possible values have to be obtained at runtime. This
1109     makes the protocol a bit abstract, but has the advantage,
1110     that front-ends can be written independently of what drivers
1111     are currently implemented and what parameters these drivers
1112     are actually offering. This means front-ends can even handle
1113     drivers which are implemented somewhere in future without
1114     modifying the front-end at all.
1115     </p>
1116     <p>Note: examples in this chapter showing particular
1117     parameters of drivers are not meant as specification of the
1118     drivers' parameters. Driver implementations in LinuxSampler
1119     might have complete different parameter names and meanings
1120     than shown in these examples or might change in future, so
1121     these examples are only meant for showing how to retrieve
1122     what parameters drivers are offering, how to retrieve their
1123     possible values, etc.
1124     </p>
1125 schoenebeck 940 <a name="GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1126 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1127     <a name="rfc.section.6.2.1"></a><h3>6.2.1.&nbsp;
1128     Getting amount of available audio output drivers</h3>
1129 senoner 542
1130     <p>Use the following command to get the number of
1131     audio output drivers currently available for the
1132     LinuxSampler instance:
1133     </p>
1134 schoenebeck 708 <p>
1135     </p>
1136 senoner 542 <blockquote class="text">
1137     <p>GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
1138     </p>
1139 schoenebeck 708 </blockquote><p>
1140 schoenebeck 940
1141 schoenebeck 708 </p>
1142 senoner 542 <p>Possible Answers:
1143     </p>
1144 schoenebeck 708 <p>
1145     </p>
1146 senoner 542 <blockquote class="text">
1147     <p>LinuxSampler will answer by sending the
1148     number of audio output drivers.
1149     </p>
1150 schoenebeck 708 </blockquote><p>
1151 schoenebeck 940
1152 schoenebeck 708 </p>
1153 senoner 542 <p>Example:
1154     </p>
1155 schoenebeck 708 <p>
1156     </p>
1157 senoner 542 <blockquote class="text">
1158     <p>C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1159     </p>
1160     <p>S: "2"
1161     </p>
1162 schoenebeck 708 </blockquote><p>
1163 schoenebeck 940
1164 schoenebeck 708 </p>
1165 schoenebeck 940 <a name="LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"></a><br /><hr />
1166 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1167     <a name="rfc.section.6.2.2"></a><h3>6.2.2.&nbsp;
1168     Getting all available audio output drivers</h3>
1169 senoner 542
1170     <p>Use the following command to list all audio output
1171     drivers currently available for the LinuxSampler
1172     instance:
1173     </p>
1174 schoenebeck 708 <p>
1175     </p>
1176 senoner 542 <blockquote class="text">
1177     <p>LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS
1178     </p>
1179 schoenebeck 708 </blockquote><p>
1180 schoenebeck 940
1181 schoenebeck 708 </p>
1182 senoner 542 <p>Possible Answers:
1183     </p>
1184 schoenebeck 708 <p>
1185     </p>
1186 senoner 542 <blockquote class="text">
1187     <p>LinuxSampler will answer by sending comma
1188     separated character strings, each symbolizing an
1189     audio output driver.
1190     </p>
1191 schoenebeck 708 </blockquote><p>
1192 schoenebeck 940
1193 schoenebeck 708 </p>
1194 senoner 542 <p>Example:
1195     </p>
1196 schoenebeck 708 <p>
1197     </p>
1198 senoner 542 <blockquote class="text">
1199     <p>C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
1200     </p>
1201     <p>S: "ALSA,JACK"
1202     </p>
1203 schoenebeck 708 </blockquote><p>
1204 schoenebeck 940
1205 schoenebeck 708 </p>
1206 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER INFO"></a><br /><hr />
1207 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1208     <a name="rfc.section.6.2.3"></a><h3>6.2.3.&nbsp;
1209     Getting information about a specific audio
1210 schoenebeck 940 output driver</h3>
1211 senoner 542
1212     <p>Use the following command to get detailed information
1213     about a specific audio output driver:
1214     </p>
1215 schoenebeck 708 <p>
1216     </p>
1217 senoner 542 <blockquote class="text">
1218     <p>GET AUDIO_OUTPUT_DRIVER INFO
1219     &lt;audio-output-driver&gt;
1220     </p>
1221 schoenebeck 708 </blockquote><p>
1222 schoenebeck 940
1223 schoenebeck 708 </p>
1224 senoner 542 <p>Where &lt;audio-output-driver&gt; is the name of the
1225     audio output driver, returned by the
1226 schoenebeck 974 <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a> command.
1227 senoner 542 </p>
1228     <p>Possible Answers:
1229     </p>
1230 schoenebeck 708 <p>
1231     </p>
1232 senoner 542 <blockquote class="text">
1233     <p>LinuxSampler will answer by sending a
1234     &lt;CRLF&gt; separated list. Each answer line
1235     begins with the information category name
1236     followed by a colon and then a space character
1237     &lt;SP&gt; and finally the info character string
1238     to that info category. At the moment the
1239     following information categories are
1240     defined:
1241     </p>
1242 schoenebeck 708 <p>
1243     </p>
1244 senoner 542 <blockquote class="text">
1245     <p>DESCRIPTION -
1246     </p>
1247     <blockquote class="text">
1248     <p> character string describing the
1249     audio output driver
1250     </p>
1251 schoenebeck 940 </blockquote>
1252    
1253 senoner 542
1254     <p>VERSION -
1255     </p>
1256     <blockquote class="text">
1257     <p>character string reflecting the
1258     driver's version
1259     </p>
1260 schoenebeck 940 </blockquote>
1261    
1262 senoner 542
1263     <p>PARAMETERS -
1264     </p>
1265     <blockquote class="text">
1266     <p>comma separated list of all
1267     parameters available for the given
1268     audio output driver, at least
1269     parameters 'channels', 'samplerate'
1270     and 'active' are offered by all audio
1271     output drivers
1272     </p>
1273 schoenebeck 940 </blockquote>
1274    
1275 senoner 542
1276 schoenebeck 940 </blockquote>
1277    
1278 senoner 542
1279     <p>The mentioned fields above don't have to be
1280     in particular order.
1281     </p>
1282 schoenebeck 708 </blockquote><p>
1283 schoenebeck 940
1284 schoenebeck 708 </p>
1285 senoner 542 <p>Example:
1286     </p>
1287 schoenebeck 708 <p>
1288     </p>
1289 senoner 542 <blockquote class="text">
1290     <p>C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
1291     </p>
1292     <p>S: "DESCRIPTION: Advanced Linux Sound
1293     Architecture"
1294     </p>
1295     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
1296     </p>
1297     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS:
1298     DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
1299     FRAGMENTSIZE,CARD"
1300     </p>
1301     <p>&nbsp;&nbsp;&nbsp;"."
1302     </p>
1303 schoenebeck 708 </blockquote><p>
1304 schoenebeck 940
1305 schoenebeck 708 </p>
1306 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
1307 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1308     <a name="rfc.section.6.2.4"></a><h3>6.2.4.&nbsp;
1309     Getting information about specific audio
1310 schoenebeck 940 output driver parameter</h3>
1311 senoner 542
1312     <p>Use the following command to get detailed information
1313     about a specific audio output driver parameter:
1314     </p>
1315 schoenebeck 708 <p>
1316     </p>
1317 senoner 542 <blockquote class="text">
1318     <p>GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO &lt;audio&gt; &lt;prm&gt; [&lt;deplist&gt;]
1319     </p>
1320 schoenebeck 708 </blockquote><p>
1321 schoenebeck 940
1322 schoenebeck 708 </p>
1323 senoner 542 <p>Where &lt;audio&gt; is the name of the audio output
1324 schoenebeck 974 driver as returned by the <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a> command,
1325 senoner 542 &lt;prm&gt; a specific parameter name for which information should be
1326     obtained (as returned by the
1327 schoenebeck 974 <a class='info' href='#GET AUDIO_OUTPUT_DRIVER INFO'>"GET AUDIO_OUTPUT_DRIVER INFO"<span> (</span><span class='info'>Getting information about a specific audio output driver</span><span>)</span></a> command) and
1328 senoner 542 &lt;deplist&gt; is an optional list of parameters on which the sought
1329     parameter &lt;prm&gt; depends on, &lt;deplist&gt; is a list of key-value
1330     pairs in form of "key1=val1 key2=val2 ...", where character string values
1331     are encapsulated into apostrophes ('). Arguments given with &lt;deplist&gt;
1332     which are not dependency parameters of &lt;prm&gt; will be ignored, means
1333     the front-end application can simply put all parameters into &lt;deplist&gt;
1334     with the values already selected by the user.
1335     </p>
1336     <p>Possible Answers:
1337     </p>
1338 schoenebeck 708 <p>
1339     </p>
1340 senoner 542 <blockquote class="text">
1341     <p>LinuxSampler will answer by sending a
1342     &lt;CRLF&gt; separated list.
1343     Each answer line begins with the information category name
1344     followed by a colon and then a space character &lt;SP&gt; and
1345     finally
1346     the info character string to that info category. There are
1347     information which is always returned, independently of the
1348     given driver parameter and there are optional information
1349     which is only shown dependently to given driver parameter. At
1350     the moment the following information categories are defined:
1351     </p>
1352 schoenebeck 708 </blockquote><p>
1353 schoenebeck 940
1354 schoenebeck 708 </p>
1355     <p>
1356     </p>
1357 senoner 542 <blockquote class="text">
1358     <p>TYPE -
1359     </p>
1360     <blockquote class="text">
1361     <p>either "BOOL" for boolean value(s) or
1362     "INT" for integer
1363     value(s) or "FLOAT" for dotted number(s) or "STRING" for
1364     character string(s)
1365     (always returned, no matter which driver parameter)
1366     </p>
1367 schoenebeck 940 </blockquote>
1368    
1369 senoner 542
1370     <p>DESCRIPTION -
1371     </p>
1372     <blockquote class="text">
1373     <p>arbitrary text describing the purpose of the parameter
1374     (always returned, no matter which driver parameter)
1375     </p>
1376 schoenebeck 940 </blockquote>
1377    
1378 senoner 542
1379     <p>MANDATORY -
1380     </p>
1381     <blockquote class="text">
1382     <p>either true or false, defines if this parameter must be
1383     given when the device is to be created with the
1384 schoenebeck 974 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1385 senoner 542 command (always returned, no matter which driver parameter)
1386     </p>
1387 schoenebeck 940 </blockquote>
1388    
1389 senoner 542
1390     <p>FIX -
1391     </p>
1392     <blockquote class="text">
1393     <p>either true or false, if false then this parameter can
1394     be changed at any time, once the device is created by
1395 schoenebeck 974 the <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1396 senoner 542 command (always returned, no matter which driver parameter)
1397     </p>
1398 schoenebeck 940 </blockquote>
1399    
1400 senoner 542
1401     <p>MULTIPLICITY -
1402     </p>
1403     <blockquote class="text">
1404     <p>either true or false, defines if this parameter allows
1405     only one value or a list of values, where true means
1406     multiple values and false only a single value allowed
1407     (always returned, no matter which driver parameter)
1408     </p>
1409 schoenebeck 940 </blockquote>
1410    
1411 senoner 542
1412     <p>DEPENDS -
1413     </p>
1414     <blockquote class="text">
1415 schoenebeck 561 <p>comma separated list of parameters this parameter depends
1416 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
1417     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
1418     listed parameters, for example assuming that an audio
1419     driver (like the ALSA driver) offers parameters 'card'
1420     and 'samplerate' then parameter 'samplerate' would
1421     depend on 'card' because the possible values for
1422     'samplerate' depends on the sound card which can be
1423     chosen by the 'card' parameter
1424     (optionally returned, dependent to driver parameter)
1425     </p>
1426 schoenebeck 940 </blockquote>
1427    
1428 senoner 542
1429     <p>DEFAULT -
1430     </p>
1431     <blockquote class="text">
1432     <p>reflects the default value for this parameter which is
1433     used when the device is created and not explicitly
1434 schoenebeck 974 given with the <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>'CREATE AUDIO_OUTPUT_DEVICE'<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a> command,
1435 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
1436     list, that's why character strings are encapsulated into
1437     apostrophes (')
1438     (optionally returned, dependent to driver parameter)
1439     </p>
1440 schoenebeck 940 </blockquote>
1441    
1442 senoner 542
1443     <p>RANGE_MIN -
1444     </p>
1445     <blockquote class="text">
1446     <p>defines lower limit of the allowed value range for this
1447     parameter, can be an integer value as well as a dotted
1448     number, this parameter is often used in conjunction
1449     with RANGE_MAX, but may also appear without
1450     (optionally returned, dependent to driver parameter)
1451     </p>
1452 schoenebeck 940 </blockquote>
1453    
1454 senoner 542
1455     <p>RANGE_MAX -
1456     </p>
1457     <blockquote class="text">
1458     <p>defines upper limit of the allowed value range for this
1459     parameter, can be an integer value as well as a dotted
1460     number, this parameter is often used in conjunction with
1461     RANGE_MIN, but may also appear without
1462     (optionally returned, dependent to driver parameter)
1463     </p>
1464 schoenebeck 940 </blockquote>
1465    
1466 senoner 542
1467     <p>POSSIBILITIES -
1468     </p>
1469     <blockquote class="text">
1470     <p>comma separated list of possible values for this
1471     parameter, character strings are encapsulated into
1472     apostrophes
1473     (optionally returned, dependent to driver parameter)
1474     </p>
1475 schoenebeck 940 </blockquote>
1476    
1477 senoner 542
1478 schoenebeck 708 </blockquote><p>
1479 schoenebeck 940
1480 schoenebeck 708 </p>
1481 senoner 542 <p>The mentioned fields above don't have to be in particular order.
1482     </p>
1483     <p>Examples:
1484     </p>
1485 schoenebeck 708 <p>
1486     </p>
1487 senoner 542 <blockquote class="text">
1488     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
1489     </p>
1490     <p>S: "DESCRIPTION: sound card to be used"
1491     </p>
1492     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
1493     </p>
1494     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1495     </p>
1496     <p>&nbsp;&nbsp;&nbsp;"FIX: true"
1497     </p>
1498     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1499     </p>
1500     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: '0,0'"
1501     </p>
1502     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '0,0','1,0','2,0'"
1503     </p>
1504     <p>&nbsp;&nbsp;&nbsp;"."
1505     </p>
1506 schoenebeck 708 </blockquote><p>
1507 schoenebeck 940
1508 schoenebeck 708 </p>
1509     <p>
1510     </p>
1511 senoner 542 <blockquote class="text">
1512     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
1513     </p>
1514     <p>S: "DESCRIPTION: output sample rate in Hz"
1515     </p>
1516     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1517     </p>
1518     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1519     </p>
1520     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1521     </p>
1522     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1523     </p>
1524     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1525     </p>
1526     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1527     </p>
1528     <p>&nbsp;&nbsp;&nbsp;"."
1529     </p>
1530 schoenebeck 708 </blockquote><p>
1531 schoenebeck 940
1532 schoenebeck 708 </p>
1533     <p>
1534     </p>
1535 senoner 542 <blockquote class="text">
1536     <p>C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE CARD='0,0'"
1537     </p>
1538     <p>S: "DESCRIPTION: output sample rate in Hz"
1539     </p>
1540     <p>&nbsp;&nbsp;&nbsp;"TYPE: INT"
1541     </p>
1542     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
1543     </p>
1544     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
1545     </p>
1546     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
1547     </p>
1548     <p>&nbsp;&nbsp;&nbsp;"DEPENDS: card"
1549     </p>
1550     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: 44100"
1551     </p>
1552     <p>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 22050"
1553     </p>
1554     <p>&nbsp;&nbsp;&nbsp;"RANGE_MAX: 96000"
1555     </p>
1556     <p>&nbsp;&nbsp;&nbsp;"."
1557     </p>
1558 schoenebeck 708 </blockquote><p>
1559 schoenebeck 940
1560 schoenebeck 708 </p>
1561 schoenebeck 940 <a name="CREATE AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1562 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1563     <a name="rfc.section.6.2.5"></a><h3>6.2.5.&nbsp;
1564     Creating an audio output device</h3>
1565 senoner 542
1566     <p>Use the following command to create a new audio output device for the desired audio output system:
1567     </p>
1568 schoenebeck 708 <p>
1569     </p>
1570 senoner 542 <blockquote class="text">
1571     <p>CREATE AUDIO_OUTPUT_DEVICE &lt;audio-output-driver&gt; [&lt;param-list&gt;]
1572     </p>
1573 schoenebeck 708 </blockquote><p>
1574 schoenebeck 940
1575 schoenebeck 708 </p>
1576 senoner 542 <p>Where &lt;audio-output-driver&gt; should be replaced by the desired audio
1577 schoenebeck 575 output system as returned by the
1578 schoenebeck 974 <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a>
1579 schoenebeck 575 command and &lt;param-list&gt; by an optional list of driver
1580 senoner 542 specific parameters in form of "key1=val1 key2=val2 ...", where
1581     character string values should be encapsulated into apostrophes (').
1582     Note that there might be drivers which require parameter(s) to be
1583     given with this command. Use the previously described commands in
1584     this chapter to get this information.
1585     </p>
1586     <p>Possible Answers:
1587     </p>
1588 schoenebeck 708 <p>
1589     </p>
1590 senoner 542 <blockquote class="text">
1591     <p>"OK[&lt;device-id&gt;]" -
1592     </p>
1593     <blockquote class="text">
1594     <p>in case the device was successfully created, where
1595     &lt;device-id&gt; is the numerical ID of the new device
1596     </p>
1597 schoenebeck 940 </blockquote>
1598    
1599 senoner 542
1600     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1601     </p>
1602     <blockquote class="text">
1603     <p>in case the device was created successfully, where
1604     &lt;device-id&gt; is the numerical ID of the new device, but there
1605     are noteworthy issue(s) related (e.g. sound card doesn't
1606     support given hardware parameters and the driver is using
1607     fall-back values), providing an appropriate warning code and
1608     warning message
1609     </p>
1610 schoenebeck 940 </blockquote>
1611    
1612 senoner 542
1613     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1614     </p>
1615     <blockquote class="text">
1616     <p>in case it failed, providing an appropriate error code and error message
1617     </p>
1618 schoenebeck 940 </blockquote>
1619    
1620 senoner 542
1621 schoenebeck 708 </blockquote><p>
1622 schoenebeck 940
1623 schoenebeck 708 </p>
1624 senoner 542 <p>Examples:
1625     </p>
1626 schoenebeck 708 <p>
1627     </p>
1628 senoner 542 <blockquote class="text">
1629     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1630     </p>
1631     <p>S: "OK[0]"
1632     </p>
1633 schoenebeck 708 </blockquote><p>
1634 schoenebeck 940
1635 schoenebeck 708 </p>
1636     <p>
1637     </p>
1638 senoner 542 <blockquote class="text">
1639     <p>C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1640     </p>
1641     <p>S: "OK[1]"
1642     </p>
1643 schoenebeck 708 </blockquote><p>
1644 schoenebeck 940
1645 schoenebeck 708 </p>
1646 schoenebeck 940 <a name="DESTROY AUDIO_OUTPUT_DEVICE"></a><br /><hr />
1647 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1648     <a name="rfc.section.6.2.6"></a><h3>6.2.6.&nbsp;
1649     Destroying an audio output device</h3>
1650 senoner 542
1651     <p>Use the following command to destroy a created output device:
1652     </p>
1653 schoenebeck 708 <p>
1654     </p>
1655 senoner 542 <blockquote class="text">
1656     <p>DESTROY AUDIO_OUTPUT_DEVICE &lt;device-id&gt;
1657     </p>
1658 schoenebeck 708 </blockquote><p>
1659 schoenebeck 940
1660 schoenebeck 708 </p>
1661 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1662     audio output device as given by the
1663 schoenebeck 974 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1664     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
1665 senoner 542 command.
1666     </p>
1667     <p>Possible Answers:
1668     </p>
1669 schoenebeck 708 <p>
1670     </p>
1671 senoner 542 <blockquote class="text">
1672     <p>"OK" -
1673     </p>
1674     <blockquote class="text">
1675     <p>in case the device was successfully destroyed
1676     </p>
1677 schoenebeck 940 </blockquote>
1678    
1679 senoner 542
1680     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1681     </p>
1682     <blockquote class="text">
1683     <p>in case the device was destroyed successfully, but there are
1684     noteworthy issue(s) related (e.g. an audio over ethernet
1685     driver was unloaded but the other host might not be
1686     informed about this situation), providing an appropriate
1687     warning code and warning message
1688     </p>
1689 schoenebeck 940 </blockquote>
1690    
1691 senoner 542
1692     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1693     </p>
1694     <blockquote class="text">
1695     <p>in case it failed, providing an appropriate error code and
1696     error message
1697     </p>
1698 schoenebeck 940 </blockquote>
1699    
1700 senoner 542
1701 schoenebeck 708 </blockquote><p>
1702 schoenebeck 940
1703 schoenebeck 708 </p>
1704 senoner 542 <p>Example:
1705     </p>
1706 schoenebeck 708 <p>
1707     </p>
1708 senoner 542 <blockquote class="text">
1709     <p>C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1710     </p>
1711     <p>S: "OK"
1712     </p>
1713 schoenebeck 708 </blockquote><p>
1714 schoenebeck 940
1715 schoenebeck 708 </p>
1716 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1717 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1718     <a name="rfc.section.6.2.7"></a><h3>6.2.7.&nbsp;
1719     Getting all created audio output device count</h3>
1720 senoner 542
1721     <p>Use the following command to count all created audio output devices:
1722     </p>
1723 schoenebeck 708 <p>
1724     </p>
1725 senoner 542 <blockquote class="text">
1726     <p>GET AUDIO_OUTPUT_DEVICES
1727     </p>
1728 schoenebeck 708 </blockquote><p>
1729 schoenebeck 940
1730 schoenebeck 708 </p>
1731 senoner 542 <p>Possible Answers:
1732     </p>
1733 schoenebeck 708 <p>
1734     </p>
1735 senoner 542 <blockquote class="text">
1736     <p>LinuxSampler will answer by sending the current number of all
1737     audio output devices.
1738     </p>
1739 schoenebeck 708 </blockquote><p>
1740 schoenebeck 940
1741 schoenebeck 708 </p>
1742 senoner 542 <p>Example:
1743     </p>
1744 schoenebeck 708 <p>
1745     </p>
1746 senoner 542 <blockquote class="text">
1747     <p>C: "GET AUDIO_OUTPUT_DEVICES"
1748     </p>
1749     <p>S: "4"
1750     </p>
1751 schoenebeck 708 </blockquote><p>
1752 schoenebeck 940
1753 schoenebeck 708 </p>
1754 schoenebeck 940 <a name="LIST AUDIO_OUTPUT_DEVICES"></a><br /><hr />
1755 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1756     <a name="rfc.section.6.2.8"></a><h3>6.2.8.&nbsp;
1757     Getting all created audio output device list</h3>
1758 senoner 542
1759     <p>Use the following command to list all created audio output devices:
1760     </p>
1761 schoenebeck 708 <p>
1762     </p>
1763 senoner 542 <blockquote class="text">
1764     <p>LIST AUDIO_OUTPUT_DEVICES
1765     </p>
1766 schoenebeck 708 </blockquote><p>
1767 schoenebeck 940
1768 schoenebeck 708 </p>
1769 senoner 542 <p>Possible Answers:
1770     </p>
1771 schoenebeck 708 <p>
1772     </p>
1773 senoner 542 <blockquote class="text">
1774     <p>LinuxSampler will answer by sending a comma separated list with
1775     the numerical IDs of all audio output devices.
1776     </p>
1777 schoenebeck 708 </blockquote><p>
1778 schoenebeck 940
1779 schoenebeck 708 </p>
1780 senoner 542 <p>Example:
1781     </p>
1782 schoenebeck 708 <p>
1783     </p>
1784 senoner 542 <blockquote class="text">
1785     <p>C: "LIST AUDIO_OUTPUT_DEVICES"
1786     </p>
1787     <p>S: "0,1,4,5"
1788     </p>
1789 schoenebeck 708 </blockquote><p>
1790 schoenebeck 940
1791 schoenebeck 708 </p>
1792 schoenebeck 940 <a name="GET AUDIO_OUTPUT_DEVICE INFO"></a><br /><hr />
1793 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1794     <a name="rfc.section.6.2.9"></a><h3>6.2.9.&nbsp;
1795     Getting current settings of an audio output device</h3>
1796 senoner 542
1797     <p>Use the following command to get current settings of a specific, created audio output device:
1798     </p>
1799 schoenebeck 708 <p>
1800     </p>
1801 senoner 542 <blockquote class="text">
1802     <p>GET AUDIO_OUTPUT_DEVICE INFO &lt;device-id&gt;
1803     </p>
1804 schoenebeck 708 </blockquote><p>
1805 schoenebeck 940
1806 schoenebeck 708 </p>
1807 senoner 542 <p>Where &lt;device-id&gt; should be replaced by numerical ID
1808     of the audio output device as e.g. returned by the
1809 schoenebeck 974 <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a> command.
1810 senoner 542 </p>
1811     <p>Possible Answers:
1812     </p>
1813     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1814     Each answer line begins with the information category name
1815     followed by a colon and then a space character &lt;SP&gt; and finally
1816     the info character string to that info category. As some
1817     parameters might allow multiple values, character strings are
1818     encapsulated into apostrophes ('). At the moment the following
1819     information categories are defined (independently of device):
1820     </p>
1821 schoenebeck 708 <p>
1822     </p>
1823 senoner 542 <blockquote class="text">
1824     <p>DRIVER -
1825     </p>
1826     <blockquote class="text">
1827     <p>identifier of the used audio output driver, as also
1828     returned by the
1829 schoenebeck 974 <a class='info' href='#LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS'>"LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"<span> (</span><span class='info'>Getting all available audio output drivers</span><span>)</span></a>
1830 senoner 542 command
1831     </p>
1832 schoenebeck 940 </blockquote>
1833    
1834 senoner 542
1835     <p>CHANNELS -
1836     </p>
1837     <blockquote class="text">
1838     <p>amount of audio output channels this device currently
1839     offers
1840     </p>
1841 schoenebeck 940 </blockquote>
1842    
1843 senoner 542
1844     <p>SAMPLERATE -
1845     </p>
1846     <blockquote class="text">
1847     <p>playback sample rate the device uses
1848     </p>
1849 schoenebeck 940 </blockquote>
1850    
1851 senoner 542
1852     <p>ACTIVE -
1853     </p>
1854     <blockquote class="text">
1855     <p>either true or false, if false then the audio device is
1856     inactive and doesn't output any sound, nor do the
1857     sampler channels connected to this audio device render
1858     any audio
1859     </p>
1860 schoenebeck 940 </blockquote>
1861    
1862 senoner 542
1863 schoenebeck 708 </blockquote><p>
1864 schoenebeck 940
1865 schoenebeck 708 </p>
1866 senoner 542 <p>The mentioned fields above don't have to be in particular
1867     order. The fields above are only those fields which are
1868     returned by all audio output devices. Every audio output driver
1869     might have its own, additional driver specific parameters (see
1870 schoenebeck 974 <a class='info' href='#GET AUDIO_OUTPUT_DRIVER INFO'>Section&nbsp;6.2.3<span> (</span><span class='info'>Getting information about a specific audio output driver</span><span>)</span></a>)
1871 senoner 542 which are also returned by this command.
1872     </p>
1873     <p>Example:
1874     </p>
1875 schoenebeck 708 <p>
1876     </p>
1877 senoner 542 <blockquote class="text">
1878     <p>C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1879     </p>
1880     <p>S: "DRIVER: ALSA"
1881     </p>
1882     <p>&nbsp;&nbsp;&nbsp;"CHANNELS: 2"
1883     </p>
1884     <p>&nbsp;&nbsp;&nbsp;"SAMPLERATE: 44100"
1885     </p>
1886     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
1887     </p>
1888     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTS: 2"
1889     </p>
1890     <p>&nbsp;&nbsp;&nbsp;"FRAGMENTSIZE: 128"
1891     </p>
1892     <p>&nbsp;&nbsp;&nbsp;"CARD: '0,0'"
1893     </p>
1894     <p>&nbsp;&nbsp;&nbsp;"."
1895     </p>
1896 schoenebeck 708 </blockquote><p>
1897 schoenebeck 940
1898 schoenebeck 708 </p>
1899 schoenebeck 940 <a name="SET AUDIO_OUTPUT_DEVICE_PARAMETER"></a><br /><hr />
1900 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1901     <a name="rfc.section.6.2.10"></a><h3>6.2.10.&nbsp;
1902     Changing settings of audio output devices</h3>
1903 senoner 542
1904     <p>Use the following command to alter a specific setting of a created audio output device:
1905     </p>
1906 schoenebeck 708 <p>
1907     </p>
1908 senoner 542 <blockquote class="text">
1909     <p>SET AUDIO_OUTPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
1910     </p>
1911 schoenebeck 708 </blockquote><p>
1912 schoenebeck 940
1913 schoenebeck 708 </p>
1914 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
1915 schoenebeck 575 audio output device as given by the
1916 schoenebeck 974 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1917     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
1918 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change
1919 senoner 542 and &lt;value&gt; by the new value for this parameter.
1920     </p>
1921     <p>Possible Answers:
1922     </p>
1923 schoenebeck 708 <p>
1924     </p>
1925 senoner 542 <blockquote class="text">
1926     <p>"OK" -
1927     </p>
1928     <blockquote class="text">
1929     <p>in case setting was successfully changed
1930     </p>
1931 schoenebeck 940 </blockquote>
1932    
1933 senoner 542
1934     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
1935     </p>
1936     <blockquote class="text">
1937     <p>in case setting was changed successfully, but there are
1938     noteworthy issue(s) related, providing an appropriate
1939     warning code and warning message
1940     </p>
1941 schoenebeck 940 </blockquote>
1942    
1943 senoner 542
1944     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
1945     </p>
1946     <blockquote class="text">
1947     <p>in case it failed, providing an appropriate error code and
1948     error message
1949     </p>
1950 schoenebeck 940 </blockquote>
1951    
1952 senoner 542
1953 schoenebeck 708 </blockquote><p>
1954 schoenebeck 940
1955 schoenebeck 708 </p>
1956 senoner 542 <p>Example:
1957     </p>
1958 schoenebeck 708 <p>
1959     </p>
1960 senoner 542 <blockquote class="text">
1961     <p>C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1962     </p>
1963     <p>S: "OK"
1964     </p>
1965 schoenebeck 708 </blockquote><p>
1966 schoenebeck 940
1967 schoenebeck 708 </p>
1968 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL INFO"></a><br /><hr />
1969 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
1970     <a name="rfc.section.6.2.11"></a><h3>6.2.11.&nbsp;
1971     Getting information about an audio channel</h3>
1972 senoner 542
1973     <p>Use the following command to get information about an audio channel:
1974     </p>
1975 schoenebeck 708 <p>
1976     </p>
1977 senoner 542 <blockquote class="text">
1978     <p>GET AUDIO_OUTPUT_CHANNEL INFO &lt;device-id&gt; &lt;audio-chan&gt;
1979     </p>
1980 schoenebeck 708 </blockquote><p>
1981 schoenebeck 940
1982 schoenebeck 708 </p>
1983 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the audio output device as given by the
1984 schoenebeck 974 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
1985     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
1986 schoenebeck 575 command and &lt;audio-chan&gt; the audio channel number.
1987 senoner 542 </p>
1988     <p>Possible Answers:
1989     </p>
1990 schoenebeck 708 <p>
1991     </p>
1992 senoner 542 <blockquote class="text">
1993     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
1994     Each answer line begins with the information category name
1995     followed by a colon and then a space character &lt;SP&gt; and finally
1996     the info character string to that info category. At the moment
1997     the following information categories are defined:
1998     </p>
1999 schoenebeck 708 <p>
2000     </p>
2001 senoner 542 <blockquote class="text">
2002     <p>NAME -
2003     </p>
2004     <blockquote class="text">
2005     <p>arbitrary character string naming the channel, which
2006     doesn't have to be unique (always returned by all audio channels)
2007     </p>
2008 schoenebeck 940 </blockquote>
2009    
2010 senoner 542
2011     <p>IS_MIX_CHANNEL -
2012     </p>
2013     <blockquote class="text">
2014     <p>either true or false, a mix-channel is not a real,
2015     independent audio channel, but a virtual channel which
2016     is mixed to another real channel, this mechanism is
2017     needed for sampler engines which need more audio
2018     channels than the used audio system might be able to offer
2019     (always returned by all audio channels)
2020     </p>
2021 schoenebeck 940 </blockquote>
2022    
2023 senoner 542
2024     <p>MIX_CHANNEL_DESTINATION -
2025     </p>
2026     <blockquote class="text">
2027     <p>numerical ID (positive integer including 0)
2028     which reflects the real audio channel (of the same audio
2029     output device) this mix channel refers to, means where
2030     the audio signal actually will be routed / added to
2031     (only returned in case the audio channel is mix channel)
2032     </p>
2033 schoenebeck 940 </blockquote>
2034    
2035 senoner 542
2036 schoenebeck 940 </blockquote>
2037    
2038 senoner 542
2039 schoenebeck 708 </blockquote><p>
2040 schoenebeck 940
2041 schoenebeck 708 </p>
2042 senoner 542 <p>The mentioned fields above don't have to be in particular
2043     order. The fields above are only those fields which are
2044     generally returned for the described cases by all audio
2045     channels regardless of the audio driver. Every audio channel
2046     might have its own, additional driver and channel specific
2047     parameters.
2048     </p>
2049     <p>Examples:
2050     </p>
2051 schoenebeck 708 <p>
2052     </p>
2053 senoner 542 <blockquote class="text">
2054     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
2055     </p>
2056     <p>S: "NAME: studio monitor left"
2057     </p>
2058     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2059     </p>
2060     <p>&nbsp;&nbsp;&nbsp;"."
2061     </p>
2062 schoenebeck 708 </blockquote><p>
2063 schoenebeck 940
2064 schoenebeck 708 </p>
2065     <p>
2066     </p>
2067 senoner 542 <blockquote class="text">
2068     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
2069     </p>
2070     <p>S: "NAME: studio monitor right"
2071     </p>
2072     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2073     </p>
2074     <p>&nbsp;&nbsp;&nbsp;"."
2075     </p>
2076 schoenebeck 708 </blockquote><p>
2077 schoenebeck 940
2078 schoenebeck 708 </p>
2079     <p>
2080     </p>
2081 senoner 542 <blockquote class="text">
2082     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
2083     </p>
2084     <p>S: "NAME: studio monitor left"
2085     </p>
2086     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: true"
2087     </p>
2088     <p>&nbsp;&nbsp;&nbsp;"MIX_CHANNEL_DESTINATION: 1"
2089     </p>
2090     <p>&nbsp;&nbsp;&nbsp;"."
2091     </p>
2092 schoenebeck 708 </blockquote><p>
2093 schoenebeck 940
2094 schoenebeck 708 </p>
2095     <p>
2096     </p>
2097 senoner 542 <blockquote class="text">
2098     <p>C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
2099     </p>
2100     <p>S: "NAME: 'ardour (left)'"
2101     </p>
2102     <p>&nbsp;&nbsp;&nbsp;"IS_MIX_CHANNEL: false"
2103     </p>
2104     <p>&nbsp;&nbsp;&nbsp;"JACK_BINDINGS: 'ardour:0'"
2105     </p>
2106     <p>&nbsp;&nbsp;&nbsp;"."
2107     </p>
2108 schoenebeck 708 </blockquote><p>
2109 schoenebeck 940
2110 schoenebeck 708 </p>
2111 schoenebeck 940 <a name="GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO"></a><br /><hr />
2112 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2113     <a name="rfc.section.6.2.12"></a><h3>6.2.12.&nbsp;
2114     Getting information about specific audio channel parameter</h3>
2115 senoner 542
2116     <p>Use the following command to get detailed information about specific audio channel parameter:
2117     </p>
2118 schoenebeck 708 <p>
2119     </p>
2120 senoner 542 <blockquote class="text">
2121     <p>GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO &lt;dev-id&gt; &lt;chan&gt; &lt;param&gt;
2122     </p>
2123 schoenebeck 708 </blockquote><p>
2124 schoenebeck 940
2125 schoenebeck 708 </p>
2126 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the audio output device as returned by the
2127 schoenebeck 974 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
2128     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
2129 senoner 542 command, &lt;chan&gt; the audio channel number
2130     and &lt;param&gt; a specific channel parameter name for which information should
2131 schoenebeck 974 be obtained (as returned by the <a class='info' href='#GET AUDIO_OUTPUT_CHANNEL INFO'>"GET AUDIO_OUTPUT_CHANNEL INFO"<span> (</span><span class='info'>Getting information about an audio channel</span><span>)</span></a> command).
2132 senoner 542 </p>
2133     <p>Possible Answers:
2134     </p>
2135 schoenebeck 708 <p>
2136     </p>
2137 senoner 542 <blockquote class="text">
2138     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2139     Each answer line begins with the information category name
2140     followed by a colon and then a space character &lt;SP&gt; and finally
2141     the info character string to that info category. There are
2142     information which is always returned, independently of the
2143     given channel parameter and there is optional information
2144     which is only shown dependently to the given audio channel. At
2145     the moment the following information categories are defined:
2146     </p>
2147 schoenebeck 708 <p>
2148     </p>
2149 senoner 542 <blockquote class="text">
2150     <p>TYPE -
2151     </p>
2152     <blockquote class="text">
2153     <p>either "BOOL" for boolean value(s) or "INT" for integer
2154     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2155     character string(s)
2156     (always returned)
2157     </p>
2158 schoenebeck 940 </blockquote>
2159    
2160 senoner 542
2161     <p>DESCRIPTION -
2162     </p>
2163     <blockquote class="text">
2164     <p>arbitrary text describing the purpose of the parameter (always returned)
2165     </p>
2166 schoenebeck 940 </blockquote>
2167    
2168 senoner 542
2169     <p>FIX -
2170     </p>
2171     <blockquote class="text">
2172     <p>either true or false, if true then this parameter is
2173     read only, thus cannot be altered
2174     (always returned)
2175     </p>
2176 schoenebeck 940 </blockquote>
2177    
2178 senoner 542
2179     <p>MULTIPLICITY -
2180     </p>
2181     <blockquote class="text">
2182     <p>either true or false, defines if this parameter allows
2183     only one value or a list of values, where true means
2184     multiple values and false only a single value allowed
2185     (always returned)
2186     </p>
2187 schoenebeck 940 </blockquote>
2188    
2189 senoner 542
2190     <p>RANGE_MIN -
2191     </p>
2192     <blockquote class="text">
2193     <p>defines lower limit of the allowed value range for this
2194     parameter, can be an integer value as well as a dotted
2195     number, usually used in conjunction with 'RANGE_MAX',
2196     but may also appear without
2197     (optionally returned, dependent to driver and channel
2198     parameter)
2199     </p>
2200 schoenebeck 940 </blockquote>
2201    
2202 senoner 542
2203     <p>RANGE_MAX -
2204     </p>
2205     <blockquote class="text">
2206     <p>defines upper limit of the allowed value range for this
2207     parameter, can be an integer value as well as a dotted
2208     number, usually used in conjunction with 'RANGE_MIN',
2209     but may also appear without
2210     (optionally returned, dependent to driver and channel
2211     parameter)
2212     </p>
2213 schoenebeck 940 </blockquote>
2214    
2215 senoner 542
2216     <p>POSSIBILITIES -
2217     </p>
2218     <blockquote class="text">
2219     <p>comma separated list of possible values for this
2220     parameter, character strings are encapsulated into
2221     apostrophes
2222     (optionally returned, dependent to driver and channel
2223     parameter)
2224     </p>
2225 schoenebeck 940 </blockquote>
2226    
2227 senoner 542
2228 schoenebeck 940 </blockquote>
2229    
2230 senoner 542
2231     <p>The mentioned fields above don't have to be in particular order.
2232     </p>
2233 schoenebeck 708 </blockquote><p>
2234 schoenebeck 940
2235 schoenebeck 708 </p>
2236 senoner 542 <p>Example:
2237     </p>
2238 schoenebeck 708 <p>
2239     </p>
2240 senoner 542 <blockquote class="text">
2241     <p>C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
2242     </p>
2243     <p>S: "DESCRIPTION: bindings to other JACK clients"
2244     </p>
2245     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
2246     </p>
2247     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2248     </p>
2249     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
2250     </p>
2251     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
2252     </p>
2253     <p>&nbsp;&nbsp;&nbsp;"."
2254     </p>
2255 schoenebeck 708 </blockquote><p>
2256 schoenebeck 940
2257 schoenebeck 708 </p>
2258 schoenebeck 940 <a name="SET AUDIO_OUTPUT_CHANNEL_PARAMETER"></a><br /><hr />
2259 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2260     <a name="rfc.section.6.2.13"></a><h3>6.2.13.&nbsp;
2261     Changing settings of audio output channels</h3>
2262 senoner 542
2263     <p>Use the following command to alter a specific setting of an audio output channel:
2264     </p>
2265 schoenebeck 708 <p>
2266     </p>
2267 senoner 542 <blockquote class="text">
2268     <p>SET AUDIO_OUTPUT_CHANNEL_PARAMETER &lt;dev-id&gt; &lt;chn&gt; &lt;key&gt;=&lt;value&gt;
2269     </p>
2270 schoenebeck 708 </blockquote><p>
2271 schoenebeck 940
2272 schoenebeck 708 </p>
2273 schoenebeck 575 <p>Where &lt;dev-id&gt; should be replaced by the numerical ID of the audio output device as returned by the
2274 schoenebeck 974 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
2275     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
2276 schoenebeck 575 command, &lt;chn&gt; by the audio channel number, &lt;key&gt; by the name of the
2277 senoner 542 parameter to change and &lt;value&gt; by the new value for this parameter.
2278     </p>
2279     <p>Possible Answers:
2280     </p>
2281 schoenebeck 708 <p>
2282     </p>
2283 senoner 542 <blockquote class="text">
2284     <p>"OK" -
2285     </p>
2286     <blockquote class="text">
2287     <p>in case setting was successfully changed
2288     </p>
2289 schoenebeck 940 </blockquote>
2290    
2291 senoner 542
2292     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2293     </p>
2294     <blockquote class="text">
2295     <p>in case setting was changed successfully, but there are
2296     noteworthy issue(s) related, providing an appropriate
2297     warning code and warning message
2298     </p>
2299 schoenebeck 940 </blockquote>
2300    
2301 senoner 542
2302     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2303     </p>
2304     <blockquote class="text">
2305     <p>in case it failed, providing an appropriate error code and
2306     error message
2307     </p>
2308 schoenebeck 940 </blockquote>
2309    
2310 senoner 542
2311 schoenebeck 708 </blockquote><p>
2312 schoenebeck 940
2313 schoenebeck 708 </p>
2314 senoner 542 <p>Example:
2315     </p>
2316 schoenebeck 708 <p>
2317     </p>
2318 senoner 542 <blockquote class="text">
2319     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
2320     </p>
2321     <p>S: "OK"
2322     </p>
2323 schoenebeck 708 </blockquote><p>
2324 schoenebeck 940
2325 schoenebeck 708 </p>
2326     <p>
2327     </p>
2328 senoner 542 <blockquote class="text">
2329     <p>C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
2330     </p>
2331     <p>S: "OK"
2332     </p>
2333 schoenebeck 708 </blockquote><p>
2334 schoenebeck 940
2335 schoenebeck 708 </p>
2336 schoenebeck 940 <a name="anchor10"></a><br /><hr />
2337 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2338     <a name="rfc.section.6.3"></a><h3>6.3.&nbsp;
2339     Configuring MIDI input drivers</h3>
2340 senoner 542
2341     <p>Instances of drivers in LinuxSampler are called devices. You can use
2342     multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet as
2343     MIDI input on one sampler channel and ALSA as MIDI input on another sampler
2344     channel. For particular MIDI input systems it's also possible to create
2345     several devices of the same MIDI input type. This chapter describes all
2346     commands to configure LinuxSampler's MIDI input devices and their parameters.
2347     </p>
2348     <p>Instead of defining commands and parameters for each driver individually,
2349     all possible parameters, their meanings and possible values have to be obtained
2350     at runtime. This makes the protocol a bit abstract, but has the advantage, that
2351     front-ends can be written independently of what drivers are currently implemented
2352     and what parameters these drivers are actually offering. This means front-ends can
2353     even handle drivers which are implemented somewhere in future without modifying
2354     the front-end at all.
2355     </p>
2356     <p>Commands for configuring MIDI input devices are pretty much the same as the
2357     commands for configuring audio output drivers, already described in the last
2358     chapter.
2359     </p>
2360     <p>Note: examples in this chapter showing particular parameters of drivers are
2361     not meant as specification of the drivers' parameters. Driver implementations in
2362     LinuxSampler might have complete different parameter names and meanings than shown
2363     in these examples or might change in future, so these examples are only meant for
2364     showing how to retrieve what parameters drivers are offering, how to retrieve their
2365     possible values, etc.
2366     </p>
2367 schoenebeck 940 <a name="GET AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2368 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2369     <a name="rfc.section.6.3.1"></a><h3>6.3.1.&nbsp;
2370     Getting amount of available MIDI input drivers</h3>
2371 senoner 542
2372     <p>Use the following command to get the number of
2373     MIDI input drivers currently available for the
2374     LinuxSampler instance:
2375     </p>
2376 schoenebeck 708 <p>
2377     </p>
2378 senoner 542 <blockquote class="text">
2379     <p>GET AVAILABLE_MIDI_INPUT_DRIVERS
2380     </p>
2381 schoenebeck 708 </blockquote><p>
2382 schoenebeck 940
2383 schoenebeck 708 </p>
2384 senoner 542 <p>Possible Answers:
2385     </p>
2386 schoenebeck 708 <p>
2387     </p>
2388 senoner 542 <blockquote class="text">
2389     <p>LinuxSampler will answer by sending the
2390     number of available MIDI input drivers.
2391     </p>
2392 schoenebeck 708 </blockquote><p>
2393 schoenebeck 940
2394 schoenebeck 708 </p>
2395 senoner 542 <p>Example:
2396     </p>
2397 schoenebeck 708 <p>
2398     </p>
2399 senoner 542 <blockquote class="text">
2400     <p>C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
2401     </p>
2402     <p>S: "2"
2403     </p>
2404 schoenebeck 708 </blockquote><p>
2405 schoenebeck 940
2406 schoenebeck 708 </p>
2407 schoenebeck 940 <a name="LIST AVAILABLE_MIDI_INPUT_DRIVERS"></a><br /><hr />
2408 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2409     <a name="rfc.section.6.3.2"></a><h3>6.3.2.&nbsp;
2410     Getting all available MIDI input drivers</h3>
2411 senoner 542
2412     <p>Use the following command to list all MIDI input drivers currently available
2413     for the LinuxSampler instance:
2414     </p>
2415 schoenebeck 708 <p>
2416     </p>
2417 senoner 542 <blockquote class="text">
2418     <p>LIST AVAILABLE_MIDI_INPUT_DRIVERS
2419     </p>
2420 schoenebeck 708 </blockquote><p>
2421 schoenebeck 940
2422 schoenebeck 708 </p>
2423 senoner 542 <p>Possible Answers:
2424     </p>
2425 schoenebeck 708 <p>
2426     </p>
2427 senoner 542 <blockquote class="text">
2428     <p>LinuxSampler will answer by sending comma separated character
2429     strings, each symbolizing a MIDI input driver.
2430     </p>
2431 schoenebeck 708 </blockquote><p>
2432 schoenebeck 940
2433 schoenebeck 708 </p>
2434 senoner 542 <p>Example:
2435     </p>
2436 schoenebeck 708 <p>
2437     </p>
2438 senoner 542 <blockquote class="text">
2439     <p>C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
2440     </p>
2441     <p>S: "ALSA,JACK"
2442     </p>
2443 schoenebeck 708 </blockquote><p>
2444 schoenebeck 940
2445 schoenebeck 708 </p>
2446 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER INFO"></a><br /><hr />
2447 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2448     <a name="rfc.section.6.3.3"></a><h3>6.3.3.&nbsp;
2449     Getting information about a specific MIDI input driver</h3>
2450 senoner 542
2451     <p>Use the following command to get detailed information about a specific MIDI input driver:
2452     </p>
2453 schoenebeck 708 <p>
2454     </p>
2455 senoner 542 <blockquote class="text">
2456     <p>GET MIDI_INPUT_DRIVER INFO &lt;midi-input-driver&gt;
2457     </p>
2458 schoenebeck 708 </blockquote><p>
2459 schoenebeck 940
2460 schoenebeck 708 </p>
2461 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; is the name of the MIDI input driver as returned
2462 schoenebeck 974 by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a> command.
2463 senoner 542 </p>
2464     <p>Possible Answers:
2465     </p>
2466 schoenebeck 708 <p>
2467     </p>
2468 senoner 542 <blockquote class="text">
2469     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2470     Each answer line begins with the information category name
2471     followed by a colon and then a space character &lt;SP&gt; and finally
2472     the info character string to that info category. At the moment
2473     the following information categories are defined:
2474     </p>
2475 schoenebeck 708 <p>
2476     </p>
2477 senoner 542 <blockquote class="text">
2478     <p>DESCRIPTION -
2479     </p>
2480     <blockquote class="text">
2481     <p>arbitrary description text about the MIDI input driver
2482     </p>
2483 schoenebeck 940 </blockquote>
2484    
2485 senoner 542
2486     <p>VERSION -
2487     </p>
2488     <blockquote class="text">
2489     <p>arbitrary character string regarding the driver's version
2490     </p>
2491 schoenebeck 940 </blockquote>
2492    
2493 senoner 542
2494     <p>PARAMETERS -
2495     </p>
2496     <blockquote class="text">
2497     <p>comma separated list of all parameters available for the given MIDI input driver
2498     </p>
2499 schoenebeck 940 </blockquote>
2500    
2501 senoner 542
2502 schoenebeck 940 </blockquote>
2503    
2504 senoner 542
2505     <p>The mentioned fields above don't have to be in particular order.
2506     </p>
2507 schoenebeck 708 </blockquote><p>
2508 schoenebeck 940
2509 schoenebeck 708 </p>
2510 senoner 542 <p>Example:
2511     </p>
2512 schoenebeck 708 <p>
2513     </p>
2514 senoner 542 <blockquote class="text">
2515     <p>C: "GET MIDI_INPUT_DRIVER INFO ALSA"
2516     </p>
2517     <p>S: "DESCRIPTION: Advanced Linux Sound Architecture"
2518     </p>
2519     <p>&nbsp;&nbsp;&nbsp;"VERSION: 1.0"
2520     </p>
2521     <p>&nbsp;&nbsp;&nbsp;"PARAMETERS: DRIVER,ACTIVE"
2522     </p>
2523     <p>&nbsp;&nbsp;&nbsp;"."
2524     </p>
2525 schoenebeck 708 </blockquote><p>
2526 schoenebeck 940
2527 schoenebeck 708 </p>
2528 schoenebeck 940 <a name="GET MIDI_INPUT_DRIVER_PARAMETER INFO"></a><br /><hr />
2529 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2530     <a name="rfc.section.6.3.4"></a><h3>6.3.4.&nbsp;
2531     Getting information about specific MIDI input driver parameter</h3>
2532 senoner 542
2533     <p>Use the following command to get detailed information about a specific parameter of a specific MIDI input driver:
2534     </p>
2535 schoenebeck 708 <p>
2536     </p>
2537 senoner 542 <blockquote class="text">
2538     <p>GET MIDI_INPUT_DRIVER_PARAMETER INFO &lt;midit&gt; &lt;param&gt; [&lt;deplist&gt;]
2539     </p>
2540 schoenebeck 708 </blockquote><p>
2541 schoenebeck 940
2542 schoenebeck 708 </p>
2543 schoenebeck 561 <p>Where &lt;midit&gt; is the name of the MIDI input driver as returned
2544 schoenebeck 974 by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a> command, &lt;param&gt; a specific
2545 senoner 542 parameter name for which information should be obtained (as returned by the
2546 schoenebeck 974 <a class='info' href='#GET MIDI_INPUT_DRIVER INFO'>"GET MIDI_INPUT_DRIVER INFO"<span> (</span><span class='info'>Getting information about a specific MIDI input driver</span><span>)</span></a> command) and &lt;deplist&gt; is an optional list
2547 senoner 542 of parameters on which the sought parameter &lt;param&gt; depends on,
2548     &lt;deplist&gt; is a key-value pair list in form of "key1=val1 key2=val2 ...",
2549     where character string values are encapsulated into apostrophes ('). Arguments
2550     given with &lt;deplist&gt; which are not dependency parameters of &lt;param&gt;
2551     will be ignored, means the front-end application can simply put all parameters
2552     in &lt;deplist&gt; with the values selected by the user.
2553     </p>
2554     <p>Possible Answers:
2555     </p>
2556     <p>LinuxSampler will answer by sending a &lt;CRLF> separated list.
2557     Each answer line begins with the information category name
2558     followed by a colon and then a space character &lt;SP> and finally
2559     the info character string to that info category. There is
2560     information which is always returned, independent of the
2561     given driver parameter and there is optional information
2562     which is only shown dependent to given driver parameter. At
2563     the moment the following information categories are defined:
2564     </p>
2565 schoenebeck 708 <p>
2566     </p>
2567 senoner 542 <blockquote class="text">
2568     <p>TYPE -
2569     </p>
2570     <blockquote class="text">
2571     <p>either "BOOL" for boolean value(s) or "INT" for integer
2572     value(s) or "FLOAT" for dotted number(s) or "STRING" for
2573     character string(s)
2574     (always returned, no matter which driver parameter)
2575     </p>
2576 schoenebeck 940 </blockquote>
2577    
2578 senoner 542
2579     <p>DESCRIPTION -
2580     </p>
2581     <blockquote class="text">
2582     <p>arbitrary text describing the purpose of the parameter
2583     (always returned, no matter which driver parameter)
2584     </p>
2585 schoenebeck 940 </blockquote>
2586    
2587 senoner 542
2588     <p>MANDATORY -
2589     </p>
2590     <blockquote class="text">
2591     <p>either true or false, defines if this parameter must be
2592     given when the device is to be created with the
2593 schoenebeck 974 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a> command
2594 senoner 542 (always returned, no matter which driver parameter)
2595     </p>
2596 schoenebeck 940 </blockquote>
2597    
2598 senoner 542
2599     <p>FIX -
2600     </p>
2601     <blockquote class="text">
2602     <p>either true or false, if false then this parameter can
2603     be changed at any time, once the device is created by
2604 schoenebeck 974 the <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a> command
2605 senoner 542 (always returned, no matter which driver parameter)
2606     </p>
2607 schoenebeck 940 </blockquote>
2608    
2609 senoner 542
2610     <p>MULTIPLICITY -
2611     </p>
2612     <blockquote class="text">
2613     <p>either true or false, defines if this parameter allows
2614     only one value or a list of values, where true means
2615     multiple values and false only a single value allowed
2616     (always returned, no matter which driver parameter)
2617     </p>
2618 schoenebeck 940 </blockquote>
2619    
2620 senoner 542
2621     <p>DEPENDS -
2622     </p>
2623     <blockquote class="text">
2624 schoenebeck 561 <p>comma separated list of parameters this parameter depends
2625 senoner 542 on, means the values for fields 'DEFAULT', 'RANGE_MIN',
2626     'RANGE_MAX' and 'POSSIBILITIES' might depend on these
2627     listed parameters, for example assuming that an audio
2628     driver (like the ALSA driver) offers parameters 'card'
2629     and 'samplerate' then parameter 'samplerate' would
2630     depend on 'card' because the possible values for
2631     'samplerate' depends on the sound card which can be
2632     chosen by the 'card' parameter
2633     (optionally returned, dependent to driver parameter)
2634     </p>
2635 schoenebeck 940 </blockquote>
2636    
2637 senoner 542
2638     <p>DEFAULT -
2639     </p>
2640     <blockquote class="text">
2641     <p>reflects the default value for this parameter which is
2642     used when the device is created and not explicitly
2643 schoenebeck 974 given with the <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>'CREATE MIDI_INPUT_DEVICE'<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a> command,
2644 senoner 542 in case of MULTIPLCITY=true, this is a comma separated
2645     list, that's why character strings are encapsulated into
2646     apostrophes (')
2647     (optionally returned, dependent to driver parameter)
2648     </p>
2649 schoenebeck 940 </blockquote>
2650    
2651 senoner 542
2652     <p>RANGE_MIN -
2653     </p>
2654     <blockquote class="text">
2655     <p>defines lower limit of the allowed value range for this
2656     parameter, can be an integer value as well as a dotted
2657     number, this parameter is often used in conjunction
2658     with RANGE_MAX, but may also appear without
2659     (optionally returned, dependent to driver parameter)
2660     </p>
2661 schoenebeck 940 </blockquote>
2662    
2663 senoner 542
2664     <p>RANGE_MAX -
2665     </p>
2666     <blockquote class="text">
2667     <p>defines upper limit of the allowed value range for this
2668     parameter, can be an integer value as well as a dotted
2669     number, this parameter is often used in conjunction with
2670     RANGE_MIN, but may also appear without
2671     (optionally returned, dependent to driver parameter)
2672     </p>
2673 schoenebeck 940 </blockquote>
2674    
2675 senoner 542
2676     <p>POSSIBILITIES -
2677     </p>
2678     <blockquote class="text">
2679     <p>comma separated list of possible values for this
2680     parameter, character strings are encapsulated into
2681     apostrophes
2682     (optionally returned, dependent to driver parameter)
2683     </p>
2684 schoenebeck 940 </blockquote>
2685    
2686 senoner 542
2687 schoenebeck 708 </blockquote><p>
2688 schoenebeck 940
2689 schoenebeck 708 </p>
2690 senoner 542 <p>The mentioned fields above don't have to be in particular order.
2691     </p>
2692     <p>Example:
2693     </p>
2694 schoenebeck 708 <p>
2695     </p>
2696 senoner 542 <blockquote class="text">
2697     <p>C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
2698     </p>
2699     <p>S: "DESCRIPTION: Whether device is enabled"
2700     </p>
2701     <p>&nbsp;&nbsp;&nbsp;"TYPE: BOOL"
2702     </p>
2703     <p>&nbsp;&nbsp;&nbsp;"MANDATORY: false"
2704     </p>
2705     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
2706     </p>
2707     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: false"
2708     </p>
2709     <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
2710     </p>
2711     <p>&nbsp;&nbsp;&nbsp;"."
2712     </p>
2713 schoenebeck 708 </blockquote><p>
2714 schoenebeck 940
2715 schoenebeck 708 </p>
2716 schoenebeck 940 <a name="CREATE MIDI_INPUT_DEVICE"></a><br /><hr />
2717 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2718     <a name="rfc.section.6.3.5"></a><h3>6.3.5.&nbsp;
2719     Creating a MIDI input device</h3>
2720 senoner 542
2721     <p>Use the following command to create a new MIDI input device for the desired MIDI input system:
2722     </p>
2723 schoenebeck 708 <p>
2724     </p>
2725 senoner 542 <blockquote class="text">
2726     <p>CREATE MIDI_INPUT_DEVICE &lt;midi-input-driver&gt; [&lt;param-list&gt;]
2727     </p>
2728 schoenebeck 708 </blockquote><p>
2729 schoenebeck 940
2730 schoenebeck 708 </p>
2731 schoenebeck 575 <p>Where &lt;midi-input-driver&gt; should be replaced by the desired MIDI input system as returned
2732 schoenebeck 974 by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a> command and &lt;param-list&gt; by an
2733 senoner 542 optional list of driver specific parameters in form of "key1=val1 key2=val2 ...", where
2734     character string values should be encapsulated into apostrophes (').
2735     Note that there might be drivers which require parameter(s) to be
2736     given with this command. Use the previously described commands in
2737     this chapter to get that information.
2738     </p>
2739     <p>Possible Answers:
2740     </p>
2741 schoenebeck 708 <p>
2742     </p>
2743 senoner 542 <blockquote class="text">
2744     <p>"OK[&lt;device-id&gt;]" -
2745     </p>
2746     <blockquote class="text">
2747     <p>in case the device was successfully created, where
2748     &lt;device-id&gt; is the numerical ID of the new device
2749     </p>
2750 schoenebeck 940 </blockquote>
2751    
2752 senoner 542
2753     <p>"WRN[&lt;device-id&gt;]:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2754     </p>
2755     <blockquote class="text">
2756     <p>in case the driver was loaded successfully, where
2757     &lt;device-id&gt; is the numerical ID of the new device, but
2758     there are noteworthy issue(s) related, providing an
2759     appropriate warning code and warning message
2760     </p>
2761 schoenebeck 940 </blockquote>
2762    
2763 senoner 542
2764     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2765     </p>
2766     <blockquote class="text">
2767     <p>in case it failed, providing an appropriate error code and error message
2768     </p>
2769 schoenebeck 940 </blockquote>
2770    
2771 senoner 542
2772 schoenebeck 708 </blockquote><p>
2773 schoenebeck 940
2774 schoenebeck 708 </p>
2775 senoner 542 <p>Example:
2776     </p>
2777 schoenebeck 708 <p>
2778     </p>
2779 senoner 542 <blockquote class="text">
2780     <p>C: "CREATE MIDI_INPUT_DEVICE ALSA"
2781     </p>
2782     <p>S: "OK[0]"
2783     </p>
2784 schoenebeck 708 </blockquote><p>
2785 schoenebeck 940
2786 schoenebeck 708 </p>
2787 schoenebeck 940 <a name="DESTROY MIDI_INPUT_DEVICE"></a><br /><hr />
2788 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2789     <a name="rfc.section.6.3.6"></a><h3>6.3.6.&nbsp;
2790     Destroying a MIDI input device</h3>
2791 senoner 542
2792     <p>Use the following command to destroy a created MIDI input device:
2793     </p>
2794 schoenebeck 708 <p>
2795     </p>
2796 senoner 542 <blockquote class="text">
2797     <p>DESTROY MIDI_INPUT_DEVICE &lt;device-id&gt;
2798     </p>
2799 schoenebeck 708 </blockquote><p>
2800 schoenebeck 940
2801 schoenebeck 708 </p>
2802 schoenebeck 575 <p>Where &lt;device-id&gt; should be replaced by the device's numerical ID as returned by the
2803 schoenebeck 974 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
2804     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
2805 schoenebeck 575 command.
2806 senoner 542 </p>
2807     <p>Possible Answers:
2808     </p>
2809 schoenebeck 708 <p>
2810     </p>
2811 senoner 542 <blockquote class="text">
2812     <p>"OK" -
2813     </p>
2814     <blockquote class="text">
2815     <p>in case the device was successfully destroyed
2816     </p>
2817 schoenebeck 940 </blockquote>
2818    
2819 senoner 542
2820     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
2821     </p>
2822     <blockquote class="text">
2823     <p>in case the device was destroyed, but there are noteworthy
2824     issue(s) related, providing an appropriate warning code and
2825     warning message
2826     </p>
2827 schoenebeck 940 </blockquote>
2828    
2829 senoner 542
2830     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
2831     </p>
2832     <blockquote class="text">
2833     <p>in case it failed, providing an appropriate error code and error message
2834     </p>
2835 schoenebeck 940 </blockquote>
2836    
2837 senoner 542
2838 schoenebeck 708 </blockquote><p>
2839 schoenebeck 940
2840 schoenebeck 708 </p>
2841 senoner 542 <p>Example:
2842     </p>
2843 schoenebeck 708 <p>
2844     </p>
2845 senoner 542 <blockquote class="text">
2846     <p>C: "DESTROY MIDI_INPUT_DEVICE 0"
2847     </p>
2848     <p>S: "OK"
2849     </p>
2850 schoenebeck 708 </blockquote><p>
2851 schoenebeck 940
2852 schoenebeck 708 </p>
2853 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICES"></a><br /><hr />
2854 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2855     <a name="rfc.section.6.3.7"></a><h3>6.3.7.&nbsp;
2856     Getting all created MIDI input device count</h3>
2857 senoner 542
2858     <p>Use the following command to count all created MIDI input devices:
2859     </p>
2860 schoenebeck 708 <p>
2861     </p>
2862 senoner 542 <blockquote class="text">
2863     <p>GET MIDI_INPUT_DEVICES
2864     </p>
2865 schoenebeck 708 </blockquote><p>
2866 schoenebeck 940
2867 schoenebeck 708 </p>
2868 senoner 542 <p>Possible Answers:
2869     </p>
2870 schoenebeck 708 <p>
2871     </p>
2872 senoner 542 <blockquote class="text">
2873     <p>LinuxSampler will answer by sending the current number of all
2874     MIDI input devices.
2875     </p>
2876 schoenebeck 708 </blockquote><p>
2877 schoenebeck 940
2878 schoenebeck 708 </p>
2879 senoner 542 <p>Example:
2880     </p>
2881 schoenebeck 708 <p>
2882     </p>
2883 senoner 542 <blockquote class="text">
2884     <p>C: "GET MIDI_INPUT_DEVICES"
2885     </p>
2886     <p>S: "3"
2887     </p>
2888 schoenebeck 708 </blockquote><p>
2889 schoenebeck 940
2890 schoenebeck 708 </p>
2891 schoenebeck 940 <a name="LIST MIDI_INPUT_DEVICES"></a><br /><hr />
2892 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2893     <a name="rfc.section.6.3.8"></a><h3>6.3.8.&nbsp;
2894     Getting all created MIDI input device list</h3>
2895 senoner 542
2896     <p>Use the following command to list all created MIDI input devices:
2897     </p>
2898 schoenebeck 708 <p>
2899     </p>
2900 senoner 542 <blockquote class="text">
2901     <p>LIST MIDI_INPUT_DEVICES
2902     </p>
2903 schoenebeck 708 </blockquote><p>
2904 schoenebeck 940
2905 schoenebeck 708 </p>
2906 senoner 542 <p>Possible Answers:
2907     </p>
2908 schoenebeck 708 <p>
2909     </p>
2910 senoner 542 <blockquote class="text">
2911     <p>LinuxSampler will answer by sending a comma separated list
2912     with the numerical Ids of all created MIDI input devices.
2913     </p>
2914 schoenebeck 708 </blockquote><p>
2915 schoenebeck 940
2916 schoenebeck 708 </p>
2917 senoner 542 <p>Examples:
2918     </p>
2919 schoenebeck 708 <p>
2920     </p>
2921 senoner 542 <blockquote class="text">
2922     <p>C: "LIST MIDI_INPUT_DEVICES"
2923     </p>
2924     <p>S: "0,1,2"
2925     </p>
2926 schoenebeck 708 </blockquote><p>
2927 schoenebeck 940
2928 schoenebeck 708 </p>
2929     <p>
2930     </p>
2931 senoner 542 <blockquote class="text">
2932     <p>C: "LIST MIDI_INPUT_DEVICES"
2933     </p>
2934     <p>S: "1,3"
2935     </p>
2936 schoenebeck 708 </blockquote><p>
2937 schoenebeck 940
2938 schoenebeck 708 </p>
2939 schoenebeck 940 <a name="GET MIDI_INPUT_DEVICE INFO"></a><br /><hr />
2940 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
2941     <a name="rfc.section.6.3.9"></a><h3>6.3.9.&nbsp;
2942     Getting current settings of a MIDI input device</h3>
2943 senoner 542
2944     <p>Use the following command to get current settings of a specific, created MIDI input device:
2945     </p>
2946 schoenebeck 708 <p>
2947     </p>
2948 senoner 542 <blockquote class="text">
2949     <p>GET MIDI_INPUT_DEVICE INFO &lt;device-id&gt;
2950     </p>
2951 schoenebeck 708 </blockquote><p>
2952 schoenebeck 940
2953 schoenebeck 708 </p>
2954 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
2955 schoenebeck 974 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
2956     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
2957 schoenebeck 575 command.
2958 senoner 542 </p>
2959     <p>Possible Answers:
2960     </p>
2961 schoenebeck 708 <p>
2962     </p>
2963 senoner 542 <blockquote class="text">
2964     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
2965     Each answer line begins with the information category name
2966     followed by a colon and then a space character &lt;SP&gt; and finally
2967     the info character string to that info category. As some
2968     parameters might allow multiple values, character strings are
2969     encapsulated into apostrophes ('). At the moment the following
2970     information categories are defined (independent of driver):
2971     </p>
2972 schoenebeck 708 <p>
2973     </p>
2974 senoner 542 <blockquote class="text">
2975     <p>DRIVER -
2976     </p>
2977     <blockquote class="text">
2978     <p>identifier of the used MIDI input driver, as e.g.
2979 schoenebeck 974 returned by the <a class='info' href='#LIST AVAILABLE_MIDI_INPUT_DRIVERS'>"LIST AVAILABLE_MIDI_INPUT_DRIVERS"<span> (</span><span class='info'>Getting all available MIDI input drivers</span><span>)</span></a>
2980 senoner 542 command
2981     </p>
2982 schoenebeck 940 </blockquote>
2983    
2984 senoner 542
2985 schoenebeck 940 </blockquote>
2986    
2987 senoner 542 <blockquote class="text">
2988 schoenebeck 708 <p>ACTIVE -
2989 senoner 542 </p>
2990     <blockquote class="text">
2991     <p>either true or false, if false then the MIDI device is
2992     inactive and doesn't listen to any incoming MIDI events
2993     and thus doesn't forward them to connected sampler
2994     channels
2995     </p>
2996 schoenebeck 940 </blockquote>
2997    
2998 senoner 542
2999 schoenebeck 940 </blockquote>
3000    
3001 senoner 542
3002 schoenebeck 708 </blockquote><p>
3003 schoenebeck 940
3004 schoenebeck 708 </p>
3005 senoner 542 <p>The mentioned fields above don't have to be in particular
3006     order. The fields above are only those fields which are
3007     returned by all MIDI input devices. Every MIDI input driver
3008     might have its own, additional driver specific parameters (see
3009 schoenebeck 974 <a class='info' href='#GET MIDI_INPUT_DRIVER INFO'>"GET MIDI_INPUT_DRIVER INFO"<span> (</span><span class='info'>Getting information about a specific MIDI input driver</span><span>)</span></a> command) which are also returned
3010 senoner 542 by this command.
3011     </p>
3012     <p>Example:
3013     </p>
3014 schoenebeck 708 <p>
3015     </p>
3016 senoner 542 <blockquote class="text">
3017     <p>C: "GET MIDI_INPUT_DEVICE INFO 0"
3018     </p>
3019     <p>S: "DRIVER: ALSA"
3020     </p>
3021     <p>&nbsp;&nbsp;&nbsp;"ACTIVE: true"
3022     </p>
3023     <p>&nbsp;&nbsp;&nbsp;"."
3024     </p>
3025 schoenebeck 708 </blockquote><p>
3026 schoenebeck 940
3027 schoenebeck 708 </p>
3028 schoenebeck 940 <a name="SET MIDI_INPUT_DEVICE_PARAMETER"></a><br /><hr />
3029 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3030     <a name="rfc.section.6.3.10"></a><h3>6.3.10.&nbsp;
3031     Changing settings of MIDI input devices</h3>
3032 senoner 542
3033     <p>Use the following command to alter a specific setting of a created MIDI input device:
3034     </p>
3035 schoenebeck 708 <p>
3036     </p>
3037 senoner 542 <blockquote class="text">
3038     <p>SET MIDI_INPUT_DEVICE_PARAMETER &lt;device-id&gt; &lt;key&gt;=&lt;value&gt;
3039     </p>
3040 schoenebeck 708 </blockquote><p>
3041 schoenebeck 940
3042 schoenebeck 708 </p>
3043 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3044 schoenebeck 575 MIDI input device as returned by the
3045 schoenebeck 974 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3046     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3047 schoenebeck 575 command, &lt;key&gt; by the name of the parameter to change and
3048 senoner 542 &lt;value&gt; by the new value for this parameter.
3049     </p>
3050     <p>Possible Answers:
3051     </p>
3052 schoenebeck 708 <p>
3053     </p>
3054 senoner 542 <blockquote class="text">
3055     <p>"OK" -
3056     </p>
3057     <blockquote class="text">
3058     <p>in case setting was successfully changed
3059     </p>
3060 schoenebeck 940 </blockquote>
3061    
3062 senoner 542
3063     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3064     </p>
3065     <blockquote class="text">
3066     <p>in case setting was changed successfully, but there are
3067     noteworthy issue(s) related, providing an appropriate
3068     warning code and warning message
3069     </p>
3070 schoenebeck 940 </blockquote>
3071    
3072 senoner 542
3073     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3074     </p>
3075     <blockquote class="text">
3076     <p>in case it failed, providing an appropriate error code and error message
3077     </p>
3078 schoenebeck 940 </blockquote>
3079    
3080 senoner 542
3081 schoenebeck 708 </blockquote><p>
3082 schoenebeck 940
3083 schoenebeck 708 </p>
3084 senoner 542 <p>Example:
3085     </p>
3086 schoenebeck 708 <p>
3087     </p>
3088 senoner 542 <blockquote class="text">
3089     <p>C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
3090     </p>
3091     <p>S: "OK"
3092     </p>
3093 schoenebeck 708 </blockquote><p>
3094 schoenebeck 940
3095 schoenebeck 708 </p>
3096 schoenebeck 940 <a name="GET MIDI_INPUT_PORT INFO"></a><br /><hr />
3097 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3098     <a name="rfc.section.6.3.11"></a><h3>6.3.11.&nbsp;
3099     Getting information about a MIDI port</h3>
3100 senoner 542
3101     <p>Use the following command to get information about a MIDI port:
3102     </p>
3103 schoenebeck 708 <p>
3104     </p>
3105 senoner 542 <blockquote class="text">
3106     <p>GET MIDI_INPUT_PORT INFO &lt;device-id&gt; &lt;midi-port&gt;
3107     </p>
3108 schoenebeck 708 </blockquote><p>
3109 schoenebeck 940
3110 schoenebeck 708 </p>
3111 schoenebeck 575 <p>Where &lt;device-id&gt; is the numerical ID of the MIDI input device as returned by the
3112 schoenebeck 974 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3113     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3114 schoenebeck 575 command and &lt;midi-port&gt; the MIDI input port number.
3115 senoner 542 </p>
3116     <p>Possible Answers:
3117     </p>
3118 schoenebeck 708 <p>
3119     </p>
3120 senoner 542 <blockquote class="text">
3121     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3122     Each answer line begins with the information category name
3123     followed by a colon and then a space character &lt;SP&gt; and finally
3124     the info character string to that info category. At the moment
3125     the following information categories are defined:
3126     </p>
3127     <p>NAME -
3128     </p>
3129     <blockquote class="text">
3130     <p>arbitrary character string naming the port
3131     </p>
3132 schoenebeck 940 </blockquote>
3133    
3134 senoner 542
3135 schoenebeck 708 </blockquote><p>
3136 schoenebeck 940
3137 schoenebeck 708 </p>
3138 senoner 542 <p>The field above is only the one which is returned by all MIDI
3139     ports regardless of the MIDI driver and port. Every MIDI port
3140     might have its own, additional driver and port specific
3141     parameters.
3142     </p>
3143     <p>Example:
3144     </p>
3145 schoenebeck 708 <p>
3146     </p>
3147 senoner 542 <blockquote class="text">
3148     <p>C: "GET MIDI_INPUT_PORT INFO 0 0"
3149     </p>
3150     <p>S: "NAME: 'Masterkeyboard'"
3151     </p>
3152     <p>&nbsp;&nbsp;&nbsp;"ALSA_SEQ_BINDINGS: '64:0'"
3153     </p>
3154     <p>&nbsp;&nbsp;&nbsp;"."
3155     </p>
3156 schoenebeck 708 </blockquote><p>
3157 schoenebeck 940
3158 schoenebeck 708 </p>
3159 schoenebeck 940 <a name="GET MIDI_INPUT_PORT_PARAMETER INFO"></a><br /><hr />
3160 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3161     <a name="rfc.section.6.3.12"></a><h3>6.3.12.&nbsp;
3162     Getting information about specific MIDI port parameter</h3>
3163 senoner 542
3164     <p>Use the following command to get detailed information about specific MIDI port parameter:
3165     </p>
3166 schoenebeck 708 <p>
3167     </p>
3168 senoner 542 <blockquote class="text">
3169     <p>GET MIDI_INPUT_PORT_PARAMETER INFO &lt;dev-id&gt; &lt;port&gt; &lt;param&gt;
3170     </p>
3171 schoenebeck 708 </blockquote><p>
3172 schoenebeck 940
3173 schoenebeck 708 </p>
3174 schoenebeck 575 <p>Where &lt;dev-id&gt; is the numerical ID of the MIDI input device as returned by the
3175 schoenebeck 974 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3176     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3177 schoenebeck 575 command, &lt;port&gt; the MIDI port number and
3178 senoner 542 &lt;param&gt; a specific port parameter name for which information should be
3179 schoenebeck 974 obtained (as returned by the <a class='info' href='#GET MIDI_INPUT_PORT INFO'>"GET MIDI_INPUT_PORT INFO"<span> (</span><span class='info'>Getting information about a MIDI port</span><span>)</span></a> command).
3180 senoner 542 </p>
3181     <p>Possible Answers:
3182     </p>
3183 schoenebeck 708 <p>
3184     </p>
3185 senoner 542 <blockquote class="text">
3186     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3187     Each answer line begins with the information category name
3188     followed by a colon and then a space character &lt;SP&gt; and finally
3189     the info character string to that info category. There is
3190     information which is always returned, independently of the
3191     given channel parameter and there is optional information
3192     which are only shown dependently to the given MIDI port. At the
3193     moment the following information categories are defined:
3194     </p>
3195     <p>TYPE -
3196     </p>
3197     <blockquote class="text">
3198     <p>either "BOOL" for boolean value(s) or "INT" for integer
3199     value(s) or "FLOAT" for dotted number(s) or "STRING" for
3200     character string(s)
3201     (always returned)
3202     </p>
3203 schoenebeck 940 </blockquote>
3204    
3205 senoner 542
3206     <p>DESCRIPTION -
3207     </p>
3208     <blockquote class="text">
3209     <p>arbitrary text describing the purpose of the parameter
3210     (always returned)
3211     </p>
3212 schoenebeck 940 </blockquote>
3213    
3214 senoner 542
3215     <p>FIX -
3216     </p>
3217     <blockquote class="text">
3218     <p>either true or false, if true then this parameter is
3219     read only, thus cannot be altered
3220     (always returned)
3221     </p>
3222 schoenebeck 940 </blockquote>
3223    
3224 senoner 542
3225     <p>MULTIPLICITY -
3226     </p>
3227     <blockquote class="text">
3228     <p>either true or false, defines if this parameter allows
3229     only one value or a list of values, where true means
3230     multiple values and false only a single value allowed
3231     (always returned)
3232     </p>
3233 schoenebeck 940 </blockquote>
3234    
3235 senoner 542
3236     <p>RANGE_MIN -
3237     </p>
3238     <blockquote class="text">
3239     <p>defines lower limit of the allowed value range for this
3240     parameter, can be an integer value as well as a dotted
3241     number, this parameter is usually used in conjunction
3242     with 'RANGE_MAX' but may also appear without
3243     (optionally returned, dependent to driver and port
3244     parameter)
3245     </p>
3246 schoenebeck 940 </blockquote>
3247    
3248 senoner 542
3249     <p>RANGE_MAX -
3250     </p>
3251     <blockquote class="text">
3252     <p>defines upper limit of the allowed value range for this
3253     parameter, can be an integer value as well as a dotted
3254     number, this parameter is usually used in conjunction
3255     with 'RANGE_MIN' but may also appear without
3256     (optionally returned, dependent to driver and port
3257     parameter)
3258     </p>
3259 schoenebeck 940 </blockquote>
3260    
3261 senoner 542
3262     <p>POSSIBILITIES -
3263     </p>
3264     <blockquote class="text">
3265     <p>comma separated list of possible values for this
3266     parameter, character strings are encapsulated into
3267     apostrophes
3268     (optionally returned, dependent to device and port
3269     parameter)
3270     </p>
3271 schoenebeck 940 </blockquote>
3272    
3273 senoner 542
3274 schoenebeck 708 </blockquote><p>
3275 schoenebeck 940
3276 schoenebeck 708 </p>
3277 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3278     </p>
3279     <p>Example:
3280     </p>
3281 schoenebeck 708 <p>
3282     </p>
3283 senoner 542 <blockquote class="text">
3284     <p>C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
3285     </p>
3286     <p>S: "DESCRIPTION: bindings to other ALSA sequencer clients"
3287     </p>
3288     <p>&nbsp;&nbsp;&nbsp;"TYPE: STRING"
3289     </p>
3290     <p>&nbsp;&nbsp;&nbsp;"FIX: false"
3291     </p>
3292     <p>&nbsp;&nbsp;&nbsp;"MULTIPLICITY: true"
3293     </p>
3294     <p>&nbsp;&nbsp;&nbsp;"POSSIBILITIES: '64:0','68:0','68:1'"
3295     </p>
3296     <p>&nbsp;&nbsp;&nbsp;"."
3297     </p>
3298 schoenebeck 708 </blockquote><p>
3299 schoenebeck 940
3300 schoenebeck 708 </p>
3301 schoenebeck 940 <a name="SET MIDI_INPUT_PORT_PARAMETER"></a><br /><hr />
3302 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3303     <a name="rfc.section.6.3.13"></a><h3>6.3.13.&nbsp;
3304     Changing settings of MIDI input ports</h3>
3305 senoner 542
3306     <p>Use the following command to alter a specific setting of a MIDI input port:
3307     </p>
3308 schoenebeck 708 <p>
3309     </p>
3310 senoner 542 <blockquote class="text">
3311     <p>SET MIDI_INPUT_PORT_PARAMETER &lt;device-id&gt; &lt;port&gt; &lt;key&gt;=&lt;value&gt;
3312     </p>
3313 schoenebeck 708 </blockquote><p>
3314 schoenebeck 940
3315 schoenebeck 708 </p>
3316 senoner 542 <p>Where &lt;device-id&gt; should be replaced by the numerical ID of the
3317 schoenebeck 575 MIDI device as returned by the
3318 schoenebeck 974 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
3319     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3320 schoenebeck 575 command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3321 senoner 542 the parameter to change and &lt;value&gt; by the new value for this
3322 schoenebeck 1363 parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3323     for specifying no value for parameters allowing a list of values.
3324 senoner 542 </p>
3325     <p>Possible Answers:
3326     </p>
3327 schoenebeck 708 <p>
3328     </p>
3329 senoner 542 <blockquote class="text">
3330     <p>"OK" -
3331     </p>
3332     <blockquote class="text">
3333     <p>in case setting was successfully changed
3334     </p>
3335 schoenebeck 940 </blockquote>
3336    
3337 senoner 542
3338     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3339     </p>
3340     <blockquote class="text">
3341     <p>in case setting was changed successfully, but there are
3342     noteworthy issue(s) related, providing an appropriate
3343     warning code and warning message
3344     </p>
3345 schoenebeck 940 </blockquote>
3346    
3347 senoner 542
3348     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3349     </p>
3350     <blockquote class="text">
3351     <p>in case it failed, providing an appropriate error code and error message
3352     </p>
3353 schoenebeck 940 </blockquote>
3354    
3355 senoner 542
3356 schoenebeck 708 </blockquote><p>
3357 schoenebeck 940
3358 schoenebeck 708 </p>
3359 senoner 542 <p>Example:
3360     </p>
3361 schoenebeck 708 <p>
3362     </p>
3363 senoner 542 <blockquote class="text">
3364 schoenebeck 1363 <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3365     </p>
3366     <p>S: "OK"
3367     </p>
3368     </blockquote><p>
3369    
3370     </p>
3371 senoner 542 <p>
3372 schoenebeck 1363 </p>
3373     <blockquote class="text">
3374     <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3375 senoner 542 </p>
3376 schoenebeck 1363 <p>S: "OK"
3377     </p>
3378 schoenebeck 708 </blockquote><p>
3379 schoenebeck 940
3380 schoenebeck 708 </p>
3381 schoenebeck 940 <a name="anchor11"></a><br /><hr />
3382 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3383     <a name="rfc.section.6.4"></a><h3>6.4.&nbsp;
3384     Configuring sampler channels</h3>
3385 senoner 542
3386 schoenebeck 575 <p>The following commands describe how to add and remove sampler channels, associate a
3387     sampler channel with a sampler engine, load instruments and connect sampler channels to
3388     MIDI and audio devices.
3389 senoner 542 </p>
3390 schoenebeck 940 <a name="LOAD INSTRUMENT"></a><br /><hr />
3391 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3392     <a name="rfc.section.6.4.1"></a><h3>6.4.1.&nbsp;
3393     Loading an instrument</h3>
3394 senoner 542
3395     <p>An instrument file can be loaded and assigned to a sampler channel by one of the following commands:
3396     </p>
3397 schoenebeck 708 <p>
3398     </p>
3399 senoner 542 <blockquote class="text">
3400     <p>LOAD INSTRUMENT [NON_MODAL] '&lt;filename&gt;' &lt;instr-index&gt; &lt;sampler-channel&gt;
3401     </p>
3402 schoenebeck 708 </blockquote><p>
3403 schoenebeck 940
3404 schoenebeck 708 </p>
3405 senoner 542 <p>Where &lt;filename&gt; is the name of the instrument file on the
3406     LinuxSampler instance's host system, &lt;instr-index&gt; the index of the
3407     instrument in the instrument file and &lt;sampler-channel> is the
3408     number of the sampler channel the instrument should be assigned to.
3409     Each sampler channel can only have one instrument.
3410     </p>
3411 schoenebeck 1251 <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3412     escape characters for special characters (see chapter
3413     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"
3414     for details) and accordingly backslash characters in the filename
3415     MUST now be escaped as well!
3416     </p>
3417 senoner 542 <p>The difference between regular and NON_MODAL versions of the command
3418     is that the regular command returns OK only after the instrument has been
3419     fully loaded and the channel is ready to be used while NON_MODAL version
3420     returns immediately and a background process is launched to load the instrument
3421 schoenebeck 974 on the channel. The <a class='info' href='#GET CHANNEL INFO'>GET CHANNEL INFO<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
3422 senoner 542 command can be used to obtain loading
3423     progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks
3424     such as making sure that the file could be read and it is of a proper format
3425     and SHOULD return ERR and SHOULD not launch the background process should any
3426     errors be detected at that point.
3427     </p>
3428     <p>Possible Answers:
3429     </p>
3430 schoenebeck 708 <p>
3431     </p>
3432 senoner 542 <blockquote class="text">
3433     <p>"OK" -
3434     </p>
3435     <blockquote class="text">
3436     <p>in case the instrument was successfully loaded
3437     </p>
3438 schoenebeck 940 </blockquote>
3439    
3440 senoner 542
3441     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3442     </p>
3443     <blockquote class="text">
3444     <p>in case the instrument was loaded successfully, but there
3445     are noteworthy issue(s) related (e.g. Engine doesn't support
3446     one or more patch parameters provided by the loaded
3447     instrument file), providing an appropriate warning code and
3448     warning message
3449     </p>
3450 schoenebeck 940 </blockquote>
3451    
3452 senoner 542
3453     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3454     </p>
3455     <blockquote class="text">
3456     <p>in case it failed, providing an appropriate error code and error message
3457     </p>
3458 schoenebeck 940 </blockquote>
3459    
3460 senoner 542
3461 schoenebeck 708 </blockquote><p>
3462 schoenebeck 940
3463 schoenebeck 708 </p>
3464 schoenebeck 1572 <p>Example (Unix):
3465 senoner 542 </p>
3466 schoenebeck 708 <p>
3467     </p>
3468 senoner 542 <blockquote class="text">
3469 schoenebeck 1572 <p>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0
3470     </p>
3471     <p>S: OK
3472     </p>
3473     </blockquote><p>
3474    
3475     </p>
3476     <p>Example (Windows):
3477     </p>
3478 senoner 542 <p>
3479 schoenebeck 1572 </p>
3480     <blockquote class="text">
3481     <p>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0
3482 senoner 542 </p>
3483 schoenebeck 1572 <p>S: OK
3484     </p>
3485 schoenebeck 708 </blockquote><p>
3486 schoenebeck 940
3487 schoenebeck 708 </p>
3488 schoenebeck 940 <a name="LOAD ENGINE"></a><br /><hr />
3489 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3490     <a name="rfc.section.6.4.2"></a><h3>6.4.2.&nbsp;
3491     Loading a sampler engine</h3>
3492 senoner 542
3493 schoenebeck 575 <p>A sampler engine type can be associated to a specific sampler
3494 senoner 542 channel by the following command:
3495     </p>
3496 schoenebeck 708 <p>
3497     </p>
3498 senoner 542 <blockquote class="text">
3499     <p>LOAD ENGINE &lt;engine-name&gt; &lt;sampler-channel&gt;
3500     </p>
3501 schoenebeck 708 </blockquote><p>
3502 schoenebeck 940
3503 schoenebeck 708 </p>
3504 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3505 schoenebeck 974 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command and &lt;sampler-channel&gt;
3506 schoenebeck 575 the sampler channel as returned by the
3507 schoenebeck 974 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a> or
3508     <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command where
3509 schoenebeck 575 the engine type should be assigned to. This command should be issued
3510     after adding a new sampler channel and before any other control
3511     commands on the new sampler channel. It can also be used to change
3512     the engine type of a sampler channel. This command has (currently) no
3513     way to define or force if a new engine instance should be created and
3514     assigned to the given sampler channel or if an already existing
3515     instance of that engine type, shared with other sampler channels,
3516     should be used.
3517 senoner 542 </p>
3518     <p>Possible Answers:
3519     </p>
3520 schoenebeck 708 <p>
3521     </p>
3522 senoner 542 <blockquote class="text">
3523     <p>"OK" -
3524     </p>
3525     <blockquote class="text">
3526     <p>in case the engine was successfully deployed
3527     </p>
3528 schoenebeck 940 </blockquote>
3529    
3530 senoner 542
3531     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3532     </p>
3533     <blockquote class="text">
3534     <p>in case the engine was deployed successfully, but there
3535     are noteworthy issue(s) related, providing an appropriate
3536     warning code and warning message
3537     </p>
3538 schoenebeck 940 </blockquote>
3539    
3540 senoner 542
3541     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3542     </p>
3543     <blockquote class="text">
3544     <p>in case it failed, providing an appropriate error code and
3545     error message
3546     </p>
3547 schoenebeck 940 </blockquote>
3548    
3549 senoner 542
3550 schoenebeck 708 </blockquote><p>
3551 schoenebeck 940
3552 schoenebeck 708 </p>
3553 senoner 542 <p>Example:
3554     </p>
3555 schoenebeck 708 <p>
3556     </p>
3557 senoner 542 <blockquote class="text">
3558     <p>
3559     </p>
3560 schoenebeck 708 </blockquote><p>
3561 schoenebeck 940
3562 schoenebeck 708 </p>
3563 schoenebeck 940 <a name="GET CHANNELS"></a><br /><hr />
3564 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3565     <a name="rfc.section.6.4.3"></a><h3>6.4.3.&nbsp;
3566     Getting all created sampler channel count</h3>
3567 senoner 542
3568     <p>The number of sampler channels can change on runtime. To get the
3569     current amount of sampler channels, the front-end can send the
3570     following command:
3571     </p>
3572 schoenebeck 708 <p>
3573     </p>
3574 senoner 542 <blockquote class="text">
3575     <p>GET CHANNELS
3576     </p>
3577 schoenebeck 708 </blockquote><p>
3578 schoenebeck 940
3579 schoenebeck 708 </p>
3580 senoner 542 <p>Possible Answers:
3581     </p>
3582 schoenebeck 708 <p>
3583     </p>
3584 senoner 542 <blockquote class="text">
3585     <p>LinuxSampler will answer by returning the current number of sampler channels.
3586     </p>
3587 schoenebeck 708 </blockquote><p>
3588 schoenebeck 940
3589 schoenebeck 708 </p>
3590 senoner 542 <p>Example:
3591     </p>
3592 schoenebeck 708 <p>
3593     </p>
3594 senoner 542 <blockquote class="text">
3595     <p>C: "GET CHANNELS"
3596     </p>
3597     <p>S: "12"
3598     </p>
3599 schoenebeck 708 </blockquote><p>
3600 schoenebeck 940
3601 schoenebeck 708 </p>
3602 schoenebeck 940 <a name="LIST CHANNELS"></a><br /><hr />
3603 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3604     <a name="rfc.section.6.4.4"></a><h3>6.4.4.&nbsp;
3605     Getting all created sampler channel list</h3>
3606 senoner 542
3607     <p>The number of sampler channels can change on runtime. To get the
3608     current list of sampler channels, the front-end can send the
3609     following command:
3610     </p>
3611 schoenebeck 708 <p>
3612     </p>
3613 senoner 542 <blockquote class="text">
3614     <p>LIST CHANNELS
3615     </p>
3616 schoenebeck 708 </blockquote><p>
3617 schoenebeck 940
3618 schoenebeck 708 </p>
3619 senoner 542 <p>Possible Answers:
3620     </p>
3621 schoenebeck 708 <p>
3622     </p>
3623 senoner 542 <blockquote class="text">
3624     <p>LinuxSampler will answer by returning a comma separated list
3625     with all sampler channels numerical IDs.
3626     </p>
3627 schoenebeck 708 </blockquote><p>
3628 schoenebeck 940
3629 schoenebeck 708 </p>
3630 senoner 542 <p>Example:
3631     </p>
3632 schoenebeck 708 <p>
3633     </p>
3634 senoner 542 <blockquote class="text">
3635     <p>C: "LIST CHANNELS"
3636     </p>
3637     <p>S: "0,1,2,3,4,5,6,9,10,11,15,20"
3638     </p>
3639 schoenebeck 708 </blockquote><p>
3640 schoenebeck 940
3641 schoenebeck 708 </p>
3642 schoenebeck 940 <a name="ADD CHANNEL"></a><br /><hr />
3643 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3644     <a name="rfc.section.6.4.5"></a><h3>6.4.5.&nbsp;
3645     Adding a new sampler channel</h3>
3646 senoner 542
3647     <p>A new sampler channel can be added to the end of the sampler
3648     channel list by sending the following command:
3649     </p>
3650 schoenebeck 708 <p>
3651     </p>
3652 senoner 542 <blockquote class="text">
3653     <p>ADD CHANNEL
3654     </p>
3655 schoenebeck 708 </blockquote><p>
3656 schoenebeck 940
3657 schoenebeck 708 </p>
3658 senoner 542 <p>This will increment the sampler channel count by one and the new
3659     sampler channel will be appended to the end of the sampler channel
3660     list. The front-end should send the respective, related commands
3661     right after to e.g. load an engine, load an instrument and setting
3662     input, output method and eventually other commands to initialize
3663     the new channel. The front-end should use the sampler channel
3664     returned by the answer of this command to perform the previously
3665     recommended commands, to avoid race conditions e.g. with other
3666     front-ends that might also have sent an "ADD CHANNEL" command.
3667     </p>
3668     <p>Possible Answers:
3669     </p>
3670 schoenebeck 708 <p>
3671     </p>
3672 senoner 542 <blockquote class="text">
3673     <p>"OK[&lt;sampler-channel&gt;]" -
3674     </p>
3675     <blockquote class="text">
3676     <p>in case a new sampler channel could be added, where
3677     &lt;sampler-channel&gt; reflects the channel number of the new
3678 schoenebeck 561 created sampler channel which should be used to set up
3679     the sampler channel by sending subsequent initialization
3680 senoner 542 commands
3681     </p>
3682 schoenebeck 940 </blockquote>
3683    
3684 senoner 542
3685     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3686     </p>
3687     <blockquote class="text">
3688     <p>in case a new channel was added successfully, but there are
3689     noteworthy issue(s) related, providing an appropriate
3690     warning code and warning message
3691     </p>
3692 schoenebeck 940 </blockquote>
3693    
3694 senoner 542
3695     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3696     </p>
3697     <blockquote class="text">
3698     <p>in case it failed, providing an appropriate error code and
3699     error message
3700     </p>
3701 schoenebeck 940 </blockquote>
3702    
3703 senoner 542
3704 schoenebeck 708 </blockquote><p>
3705 schoenebeck 940
3706 schoenebeck 708 </p>
3707 senoner 542 <p>Example:
3708     </p>
3709 schoenebeck 708 <p>
3710     </p>
3711 senoner 542 <blockquote class="text">
3712     <p>
3713     </p>
3714 schoenebeck 708 </blockquote><p>
3715 schoenebeck 940
3716 schoenebeck 708 </p>
3717 schoenebeck 940 <a name="REMOVE CHANNEL"></a><br /><hr />
3718 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3719     <a name="rfc.section.6.4.6"></a><h3>6.4.6.&nbsp;
3720     Removing a sampler channel</h3>
3721 senoner 542
3722     <p>A sampler channel can be removed by sending the following command:
3723     </p>
3724 schoenebeck 708 <p>
3725     </p>
3726 senoner 542 <blockquote class="text">
3727     <p>REMOVE CHANNEL &lt;sampler-channel&gt;
3728     </p>
3729 schoenebeck 708 </blockquote><p>
3730 schoenebeck 940
3731 schoenebeck 708 </p>
3732 schoenebeck 561 <p>Where &lt;sampler-channel&gt; should be replaced by the
3733     number of the sampler channel as given by the
3734 schoenebeck 974 <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3735     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
3736 schoenebeck 561 command. The channel numbers of all subsequent sampler channels
3737     remain the same.
3738 senoner 542 </p>
3739     <p>Possible Answers:
3740     </p>
3741 schoenebeck 708 <p>
3742     </p>
3743 senoner 542 <blockquote class="text">
3744     <p>"OK" -
3745     </p>
3746     <blockquote class="text">
3747     <p>in case the given sampler channel could be removed
3748     </p>
3749 schoenebeck 940 </blockquote>
3750    
3751 senoner 542
3752     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3753     </p>
3754     <blockquote class="text">
3755     <p>in case the given channel was removed, but there are
3756     noteworthy issue(s) related, providing an appropriate
3757     warning code and warning message
3758     </p>
3759 schoenebeck 940 </blockquote>
3760    
3761 senoner 542
3762     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3763     </p>
3764     <blockquote class="text">
3765     <p>in case it failed, providing an appropriate error code and
3766     error message
3767     </p>
3768 schoenebeck 940 </blockquote>
3769    
3770 senoner 542
3771 schoenebeck 708 </blockquote><p>
3772 schoenebeck 940
3773 schoenebeck 708 </p>
3774 senoner 542 <p>Example:
3775     </p>
3776 schoenebeck 708 <p>
3777     </p>
3778 senoner 542 <blockquote class="text">
3779     <p>
3780     </p>
3781 schoenebeck 708 </blockquote><p>
3782 schoenebeck 940
3783 schoenebeck 708 </p>
3784 schoenebeck 940 <a name="GET AVAILABLE_ENGINES"></a><br /><hr />
3785 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3786     <a name="rfc.section.6.4.7"></a><h3>6.4.7.&nbsp;
3787     Getting amount of available engines</h3>
3788 senoner 542
3789     <p>The front-end can ask for the number of available engines by sending the following command:
3790     </p>
3791 schoenebeck 708 <p>
3792     </p>
3793 senoner 542 <blockquote class="text">
3794     <p>GET AVAILABLE_ENGINES
3795     </p>
3796 schoenebeck 708 </blockquote><p>
3797 schoenebeck 940
3798 schoenebeck 708 </p>
3799 senoner 542 <p>Possible Answers:
3800     </p>
3801 schoenebeck 708 <p>
3802     </p>
3803 senoner 542 <blockquote class="text">
3804     <p>LinuxSampler will answer by sending the number of available engines.
3805     </p>
3806 schoenebeck 708 </blockquote><p>
3807 schoenebeck 940
3808 schoenebeck 708 </p>
3809 senoner 542 <p>Example:
3810     </p>
3811 schoenebeck 708 <p>
3812     </p>
3813 senoner 542 <blockquote class="text">
3814     <p>C: "GET AVAILABLE_ENGINES"
3815     </p>
3816     <p>S: "4"
3817     </p>
3818 schoenebeck 708 </blockquote><p>
3819 schoenebeck 940
3820 schoenebeck 708 </p>
3821 schoenebeck 940 <a name="LIST AVAILABLE_ENGINES"></a><br /><hr />
3822 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3823     <a name="rfc.section.6.4.8"></a><h3>6.4.8.&nbsp;
3824     Getting all available engines</h3>
3825 senoner 542
3826     <p>The front-end can ask for a list of all available engines by sending the following command:
3827     </p>
3828 schoenebeck 708 <p>
3829     </p>
3830 senoner 542 <blockquote class="text">
3831     <p>LIST AVAILABLE_ENGINES
3832     </p>
3833 schoenebeck 708 </blockquote><p>
3834 schoenebeck 940
3835 schoenebeck 708 </p>
3836 senoner 542 <p>Possible Answers:
3837     </p>
3838 schoenebeck 708 <p>
3839     </p>
3840 senoner 542 <blockquote class="text">
3841 schoenebeck 561 <p>LinuxSampler will answer by sending a comma separated list
3842     of the engines' names encapsulated into apostrophes (').
3843     Engine names can consist of lower and upper cases,
3844     digits and underlines ("_" character).
3845 senoner 542 </p>
3846 schoenebeck 708 </blockquote><p>
3847 schoenebeck 940
3848 schoenebeck 708 </p>
3849 senoner 542 <p>Example:
3850     </p>
3851 schoenebeck 708 <p>
3852     </p>
3853 senoner 542 <blockquote class="text">
3854     <p>C: "LIST AVAILABLE_ENGINES"
3855     </p>
3856 schoenebeck 561 <p>S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
3857 senoner 542 </p>
3858 schoenebeck 708 </blockquote><p>
3859 schoenebeck 940
3860 schoenebeck 708 </p>
3861 schoenebeck 940 <a name="GET ENGINE INFO"></a><br /><hr />
3862 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3863     <a name="rfc.section.6.4.9"></a><h3>6.4.9.&nbsp;
3864     Getting information about an engine</h3>
3865 senoner 542
3866     <p>The front-end can ask for information about a specific engine by
3867     sending the following command:
3868     </p>
3869 schoenebeck 708 <p>
3870     </p>
3871 senoner 542 <blockquote class="text">
3872     <p>GET ENGINE INFO &lt;engine-name&gt;
3873     </p>
3874 schoenebeck 708 </blockquote><p>
3875 schoenebeck 940
3876 schoenebeck 708 </p>
3877 senoner 542 <p>Where &lt;engine-name&gt; is an engine name as obtained by the
3878 schoenebeck 974 <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a> command.
3879 senoner 542 </p>
3880     <p>Possible Answers:
3881     </p>
3882 schoenebeck 708 <p>
3883     </p>
3884 senoner 542 <blockquote class="text">
3885     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3886     Each answer line begins with the information category name
3887     followed by a colon and then a space character &lt;SP&gt; and finally
3888     the info character string to that info category. At the moment
3889     the following categories are defined:
3890     </p>
3891 schoenebeck 708 <p>
3892     </p>
3893 senoner 542 <blockquote class="text">
3894     <p>DESCRIPTION -
3895     </p>
3896     <blockquote class="text">
3897     <p>arbitrary description text about the engine
3898 schoenebeck 1400 (note that the character string may contain
3899     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3900 senoner 542 </p>
3901 schoenebeck 940 </blockquote>
3902    
3903 senoner 542
3904     <p>VERSION -
3905     </p>
3906     <blockquote class="text">
3907     <p>arbitrary character string regarding the engine's version
3908     </p>
3909 schoenebeck 940 </blockquote>
3910    
3911 senoner 542
3912 schoenebeck 940 </blockquote>
3913    
3914 senoner 542
3915 schoenebeck 708 </blockquote><p>
3916 schoenebeck 940
3917 schoenebeck 708 </p>
3918 senoner 542 <p>The mentioned fields above don't have to be in particular order.
3919     </p>
3920     <p>Example:
3921     </p>
3922 schoenebeck 708 <p>
3923     </p>
3924 senoner 542 <blockquote class="text">
3925     <p>C: "GET ENGINE INFO JoesCustomEngine"
3926     </p>
3927     <p>S: "DESCRIPTION: this is Joe's custom sampler engine"
3928     </p>
3929     <p>&nbsp;&nbsp;&nbsp;"VERSION: testing-1.0"
3930     </p>
3931     <p>&nbsp;&nbsp;&nbsp;"."
3932     </p>
3933 schoenebeck 708 </blockquote><p>
3934 schoenebeck 940
3935 schoenebeck 708 </p>
3936 schoenebeck 940 <a name="GET CHANNEL INFO"></a><br /><hr />
3937 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
3938     <a name="rfc.section.6.4.10"></a><h3>6.4.10.&nbsp;
3939     Getting sampler channel information</h3>
3940 senoner 542
3941     <p>The front-end can ask for the current settings of a sampler channel
3942     by sending the following command:
3943     </p>
3944 schoenebeck 708 <p>
3945     </p>
3946 senoner 542 <blockquote class="text">
3947     <p>GET CHANNEL INFO &lt;sampler-channel&gt;
3948     </p>
3949 schoenebeck 708 </blockquote><p>
3950 schoenebeck 940
3951 schoenebeck 708 </p>
3952 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
3953 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
3954     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
3955 senoner 542 </p>
3956     <p>Possible Answers:
3957     </p>
3958 schoenebeck 708 <p>
3959     </p>
3960 senoner 542 <blockquote class="text">
3961     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
3962     Each answer line begins with the settings category name
3963     followed by a colon and then a space character &lt;SP&gt; and finally
3964     the info character string to that setting category. At the
3965     moment the following categories are defined:
3966     </p>
3967 schoenebeck 708 <p>
3968     </p>
3969 senoner 542 <blockquote class="text">
3970     <p>ENGINE_NAME -
3971     </p>
3972     <blockquote class="text">
3973 schoenebeck 575 <p>name of the engine that is associated with the sampler
3974     channel, "NONE" if there's no engine associated yet for
3975 senoner 542 this sampler channel
3976     </p>
3977 schoenebeck 940 </blockquote>
3978    
3979 senoner 542
3980     <p>AUDIO_OUTPUT_DEVICE -
3981     </p>
3982     <blockquote class="text">
3983     <p>numerical ID of the audio output device which is
3984     currently connected to this sampler channel to output
3985     the audio signal, "NONE" if there's no device
3986     connected to this sampler channel
3987     </p>
3988 schoenebeck 940 </blockquote>
3989    
3990 senoner 542
3991     <p>AUDIO_OUTPUT_CHANNELS -
3992     </p>
3993     <blockquote class="text">
3994     <p>number of output channels the sampler channel offers
3995     (dependent to used sampler engine and loaded instrument)
3996     </p>
3997 schoenebeck 940 </blockquote>
3998    
3999 senoner 542
4000     <p>AUDIO_OUTPUT_ROUTING -
4001     </p>
4002     <blockquote class="text">
4003     <p>comma separated list which reflects to which audio
4004     channel of the selected audio output device each
4005     sampler output channel is routed to, e.g. "0,3" would
4006     mean the engine's output channel 0 is routed to channel
4007     0 of the audio output device and the engine's output
4008     channel 1 is routed to the channel 3 of the audio
4009     output device
4010     </p>
4011 schoenebeck 940 </blockquote>
4012    
4013 senoner 542
4014     <p>INSTRUMENT_FILE -
4015     </p>
4016     <blockquote class="text">
4017     <p>the file name of the loaded instrument, "NONE" if
4018     there's no instrument yet loaded for this sampler
4019 schoenebeck 1400 channel (note: since LSCP 1.2 this path may contain
4020     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4021 senoner 542 </p>
4022 schoenebeck 940 </blockquote>
4023    
4024 senoner 542
4025     <p>INSTRUMENT_NR -
4026     </p>
4027     <blockquote class="text">
4028     <p>the instrument index number of the loaded instrument
4029     </p>
4030 schoenebeck 940 </blockquote>
4031    
4032 senoner 542
4033     <p>INSTRUMENT_NAME -
4034     </p>
4035     <blockquote class="text">
4036     <p>the instrument name of the loaded instrument
4037 schoenebeck 1400 (note: since LSCP 1.2 this character string may contain
4038     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4039 senoner 542 </p>
4040 schoenebeck 940 </blockquote>
4041    
4042 senoner 542
4043     <p>INSTRUMENT_STATUS -
4044     </p>
4045     <blockquote class="text">
4046     <p>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative
4047     value indicates a loading exception. Value of 100 indicates that the instrument is fully
4048     loaded.
4049     </p>
4050 schoenebeck 940 </blockquote>
4051    
4052 senoner 542
4053     <p>MIDI_INPUT_DEVICE -
4054     </p>
4055     <blockquote class="text">
4056     <p>numerical ID of the MIDI input device which is
4057     currently connected to this sampler channel to deliver
4058     MIDI input commands, "NONE" if there's no device
4059     connected to this sampler channel
4060     </p>
4061 schoenebeck 940 </blockquote>
4062    
4063 senoner 542
4064     <p>MIDI_INPUT_PORT -
4065     </p>
4066     <blockquote class="text">
4067     <p>port number of the MIDI input device
4068     </p>
4069 schoenebeck 940 </blockquote>
4070    
4071 senoner 542
4072     <p>MIDI_INPUT_CHANNEL -
4073     </p>
4074     <blockquote class="text">
4075     <p>the MIDI input channel number this sampler channel
4076     should listen to or "ALL" to listen on all MIDI channels
4077     </p>
4078 schoenebeck 940 </blockquote>
4079    
4080 senoner 542
4081     <p>VOLUME -
4082     </p>
4083     <blockquote class="text">
4084     <p>optionally dotted number for the channel volume factor
4085 schoenebeck 1028 (where a value &lt; 1.0 means attenuation and a value >
4086 senoner 542 1.0 means amplification)
4087     </p>
4088 schoenebeck 940 </blockquote>
4089    
4090 senoner 542
4091 schoenebeck 708 <p>MUTE -
4092     </p>
4093     <blockquote class="text">
4094     <p>Determines whether the channel is muted, "true" if the
4095     channel is muted, "false" if the channel is not muted, and
4096     "MUTED_BY_SOLO" if the channel is muted because of the
4097     presence of a solo channel and will be unmuted when
4098     there are no solo channels left
4099     </p>
4100 schoenebeck 940 </blockquote>
4101    
4102 senoner 542
4103 schoenebeck 708 <p>SOLO -
4104     </p>
4105     <blockquote class="text">
4106     <p>Determines whether this is a solo channel, "true" if
4107     the channel is a solo channel; "false" otherwise
4108     </p>
4109 schoenebeck 940 </blockquote>
4110    
4111 senoner 542
4112 schoenebeck 974 <p>MIDI_INSTRUMENT_MAP -
4113     </p>
4114     <blockquote class="text">
4115     <p>Determines to which MIDI instrument map this sampler
4116     channel is assigned to. Read chapter
4117     <a class='info' href='#SET CHANNEL MIDI_INSTRUMENT_MAP'>"SET CHANNEL MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Assigning a MIDI instrument map to a sampler channel</span><span>)</span></a>
4118     for a list of possible values.
4119     </p>
4120 schoenebeck 940 </blockquote>
4121 schoenebeck 974
4122    
4123     </blockquote>
4124 schoenebeck 940
4125 schoenebeck 708
4126     </blockquote><p>
4127 schoenebeck 940
4128 schoenebeck 708 </p>
4129 senoner 542 <p>The mentioned fields above don't have to be in particular order.
4130     </p>
4131     <p>Example:
4132     </p>
4133 schoenebeck 708 <p>
4134     </p>
4135 senoner 542 <blockquote class="text">
4136     <p>C: "GET CHANNEL INFO 34"
4137     </p>
4138     <p>S: "ENGINE_NAME: GigEngine"
4139     </p>
4140     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4141     </p>
4142     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_DEVICE: 0"
4143     </p>
4144     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_CHANNELS: 2"
4145     </p>
4146     <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 0,1"
4147     </p>
4148     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
4149     </p>
4150     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
4151     </p>
4152     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Fazioli Piano"
4153     </p>
4154     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_STATUS: 100"
4155     </p>
4156     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"
4157     </p>
4158     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"
4159     </p>
4160     <p>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"
4161     </p>
4162 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
4163     </p>
4164     <p>&nbsp;&nbsp;&nbsp;"MUTE: false"
4165     </p>
4166     <p>&nbsp;&nbsp;&nbsp;"SOLO: false"
4167     </p>
4168     <p>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"
4169     </p>
4170 senoner 542 <p>&nbsp;&nbsp;&nbsp;"."
4171     </p>
4172 schoenebeck 708 </blockquote><p>
4173 schoenebeck 940
4174 schoenebeck 708 </p>
4175 schoenebeck 940 <a name="GET CHANNEL VOICE_COUNT"></a><br /><hr />
4176 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4177     <a name="rfc.section.6.4.11"></a><h3>6.4.11.&nbsp;
4178     Current number of active voices</h3>
4179 senoner 542
4180     <p>The front-end can ask for the current number of active voices on a
4181     sampler channel by sending the following command:
4182     </p>
4183 schoenebeck 708 <p>
4184     </p>
4185 senoner 542 <blockquote class="text">
4186     <p>GET CHANNEL VOICE_COUNT &lt;sampler-channel&gt;
4187     </p>
4188 schoenebeck 708 </blockquote><p>
4189 schoenebeck 940
4190 schoenebeck 708 </p>
4191 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4192 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4193     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4194 senoner 542 </p>
4195     <p>Possible Answers:
4196     </p>
4197 schoenebeck 708 <p>
4198     </p>
4199 senoner 542 <blockquote class="text">
4200     <p>LinuxSampler will answer by returning the number of active
4201     voices on that channel.
4202     </p>
4203 schoenebeck 708 </blockquote><p>
4204 schoenebeck 940
4205 schoenebeck 708 </p>
4206 senoner 542 <p>Example:
4207     </p>
4208 schoenebeck 708 <p>
4209     </p>
4210 senoner 542 <blockquote class="text">
4211     <p>
4212     </p>
4213 schoenebeck 708 </blockquote><p>
4214 schoenebeck 940
4215 schoenebeck 708 </p>
4216 schoenebeck 940 <a name="GET CHANNEL STREAM_COUNT"></a><br /><hr />
4217 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4218     <a name="rfc.section.6.4.12"></a><h3>6.4.12.&nbsp;
4219     Current number of active disk streams</h3>
4220 senoner 542
4221     <p>The front-end can ask for the current number of active disk streams
4222     on a sampler channel by sending the following command:
4223     </p>
4224 schoenebeck 708 <p>
4225     </p>
4226 senoner 542 <blockquote class="text">
4227     <p>GET CHANNEL STREAM_COUNT &lt;sampler-channel&gt;
4228     </p>
4229 schoenebeck 708 </blockquote><p>
4230 schoenebeck 940
4231 schoenebeck 708 </p>
4232 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number the front-end is interested in
4233 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4234     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4235 senoner 542 </p>
4236     <p>Possible Answers:
4237     </p>
4238 schoenebeck 708 <p>
4239     </p>
4240 senoner 542 <blockquote class="text">
4241     <p>LinuxSampler will answer by returning the number of active
4242     disk streams on that channel in case the engine supports disk
4243     streaming, if the engine doesn't support disk streaming it will
4244     return "NA" for not available.
4245     </p>
4246 schoenebeck 708 </blockquote><p>
4247 schoenebeck 940
4248 schoenebeck 708 </p>
4249 senoner 542 <p>Example:
4250     </p>
4251 schoenebeck 708 <p>
4252     </p>
4253 senoner 542 <blockquote class="text">
4254     <p>
4255     </p>
4256 schoenebeck 708 </blockquote><p>
4257 schoenebeck 940
4258 schoenebeck 708 </p>
4259 schoenebeck 940 <a name="GET CHANNEL BUFFER_FILL"></a><br /><hr />
4260 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4261     <a name="rfc.section.6.4.13"></a><h3>6.4.13.&nbsp;
4262     Current fill state of disk stream buffers</h3>
4263 senoner 542
4264     <p>The front-end can ask for the current fill state of all disk streams
4265     on a sampler channel by sending the following command:
4266     </p>
4267 schoenebeck 708 <p>
4268     </p>
4269 senoner 542 <blockquote class="text">
4270     <p>GET CHANNEL BUFFER_FILL BYTES &lt;sampler-channel&gt;
4271     </p>
4272 schoenebeck 708 </blockquote><p>
4273 schoenebeck 940
4274 schoenebeck 708 </p>
4275 senoner 542 <p>to get the fill state in bytes or
4276     </p>
4277 schoenebeck 708 <p>
4278     </p>
4279 senoner 542 <blockquote class="text">
4280     <p>GET CHANNEL BUFFER_FILL PERCENTAGE &lt;sampler-channel&gt;
4281     </p>
4282 schoenebeck 708 </blockquote><p>
4283 schoenebeck 940
4284 schoenebeck 708 </p>
4285 senoner 542 <p>to get the fill state in percent, where &lt;sampler-channel&gt; is the
4286 schoenebeck 575 sampler channel number the front-end is interested in
4287 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4288     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
4289 senoner 542 </p>
4290     <p>Possible Answers:
4291     </p>
4292 schoenebeck 708 <p>
4293     </p>
4294 senoner 542 <blockquote class="text">
4295     <p>LinuxSampler will either answer by returning a comma separated
4296     string with the fill state of all disk stream buffers on that
4297     channel or an empty line if there are no active disk streams or
4298     "NA" for *not available* in case the engine which is deployed
4299     doesn't support disk streaming. Each entry in the answer list
4300     will begin with the stream's ID in brackets followed by the
4301     numerical representation of the fill size (either in bytes or
4302     percentage). Note: due to efficiency reasons the fill states in
4303     the response are not in particular order, thus the front-end has
4304     to sort them by itself if necessary.
4305     </p>
4306 schoenebeck 708 </blockquote><p>
4307 schoenebeck 940
4308 schoenebeck 708 </p>
4309 senoner 542 <p>Examples:
4310     </p>
4311 schoenebeck 708 <p>
4312     </p>
4313 senoner 542 <blockquote class="text">
4314     <p>C: "GET CHANNEL BUFFER_FILL BYTES 4"
4315     </p>
4316     <p>S: "[115]420500,[116]510300,[75]110000,[120]230700"
4317     </p>
4318 schoenebeck 708 </blockquote><p>
4319    
4320     </p>
4321 senoner 542 <blockquote class="text">
4322 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4323 senoner 542 </p>
4324     <p>S: "[115]90%,[116]98%,[75]40%,[120]62%"
4325     </p>
4326 schoenebeck 708 </blockquote><p>
4327    
4328     </p>
4329 senoner 542 <blockquote class="text">
4330 schoenebeck 708 <p>C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
4331 senoner 542 </p>
4332     <p>S: ""
4333     </p>
4334 schoenebeck 708 </blockquote><p>
4335 schoenebeck 940
4336 schoenebeck 708 </p>
4337 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_DEVICE"></a><br /><hr />
4338 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4339     <a name="rfc.section.6.4.14"></a><h3>6.4.14.&nbsp;
4340     Setting audio output device</h3>
4341 senoner 542
4342     <p>The front-end can set the audio output device on a specific sampler
4343     channel by sending the following command:
4344     </p>
4345 schoenebeck 708 <p>
4346     </p>
4347 senoner 542 <blockquote class="text">
4348     <p>SET CHANNEL AUDIO_OUTPUT_DEVICE &lt;sampler-channel&gt; &lt;audio-device-id&gt;
4349     </p>
4350 schoenebeck 708 </blockquote><p>
4351 schoenebeck 940
4352 schoenebeck 708 </p>
4353 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4354 schoenebeck 974 number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4355     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
4356 schoenebeck 575 &lt;audio-device-id&gt; is the numerical ID of the audio output device as given by the
4357 schoenebeck 974 <a class='info' href='#CREATE AUDIO_OUTPUT_DEVICE'>"CREATE AUDIO_OUTPUT_DEVICE"<span> (</span><span class='info'>Creating an audio output device</span><span>)</span></a>
4358     or <a class='info' href='#LIST AUDIO_OUTPUT_DEVICES'>"LIST AUDIO_OUTPUT_DEVICES"<span> (</span><span class='info'>Getting all created audio output device list</span><span>)</span></a>
4359 schoenebeck 575 command.
4360 senoner 542 </p>
4361     <p>Possible Answers:
4362     </p>
4363 schoenebeck 708 <p>
4364     </p>
4365 senoner 542 <blockquote class="text">
4366     <p>"OK" -
4367     </p>
4368     <blockquote class="text">
4369     <p>on success
4370     </p>
4371 schoenebeck 940 </blockquote>
4372    
4373 senoner 542
4374     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4375     </p>
4376     <blockquote class="text">
4377     <p>if audio output device was set, but there are noteworthy
4378     issue(s) related, providing an appropriate warning code and
4379     warning message
4380     </p>
4381 schoenebeck 940 </blockquote>
4382    
4383 senoner 542
4384     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4385     </p>
4386     <blockquote class="text">
4387     <p>in case it failed, providing an appropriate error code and error message
4388     </p>
4389 schoenebeck 940 </blockquote>
4390    
4391 senoner 542
4392 schoenebeck 708 </blockquote><p>
4393 schoenebeck 940
4394 schoenebeck 708 </p>
4395 senoner 542 <p>Examples:
4396     </p>
4397 schoenebeck 708 <p>
4398     </p>
4399 senoner 542 <blockquote class="text">
4400     <p>
4401     </p>
4402 schoenebeck 708 </blockquote><p>
4403 schoenebeck 940
4404 schoenebeck 708 </p>
4405 schoenebeck 974 <a name="SET CHANNEL AUDIO_OUTPUT_TYPE"></a><br /><hr />
4406     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4407     <a name="rfc.section.6.4.15"></a><h3>6.4.15.&nbsp;
4408     Setting audio output type</h3>
4409 senoner 542
4410     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4411     </p>
4412     <p>The front-end can alter the audio output type on a specific sampler
4413     channel by sending the following command:
4414     </p>
4415 schoenebeck 708 <p>
4416     </p>
4417 senoner 542 <blockquote class="text">
4418     <p>SET CHANNEL AUDIO_OUTPUT_TYPE &lt;sampler-channel&gt; &lt;audio-output-type&gt;
4419     </p>
4420 schoenebeck 708 </blockquote><p>
4421 schoenebeck 940
4422 schoenebeck 708 </p>
4423 senoner 542 <p>Where &lt;audio-output-type&gt; is currently either "ALSA" or "JACK" and
4424     &lt;sampler-channel&gt; is the respective sampler channel number.
4425     </p>
4426     <p>Possible Answers:
4427     </p>
4428 schoenebeck 708 <p>
4429     </p>
4430 senoner 542 <blockquote class="text">
4431     <p>"OK" -
4432     </p>
4433     <blockquote class="text">
4434     <p>on success
4435     </p>
4436 schoenebeck 940 </blockquote>
4437    
4438 senoner 542
4439     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4440     </p>
4441     <blockquote class="text">
4442     <p>if audio output type was set, but there are noteworthy
4443     issue(s) related, providing an appropriate warning code and
4444     warning message
4445     </p>
4446 schoenebeck 940 </blockquote>
4447    
4448 senoner 542
4449     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4450     </p>
4451     <blockquote class="text">
4452     <p>in case it failed, providing an appropriate error code and error message
4453     </p>
4454 schoenebeck 940 </blockquote>
4455    
4456 senoner 542
4457 schoenebeck 708 </blockquote><p>
4458 schoenebeck 940
4459 schoenebeck 708 </p>
4460 senoner 542 <p>Examples:
4461     </p>
4462 schoenebeck 708 <p>
4463     </p>
4464 senoner 542 <blockquote class="text">
4465     <p>
4466     </p>
4467 schoenebeck 708 </blockquote><p>
4468 schoenebeck 940
4469 schoenebeck 708 </p>
4470 schoenebeck 940 <a name="SET CHANNEL AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
4471 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4472     <a name="rfc.section.6.4.16"></a><h3>6.4.16.&nbsp;
4473     Setting audio output channel</h3>
4474 senoner 542
4475     <p>The front-end can alter the audio output channel on a specific
4476     sampler channel by sending the following command:
4477     </p>
4478 schoenebeck 708 <p>
4479     </p>
4480 senoner 542 <blockquote class="text">
4481     <p>SET CHANNEL AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;audio-out&gt; &lt;audio-in&gt;
4482     </p>
4483 schoenebeck 708 </blockquote><p>
4484 schoenebeck 940
4485 schoenebeck 708 </p>
4486 schoenebeck 575 <p>Where &lt;sampler-chan&gt; is the sampler channel number
4487 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4488     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command, &lt;audio-out&gt; is the
4489 senoner 542 numerical ID of the sampler channel's audio output channel which should be
4490     rerouted and &lt;audio-in&gt; is the numerical ID of the audio channel of the selected audio
4491     output device where &lt;audio-out&gt; should be routed to.
4492     </p>
4493     <p>Possible Answers:
4494     </p>
4495 schoenebeck 708 <p>
4496     </p>
4497 senoner 542 <blockquote class="text">
4498     <p>"OK" -
4499     </p>
4500     <blockquote class="text">
4501     <p>on success
4502     </p>
4503 schoenebeck 940 </blockquote>
4504    
4505 senoner 542
4506     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4507     </p>
4508     <blockquote class="text">
4509     <p>if audio output channel was set, but there are noteworthy
4510     issue(s) related, providing an appropriate warning code and
4511     warning message
4512     </p>
4513 schoenebeck 940 </blockquote>
4514    
4515 senoner 542
4516     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4517     </p>
4518     <blockquote class="text">
4519     <p>in case it failed, providing an appropriate error code and error message
4520     </p>
4521 schoenebeck 940 </blockquote>
4522    
4523 senoner 542
4524 schoenebeck 708 </blockquote><p>
4525 schoenebeck 940
4526 schoenebeck 708 </p>
4527 senoner 542 <p>Examples:
4528     </p>
4529 schoenebeck 708 <p>
4530     </p>
4531 senoner 542 <blockquote class="text">
4532     <p>
4533     </p>
4534 schoenebeck 708 </blockquote><p>
4535 schoenebeck 940
4536 schoenebeck 708 </p>
4537 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_DEVICE"></a><br /><hr />
4538 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4539     <a name="rfc.section.6.4.17"></a><h3>6.4.17.&nbsp;
4540     Setting MIDI input device</h3>
4541 senoner 542
4542     <p>The front-end can set the MIDI input device on a specific sampler
4543     channel by sending the following command:
4544     </p>
4545 schoenebeck 708 <p>
4546     </p>
4547 senoner 542 <blockquote class="text">
4548     <p>SET CHANNEL MIDI_INPUT_DEVICE &lt;sampler-channel&gt; &lt;midi-device-id&gt;
4549     </p>
4550 schoenebeck 708 </blockquote><p>
4551 schoenebeck 940
4552 schoenebeck 708 </p>
4553 schoenebeck 575 <p>Where &lt;sampler-channel&gt; is the sampler channel number
4554 schoenebeck 974 as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4555     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command
4556 schoenebeck 575 and &lt;midi-device-id&gt; is the numerical ID of the MIDI input device as returned by the
4557 schoenebeck 974 <a class='info' href='#CREATE MIDI_INPUT_DEVICE'>"CREATE MIDI_INPUT_DEVICE"<span> (</span><span class='info'>Creating a MIDI input device</span><span>)</span></a>
4558     or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a> command.
4559 senoner 542 </p>
4560     <p>Possible Answers:
4561     </p>
4562 schoenebeck 708 <p>
4563     </p>
4564 senoner 542 <blockquote class="text">
4565     <p>"OK" -
4566     </p>
4567     <blockquote class="text">
4568     <p>on success
4569     </p>
4570 schoenebeck 940 </blockquote>
4571    
4572 senoner 542
4573     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4574     </p>
4575     <blockquote class="text">
4576     <p>if MIDI input device was set, but there are noteworthy
4577     issue(s) related, providing an appropriate warning code and
4578     warning message
4579     </p>
4580 schoenebeck 940 </blockquote>
4581    
4582 senoner 542
4583     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4584     </p>
4585     <blockquote class="text">
4586     <p>in case it failed, providing an appropriate error code and error message
4587     </p>
4588 schoenebeck 940 </blockquote>
4589    
4590 senoner 542
4591 schoenebeck 708 </blockquote><p>
4592 schoenebeck 940
4593 schoenebeck 708 </p>
4594 senoner 542 <p>Examples:
4595     </p>
4596 schoenebeck 708 <p>
4597     </p>
4598 senoner 542 <blockquote class="text">
4599     <p>
4600     </p>
4601 schoenebeck 708 </blockquote><p>
4602 schoenebeck 940
4603 schoenebeck 708 </p>
4604 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_TYPE"></a><br /><hr />
4605 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4606     <a name="rfc.section.6.4.18"></a><h3>6.4.18.&nbsp;
4607     Setting MIDI input type</h3>
4608 senoner 542
4609     <p>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
4610     </p>
4611     <p>The front-end can alter the MIDI input type on a specific sampler
4612     channel by sending the following command:
4613     </p>
4614 schoenebeck 708 <p>
4615     </p>
4616 senoner 542 <blockquote class="text">
4617     <p>SET CHANNEL MIDI_INPUT_TYPE &lt;sampler-channel&gt; &lt;midi-input-type&gt;
4618     </p>
4619 schoenebeck 708 </blockquote><p>
4620 schoenebeck 940
4621 schoenebeck 708 </p>
4622 senoner 542 <p>Where &lt;midi-input-type&gt; is currently only "ALSA" and
4623     &lt;sampler-channel&gt; is the respective sampler channel number.
4624     </p>
4625     <p>Possible Answers:
4626     </p>
4627 schoenebeck 708 <p>
4628     </p>
4629 senoner 542 <blockquote class="text">
4630     <p>"OK" -
4631     </p>
4632     <blockquote class="text">
4633     <p>on success
4634     </p>
4635 schoenebeck 940 </blockquote>
4636    
4637 senoner 542
4638     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4639     </p>
4640     <blockquote class="text">
4641     <p>if MIDI input type was set, but there are noteworthy
4642     issue(s) related, providing an appropriate warning code and
4643     warning message
4644     </p>
4645 schoenebeck 940 </blockquote>
4646    
4647 senoner 542
4648     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4649     </p>
4650     <blockquote class="text">
4651     <p>in case it failed, providing an appropriate error code and error message
4652     </p>
4653 schoenebeck 940 </blockquote>
4654    
4655 senoner 542
4656 schoenebeck 708 </blockquote><p>
4657 schoenebeck 940
4658 schoenebeck 708 </p>
4659 senoner 542 <p>Examples:
4660     </p>
4661 schoenebeck 708 <p>
4662     </p>
4663 senoner 542 <blockquote class="text">
4664     <p>
4665     </p>
4666 schoenebeck 708 </blockquote><p>
4667 schoenebeck 940
4668 schoenebeck 708 </p>
4669 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_PORT"></a><br /><hr />
4670 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4671     <a name="rfc.section.6.4.19"></a><h3>6.4.19.&nbsp;
4672     Setting MIDI input port</h3>
4673 senoner 542
4674     <p>The front-end can alter the MIDI input port on a specific sampler
4675     channel by sending the following command:
4676     </p>
4677 schoenebeck 708 <p>
4678     </p>
4679 senoner 542 <blockquote class="text">
4680     <p>SET CHANNEL MIDI_INPUT_PORT &lt;sampler-channel&gt; &lt;midi-input-port&gt;
4681     </p>
4682 schoenebeck 708 </blockquote><p>
4683 schoenebeck 940
4684 schoenebeck 708 </p>
4685 senoner 542 <p>Where &lt;midi-input-port&gt; is a MIDI input port number of the
4686     MIDI input device connected to the sampler channel given by
4687     &lt;sampler-channel&gt;.
4688     </p>
4689     <p>Possible Answers:
4690     </p>
4691 schoenebeck 708 <p>
4692     </p>
4693 senoner 542 <blockquote class="text">
4694     <p>"OK" -
4695     </p>
4696     <blockquote class="text">
4697     <p>on success
4698     </p>
4699 schoenebeck 940 </blockquote>
4700    
4701 senoner 542
4702     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4703     </p>
4704     <blockquote class="text">
4705     <p>if MIDI input port was set, but there are noteworthy
4706     issue(s) related, providing an appropriate warning code and
4707     warning message
4708     </p>
4709 schoenebeck 940 </blockquote>
4710    
4711 senoner 542
4712     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4713     </p>
4714     <blockquote class="text">
4715 schoenebeck 561 <p>in case it failed, providing an appropriate error code and error message
4716 senoner 542 </p>
4717 schoenebeck 940 </blockquote>
4718    
4719 senoner 542
4720 schoenebeck 708 </blockquote><p>
4721 schoenebeck 940
4722 schoenebeck 708 </p>
4723 senoner 542 <p>Examples:
4724     </p>
4725 schoenebeck 708 <p>
4726     </p>
4727 senoner 542 <blockquote class="text">
4728     <p>
4729     </p>
4730 schoenebeck 708 </blockquote><p>
4731 schoenebeck 940
4732 schoenebeck 708 </p>
4733 schoenebeck 940 <a name="SET CHANNEL MIDI_INPUT_CHANNEL"></a><br /><hr />
4734 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4735     <a name="rfc.section.6.4.20"></a><h3>6.4.20.&nbsp;
4736     Setting MIDI input channel</h3>
4737 senoner 542
4738     <p>The front-end can alter the MIDI channel a sampler channel should
4739     listen to by sending the following command:
4740     </p>
4741 schoenebeck 708 <p>
4742     </p>
4743 senoner 542 <blockquote class="text">
4744     <p>SET CHANNEL MIDI_INPUT_CHANNEL &lt;sampler-channel&gt; &lt;midi-input-chan&gt;
4745     </p>
4746 schoenebeck 708 </blockquote><p>
4747 schoenebeck 940
4748 schoenebeck 708 </p>
4749 senoner 542 <p>Where &lt;midi-input-chan&gt; is the number of the new MIDI input channel where
4750     &lt;sampler-channel&gt; should listen to or "ALL" to listen on all 16 MIDI
4751     channels.
4752     </p>
4753     <p>Possible Answers:
4754     </p>
4755 schoenebeck 708 <p>
4756     </p>
4757 senoner 542 <blockquote class="text">
4758     <p>"OK" -
4759     </p>
4760     <blockquote class="text">
4761     <p>on success
4762     </p>
4763 schoenebeck 940 </blockquote>
4764    
4765 senoner 542
4766     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4767     </p>
4768     <blockquote class="text">
4769     <p>if MIDI input channel was set, but there are noteworthy
4770     issue(s) related, providing an appropriate warning code and
4771     warning message
4772     </p>
4773 schoenebeck 940 </blockquote>
4774    
4775 senoner 542
4776     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4777     </p>
4778     <blockquote class="text">
4779     <p>in case it failed, providing an appropriate error code and error message
4780     </p>
4781 schoenebeck 940 </blockquote>
4782    
4783 senoner 542
4784 schoenebeck 708 </blockquote><p>
4785 schoenebeck 940
4786 schoenebeck 708 </p>
4787 senoner 542 <p>Examples:
4788     </p>
4789 schoenebeck 708 <p>
4790     </p>
4791 senoner 542 <blockquote class="text">
4792     <p>
4793     </p>
4794 schoenebeck 708 </blockquote><p>
4795 schoenebeck 940
4796 schoenebeck 708 </p>
4797 schoenebeck 940 <a name="SET CHANNEL VOLUME"></a><br /><hr />
4798 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4799     <a name="rfc.section.6.4.21"></a><h3>6.4.21.&nbsp;
4800     Setting channel volume</h3>
4801 senoner 542
4802     <p>The front-end can alter the volume of a sampler channel by sending
4803     the following command:
4804     </p>
4805 schoenebeck 708 <p>
4806     </p>
4807 senoner 542 <blockquote class="text">
4808     <p>SET CHANNEL VOLUME &lt;sampler-channel&gt; &lt;volume&gt;
4809     </p>
4810 schoenebeck 708 </blockquote><p>
4811 schoenebeck 940
4812 schoenebeck 708 </p>
4813 senoner 542 <p>Where &lt;volume&gt; is an optionally dotted positive number (a value
4814     smaller than 1.0 means attenuation, whereas a value greater than
4815     1.0 means amplification) and &lt;sampler-channel&gt; defines the sampler
4816     channel where this volume factor should be set.
4817     </p>
4818     <p>Possible Answers:
4819     </p>
4820 schoenebeck 708 <p>
4821     </p>
4822 senoner 542 <blockquote class="text">
4823     <p>"OK" -
4824     </p>
4825     <blockquote class="text">
4826     <p>on success
4827     </p>
4828 schoenebeck 940 </blockquote>
4829    
4830 senoner 542
4831     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4832     </p>
4833     <blockquote class="text">
4834     <p>if channel volume was set, but there are noteworthy
4835     issue(s) related, providing an appropriate warning code and
4836     warning message
4837     </p>
4838 schoenebeck 940 </blockquote>
4839    
4840 senoner 542
4841     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4842     </p>
4843     <blockquote class="text">
4844     <p>in case it failed, providing an appropriate error code and error message
4845     </p>
4846 schoenebeck 940 </blockquote>
4847    
4848 senoner 542
4849 schoenebeck 708 </blockquote><p>
4850 schoenebeck 940
4851 schoenebeck 708 </p>
4852 senoner 542 <p>Examples:
4853     </p>
4854 schoenebeck 708 <p>
4855     </p>
4856 senoner 542 <blockquote class="text">
4857     <p>
4858     </p>
4859 schoenebeck 708 </blockquote><p>
4860 schoenebeck 940
4861 schoenebeck 708 </p>
4862 schoenebeck 940 <a name="SET CHANNEL MUTE"></a><br /><hr />
4863 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4864     <a name="rfc.section.6.4.22"></a><h3>6.4.22.&nbsp;
4865     Muting a sampler channel</h3>
4866 senoner 542
4867 schoenebeck 708 <p>The front-end can mute/unmute a specific sampler
4868     channel by sending the following command:
4869     </p>
4870     <p>
4871     </p>
4872     <blockquote class="text">
4873     <p>SET CHANNEL MUTE &lt;sampler-channel&gt; &lt;mute&gt;
4874     </p>
4875     </blockquote><p>
4876 schoenebeck 940
4877 schoenebeck 708 </p>
4878     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4879 schoenebeck 974 number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4880     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
4881 schoenebeck 708 &lt;mute&gt; should be replaced either by "1" to mute the channel or "0"
4882     to unmute the channel.
4883     </p>
4884     <p>Possible Answers:
4885     </p>
4886     <p>
4887     </p>
4888     <blockquote class="text">
4889     <p>"OK" -
4890     </p>
4891     <blockquote class="text">
4892     <p>on success
4893     </p>
4894 schoenebeck 940 </blockquote>
4895    
4896 schoenebeck 708
4897     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4898     </p>
4899     <blockquote class="text">
4900     <p>if the channel was muted/unmuted, but there are noteworthy
4901     issue(s) related, providing an appropriate warning code and
4902     warning message
4903     </p>
4904 schoenebeck 940 </blockquote>
4905    
4906 schoenebeck 708
4907     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4908     </p>
4909     <blockquote class="text">
4910     <p>in case it failed, providing an appropriate error code and error message
4911     </p>
4912 schoenebeck 940 </blockquote>
4913    
4914 schoenebeck 708
4915     </blockquote><p>
4916 schoenebeck 940
4917 schoenebeck 708 </p>
4918     <p>Examples:
4919     </p>
4920     <p>
4921     </p>
4922     <blockquote class="text">
4923     <p>
4924     </p>
4925     </blockquote><p>
4926 schoenebeck 940
4927 schoenebeck 708 </p>
4928 schoenebeck 940 <a name="SET CHANNEL SOLO"></a><br /><hr />
4929 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4930     <a name="rfc.section.6.4.23"></a><h3>6.4.23.&nbsp;
4931     Soloing a sampler channel</h3>
4932 schoenebeck 708
4933     <p>The front-end can solo/unsolo a specific sampler channel
4934     by sending the following command:
4935     </p>
4936     <p>
4937     </p>
4938     <blockquote class="text">
4939     <p>SET CHANNEL SOLO &lt;sampler-channel&gt; &lt;solo&gt;
4940     </p>
4941     </blockquote><p>
4942 schoenebeck 940
4943 schoenebeck 708 </p>
4944     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
4945 schoenebeck 974 number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
4946     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
4947 schoenebeck 708 &lt;solo&gt; should be replaced either by "1" to solo the channel or "0"
4948     to unsolo the channel.
4949     </p>
4950     <p>Possible Answers:
4951     </p>
4952     <p>
4953     </p>
4954     <blockquote class="text">
4955     <p>"OK" -
4956     </p>
4957     <blockquote class="text">
4958     <p>on success
4959     </p>
4960 schoenebeck 940 </blockquote>
4961    
4962 schoenebeck 708
4963     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4964     </p>
4965     <blockquote class="text">
4966     <p>if the channel was soloed/unsoloed, but there are noteworthy
4967     issue(s) related, providing an appropriate warning code and
4968     warning message
4969     </p>
4970 schoenebeck 940 </blockquote>
4971    
4972 schoenebeck 708
4973     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4974     </p>
4975     <blockquote class="text">
4976     <p>in case it failed, providing an appropriate error code and error message
4977     </p>
4978 schoenebeck 940 </blockquote>
4979    
4980 schoenebeck 708
4981     </blockquote><p>
4982 schoenebeck 940
4983 schoenebeck 708 </p>
4984     <p>Examples:
4985     </p>
4986     <p>
4987     </p>
4988     <blockquote class="text">
4989     <p>
4990     </p>
4991     </blockquote><p>
4992 schoenebeck 940
4993 schoenebeck 708 </p>
4994 schoenebeck 974 <a name="SET CHANNEL MIDI_INSTRUMENT_MAP"></a><br /><hr />
4995     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
4996     <a name="rfc.section.6.4.24"></a><h3>6.4.24.&nbsp;
4997     Assigning a MIDI instrument map to a sampler channel</h3>
4998    
4999     <p>The front-end can assign a MIDI instrument map to a specific sampler channel
5000     by sending the following command:
5001     </p>
5002     <p>
5003     </p>
5004     <blockquote class="text">
5005     <p>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;
5006     </p>
5007     </blockquote><p>
5008    
5009     </p>
5010     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5011     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5012     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
5013     &lt;map&gt; can have the following possibilites:
5014     </p>
5015     <p>
5016     </p>
5017     <blockquote class="text">
5018     <p>"NONE" -
5019     </p>
5020     <blockquote class="text">
5021     <p>This is the default setting. In this case
5022     the sampler channel is not assigned any MIDI
5023     instrument map and thus will ignore all MIDI
5024     program change messages.
5025     </p>
5026     </blockquote>
5027    
5028    
5029     <p>"DEFAULT" -
5030     </p>
5031     <blockquote class="text">
5032     <p>The sampler channel will always use the
5033     default MIDI instrument map to handle MIDI
5034     program change messages.
5035     </p>
5036     </blockquote>
5037    
5038    
5039     <p>numeric ID -
5040     </p>
5041     <blockquote class="text">
5042     <p>You can assign a specific MIDI instrument map
5043     by replacing &lt;map&gt; with the respective numeric
5044     ID of the MIDI instrument map as returned by the
5045     <a class='info' href='#LIST MIDI_INSTRUMENT_MAPS'>"LIST MIDI_INSTRUMENT_MAPS"<span> (</span><span class='info'>Getting all created MIDI instrument maps</span><span>)</span></a>
5046     command. Once that map will be deleted, the sampler
5047     channel would fall back to "NONE".
5048     </p>
5049     </blockquote>
5050    
5051    
5052     </blockquote><p>
5053    
5054     </p>
5055     <p>Read chapter <a class='info' href='#MIDI Instrument Mapping'>"MIDI Instrument Mapping"<span> (</span><span class='info'>MIDI Instrument Mapping</span><span>)</span></a>
5056     for details regarding MIDI instrument mapping.
5057     </p>
5058     <p>Possible Answers:
5059     </p>
5060     <p>
5061     </p>
5062     <blockquote class="text">
5063     <p>"OK" -
5064     </p>
5065     <blockquote class="text">
5066     <p>on success
5067     </p>
5068     </blockquote>
5069    
5070    
5071     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5072     </p>
5073     <blockquote class="text">
5074     <p>in case it failed, providing an appropriate error code and error message
5075     </p>
5076     </blockquote>
5077    
5078    
5079     </blockquote><p>
5080    
5081     </p>
5082     <p>Examples:
5083     </p>
5084     <p>
5085     </p>
5086     <blockquote class="text">
5087     <p>
5088     </p>
5089     </blockquote><p>
5090    
5091     </p>
5092 schoenebeck 1002 <a name="CREATE FX_SEND"></a><br /><hr />
5093     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5094     <a name="rfc.section.6.4.25"></a><h3>6.4.25.&nbsp;
5095     Adding an effect send to a sampler channel</h3>
5096    
5097     <p>The front-end can create an additional effect send on a specific sampler channel
5098     by sending the following command:
5099     </p>
5100     <p>
5101     </p>
5102     <blockquote class="text">
5103     <p>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]
5104     </p>
5105     </blockquote><p>
5106    
5107     </p>
5108     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5109     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5110     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command, that is the
5111     sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5112     is a number between 0..127 defining the MIDI controller which can alter the
5113     effect send level and &lt;name&gt; is an optional argument defining a name
5114 schoenebeck 1390 for the effect send entity. The name does not have to be unique, but MUST be
5115     encapsulated into apostrophes and supports escape sequences as described in chapter
5116     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
5117 schoenebeck 1002 </p>
5118     <p>By default, that is as initial routing, the effect send's audio channels
5119     are automatically routed to the last audio channels of the sampler channel's
5120     audio output device, that way you can i.e. first increase the amount of audio
5121     channels on the audio output device for having dedicated effect send output
5122     channels and when "CREATE FX_SEND" is called, those channels will automatically
5123     be picked. You can alter the destination channels however with
5124     <a class='info' href='#SET FX_SEND AUDIO_OUTPUT_CHANNEL'>"SET FX_SEND AUDIO_OUTPUT_CHANNEL"<span> (</span><span class='info'>Altering effect send's audio routing</span><span>)</span></a>.
5125    
5126     </p>
5127     <p>Note: Create effect sends on a sampler channel only when needed, because having effect
5128     sends on a sampler channel will decrease runtime performance, because for implementing channel
5129     effect sends, separate (sampler channel local) audio buffers are needed to render and mix
5130     the voices and route the audio signal afterwards to the master outputs and effect send
5131     outputs (along with their respective effect send levels). A sampler channel without effect
5132     sends however can mix its voices directly into the audio output devices's audio buffers
5133     and is thus faster.
5134    
5135     </p>
5136     <p>Possible Answers:
5137     </p>
5138     <p>
5139     </p>
5140     <blockquote class="text">
5141     <p>"OK[&lt;fx-send-id&gt;]" -
5142     </p>
5143     <blockquote class="text">
5144     <p>in case a new effect send could be added to the
5145     sampler channel, where &lt;fx-send-id&gt; reflects the
5146     unique ID of the newly created effect send entity
5147     </p>
5148     </blockquote>
5149    
5150    
5151     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5152     </p>
5153     <blockquote class="text">
5154     <p>when a new effect send could not be added, i.e.
5155     due to invalid parameters
5156     </p>
5157     </blockquote>
5158    
5159    
5160     </blockquote><p>
5161    
5162     </p>
5163     <p>Examples:
5164     </p>
5165     <p>
5166     </p>
5167     <blockquote class="text">
5168     <p>C: "CREATE FX_SEND 0 91 'Reverb Send'"
5169     </p>
5170     <p>S: "OK[0]"
5171     </p>
5172     </blockquote><p>
5173    
5174     </p>
5175     <p>
5176     </p>
5177     <blockquote class="text">
5178     <p>C: "CREATE FX_SEND 0 93"
5179     </p>
5180     <p>S: "OK[1]"
5181     </p>
5182     </blockquote><p>
5183    
5184     </p>
5185     <a name="DESTROY FX_SEND"></a><br /><hr />
5186     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5187     <a name="rfc.section.6.4.26"></a><h3>6.4.26.&nbsp;
5188     Removing an effect send from a sampler channel</h3>
5189    
5190     <p>The front-end can remove an existing effect send on a specific sampler channel
5191     by sending the following command:
5192     </p>
5193     <p>
5194     </p>
5195     <blockquote class="text">
5196     <p>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5197     </p>
5198     </blockquote><p>
5199    
5200     </p>
5201     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5202     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5203     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command, that is the
5204     sampler channel from which the effect send should be removed from and
5205     &lt;fx-send-id&gt; is the respective effect send number as returned by the
5206     <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5207     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command.
5208     </p>
5209     <p>Possible Answers:
5210     </p>
5211     <p>
5212     </p>
5213     <blockquote class="text">
5214     <p>"OK" -
5215     </p>
5216     <blockquote class="text">
5217     <p>on success
5218     </p>
5219     </blockquote>
5220    
5221    
5222     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5223     </p>
5224     <blockquote class="text">
5225     <p>in case it failed, providing an appropriate error code and
5226     error message
5227     </p>
5228     </blockquote>
5229    
5230    
5231     </blockquote><p>
5232    
5233     </p>
5234     <p>Example:
5235     </p>
5236     <p>
5237     </p>
5238     <blockquote class="text">
5239     <p>C: "DESTROY FX_SEND 0 0"
5240     </p>
5241     <p>S: "OK"
5242     </p>
5243     </blockquote><p>
5244    
5245     </p>
5246     <a name="GET FX_SENDS"></a><br /><hr />
5247     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5248     <a name="rfc.section.6.4.27"></a><h3>6.4.27.&nbsp;
5249     Getting amount of effect sends on a sampler channel</h3>
5250    
5251     <p>The front-end can ask for the amount of effect sends on a specific sampler channel
5252     by sending the following command:
5253     </p>
5254     <p>
5255     </p>
5256     <blockquote class="text">
5257     <p>GET FX_SENDS &lt;sampler-channel&gt;
5258     </p>
5259     </blockquote><p>
5260    
5261     </p>
5262     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5263     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5264     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
5265     </p>
5266     <p>Possible Answers:
5267     </p>
5268     <p>
5269     </p>
5270     <blockquote class="text">
5271     <p>The sampler will answer by returning the number of effect
5272     sends on the given sampler channel.
5273     </p>
5274     </blockquote><p>
5275    
5276     </p>
5277     <p>Example:
5278     </p>
5279     <p>
5280     </p>
5281     <blockquote class="text">
5282     <p>C: "GET FX_SENDS 0"
5283     </p>
5284     <p>S: "2"
5285     </p>
5286     </blockquote><p>
5287    
5288     </p>
5289     <a name="LIST FX_SENDS"></a><br /><hr />
5290     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5291     <a name="rfc.section.6.4.28"></a><h3>6.4.28.&nbsp;
5292     Listing all effect sends on a sampler channel</h3>
5293    
5294     <p>The front-end can ask for a list of effect sends on a specific sampler channel
5295     by sending the following command:
5296     </p>
5297     <p>
5298     </p>
5299     <blockquote class="text">
5300     <p>LIST FX_SENDS &lt;sampler-channel&gt;
5301     </p>
5302     </blockquote><p>
5303    
5304     </p>
5305     <p>Where &lt;sampler-channel&gt; is the respective sampler channel
5306     number as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5307     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command.
5308     </p>
5309     <p>Possible Answers:
5310     </p>
5311     <p>
5312     </p>
5313     <blockquote class="text">
5314     <p>The sampler will answer by returning a comma separated list
5315     with all effect sends' numerical IDs on the given sampler
5316     channel.
5317     </p>
5318     </blockquote><p>
5319    
5320     </p>
5321     <p>Examples:
5322     </p>
5323     <p>
5324     </p>
5325     <blockquote class="text">
5326     <p>C: "LIST FX_SENDS 0"
5327     </p>
5328     <p>S: "0,1"
5329     </p>
5330     </blockquote><p>
5331    
5332     </p>
5333     <p>
5334     </p>
5335     <blockquote class="text">
5336     <p>C: "LIST FX_SENDS 1"
5337     </p>
5338     <p>S: ""
5339     </p>
5340     </blockquote><p>
5341    
5342     </p>
5343     <a name="GET FX_SEND INFO"></a><br /><hr />
5344     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5345     <a name="rfc.section.6.4.29"></a><h3>6.4.29.&nbsp;
5346     Getting effect send information</h3>
5347    
5348     <p>The front-end can ask for the current settings of an effect send entity
5349     by sending the following command:
5350     </p>
5351     <p>
5352     </p>
5353     <blockquote class="text">
5354     <p>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;
5355     </p>
5356     </blockquote><p>
5357    
5358     </p>
5359     <p>Where &lt;sampler-channel&gt; is the sampler channel number
5360     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5361     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command and
5362     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5363     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5364     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command.
5365    
5366     </p>
5367     <p>Possible Answers:
5368     </p>
5369     <p>
5370     </p>
5371     <blockquote class="text">
5372     <p>The sampler will answer by sending a &lt;CRLF&gt; separated list.
5373     Each answer line begins with the settings category name
5374     followed by a colon and then a space character &lt;SP&gt; and finally
5375     the info character string to that setting category. At the
5376     moment the following categories are defined:
5377     </p>
5378     <p>
5379     </p>
5380     <blockquote class="text">
5381     <p>NAME -
5382     </p>
5383     <blockquote class="text">
5384     <p>name of the effect send entity
5385 schoenebeck 1400 (note that this character string may contain
5386     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5387 schoenebeck 1002 </p>
5388     </blockquote>
5389    
5390    
5391 schoenebeck 1028 <p>MIDI_CONTROLLER -
5392     </p>
5393     <blockquote class="text">
5394     <p>a value between 0 and 127 reflecting the MIDI controller
5395     which is able to modify the effect send's send level
5396     </p>
5397     </blockquote>
5398    
5399    
5400     <p>LEVEL -
5401     </p>
5402     <blockquote class="text">
5403     <p>optionally dotted number reflecting the effect send's
5404     current send level (where a value &lt; 1.0 means attenuation
5405     and a value > 1.0 means amplification)
5406     </p>
5407     </blockquote>
5408    
5409    
5410 schoenebeck 1002 <p>AUDIO_OUTPUT_ROUTING -
5411     </p>
5412     <blockquote class="text">
5413     <p>comma separated list which reflects to which audio
5414     channel of the selected audio output device each
5415     effect send output channel is routed to, e.g. "0,3" would
5416     mean the effect send's output channel 0 is routed to channel
5417     0 of the audio output device and the effect send's output
5418     channel 1 is routed to the channel 3 of the audio
5419     output device (see
5420     <a class='info' href='#SET FX_SEND AUDIO_OUTPUT_CHANNEL'>"SET FX_SEND AUDIO_OUTPUT_CHANNEL"<span> (</span><span class='info'>Altering effect send's audio routing</span><span>)</span></a>
5421     for details)
5422     </p>
5423     </blockquote>
5424    
5425    
5426     </blockquote>
5427    
5428    
5429     </blockquote><p>
5430    
5431     </p>
5432     <p>The mentioned fields above don't have to be in particular order.
5433     </p>
5434     <p>Example:
5435     </p>
5436     <p>
5437     </p>
5438     <blockquote class="text">
5439     <p>C: "GET FX_SEND INFO 0 0"
5440     </p>
5441     <p>S: "NAME: Reverb Send"
5442     </p>
5443 schoenebeck 1028 <p>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"
5444     </p>
5445     <p>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"
5446     </p>
5447 schoenebeck 1002 <p>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"
5448     </p>
5449     <p>&nbsp;&nbsp;&nbsp;"."
5450     </p>
5451     </blockquote><p>
5452    
5453     </p>
5454 iliev 1137 <a name="SET FX_SEND NAME"></a><br /><hr />
5455     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5456     <a name="rfc.section.6.4.30"></a><h3>6.4.30.&nbsp;
5457     Changing effect send's name</h3>
5458    
5459     <p>The front-end can alter the current name of an effect
5460     send entity by sending the following command:
5461     </p>
5462     <p>
5463     </p>
5464     <blockquote class="text">
5465     <p>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;
5466     </p>
5467     </blockquote><p>
5468    
5469     </p>
5470     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5471     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5472     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5473     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5474     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5475     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command and
5476     &lt;name&gt; is the new name of the effect send entity, which
5477 schoenebeck 1390 does not have to be unique (name MUST be encapsulated into apostrophes
5478     and supports escape sequences as described in chapter
5479     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
5480    
5481 iliev 1137 </p>
5482     <p>Possible Answers:
5483     </p>
5484     <p>
5485     </p>
5486     <blockquote class="text">
5487     <p>"OK" -
5488     </p>
5489     <blockquote class="text">
5490     <p>on success
5491     </p>
5492     </blockquote>
5493    
5494    
5495     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5496     </p>
5497     <blockquote class="text">
5498     <p>in case it failed, providing an appropriate error code and error message
5499     </p>
5500     </blockquote>
5501    
5502    
5503     </blockquote><p>
5504    
5505     </p>
5506     <p>Example:
5507     </p>
5508     <p>
5509     </p>
5510     <blockquote class="text">
5511     <p>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"
5512     </p>
5513     <p>S: "OK"
5514     </p>
5515     </blockquote><p>
5516    
5517     </p>
5518 schoenebeck 1002 <a name="SET FX_SEND AUDIO_OUTPUT_CHANNEL"></a><br /><hr />
5519     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5520 iliev 1137 <a name="rfc.section.6.4.31"></a><h3>6.4.31.&nbsp;
5521 schoenebeck 1002 Altering effect send's audio routing</h3>
5522    
5523     <p>The front-end can alter the destination of an effect send's audio channel on a specific
5524     sampler channel by sending the following command:
5525     </p>
5526     <p>
5527     </p>
5528     <blockquote class="text">
5529     <p>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;
5530     </p>
5531     </blockquote><p>
5532    
5533     </p>
5534     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5535     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5536     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5537     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5538     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5539     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command,
5540     &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
5541     which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
5542     the audio channel of the selected audio output device where &lt;audio-src&gt;
5543     should be routed to.
5544     </p>
5545     <p>Note that effect sends can only route audio to the same audio output
5546     device as assigned to the effect send's sampler channel. Also note that an
5547     effect send entity does always have exactly as much audio channels as its
5548     sampler channel. So if the sampler channel is stereo, the effect send does
5549     have two audio channels as well. Also keep in mind that the amount of audio
5550     channels on a sampler channel might be dependant not only to the deployed
5551     sampler engine on the sampler channel, but also dependant to the instrument
5552     currently loaded. However you can (effectively) turn an i.e. stereo effect
5553     send into a mono one by simply altering its audio routing appropriately.
5554     </p>
5555     <p>Possible Answers:
5556     </p>
5557     <p>
5558     </p>
5559     <blockquote class="text">
5560     <p>"OK" -
5561     </p>
5562     <blockquote class="text">
5563     <p>on success
5564     </p>
5565     </blockquote>
5566    
5567    
5568     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5569     </p>
5570     <blockquote class="text">
5571     <p>if audio output channel was set, but there are noteworthy
5572     issue(s) related, providing an appropriate warning code and
5573     warning message
5574     </p>
5575     </blockquote>
5576    
5577    
5578     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5579     </p>
5580     <blockquote class="text">
5581     <p>in case it failed, providing an appropriate error code and error message
5582     </p>
5583     </blockquote>
5584    
5585    
5586     </blockquote><p>
5587    
5588     </p>
5589     <p>Example:
5590     </p>
5591     <p>
5592     </p>
5593     <blockquote class="text">
5594     <p>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"
5595     </p>
5596     <p>S: "OK"
5597     </p>
5598     </blockquote><p>
5599    
5600     </p>
5601 schoenebeck 1028 <a name="SET FX_SEND MIDI_CONTROLLER"></a><br /><hr />
5602     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5603 iliev 1137 <a name="rfc.section.6.4.32"></a><h3>6.4.32.&nbsp;
5604 schoenebeck 1028 Altering effect send's MIDI controller</h3>
5605    
5606     <p>The front-end can alter the MIDI controller of an effect
5607     send entity by sending the following command:
5608     </p>
5609     <p>
5610     </p>
5611     <blockquote class="text">
5612     <p>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;
5613     </p>
5614     </blockquote><p>
5615    
5616     </p>
5617     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5618     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5619     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5620     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5621     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5622     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command and
5623     &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
5624     able to modify the effect send's send level.
5625     </p>
5626     <p>Possible Answers:
5627     </p>
5628     <p>
5629     </p>
5630     <blockquote class="text">
5631     <p>"OK" -
5632     </p>
5633     <blockquote class="text">
5634     <p>on success
5635     </p>
5636     </blockquote>
5637    
5638    
5639     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5640     </p>
5641     <blockquote class="text">
5642     <p>if MIDI controller was set, but there are noteworthy
5643     issue(s) related, providing an appropriate warning code and
5644     warning message
5645     </p>
5646     </blockquote>
5647    
5648    
5649     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5650     </p>
5651     <blockquote class="text">
5652     <p>in case it failed, providing an appropriate error code and error message
5653     </p>
5654     </blockquote>
5655    
5656    
5657     </blockquote><p>
5658    
5659     </p>
5660     <p>Example:
5661     </p>
5662     <p>
5663     </p>
5664     <blockquote class="text">
5665     <p>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"
5666     </p>
5667     <p>S: "OK"
5668     </p>
5669     </blockquote><p>
5670    
5671     </p>
5672     <a name="SET FX_SEND LEVEL"></a><br /><hr />
5673     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5674 iliev 1137 <a name="rfc.section.6.4.33"></a><h3>6.4.33.&nbsp;
5675 schoenebeck 1028 Altering effect send's send level</h3>
5676    
5677     <p>The front-end can alter the current send level of an effect
5678     send entity by sending the following command:
5679     </p>
5680     <p>
5681     </p>
5682     <blockquote class="text">
5683     <p>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;
5684     </p>
5685     </blockquote><p>
5686    
5687     </p>
5688     <p>Where &lt;sampler-chan&gt; is the sampler channel number
5689     as returned by the <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
5690     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a> command,
5691     &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
5692     as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5693     or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command and
5694     &lt;volume&gt; is an optionally dotted positive number (a value
5695     smaller than 1.0 means attenuation, whereas a value greater than
5696     1.0 means amplification) reflecting the new send level.
5697     </p>
5698     <p>Possible Answers:
5699     </p>
5700     <p>
5701     </p>
5702     <blockquote class="text">
5703     <p>"OK" -
5704     </p>
5705     <blockquote class="text">
5706     <p>on success
5707     </p>
5708     </blockquote>
5709    
5710    
5711     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5712     </p>
5713     <blockquote class="text">
5714     <p>if new send level was set, but there are noteworthy
5715     issue(s) related, providing an appropriate warning code and
5716     warning message
5717     </p>
5718     </blockquote>
5719    
5720    
5721     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5722     </p>
5723     <blockquote class="text">
5724     <p>in case it failed, providing an appropriate error code and error message
5725     </p>
5726     </blockquote>
5727    
5728    
5729     </blockquote><p>
5730    
5731     </p>
5732     <p>Example:
5733     </p>
5734     <p>
5735     </p>
5736     <blockquote class="text">
5737     <p>C: "SET FX_SEND LEVEL 0 0 0.15"
5738     </p>
5739     <p>S: "OK"
5740     </p>
5741     </blockquote><p>
5742    
5743     </p>
5744 schoenebeck 940 <a name="RESET CHANNEL"></a><br /><hr />
5745 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5746 iliev 1137 <a name="rfc.section.6.4.34"></a><h3>6.4.34.&nbsp;
5747 schoenebeck 974 Resetting a sampler channel</h3>
5748 schoenebeck 708
5749 senoner 542 <p>The front-end can reset a particular sampler channel by sending the following command:
5750     </p>
5751 schoenebeck 708 <p>
5752     </p>
5753 senoner 542 <blockquote class="text">
5754     <p>RESET CHANNEL &lt;sampler-channel&gt;
5755     </p>
5756 schoenebeck 708 </blockquote><p>
5757 schoenebeck 940
5758 schoenebeck 708 </p>
5759 senoner 542 <p>
5760     Where &lt;sampler-channel&gt; defines the sampler channel to be reset.
5761     This will cause the engine on that sampler channel, its voices and
5762     eventually disk streams and all control and status variables to be
5763     reset.
5764     </p>
5765     <p>Possible Answers:
5766     </p>
5767 schoenebeck 708 <p>
5768     </p>
5769 senoner 542 <blockquote class="text">
5770     <p>"OK" -
5771     </p>
5772     <blockquote class="text">
5773     <p>on success
5774     </p>
5775 schoenebeck 940 </blockquote>
5776    
5777 senoner 542
5778     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5779     </p>
5780     <blockquote class="text">
5781     <p>if channel was reset, but there are noteworthy issue(s)
5782     related, providing an appropriate warning code and warning
5783     message
5784     </p>
5785 schoenebeck 940 </blockquote>
5786    
5787 senoner 542
5788     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5789     </p>
5790     <blockquote class="text">
5791     <p>in case it failed, providing an appropriate error code and
5792     error message
5793     </p>
5794 schoenebeck 940 </blockquote>
5795    
5796 senoner 542
5797 schoenebeck 708 </blockquote><p>
5798 schoenebeck 940
5799 schoenebeck 708 </p>
5800 senoner 542 <p>Examples:
5801     </p>
5802 schoenebeck 708 <p>
5803     </p>
5804 senoner 542 <blockquote class="text">
5805     <p>
5806     </p>
5807 schoenebeck 708 </blockquote><p>
5808 schoenebeck 940
5809 schoenebeck 708 </p>
5810 schoenebeck 940 <a name="anchor12"></a><br /><hr />
5811 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5812     <a name="rfc.section.6.5"></a><h3>6.5.&nbsp;
5813     Controlling connection</h3>
5814 senoner 542
5815     <p>The following commands are used to control the connection to LinuxSampler.
5816     </p>
5817 schoenebeck 940 <a name="SUBSCRIBE"></a><br /><hr />
5818 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5819     <a name="rfc.section.6.5.1"></a><h3>6.5.1.&nbsp;
5820     Register front-end for receiving event messages</h3>
5821 senoner 542
5822     <p>The front-end can register itself to the LinuxSampler application to
5823     be informed about noteworthy events by sending this command:
5824     </p>
5825 schoenebeck 708 <p>
5826     </p>
5827 senoner 542 <blockquote class="text">
5828     <p>SUBSCRIBE &lt;event-id&gt;
5829     </p>
5830 schoenebeck 708 </blockquote><p>
5831 schoenebeck 940
5832 schoenebeck 708 </p>
5833 senoner 542 <p>where &lt;event-id&gt; will be replaced by the respective event that
5834     client wants to subscribe to.
5835     </p>
5836     <p>Possible Answers:
5837     </p>
5838 schoenebeck 708 <p>
5839     </p>
5840 senoner 542 <blockquote class="text">
5841     <p>"OK" -
5842     </p>
5843     <blockquote class="text">
5844     <p>on success
5845     </p>
5846 schoenebeck 940 </blockquote>
5847    
5848 senoner 542
5849     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5850     </p>
5851     <blockquote class="text">
5852     <p>if registration succeeded, but there are noteworthy
5853     issue(s) related, providing an appropriate warning code and
5854     warning message
5855     </p>
5856 schoenebeck 940 </blockquote>
5857    
5858 senoner 542
5859     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5860     </p>
5861     <blockquote class="text">
5862     <p>in case it failed, providing an appropriate error code and
5863     error message
5864     </p>
5865 schoenebeck 940 </blockquote>
5866    
5867 senoner 542
5868 schoenebeck 708 </blockquote><p>
5869 schoenebeck 940
5870 schoenebeck 708 </p>
5871 senoner 542 <p>Examples:
5872     </p>
5873 schoenebeck 708 <p>
5874     </p>
5875 senoner 542 <blockquote class="text">
5876     <p>
5877     </p>
5878 schoenebeck 708 </blockquote><p>
5879 schoenebeck 940
5880 schoenebeck 708 </p>
5881 schoenebeck 940 <a name="UNSUBSCRIBE"></a><br /><hr />
5882 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5883     <a name="rfc.section.6.5.2"></a><h3>6.5.2.&nbsp;
5884     Unregister front-end for not receiving event messages</h3>
5885 senoner 542
5886     <p>The front-end can unregister itself if it doesn't want to receive event
5887     messages anymore by sending the following command:
5888     </p>
5889 schoenebeck 708 <p>
5890     </p>
5891 senoner 542 <blockquote class="text">
5892     <p>UNSUBSCRIBE &lt;event-id&gt;
5893     </p>
5894 schoenebeck 708 </blockquote><p>
5895 schoenebeck 940
5896 schoenebeck 708 </p>
5897 senoner 542 <p>Where &lt;event-id&gt; will be replaced by the respective event that
5898     client doesn't want to receive anymore.
5899     </p>
5900     <p>Possible Answers:
5901     </p>
5902 schoenebeck 708 <p>
5903     </p>
5904 senoner 542 <blockquote class="text">
5905     <p>"OK" -
5906     </p>
5907     <blockquote class="text">
5908     <p>on success
5909     </p>
5910 schoenebeck 940 </blockquote>
5911    
5912 senoner 542
5913     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
5914     </p>
5915     <blockquote class="text">
5916     <p>if unregistration succeeded, but there are noteworthy
5917     issue(s) related, providing an appropriate warning code and
5918     warning message
5919     </p>
5920 schoenebeck 940 </blockquote>
5921    
5922 senoner 542
5923     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5924     </p>
5925     <blockquote class="text">
5926     <p>in case it failed, providing an appropriate error code and
5927     error message
5928     </p>
5929 schoenebeck 940 </blockquote>
5930    
5931 senoner 542
5932 schoenebeck 708 </blockquote><p>
5933 schoenebeck 940
5934 schoenebeck 708 </p>
5935 senoner 542 <p>Examples:
5936     </p>
5937 schoenebeck 708 <p>
5938     </p>
5939 senoner 542 <blockquote class="text">
5940     <p>
5941     </p>
5942 schoenebeck 708 </blockquote><p>
5943 schoenebeck 940
5944 schoenebeck 708 </p>
5945 schoenebeck 940 <a name="SET ECHO"></a><br /><hr />
5946 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
5947     <a name="rfc.section.6.5.3"></a><h3>6.5.3.&nbsp;
5948     Enable or disable echo of commands</h3>
5949 senoner 542
5950     <p>To enable or disable back sending of commands to the client the following command can be used:
5951     </p>
5952 schoenebeck 708 <p>
5953     </p>
5954 senoner 542 <blockquote class="text">
5955     <p>SET ECHO &lt;value&gt;
5956     </p>
5957 schoenebeck 708 </blockquote><p>
5958 schoenebeck 940
5959 schoenebeck 708 </p>
5960 senoner 542 <p>Where &lt;value&gt; should be replaced either by "1" to enable echo mode
5961     or "0" to disable echo mode. When echo mode is enabled, all
5962     commands send to LinuxSampler will be immediately send back and
5963     after this echo the actual response to the command will be
5964     returned. Echo mode will only be altered for the client connection
5965     that issued the "SET ECHO" command, not globally for all client
5966     connections.
5967     </p>
5968     <p>Possible Answers:
5969     </p>
5970 schoenebeck 708 <p>
5971     </p>
5972 senoner 542 <blockquote class="text">
5973     <p>"OK" -
5974     </p>
5975     <blockquote class="text">
5976     <p>usually
5977     </p>
5978 schoenebeck 940 </blockquote>
5979    
5980 senoner 542
5981     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5982     </p>
5983     <blockquote class="text">
5984     <p>on syntax error, e.g. non boolean value
5985     </p>
5986 schoenebeck 940 </blockquote>
5987    
5988 senoner 542
5989 schoenebeck 708 </blockquote><p>
5990 schoenebeck 940
5991 schoenebeck 708 </p>
5992 senoner 542 <p>Examples:
5993     </p>
5994 schoenebeck 708 <p>
5995     </p>
5996 senoner 542 <blockquote class="text">
5997     <p>
5998     </p>
5999 schoenebeck 708 </blockquote><p>
6000 schoenebeck 940
6001 schoenebeck 708 </p>
6002 schoenebeck 940 <a name="QUIT"></a><br /><hr />
6003 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6004     <a name="rfc.section.6.5.4"></a><h3>6.5.4.&nbsp;
6005     Close client connection</h3>
6006 senoner 542
6007     <p>The client can close its network connection to LinuxSampler by sending the following command:
6008     </p>
6009 schoenebeck 708 <p>
6010     </p>
6011 senoner 542 <blockquote class="text">
6012     <p>QUIT
6013     </p>
6014 schoenebeck 708 </blockquote><p>
6015 schoenebeck 940
6016 schoenebeck 708 </p>
6017 senoner 542 <p>This is probably more interesting for manual telnet connections to
6018     LinuxSampler than really useful for a front-end implementation.
6019     </p>
6020 schoenebeck 940 <a name="anchor13"></a><br /><hr />
6021 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6022     <a name="rfc.section.6.6"></a><h3>6.6.&nbsp;
6023     Global commands</h3>
6024 senoner 542
6025     <p>The following commands have global impact on the sampler.
6026     </p>
6027 schoenebeck 940 <a name="GET TOTAL_VOICE_COUNT"></a><br /><hr />
6028 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6029     <a name="rfc.section.6.6.1"></a><h3>6.6.1.&nbsp;
6030     Current number of active voices</h3>
6031 senoner 542
6032 schoenebeck 940 <p>The front-end can ask for the current number of active voices on
6033     the sampler by sending the following command:
6034     </p>
6035     <p>
6036     </p>
6037     <blockquote class="text">
6038     <p>GET TOTAL_VOICE_COUNT
6039     </p>
6040     </blockquote><p>
6041    
6042     </p>
6043     <p>Possible Answers:
6044     </p>
6045     <p>
6046     </p>
6047     <blockquote class="text">
6048     <p>LinuxSampler will answer by returning the number of all active
6049     voices on the sampler.
6050     </p>
6051     </blockquote><p>
6052    
6053     </p>
6054     <a name="GET TOTAL_VOICE_COUNT_MAX"></a><br /><hr />
6055 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6056     <a name="rfc.section.6.6.2"></a><h3>6.6.2.&nbsp;
6057     Maximum amount of active voices</h3>
6058 schoenebeck 940
6059     <p>The front-end can ask for the maximum number of active voices
6060     by sending the following command:
6061     </p>
6062     <p>
6063     </p>
6064     <blockquote class="text">
6065     <p>GET TOTAL_VOICE_COUNT_MAX
6066     </p>
6067     </blockquote><p>
6068    
6069     </p>
6070     <p>Possible Answers:
6071     </p>
6072     <p>
6073     </p>
6074     <blockquote class="text">
6075     <p>LinuxSampler will answer by returning the maximum number
6076     of active voices.
6077     </p>
6078     </blockquote><p>
6079    
6080     </p>
6081 schoenebeck 1572 <a name="GET TOTAL_STREAM_COUNT"></a><br /><hr />
6082     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6083     <a name="rfc.section.6.6.3"></a><h3>6.6.3.&nbsp;
6084     Current number of active disk streams</h3>
6085    
6086     <p>The front-end can ask for the current number of active disk streams on
6087     the sampler by sending the following command:
6088     </p>
6089     <p>
6090     </p>
6091     <blockquote class="text">
6092     <p>GET TOTAL_STREAM_COUNT
6093     </p>
6094     </blockquote><p>
6095    
6096     </p>
6097     <p>Possible Answers:
6098     </p>
6099     <p>
6100     </p>
6101     <blockquote class="text">
6102     <p>LinuxSampler will answer by returning the number of all active
6103     disk streams on the sampler.
6104     </p>
6105     </blockquote><p>
6106    
6107     </p>
6108 schoenebeck 940 <a name="RESET"></a><br /><hr />
6109 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6110 schoenebeck 1572 <a name="rfc.section.6.6.4"></a><h3>6.6.4.&nbsp;
6111 schoenebeck 974 Reset sampler</h3>
6112 schoenebeck 940
6113 senoner 542 <p>The front-end can reset the whole sampler by sending the following command:
6114     </p>
6115 schoenebeck 708 <p>
6116     </p>
6117 senoner 542 <blockquote class="text">
6118     <p>RESET
6119     </p>
6120 schoenebeck 708 </blockquote><p>
6121 schoenebeck 940
6122 schoenebeck 708 </p>
6123 senoner 542 <p>Possible Answers:
6124     </p>
6125 schoenebeck 708 <p>
6126     </p>
6127 senoner 542 <blockquote class="text">
6128     <p>"OK" -
6129     </p>
6130     <blockquote class="text">
6131     <p>always
6132     </p>
6133 schoenebeck 940 </blockquote>
6134    
6135 senoner 542
6136 schoenebeck 708 </blockquote><p>
6137 schoenebeck 940
6138 schoenebeck 708 </p>
6139 senoner 542 <p>Examples:
6140     </p>
6141 schoenebeck 708 <p>
6142     </p>
6143 senoner 542 <blockquote class="text">
6144     <p>
6145     </p>
6146 schoenebeck 708 </blockquote><p>
6147 schoenebeck 940
6148 schoenebeck 708 </p>
6149 schoenebeck 940 <a name="GET SERVER INFO"></a><br /><hr />
6150 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6151 schoenebeck 1572 <a name="rfc.section.6.6.5"></a><h3>6.6.5.&nbsp;
6152 schoenebeck 974 General sampler informations</h3>
6153 schoenebeck 575
6154     <p>The client can ask for general informations about the LinuxSampler
6155     instance by sending the following command:
6156     </p>
6157 schoenebeck 708 <p>
6158     </p>
6159 schoenebeck 575 <blockquote class="text">
6160     <p>GET SERVER INFO
6161     </p>
6162 schoenebeck 708 </blockquote><p>
6163 schoenebeck 940
6164 schoenebeck 708 </p>
6165 schoenebeck 575 <p>Possible Answers:
6166     </p>
6167 schoenebeck 708 <p>
6168     </p>
6169 schoenebeck 575 <blockquote class="text">
6170     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6171     Each answer line begins with the information category name
6172     followed by a colon and then a space character &lt;SP&gt; and finally
6173     the info character string to that information category. At the
6174     moment the following categories are defined:
6175 schoenebeck 940
6176 schoenebeck 575 </p>
6177 schoenebeck 708 <p>
6178     </p>
6179 schoenebeck 575 <blockquote class="text">
6180     <p>DESCRIPTION -
6181     </p>
6182     <blockquote class="text">
6183     <p>arbitrary textual description about the sampler
6184 schoenebeck 1390 (note that the character string may contain
6185     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6186 schoenebeck 575 </p>
6187 schoenebeck 940 </blockquote>
6188    
6189 schoenebeck 575
6190     <p>VERSION -
6191     </p>
6192     <blockquote class="text">
6193     <p>version of the sampler
6194     </p>
6195 schoenebeck 940 </blockquote>
6196    
6197 schoenebeck 575
6198     <p>PROTOCOL_VERSION -
6199     </p>
6200     <blockquote class="text">
6201     <p>version of the LSCP specification the sampler
6202 schoenebeck 974 complies with (see <a class='info' href='#LSCP versioning'>Section&nbsp;2<span> (</span><span class='info'>Versioning of this specification</span><span>)</span></a> for details)
6203 schoenebeck 575 </p>
6204 schoenebeck 940 </blockquote>
6205    
6206 schoenebeck 575
6207 iliev 1162 <p>INSTRUMENTS_DB_SUPPORT -
6208     </p>
6209     <blockquote class="text">
6210     <p>either yes or no, specifies whether the
6211     sampler is build with instruments database support.
6212     </p>
6213 schoenebeck 940 </blockquote>
6214 iliev 1162
6215    
6216     </blockquote>
6217 schoenebeck 940
6218 schoenebeck 575
6219 schoenebeck 708 </blockquote><p>
6220 schoenebeck 940
6221 schoenebeck 708 </p>
6222 schoenebeck 575 <p>The mentioned fields above don't have to be in particular order.
6223     Other fields might be added in future.
6224     </p>
6225 schoenebeck 1006 <a name="GET VOLUME"></a><br /><hr />
6226     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6227 schoenebeck 1572 <a name="rfc.section.6.6.6"></a><h3>6.6.6.&nbsp;
6228 schoenebeck 1006 Getting global volume attenuation</h3>
6229    
6230     <p>The client can ask for the current global sampler-wide volume
6231     attenuation by sending the following command:
6232     </p>
6233     <p>
6234     </p>
6235     <blockquote class="text">
6236     <p>GET VOLUME
6237     </p>
6238     </blockquote><p>
6239    
6240     </p>
6241     <p>Possible Answers:
6242     </p>
6243     <p>
6244     </p>
6245     <blockquote class="text">
6246     <p>The sampler will always answer by returning the optional
6247     dotted floating point coefficient, reflecting the current
6248     global volume attenuation.
6249    
6250     </p>
6251     </blockquote><p>
6252    
6253     </p>
6254     <p>Note: it is up to the respective sampler engine whether to obey
6255     that global volume parameter or not, but in general all engines SHOULD
6256     use this parameter.
6257     </p>
6258     <a name="SET VOLUME"></a><br /><hr />
6259     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6260 schoenebeck 1572 <a name="rfc.section.6.6.7"></a><h3>6.6.7.&nbsp;
6261 schoenebeck 1006 Setting global volume attenuation</h3>
6262    
6263     <p>The client can alter the current global sampler-wide volume
6264     attenuation by sending the following command:
6265     </p>
6266     <p>
6267     </p>
6268     <blockquote class="text">
6269     <p>SET VOLUME &lt;volume&gt;
6270     </p>
6271     </blockquote><p>
6272    
6273     </p>
6274     <p>Where &lt;volume&gt; should be replaced by the optional dotted
6275     floating point value, reflecting the new global volume parameter.
6276     This value might usually be in the range between 0.0 and 1.0, that
6277     is for attenuating the overall volume.
6278     </p>
6279     <p>Possible Answers:
6280     </p>
6281     <p>
6282     </p>
6283     <blockquote class="text">
6284     <p>"OK" -
6285     </p>
6286     <blockquote class="text">
6287     <p>on success
6288     </p>
6289     </blockquote>
6290    
6291    
6292     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6293     </p>
6294     <blockquote class="text">
6295     <p>if the global volume was set, but there are noteworthy
6296     issue(s) related, providing an appropriate warning code and
6297     warning message
6298     </p>
6299     </blockquote>
6300    
6301    
6302     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6303     </p>
6304     <blockquote class="text">
6305     <p>in case it failed, providing an appropriate error code and error message
6306     </p>
6307     </blockquote>
6308    
6309    
6310     </blockquote><p>
6311    
6312     </p>
6313 schoenebeck 974 <a name="MIDI Instrument Mapping"></a><br /><hr />
6314     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6315     <a name="rfc.section.6.7"></a><h3>6.7.&nbsp;
6316     MIDI Instrument Mapping</h3>
6317 schoenebeck 945
6318     <p>The MIDI protocol provides a way to switch between instruments
6319     by sending so called MIDI bank select and MIDI program change
6320     messages which are essentially just numbers. The following commands
6321     allow to actually map arbitrary MIDI bank select / program change
6322     numbers with real instruments.
6323     </p>
6324 schoenebeck 974 <p>The sampler allows to manage an arbitrary amount of MIDI
6325     instrument maps which define which instrument to load on
6326     which MIDI program change message.
6327 schoenebeck 945 </p>
6328 schoenebeck 974 <p>By default, that is when the sampler is launched, there is no
6329     map, thus the sampler will simply ignore all program change
6330     messages. The front-end has to explicitly create at least one
6331     map, add entries to the map and tell the respective sampler
6332     channel(s) which MIDI instrument map to use, so the sampler
6333     knows how to react on a given program change message on the
6334     respective sampler channel, that is by switching to the
6335     respectively defined engine type and loading the respective
6336     instrument. See command
6337     <a class='info' href='#SET CHANNEL MIDI_INSTRUMENT_MAP'>"SET CHANNEL MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Assigning a MIDI instrument map to a sampler channel</span><span>)</span></a>
6338     for how to assign a MIDI instrument map to a sampler channel.
6339     </p>
6340 schoenebeck 945 <p>Also note per MIDI specification a bank select message does not
6341     cause to switch to another instrument. Instead when receiving a
6342     bank select message the bank value will be stored and a subsequent
6343     program change message (which may occur at any time) will finally
6344     cause the sampler to switch to the respective instrument as
6345     reflected by the current MIDI instrument map.
6346     </p>
6347 schoenebeck 1390 <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6348 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6349     <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6350     Create a new MIDI instrument map</h3>
6351    
6352     <p>The front-end can add a new MIDI instrument map by sending
6353     the following command:
6354     </p>
6355     <p>
6356     </p>
6357     <blockquote class="text">
6358     <p>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]
6359     </p>
6360     </blockquote><p>
6361    
6362     </p>
6363     <p>Where &lt;name&gt; is an optional argument allowing to
6364     assign a custom name to the new map. MIDI instrument Map
6365 schoenebeck 1390 names do not have to be unique, but MUST be encapsulated
6366     into apostrophes and support escape sequences as described
6367     in chapter "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
6368    
6369 schoenebeck 974 </p>
6370     <p>Possible Answers:
6371     </p>
6372     <p>
6373     </p>
6374     <blockquote class="text">
6375     <p>"OK[&lt;map&gt;]" -
6376     </p>
6377     <blockquote class="text">
6378     <p>in case a new MIDI instrument map could
6379     be added, where &lt;map&gt; reflects the
6380     unique ID of the newly created MIDI
6381     instrument map
6382     </p>
6383     </blockquote>
6384    
6385    
6386     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6387     </p>
6388     <blockquote class="text">
6389     <p>when a new map could not be created, which
6390     might never occur in practice
6391     </p>
6392     </blockquote>
6393    
6394    
6395     </blockquote><p>
6396    
6397     </p>
6398     <p>Examples:
6399     </p>
6400     <p>
6401     </p>
6402     <blockquote class="text">
6403     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"
6404     </p>
6405     <p>S: "OK[0]"
6406     </p>
6407     </blockquote><p>
6408    
6409     </p>
6410     <p>
6411     </p>
6412     <blockquote class="text">
6413     <p>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"
6414     </p>
6415     <p>S: "OK[1]"
6416     </p>
6417     </blockquote><p>
6418    
6419     </p>
6420     <p>
6421     </p>
6422     <blockquote class="text">
6423     <p>C: "ADD MIDI_INSTRUMENT_MAP"
6424     </p>
6425     <p>S: "OK[5]"
6426     </p>
6427     </blockquote><p>
6428    
6429     </p>
6430     <a name="REMOVE MIDI_INSTRUMENT_MAP"></a><br /><hr />
6431     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6432     <a name="rfc.section.6.7.2"></a><h3>6.7.2.&nbsp;
6433     Delete one particular or all MIDI instrument maps</h3>
6434    
6435     <p>The front-end can delete a particular MIDI instrument map
6436     by sending the following command:
6437     </p>
6438     <p>
6439     </p>
6440     <blockquote class="text">
6441     <p>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;
6442     </p>
6443     </blockquote><p>
6444    
6445     </p>
6446     <p>Where &lt;map&gt; reflects the unique ID of the map to delete
6447     as returned by the <a class='info' href='#LIST MIDI_INSTRUMENT_MAPS'>"LIST MIDI_INSTRUMENT_MAPS"<span> (</span><span class='info'>Getting all created MIDI instrument maps</span><span>)</span></a>
6448     command.
6449     </p>
6450     <p>The front-end can delete all MIDI instrument maps by
6451     sending the following command:
6452     </p>
6453     <p>
6454     </p>
6455     <blockquote class="text">
6456     <p>REMOVE MIDI_INSTRUMENT_MAP ALL
6457     </p>
6458     </blockquote><p>
6459    
6460     </p>
6461     <p>Possible Answers:
6462     </p>
6463     <p>
6464     </p>
6465     <blockquote class="text">
6466     <p>"OK" -
6467     </p>
6468     <blockquote class="text">
6469     <p>in case the map(s) could be deleted
6470     </p>
6471     </blockquote>
6472    
6473    
6474     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6475     </p>
6476     <blockquote class="text">
6477     <p>when the given map does not exist
6478     </p>
6479     </blockquote>
6480    
6481    
6482     </blockquote><p>
6483    
6484     </p>
6485     <p>Examples:
6486     </p>
6487     <p>
6488     </p>
6489     <blockquote class="text">
6490     <p>C: "REMOVE MIDI_INSTRUMENT_MAP 0"
6491     </p>
6492     <p>S: "OK"
6493     </p>
6494     </blockquote><p>
6495    
6496     </p>
6497     <p>
6498     </p>
6499     <blockquote class="text">
6500     <p>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"
6501     </p>
6502     <p>S: "OK"
6503     </p>
6504     </blockquote><p>
6505    
6506     </p>
6507     <a name="GET MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6508     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6509     <a name="rfc.section.6.7.3"></a><h3>6.7.3.&nbsp;
6510     Get amount of existing MIDI instrument maps</h3>
6511    
6512     <p>The front-end can retrieve the current amount of MIDI
6513     instrument maps by sending the following command:
6514     </p>
6515     <p>
6516     </p>
6517     <blockquote class="text">
6518     <p>GET MIDI_INSTRUMENT_MAPS
6519     </p>
6520     </blockquote><p>
6521    
6522     </p>
6523     <p>Possible Answers:
6524     </p>
6525     <p>
6526     </p>
6527     <blockquote class="text">
6528     <p>The sampler will answer by returning the current
6529     number of MIDI instrument maps.
6530     </p>
6531     </blockquote><p>
6532    
6533     </p>
6534     <p>Example:
6535     </p>
6536     <p>
6537     </p>
6538     <blockquote class="text">
6539     <p>C: "GET MIDI_INSTRUMENT_MAPS"
6540     </p>
6541     <p>S: "2"
6542     </p>
6543     </blockquote><p>
6544    
6545     </p>
6546     <a name="LIST MIDI_INSTRUMENT_MAPS"></a><br /><hr />
6547     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6548     <a name="rfc.section.6.7.4"></a><h3>6.7.4.&nbsp;
6549     Getting all created MIDI instrument maps</h3>
6550    
6551     <p>The number of MIDI instrument maps can change on runtime. To get the
6552     current list of MIDI instrument maps, the front-end can send the
6553     following command:
6554     </p>
6555     <p>
6556     </p>
6557     <blockquote class="text">
6558     <p>LIST MIDI_INSTRUMENT_MAPS
6559     </p>
6560     </blockquote><p>
6561    
6562     </p>
6563     <p>Possible Answers:
6564     </p>
6565     <p>
6566     </p>
6567     <blockquote class="text">
6568     <p>The sampler will answer by returning a comma separated list
6569     with all MIDI instrument maps' numerical IDs.
6570     </p>
6571     </blockquote><p>
6572    
6573     </p>
6574     <p>Example:
6575     </p>
6576     <p>
6577     </p>
6578     <blockquote class="text">
6579     <p>C: "LIST MIDI_INSTRUMENT_MAPS"
6580     </p>
6581     <p>S: "0,1,5,12"
6582     </p>
6583     </blockquote><p>
6584    
6585     </p>
6586     <a name="GET MIDI_INSTRUMENT_MAP INFO"></a><br /><hr />
6587     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6588     <a name="rfc.section.6.7.5"></a><h3>6.7.5.&nbsp;
6589     Getting MIDI instrument map information</h3>
6590    
6591     <p>The front-end can ask for the current settings of a MIDI
6592     instrument map by sending the following command:
6593     </p>
6594     <p>
6595     </p>
6596     <blockquote class="text">
6597     <p>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;
6598     </p>
6599     </blockquote><p>
6600    
6601     </p>
6602     <p>Where &lt;map&gt; is the numerical ID of the map the
6603     front-end is interested in as returned by the
6604     <a class='info' href='#LIST MIDI_INSTRUMENT_MAPS'>"LIST MIDI_INSTRUMENT_MAPS"<span> (</span><span class='info'>Getting all created MIDI instrument maps</span><span>)</span></a>
6605     command.
6606     </p>
6607     <p>Possible Answers:
6608     </p>
6609     <p>
6610     </p>
6611     <blockquote class="text">
6612     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6613     Each answer line begins with the settings category name
6614     followed by a colon and then a space character &lt;SP&gt; and finally
6615     the info character string to that setting category. At the
6616     moment the following categories are defined:
6617     </p>
6618     <p>
6619     </p>
6620     <blockquote class="text">
6621     <p>NAME -
6622     </p>
6623     <blockquote class="text">
6624     <p>custom name of the given map,
6625     which does not have to be unique
6626 schoenebeck 1400 (note that this character string may contain
6627     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6628 schoenebeck 974 </p>
6629     </blockquote>
6630    
6631    
6632 iliev 1137 <p>DEFAULT -
6633     </p>
6634     <blockquote class="text">
6635     <p>either true or false,
6636     defines whether this map is the default map
6637     </p>
6638 schoenebeck 974 </blockquote>
6639 iliev 1137
6640    
6641     </blockquote>
6642 schoenebeck 974
6643    
6644     </blockquote><p>
6645    
6646     </p>
6647     <p>The mentioned fields above don't have to be in particular order.
6648     </p>
6649     <p>Example:
6650     </p>
6651     <p>
6652     </p>
6653     <blockquote class="text">
6654     <p>C: "GET MIDI_INSTRUMENT_MAP INFO 0"
6655     </p>
6656     <p>S: "NAME: Standard Map"
6657     </p>
6658 iliev 1137 <p>&nbsp;&nbsp;&nbsp;"DEFAULT: true"
6659     </p>
6660 schoenebeck 974 <p>&nbsp;&nbsp;&nbsp;"."
6661     </p>
6662     </blockquote><p>
6663    
6664     </p>
6665     <a name="SET MIDI_INSTRUMENT_MAP NAME"></a><br /><hr />
6666     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6667     <a name="rfc.section.6.7.6"></a><h3>6.7.6.&nbsp;
6668     Renaming a MIDI instrument map</h3>
6669    
6670     <p>The front-end can alter the custom name of a MIDI
6671     instrument map by sending the following command:
6672     </p>
6673     <p>
6674     </p>
6675     <blockquote class="text">
6676     <p>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;
6677     </p>
6678     </blockquote><p>
6679    
6680     </p>
6681     <p>Where &lt;map&gt; is the numerical ID of the map and
6682     &lt;name&gt; the new custom name of the map, which does not
6683 schoenebeck 1390 have to be unique (name MUST be encapsulated into apostrophes
6684     and supports escape sequences as described in chapter
6685     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
6686    
6687 schoenebeck 974 </p>
6688     <p>Possible Answers:
6689     </p>
6690     <p>
6691     </p>
6692     <blockquote class="text">
6693     <p>"OK" -
6694     </p>
6695     <blockquote class="text">
6696     <p>on success
6697     </p>
6698     </blockquote>
6699    
6700    
6701     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6702     </p>
6703     <blockquote class="text">
6704     <p>in case the given map does not exist
6705     </p>
6706     </blockquote>
6707    
6708    
6709     </blockquote><p>
6710    
6711     </p>
6712     <p>Example:
6713     </p>
6714     <p>
6715     </p>
6716     <blockquote class="text">
6717     <p>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"
6718     </p>
6719     <p>S: "OK"
6720     </p>
6721     </blockquote><p>
6722    
6723     </p>
6724 schoenebeck 945 <a name="MAP MIDI_INSTRUMENT"></a><br /><hr />
6725 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6726     <a name="rfc.section.6.7.7"></a><h3>6.7.7.&nbsp;
6727     Create or replace a MIDI instrument map entry</h3>
6728 schoenebeck 945
6729     <p>The front-end can create a new or replace an existing entry
6730 schoenebeck 974 in a sampler's MIDI instrument map by sending the following
6731 schoenebeck 945 command:
6732     </p>
6733     <p>
6734     </p>
6735     <blockquote class="text">
6736 schoenebeck 1048 <p>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
6737 schoenebeck 974 &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
6738 schoenebeck 945 &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
6739     [&lt;instr_load_mode&gt;] [&lt;name&gt;]
6740     </p>
6741     </blockquote><p>
6742    
6743     </p>
6744 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to alter,
6745     &lt;midi_bank&gt; is an integer value between
6746     0..16383 reflecting the MIDI bank select index,
6747     &lt;midi_prog&gt; an
6748 schoenebeck 945 integer value between 0..127 reflecting the MIDI program change
6749     index, &lt;engine_name&gt; a sampler engine name as returned by
6750 schoenebeck 974 the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
6751 schoenebeck 945 command (not encapsulated into apostrophes), &lt;filename&gt; the name
6752 schoenebeck 1251 of the instrument's file to be deployed (encapsulated into apostrophes,
6753     supporting escape sequences as described in chapter
6754     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"),
6755 schoenebeck 974 &lt;instrument_index&gt; the index (integer value) of the instrument
6756 schoenebeck 945 within the given file, &lt;volume_value&gt; reflects the master
6757     volume of the instrument as optionally dotted number (where a
6758 schoenebeck 1028 value &lt; 1.0 means attenuation and a value > 1.0 means
6759 schoenebeck 945 amplification). This parameter easily allows to adjust the
6760     volume of all intruments within a custom instrument map
6761     without having to adjust their instrument files. The
6762     OPTIONAL &lt;instr_load_mode&gt; argument defines the life
6763     time of the instrument, that is when the instrument should
6764     be loaded, when freed and has exactly the following
6765     possibilities:
6766     </p>
6767     <p>
6768     </p>
6769     <blockquote class="text">
6770     <p>"ON_DEMAND" -
6771     </p>
6772     <blockquote class="text">
6773     <p>The instrument will be loaded when needed,
6774     that is when demanded by at least one sampler
6775     channel. It will immediately be freed from memory
6776     when not needed by any sampler channel anymore.
6777     </p>
6778     </blockquote>
6779    
6780    
6781     <p>"ON_DEMAND_HOLD" -
6782     </p>
6783     <blockquote class="text">
6784     <p>The instrument will be loaded when needed,
6785     that is when demanded by at least one sampler
6786     channel. It will be kept in memory even when
6787     not needed by any sampler channel anymore.
6788     Instruments with this mode are only freed
6789     when the sampler is reset or all mapping
6790     entries with this mode (and respective
6791     instrument) are explicitly changed to
6792     "ON_DEMAND" and no sampler channel is using
6793     the instrument anymore.
6794     </p>
6795     </blockquote>
6796    
6797    
6798     <p>"PERSISTENT" -
6799     </p>
6800     <blockquote class="text">
6801     <p>The instrument will immediately be loaded
6802 schoenebeck 1048 into memory when this mapping
6803 schoenebeck 945 command is sent and the instrument is kept all
6804     the time. Instruments with this mode are
6805     only freed when the sampler is reset or all
6806     mapping entries with this mode (and
6807     respective instrument) are explicitly
6808     changed to "ON_DEMAND" and no sampler
6809     channel is using the instrument anymore.
6810     </p>
6811     </blockquote>
6812    
6813    
6814     <p>not supplied -
6815     </p>
6816     <blockquote class="text">
6817     <p>In case there is no &lt;instr_load_mode&gt;
6818     argument given, it will be up to the
6819     InstrumentManager to decide which mode to use.
6820     Usually it will use "ON_DEMAND" if an entry
6821     for the given instrument does not exist in
6822     the InstrumentManager's list yet, otherwise
6823     if an entry already exists, it will simply
6824     stick with the mode currently reflected by
6825     the already existing entry, that is it will
6826     not change the mode.
6827     </p>
6828     </blockquote>
6829    
6830    
6831     </blockquote><p>
6832    
6833     </p>
6834     <p>
6835     The &lt;instr_load_mode&gt; argument thus allows to define an
6836     appropriate strategy (low memory consumption vs. fast
6837     instrument switching) for each instrument individually. Note, the
6838     following restrictions apply to this argument: "ON_DEMAND_HOLD" and
6839     "PERSISTENT" have to be supported by the respective sampler engine
6840     (which is technically the case when the engine provides an
6841     InstrumentManager for its format). If this is not the case the
6842     argument will automatically fall back to the default value
6843     "ON_DEMAND". Also the load mode of one instrument may
6844     automatically change the laod mode of other instrument(s), i.e.
6845     because the instruments are part of the same file and the
6846     engine does not allow a way to manage load modes for them
6847     individually. Due to this, in case the frontend shows the
6848     load modes of entries, the frontend should retrieve the actual
6849     mode by i.e. sending
6850 schoenebeck 974 <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
6851 schoenebeck 1390 command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
6852     (encapsulated into apostrophes, supporting escape sequences as described in chapter
6853     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") for the
6854     mapping entry, useful for frontends for displaying an appropriate name for
6855 schoenebeck 945 mapped instruments (using
6856 schoenebeck 974 <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>).
6857 schoenebeck 945
6858     </p>
6859     <p>
6860 schoenebeck 1048 By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
6861     completely established in the sampler. The OPTIONAL "NON_MODAL" argument
6862     however causes the respective "MAP MIDI_INSTRUMENT" command to return
6863     immediately, that is to let the sampler establish the mapping in the
6864     background. So this argument might be especially useful for mappings with
6865     a "PERSISTENT" type, because these have to load the respective instruments
6866     immediately and might thus block for a very long time. It is recommended
6867     however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
6868     because it has the following drawbacks: as "NON_MODAL" instructions return
6869     immediately, they may not necessarily return an error i.e. when the given
6870     instrument file turns out to be corrupt, beside that subsequent commands
6871     in a LSCP instruction sequence might fail, because mandatory mappings are
6872     not yet completed.
6873 schoenebeck 945
6874     </p>
6875     <p>Possible Answers:
6876     </p>
6877     <p>
6878     </p>
6879     <blockquote class="text">
6880     <p>"OK" -
6881     </p>
6882     <blockquote class="text">
6883     <p>usually
6884     </p>
6885     </blockquote>
6886    
6887    
6888     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6889     </p>
6890     <blockquote class="text">
6891 schoenebeck 974 <p>when the given map or engine does not exist or a value
6892 schoenebeck 945 is out of range
6893     </p>
6894     </blockquote>
6895    
6896    
6897     </blockquote><p>
6898    
6899     </p>
6900     <p>Examples:
6901     </p>
6902     <p>
6903     </p>
6904     <blockquote class="text">
6905 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"
6906 schoenebeck 945 </p>
6907     <p>S: "OK"
6908     </p>
6909     </blockquote><p>
6910    
6911     </p>
6912     <p>
6913     </p>
6914     <blockquote class="text">
6915 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"
6916 schoenebeck 945 </p>
6917     <p>S: "OK"
6918     </p>
6919     </blockquote><p>
6920    
6921     </p>
6922     <p>
6923     </p>
6924     <blockquote class="text">
6925     <p>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"
6926     </p>
6927     <p>S: "OK"
6928     </p>
6929 schoenebeck 974 <p>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"
6930 schoenebeck 945 </p>
6931     <p>S: "OK"
6932     </p>
6933     </blockquote><p>
6934    
6935     </p>
6936     <p>
6937     </p>
6938     <blockquote class="text">
6939 schoenebeck 1048 <p>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"
6940 schoenebeck 945 </p>
6941     <p>S: "OK"
6942     </p>
6943     </blockquote><p>
6944    
6945     </p>
6946     <a name="GET MIDI_INSTRUMENTS"></a><br /><hr />
6947 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6948     <a name="rfc.section.6.7.8"></a><h3>6.7.8.&nbsp;
6949     Getting ammount of MIDI instrument map entries</h3>
6950 schoenebeck 945
6951 schoenebeck 974 <p>The front-end can query the amount of currently existing
6952     entries in a MIDI instrument map by sending the following
6953 schoenebeck 945 command:
6954     </p>
6955     <p>
6956     </p>
6957     <blockquote class="text">
6958 schoenebeck 974 <p>GET MIDI_INSTRUMENTS &lt;map&gt;
6959 schoenebeck 945 </p>
6960     </blockquote><p>
6961    
6962     </p>
6963 schoenebeck 974 <p>The front-end can query the amount of currently existing
6964     entries in all MIDI instrument maps by sending the following
6965     command:
6966     </p>
6967     <p>
6968     </p>
6969     <blockquote class="text">
6970     <p>GET MIDI_INSTRUMENTS ALL
6971     </p>
6972     </blockquote><p>
6973    
6974     </p>
6975 schoenebeck 945 <p>Possible Answers:
6976     </p>
6977     <p>
6978     </p>
6979     <blockquote class="text">
6980 schoenebeck 974 <p>The sampler will answer by sending the current number of
6981     entries in the MIDI instrument map(s).
6982 schoenebeck 945 </p>
6983     </blockquote><p>
6984    
6985     </p>
6986     <p>Example:
6987     </p>
6988     <p>
6989     </p>
6990     <blockquote class="text">
6991 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENTS 0"
6992 schoenebeck 945 </p>
6993 schoenebeck 974 <p>S: "234"
6994 schoenebeck 945 </p>
6995     </blockquote><p>
6996    
6997     </p>
6998 schoenebeck 974 <p>
6999     </p>
7000     <blockquote class="text">
7001     <p>C: "GET MIDI_INSTRUMENTS ALL"
7002     </p>
7003     <p>S: "954"
7004     </p>
7005     </blockquote><p>
7006    
7007     </p>
7008 schoenebeck 945 <a name="LIST MIDI_INSTRUMENTS"></a><br /><hr />
7009 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7010     <a name="rfc.section.6.7.9"></a><h3>6.7.9.&nbsp;
7011     Getting indeces of all entries of a MIDI instrument map</h3>
7012 schoenebeck 945
7013 schoenebeck 974 <p>The front-end can query a list of all currently existing
7014     entries in a certain MIDI instrument map by sending the following
7015     command:
7016 schoenebeck 945 </p>
7017     <p>
7018     </p>
7019     <blockquote class="text">
7020 schoenebeck 974 <p>LIST MIDI_INSTRUMENTS &lt;map&gt;
7021 schoenebeck 945 </p>
7022     </blockquote><p>
7023    
7024     </p>
7025 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.
7026     </p>
7027     <p>The front-end can query a list of all currently existing
7028     entries of all MIDI instrument maps by sending the following
7029     command:
7030     </p>
7031     <p>
7032     </p>
7033     <blockquote class="text">
7034     <p>LIST MIDI_INSTRUMENTS ALL
7035     </p>
7036     </blockquote><p>
7037    
7038     </p>
7039 schoenebeck 945 <p>Possible Answers:
7040     </p>
7041     <p>
7042     </p>
7043     <blockquote class="text">
7044 schoenebeck 974 <p>The sampler will answer by sending a comma separated
7045     list of map ID - MIDI bank - MIDI program triples, where
7046     each triple is encapsulated into curly braces. The
7047     list is returned in one single line. Each triple
7048     just reflects the key of the respective map entry,
7049     thus subsequent
7050     <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
7051 schoenebeck 945 command(s) are necessary to retrieve detailed informations
7052     about each entry.
7053     </p>
7054     </blockquote><p>
7055    
7056     </p>
7057     <p>Example:
7058     </p>
7059     <p>
7060     </p>
7061     <blockquote class="text">
7062 schoenebeck 974 <p>C: "LIST MIDI_INSTRUMENTS 0"
7063 schoenebeck 945 </p>
7064 schoenebeck 974 <p>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"
7065 schoenebeck 945 </p>
7066     </blockquote><p>
7067    
7068     </p>
7069     <a name="UNMAP MIDI_INSTRUMENT"></a><br /><hr />
7070 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7071     <a name="rfc.section.6.7.10"></a><h3>6.7.10.&nbsp;
7072     Remove an entry from the MIDI instrument map</h3>
7073 schoenebeck 945
7074 schoenebeck 974 <p>The front-end can delete an entry from a MIDI instrument
7075 schoenebeck 945 map by sending the following command:
7076     </p>
7077     <p>
7078     </p>
7079     <blockquote class="text">
7080 schoenebeck 974 <p>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7081 schoenebeck 945 </p>
7082     </blockquote><p>
7083    
7084     </p>
7085     <p>
7086 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7087     &lt;midi_bank&gt; is an integer value between 0..16383
7088     reflecting the MIDI bank value and
7089     &lt;midi_prog&gt; an integer value between
7090     0..127 reflecting the MIDI program value of the map's entrie's key
7091 schoenebeck 945 index triple.
7092    
7093     </p>
7094     <p>Possible Answers:
7095     </p>
7096     <p>
7097     </p>
7098     <blockquote class="text">
7099     <p>"OK" -
7100     </p>
7101     <blockquote class="text">
7102     <p>usually
7103     </p>
7104     </blockquote>
7105    
7106    
7107     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7108     </p>
7109     <blockquote class="text">
7110     <p>when index out of bounds
7111     </p>
7112     </blockquote>
7113    
7114    
7115     </blockquote><p>
7116    
7117     </p>
7118     <p>Example:
7119     </p>
7120     <p>
7121     </p>
7122     <blockquote class="text">
7123 schoenebeck 974 <p>C: "UNMAP MIDI_INSTRUMENT 0 2 127"
7124 schoenebeck 945 </p>
7125     <p>S: "OK"
7126     </p>
7127     </blockquote><p>
7128    
7129     </p>
7130     <a name="GET MIDI_INSTRUMENT INFO"></a><br /><hr />
7131 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7132     <a name="rfc.section.6.7.11"></a><h3>6.7.11.&nbsp;
7133     Get current settings of MIDI instrument map entry</h3>
7134 schoenebeck 945
7135     <p>The front-end can retrieve the current settings of a certain
7136     instrument map entry by sending the following command:
7137     </p>
7138     <p>
7139     </p>
7140     <blockquote class="text">
7141 schoenebeck 974 <p>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;
7142 schoenebeck 945 </p>
7143     </blockquote><p>
7144    
7145     </p>
7146     <p>
7147 schoenebeck 974 Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
7148     &lt;midi_bank&gt; is an integer value between 0..16383
7149     reflecting the MIDI bank value, &lt;midi_bank&gt;
7150     and &lt;midi_prog&gt; an integer value between
7151     0..127 reflecting the MIDI program value of the map's entrie's key
7152 schoenebeck 945 index triple.
7153    
7154     </p>
7155     <p>Possible Answers:
7156     </p>
7157     <p>
7158     </p>
7159     <blockquote class="text">
7160     <p>LinuxSampler will answer by sending a &lt;CRLF&gt;
7161     separated list. Each answer line begins with the
7162     information category name followed by a colon and then
7163     a space character &lt;SP&gt; and finally the info
7164     character string to that info category. At the moment
7165     the following categories are defined:
7166     </p>
7167     <p>"NAME" -
7168     </p>
7169     <blockquote class="text">
7170     <p>Name for this MIDI instrument map entry (if defined).
7171     This name shall be used by frontends for displaying a
7172     name for this mapped instrument. It can be set and
7173     changed with the
7174 schoenebeck 974 <a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
7175 schoenebeck 945 command and does not have to be unique.
7176 schoenebeck 1400 (note that this character string may contain
7177     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7178 schoenebeck 945 </p>
7179     </blockquote>
7180    
7181    
7182     <p>"ENGINE_NAME" -
7183     </p>
7184     <blockquote class="text">
7185     <p>Name of the engine to be deployed for this
7186     instrument.
7187     </p>
7188     </blockquote>
7189    
7190    
7191     <p>"INSTRUMENT_FILE" -
7192     </p>
7193     <blockquote class="text">
7194 schoenebeck 1400 <p>File name of the instrument
7195     (note that this path may contain
7196     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7197 schoenebeck 945 </p>
7198     </blockquote>
7199    
7200    
7201     <p>"INSTRUMENT_NR" -
7202     </p>
7203     <blockquote class="text">
7204     <p>Index of the instrument within the file.
7205     </p>
7206     </blockquote>
7207    
7208    
7209     <p>"INSTRUMENT_NAME" -
7210     </p>
7211     <blockquote class="text">
7212     <p>Name of the loaded instrument as reflected by its file.
7213     In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7214 schoenebeck 1400 cannot be changed (note that this character string may contain
7215     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7216 schoenebeck 945 </p>
7217     </blockquote>
7218    
7219    
7220     <p>"LOAD_MODE" -
7221     </p>
7222     <blockquote class="text">
7223     <p>Life time of instrument
7224 schoenebeck 974 (see <a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a> for details about this setting).
7225 schoenebeck 945 </p>
7226     </blockquote>
7227    
7228    
7229     <p>"VOLUME" -
7230     </p>
7231     <blockquote class="text">
7232     <p>master volume of the instrument as optionally
7233 schoenebeck 1028 dotted number (where a value &lt; 1.0 means attenuation
7234 schoenebeck 945 and a value > 1.0 means amplification)
7235     </p>
7236     </blockquote>
7237    
7238    
7239     <p>The mentioned fields above don't have to be in particular order.
7240     </p>
7241     </blockquote><p>
7242    
7243     </p>
7244     <p>Example:
7245     </p>
7246     <p>
7247     </p>
7248     <blockquote class="text">
7249 schoenebeck 974 <p>C: "GET MIDI_INSTRUMENT INFO 1 45 120"
7250 schoenebeck 945 </p>
7251     <p>S: "NAME: Drums for Foo Song"
7252     </p>
7253     <p>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"
7254     </p>
7255     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
7256     </p>
7257     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
7258     </p>
7259     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"
7260     </p>
7261     <p>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"
7262     </p>
7263     <p>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"
7264     </p>
7265     <p>&nbsp;&nbsp;&nbsp;"."
7266     </p>
7267     </blockquote><p>
7268    
7269     </p>
7270     <a name="CLEAR MIDI_INSTRUMENTS"></a><br /><hr />
7271 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7272     <a name="rfc.section.6.7.12"></a><h3>6.7.12.&nbsp;
7273     Clear MIDI instrument map</h3>
7274 schoenebeck 945
7275 schoenebeck 974 <p>The front-end can clear a whole MIDI instrument map, that
7276     is delete all its entries by sending the following command:
7277 schoenebeck 945 </p>
7278     <p>
7279     </p>
7280     <blockquote class="text">
7281 schoenebeck 974 <p>CLEAR MIDI_INSTRUMENTS &lt;map&gt;
7282 schoenebeck 945 </p>
7283     </blockquote><p>
7284    
7285     </p>
7286 schoenebeck 974 <p>Where &lt;map&gt; is the numeric ID of the map to clear.
7287     </p>
7288     <p>The front-end can clear all MIDI instrument maps, that
7289     is delete all entries of all maps by sending the following
7290     command:
7291     </p>
7292     <p>
7293     </p>
7294     <blockquote class="text">
7295     <p>CLEAR MIDI_INSTRUMENTS ALL
7296     </p>
7297     </blockquote><p>
7298    
7299     </p>
7300     <p>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
7301     maps, only their entries, thus the map's settings like
7302     custom name will be preservevd.
7303     </p>
7304 schoenebeck 945 <p>Possible Answers:
7305     </p>
7306     <p>
7307     </p>
7308     <blockquote class="text">
7309     <p>"OK" -
7310     </p>
7311     <blockquote class="text">
7312     <p>always
7313     </p>
7314     </blockquote>
7315    
7316    
7317     </blockquote><p>
7318    
7319     </p>
7320 schoenebeck 974 <p>Examples:
7321 schoenebeck 945 </p>
7322     <p>
7323     </p>
7324     <blockquote class="text">
7325 schoenebeck 974 <p>C: "CLEAR MIDI_INSTRUMENTS 0"
7326 schoenebeck 945 </p>
7327     <p>S: "OK"
7328     </p>
7329     </blockquote><p>
7330    
7331     </p>
7332 schoenebeck 974 <p>
7333     </p>
7334     <blockquote class="text">
7335     <p>C: "CLEAR MIDI_INSTRUMENTS ALL"
7336     </p>
7337     <p>S: "OK"
7338     </p>
7339     </blockquote><p>
7340    
7341     </p>
7342 iliev 1162 <a name="Managing Instruments Database"></a><br /><hr />
7343     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7344     <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7345     Managing Instruments Database</h3>
7346    
7347     <p>The following commands describe how to use and manage
7348     the instruments database.
7349     </p>
7350 schoenebeck 1363 <p>Notice:
7351     </p>
7352     <p>
7353     </p>
7354     <blockquote class="text">
7355     <p>All command arguments representing a path or
7356     instrument/directory name support escape sequences as described in chapter
7357     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
7358    
7359     </p>
7360     <p>All occurrences of a forward slash in instrument and directory
7361     names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7362    
7363     </p>
7364     </blockquote><p>
7365    
7366     </p>
7367 iliev 1162 <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7368     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7369     <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7370     Creating a new instrument directory</h3>
7371    
7372     <p>The front-end can add a new instrument directory to the
7373     instruments database by sending the following command:
7374     </p>
7375     <p>
7376     </p>
7377     <blockquote class="text">
7378     <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7379     </p>
7380     </blockquote><p>
7381    
7382     </p>
7383     <p>Where &lt;dir&gt; is the absolute path name of the directory
7384     to be created (encapsulated into apostrophes).
7385     </p>
7386     <p>Possible Answers:
7387     </p>
7388     <p>
7389     </p>
7390     <blockquote class="text">
7391     <p>"OK" -
7392     </p>
7393     <blockquote class="text">
7394     <p>on success
7395     </p>
7396     </blockquote>
7397    
7398    
7399     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7400     </p>
7401     <blockquote class="text">
7402     <p>when the directory could not be created, which
7403     can happen if the directory already exists or the
7404     name contains not allowed symbols
7405     </p>
7406     </blockquote>
7407    
7408    
7409     </blockquote><p>
7410    
7411     </p>
7412     <p>Examples:
7413     </p>
7414     <p>
7415     </p>
7416     <blockquote class="text">
7417     <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7418     </p>
7419     <p>S: "OK"
7420     </p>
7421     </blockquote><p>
7422    
7423     </p>
7424     <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7425     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7426     <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7427     Deleting an instrument directory</h3>
7428    
7429     <p>The front-end can delete a particular instrument directory
7430     from the instruments database by sending the following command:
7431     </p>
7432     <p>
7433     </p>
7434     <blockquote class="text">
7435     <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7436     </p>
7437     </blockquote><p>
7438    
7439     </p>
7440     <p>Where &lt;dir&gt; is the absolute path name of the directory
7441     to delete. The optional FORCE argument can be used to
7442     force the deletion of a non-empty directory and all its content.
7443     </p>
7444     <p>Possible Answers:
7445     </p>
7446     <p>
7447     </p>
7448     <blockquote class="text">
7449     <p>"OK" -
7450     </p>
7451     <blockquote class="text">
7452     <p>if the directory is deleted successfully
7453     </p>
7454     </blockquote>
7455    
7456    
7457     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7458     </p>
7459     <blockquote class="text">
7460     <p>if the given directory does not exist, or
7461     if trying to delete a non-empty directory,
7462     without using the FORCE argument.
7463     </p>
7464     </blockquote>
7465    
7466    
7467     </blockquote><p>
7468    
7469     </p>
7470     <p>Examples:
7471     </p>
7472     <p>
7473     </p>
7474     <blockquote class="text">
7475     <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7476     </p>
7477     <p>S: "OK"
7478     </p>
7479     </blockquote><p>
7480    
7481     </p>
7482     <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7483     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7484     <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7485     Getting amount of instrument directories</h3>
7486    
7487     <p>The front-end can retrieve the current amount of
7488     directories in a specific directory by sending the following command:
7489     </p>
7490     <p>
7491     </p>
7492     <blockquote class="text">
7493 iliev 1189 <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7494 iliev 1162 </p>
7495     </blockquote><p>
7496    
7497     </p>
7498     <p>Where &lt;dir&gt; should be replaced by the absolute path
7499 iliev 1189 name of the directory. If RECURSIVE is specified, the number of
7500     all directories, including those located in subdirectories of the
7501     specified directory, will be returned.
7502 iliev 1162 </p>
7503     <p>Possible Answers:
7504     </p>
7505     <p>
7506     </p>
7507     <blockquote class="text">
7508     <p>The current number of instrument directories
7509     in the specified directory.
7510     </p>
7511     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7512     </p>
7513     <blockquote class="text">
7514     <p>if the given directory does not exist.
7515     </p>
7516     </blockquote>
7517    
7518    
7519     </blockquote><p>
7520    
7521     </p>
7522     <p>Example:
7523     </p>
7524     <p>
7525     </p>
7526     <blockquote class="text">
7527     <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
7528     </p>
7529     <p>S: "2"
7530     </p>
7531     </blockquote><p>
7532    
7533     </p>
7534     <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7535     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7536     <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
7537     Listing all directories in specific directory</h3>
7538    
7539     <p>The front-end can retrieve the current list of directories
7540     in specific directory by sending the following command:
7541     </p>
7542     <p>
7543     </p>
7544     <blockquote class="text">
7545 iliev 1189 <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7546 iliev 1162 </p>
7547     </blockquote><p>
7548    
7549     </p>
7550     <p>Where &lt;dir&gt; should be replaced by the absolute path
7551 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path names
7552     of all directories, including those located in subdirectories of the
7553     specified directory, will be returned.
7554 iliev 1162 </p>
7555     <p>Possible Answers:
7556     </p>
7557     <p>
7558     </p>
7559     <blockquote class="text">
7560     <p>A comma separated list of all instrument directories
7561     (encapsulated into apostrophes) in the specified directory.
7562     </p>
7563     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7564     </p>
7565     <blockquote class="text">
7566     <p>if the given directory does not exist.
7567     </p>
7568     </blockquote>
7569    
7570    
7571     </blockquote><p>
7572    
7573     </p>
7574     <p>Example:
7575     </p>
7576     <p>
7577     </p>
7578     <blockquote class="text">
7579     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
7580     </p>
7581     <p>S: "'Piano Collection','Percussion Collection'"
7582     </p>
7583     </blockquote><p>
7584    
7585     </p>
7586 iliev 1189 <p>
7587     </p>
7588     <blockquote class="text">
7589     <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
7590     </p>
7591     <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
7592     </p>
7593     </blockquote><p>
7594    
7595     </p>
7596 iliev 1162 <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
7597     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7598     <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
7599     Getting instrument directory information</h3>
7600    
7601     <p>The front-end can ask for the current settings of an
7602     instrument directory by sending the following command:
7603     </p>
7604     <p>
7605     </p>
7606     <blockquote class="text">
7607     <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
7608     </p>
7609     </blockquote><p>
7610    
7611     </p>
7612     <p>Where &lt;dir&gt; should be replaced by the absolute path
7613     name of the directory the front-end is interested in.
7614     </p>
7615     <p>Possible Answers:
7616     </p>
7617     <p>
7618     </p>
7619     <blockquote class="text">
7620     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7621     Each answer line begins with the settings category name
7622     followed by a colon and then a space character &lt;SP&gt; and finally
7623     the info character string to that setting category. At the
7624     moment the following categories are defined:
7625     </p>
7626     <p>
7627     </p>
7628     <blockquote class="text">
7629     <p>DESCRIPTION -
7630     </p>
7631     <blockquote class="text">
7632 schoenebeck 1363 <p>A brief description of the directory content.
7633     Note that the character string may contain
7634     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
7635 iliev 1162 </p>
7636     </blockquote>
7637    
7638    
7639     <p>CREATED -
7640     </p>
7641     <blockquote class="text">
7642     <p>The creation date and time of the directory,
7643     represented in "YYYY-MM-DD HH:MM:SS" format
7644     </p>
7645     </blockquote>
7646    
7647    
7648     <p>MODIFIED -
7649     </p>
7650     <blockquote class="text">
7651     <p>The date and time of the last modification of the
7652     directory, represented in "YYYY-MM-DD HH:MM:SS" format
7653     </p>
7654     </blockquote>
7655    
7656    
7657     </blockquote>
7658    
7659    
7660     </blockquote><p>
7661    
7662     </p>
7663     <p>The mentioned fields above don't have to be in particular order.
7664     </p>
7665     <p>Example:
7666     </p>
7667     <p>
7668     </p>
7669     <blockquote class="text">
7670     <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
7671     </p>
7672     <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
7673     </p>
7674     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
7675     </p>
7676     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
7677     </p>
7678     <p>&nbsp;&nbsp;&nbsp;"."
7679     </p>
7680     </blockquote><p>
7681    
7682     </p>
7683     <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
7684     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7685     <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
7686     Renaming an instrument directory</h3>
7687    
7688     <p>The front-end can alter the name of a specific
7689     instrument directory by sending the following command:
7690     </p>
7691     <p>
7692     </p>
7693     <blockquote class="text">
7694     <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
7695     </p>
7696     </blockquote><p>
7697    
7698     </p>
7699     <p>Where &lt;dir&gt; is the absolute path name of the directory and
7700     &lt;name&gt; is the new name for that directory.
7701     </p>
7702     <p>Possible Answers:
7703     </p>
7704     <p>
7705     </p>
7706     <blockquote class="text">
7707     <p>"OK" -
7708     </p>
7709     <blockquote class="text">
7710     <p>on success
7711     </p>
7712     </blockquote>
7713    
7714    
7715     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7716     </p>
7717     <blockquote class="text">
7718     <p>in case the given directory does not exists,
7719     or if a directory with name equal to the new
7720     name already exists.
7721     </p>
7722     </blockquote>
7723    
7724    
7725     </blockquote><p>
7726    
7727     </p>
7728     <p>Example:
7729     </p>
7730     <p>
7731     </p>
7732     <blockquote class="text">
7733     <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
7734     </p>
7735     <p>S: "OK"
7736     </p>
7737     </blockquote><p>
7738    
7739     </p>
7740     <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7741     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7742     <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
7743     Moving an instrument directory</h3>
7744    
7745     <p>The front-end can move a specific
7746     instrument directory by sending the following command:
7747     </p>
7748     <p>
7749     </p>
7750     <blockquote class="text">
7751     <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7752     </p>
7753     </blockquote><p>
7754    
7755     </p>
7756     <p>Where &lt;dir&gt; is the absolute path name of the directory
7757     to move and &lt;dst&gt; is the location where the directory will
7758     be moved to.
7759     </p>
7760     <p>Possible Answers:
7761     </p>
7762     <p>
7763     </p>
7764     <blockquote class="text">
7765     <p>"OK" -
7766     </p>
7767     <blockquote class="text">
7768     <p>on success
7769     </p>
7770     </blockquote>
7771    
7772    
7773     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7774     </p>
7775     <blockquote class="text">
7776     <p>in case a given directory does not exists,
7777     or if a directory with name equal to the name
7778     of the specified directory already exists in
7779     the destination directory. Error is also thrown
7780     when trying to move a directory to a subdirectory
7781     of itself.
7782     </p>
7783     </blockquote>
7784    
7785    
7786     </blockquote><p>
7787    
7788     </p>
7789     <p>Example:
7790     </p>
7791     <p>
7792     </p>
7793     <blockquote class="text">
7794     <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
7795     </p>
7796     <p>S: "OK"
7797     </p>
7798     </blockquote><p>
7799    
7800     </p>
7801 iliev 1189 <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7802     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7803     <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
7804     Copying instrument directories</h3>
7805    
7806     <p>The front-end can copy a specific
7807     instrument directory by sending the following command:
7808     </p>
7809     <p>
7810     </p>
7811     <blockquote class="text">
7812     <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7813     </p>
7814     </blockquote><p>
7815    
7816     </p>
7817     <p>Where &lt;dir&gt; is the absolute path name of the directory
7818     to copy and &lt;dst&gt; is the location where the directory will
7819     be copied to.
7820     </p>
7821     <p>Possible Answers:
7822     </p>
7823     <p>
7824     </p>
7825     <blockquote class="text">
7826     <p>"OK" -
7827     </p>
7828     <blockquote class="text">
7829     <p>on success
7830     </p>
7831     </blockquote>
7832    
7833    
7834     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7835     </p>
7836     <blockquote class="text">
7837     <p>in case a given directory does not exists,
7838     or if a directory with name equal to the name
7839     of the specified directory already exists in
7840     the destination directory. Error is also thrown
7841     when trying to copy a directory to a subdirectory
7842     of itself.
7843     </p>
7844     </blockquote>
7845    
7846    
7847     </blockquote><p>
7848    
7849     </p>
7850     <p>Example:
7851     </p>
7852     <p>
7853     </p>
7854     <blockquote class="text">
7855     <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
7856     </p>
7857     <p>S: "OK"
7858     </p>
7859     </blockquote><p>
7860    
7861     </p>
7862 iliev 1162 <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
7863     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7864 iliev 1189 <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
7865 iliev 1162 Changing the description of directory</h3>
7866    
7867     <p>The front-end can alter the description of a specific
7868     instrument directory by sending the following command:
7869     </p>
7870     <p>
7871     </p>
7872     <blockquote class="text">
7873     <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
7874     </p>
7875     </blockquote><p>
7876    
7877     </p>
7878     <p>Where &lt;dir&gt; is the absolute path name of the directory and
7879 schoenebeck 1363 &lt;desc&gt; is the new description for the directory
7880     (encapsulated into apostrophes, supporting escape sequences as described in chapter
7881     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7882 iliev 1162 </p>
7883     <p>Possible Answers:
7884     </p>
7885     <p>
7886     </p>
7887     <blockquote class="text">
7888     <p>"OK" -
7889     </p>
7890     <blockquote class="text">
7891     <p>on success
7892     </p>
7893     </blockquote>
7894    
7895    
7896     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7897     </p>
7898     <blockquote class="text">
7899     <p>in case the given directory does not exists.
7900     </p>
7901     </blockquote>
7902    
7903    
7904     </blockquote><p>
7905    
7906     </p>
7907     <p>Example:
7908     </p>
7909     <p>
7910     </p>
7911     <blockquote class="text">
7912     <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
7913     </p>
7914     <p>S: "OK"
7915     </p>
7916     </blockquote><p>
7917    
7918     </p>
7919 iliev 1189 <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7920     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7921     <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
7922     Finding directories</h3>
7923    
7924     <p>The front-end can search for directories
7925     in specific directory by sending the following command:
7926     </p>
7927     <p>
7928     </p>
7929     <blockquote class="text">
7930     <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
7931     </p>
7932     </blockquote><p>
7933    
7934     </p>
7935     <p>Where &lt;dir&gt; should be replaced by the absolute path
7936     name of the directory to search in. If NON_RECURSIVE is specified, the
7937     directories located in subdirectories of the specified directory will not
7938     be searched. &lt;criteria-list&gt; is a list of search criterias
7939     in form of "key1=val1 key2=val2 ...". The following criterias are
7940     allowed:
7941     </p>
7942     <p>
7943    
7944     <p>NAME='&lt;search-string&gt;'
7945     </p>
7946     <blockquote class="text">
7947     <p>Restricts the search to directories, which names
7948 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
7949     supporting escape sequences as described in chapter
7950     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7951 iliev 1189 </p>
7952     </blockquote><p>
7953    
7954     </p>
7955    
7956    
7957     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7958     </p>
7959     <blockquote class="text">
7960     <p>Restricts the search to directories, which creation
7961     date satisfies the specified period, where &lt;date-after&gt;
7962     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
7963     If &lt;date-after&gt; is omitted the search is restricted to
7964     directories created before &lt;date-before&gt;. If
7965     &lt;date-before&gt; is omitted, the search is restricted
7966     to directories created after &lt;date-after&gt;.
7967     </p>
7968     </blockquote><p>
7969    
7970     </p>
7971    
7972    
7973     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7974     </p>
7975     <blockquote class="text">
7976     <p>Restricts the search to directories, which
7977     date of last modification satisfies the specified period, where
7978     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
7979     format. If &lt;date-after&gt; is omitted the search is restricted to
7980     directories, which are last modified before &lt;date-before&gt;. If
7981     &lt;date-before&gt; is omitted, the search is restricted to directories,
7982     which are last modified after &lt;date-after&gt;.
7983     </p>
7984     </blockquote><p>
7985    
7986     </p>
7987    
7988    
7989     <p>DESCRIPTION='&lt;search-string&gt;'
7990     </p>
7991     <blockquote class="text">
7992     <p>Restricts the search to directories with description
7993 schoenebeck 1363 that satisfies the supplied search string
7994     (encapsulated into apostrophes, supporting escape
7995     sequences as described in chapter
7996     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7997 iliev 1189 </p>
7998     </blockquote><p>
7999    
8000     </p>
8001    
8002    
8003     <p>Where &lt;search-string&gt; is either a regular expression, or a
8004     word list separated with spaces for OR search and with '+' for AND search.
8005     </p>
8006     <p>Possible Answers:
8007     </p>
8008     <p>
8009     </p>
8010     <blockquote class="text">
8011     <p>A comma separated list with the absolute path names (encapsulated into
8012     apostrophes) of all directories in the specified directory that satisfy
8013     the supplied search criterias.
8014     </p>
8015     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8016     </p>
8017     <blockquote class="text">
8018     <p>if the given directory does not exist.
8019     </p>
8020     </blockquote>
8021    
8022    
8023     </blockquote><p>
8024    
8025     </p>
8026     <p>Example:
8027     </p>
8028     <p>
8029     </p>
8030     <blockquote class="text">
8031     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
8032     </p>
8033     <p>S: "'/Piano Collection'"
8034     </p>
8035     </blockquote><p>
8036    
8037     </p>
8038     <p>
8039     </p>
8040     <blockquote class="text">
8041     <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
8042     </p>
8043     <p>S: "'/Piano Collection','/Percussions'"
8044     </p>
8045     </blockquote><p>
8046    
8047     </p>
8048 iliev 1162 <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
8049     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8050 iliev 1189 <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
8051 iliev 1162 Adding instruments to the instruments database</h3>
8052    
8053     <p>The front-end can add one or more instruments
8054     to the instruments database by sending the following command:
8055     </p>
8056     <p>
8057     </p>
8058     <blockquote class="text">
8059 iliev 1201 <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8060 iliev 1162 </p>
8061     </blockquote><p>
8062    
8063     </p>
8064     <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8065     (encapsulated into apostrophes) in the instruments database in which
8066     only the new instruments (that are not already in the database) will
8067     be added, &lt;file_path&gt; is the absolute path name of a file or
8068     directory in the file system (encapsulated into apostrophes). In case
8069     an instrument file is supplied, only the instruments in the specified
8070     file will be added to the instruments database. If the optional
8071     &lt;instr_index&gt; (the index of the instrument within the given file)
8072     is supplied too, then only the specified instrument will be added.
8073     In case a directory is supplied, the instruments in that directory
8074     will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8075     when a directory is provided as &lt;file_path&gt; and specifies how the
8076     scanning will be done and has exactly the following possibilities:
8077     </p>
8078     <p>
8079     </p>
8080     <blockquote class="text">
8081 iliev 1201 <p>"RECURSIVE" -
8082     </p>
8083     <blockquote class="text">
8084     <p>All instruments will be processed, including those
8085     in the subdirectories, and the respective subdirectory
8086     tree structure will be recreated in the instruments
8087     database
8088     </p>
8089     </blockquote>
8090    
8091    
8092 iliev 1162 <p>"NON_RECURSIVE" -
8093     </p>
8094     <blockquote class="text">
8095     <p>Only the instruments in the specified directory
8096     will be added, the instruments in the subdirectories
8097     will not be processed.
8098     </p>
8099     </blockquote>
8100    
8101    
8102     <p>"FLAT" -
8103     </p>
8104     <blockquote class="text">
8105     <p>All instruments will be processed, including those
8106     in the subdirectories, but the respective subdirectory
8107     structure will not be recreated in the instruments
8108     database. All instruments will be added directly in
8109     the specified database directory.
8110     </p>
8111     </blockquote>
8112    
8113    
8114     </blockquote><p>
8115    
8116     </p>
8117 iliev 1201 <p>The difference between regular and NON_MODAL versions of the command
8118     is that the regular command returns when the scanning is finished
8119     while NON_MODAL version returns immediately and a background process is launched.
8120     The <a class='info' href='#GET DB_INSTRUMENTS_JOB INFO'>GET DB_INSTRUMENTS_JOB INFO<span> (</span><span class='info'>Getting job status information</span><span>)</span></a>
8121     command can be used to monitor the scanning progress.
8122     </p>
8123 iliev 1162 <p>Possible Answers:
8124     </p>
8125     <p>
8126     </p>
8127     <blockquote class="text">
8128     <p>"OK" -
8129     </p>
8130     <blockquote class="text">
8131 iliev 1201 <p>on success when NON_MODAL is not supplied
8132 iliev 1162 </p>
8133     </blockquote>
8134    
8135    
8136 iliev 1201 <p>"OK[&lt;job-id&gt;]" -
8137     </p>
8138     <blockquote class="text">
8139     <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8140     is a numerical ID used to obtain status information about the job progress.
8141     See <a class='info' href='#GET DB_INSTRUMENTS_JOB INFO'>GET DB_INSTRUMENTS_JOB INFO<span> (</span><span class='info'>Getting job status information</span><span>)</span></a>
8142    
8143     </p>
8144     </blockquote>
8145    
8146    
8147 iliev 1162 <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8148     </p>
8149     <blockquote class="text">
8150     <p>if an invalid path is specified.
8151     </p>
8152     </blockquote>
8153    
8154    
8155     </blockquote><p>
8156    
8157     </p>
8158     <p>Examples:
8159     </p>
8160     <p>
8161     </p>
8162     <blockquote class="text">
8163     <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8164     </p>
8165     <p>S: "OK"
8166     </p>
8167     </blockquote><p>
8168    
8169     </p>
8170     <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8171     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8172 iliev 1189 <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8173 iliev 1162 Removing an instrument</h3>
8174    
8175     <p>The front-end can remove a particular instrument
8176     from the instruments database by sending the following command:
8177     </p>
8178     <p>
8179     </p>
8180     <blockquote class="text">
8181     <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8182     </p>
8183     </blockquote><p>
8184    
8185     </p>
8186     <p>Where &lt;instr_path&gt; is the absolute path name
8187     (in the instruments database) of the instrument to remove.
8188     </p>
8189     <p>Possible Answers:
8190     </p>
8191     <p>
8192     </p>
8193     <blockquote class="text">
8194     <p>"OK" -
8195     </p>
8196     <blockquote class="text">
8197     <p>if the instrument is removed successfully
8198     </p>
8199     </blockquote>
8200    
8201    
8202     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8203     </p>
8204     <blockquote class="text">
8205     <p>if the given path does not exist or
8206     is a directory.
8207     </p>
8208     </blockquote>
8209    
8210    
8211     </blockquote><p>
8212    
8213     </p>
8214     <p>Examples:
8215     </p>
8216     <p>
8217     </p>
8218     <blockquote class="text">
8219     <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8220     </p>
8221     <p>S: "OK"
8222     </p>
8223     </blockquote><p>
8224    
8225     </p>
8226     <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8227     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8228 iliev 1189 <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8229 iliev 1162 Getting amount of instruments</h3>
8230    
8231     <p>The front-end can retrieve the current amount of
8232     instruments in a specific directory by sending the following command:
8233     </p>
8234     <p>
8235     </p>
8236     <blockquote class="text">
8237 iliev 1189 <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8238 iliev 1162 </p>
8239     </blockquote><p>
8240    
8241     </p>
8242     <p>Where &lt;dir&gt; should be replaced by the absolute path name
8243 iliev 1189 of the directory. If RECURSIVE is specified, the number of all
8244     instruments, including those located in subdirectories of the
8245     specified directory, will be returned.
8246 iliev 1162 </p>
8247     <p>Possible Answers:
8248     </p>
8249     <p>
8250     </p>
8251     <blockquote class="text">
8252     <p>The current number of instruments
8253     in the specified directory.
8254     </p>
8255     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8256     </p>
8257     <blockquote class="text">
8258     <p>if the given directory does not exist.
8259     </p>
8260     </blockquote>
8261    
8262    
8263     </blockquote><p>
8264    
8265     </p>
8266     <p>Example:
8267     </p>
8268     <p>
8269     </p>
8270     <blockquote class="text">
8271     <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8272     </p>
8273     <p>S: "2"
8274     </p>
8275     </blockquote><p>
8276    
8277     </p>
8278     <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8279     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8280 iliev 1189 <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8281 iliev 1162 Listing all instruments in specific directory</h3>
8282    
8283     <p>The front-end can retrieve the current list of instruments
8284     in specific directory by sending the following command:
8285     </p>
8286     <p>
8287     </p>
8288     <blockquote class="text">
8289 iliev 1189 <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8290 iliev 1162 </p>
8291     </blockquote><p>
8292    
8293     </p>
8294     <p>Where &lt;dir&gt; should be replaced by the absolute path
8295 iliev 1189 name of the directory. If RECURSIVE is specified, the absolute path
8296     names of all instruments, including those located in subdirectories
8297     of the specified directory, will be returned.
8298 iliev 1162 </p>
8299     <p>Possible Answers:
8300     </p>
8301     <p>
8302     </p>
8303     <blockquote class="text">
8304     <p>A comma separated list of all instruments
8305     (encapsulated into apostrophes) in the specified directory.
8306     </p>
8307     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8308     </p>
8309     <blockquote class="text">
8310     <p>if the given directory does not exist.
8311     </p>
8312     </blockquote>
8313    
8314    
8315     </blockquote><p>
8316    
8317     </p>
8318     <p>Example:
8319     </p>
8320     <p>
8321     </p>
8322     <blockquote class="text">
8323     <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8324     </p>
8325     <p>S: "'Bosendorfer 290','Steinway D'"
8326     </p>
8327     </blockquote><p>
8328    
8329     </p>
8330 iliev 1189 <p>
8331     </p>
8332     <blockquote class="text">
8333     <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8334     </p>
8335     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8336     </p>
8337     </blockquote><p>
8338    
8339     </p>
8340 iliev 1162 <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8341     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8342 iliev 1189 <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8343 iliev 1162 Getting instrument information</h3>
8344    
8345     <p>The front-end can ask for the current settings of an
8346     instrument by sending the following command:
8347     </p>
8348     <p>
8349     </p>
8350     <blockquote class="text">
8351     <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8352     </p>
8353     </blockquote><p>
8354    
8355     </p>
8356     <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8357     name of the instrument the front-end is interested in.
8358     </p>
8359     <p>Possible Answers:
8360     </p>
8361     <p>
8362     </p>
8363     <blockquote class="text">
8364     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8365     Each answer line begins with the settings category name
8366     followed by a colon and then a space character &lt;SP&gt; and finally
8367     the info character string to that setting category. At the
8368     moment the following categories are defined:
8369     </p>
8370     <p>
8371     </p>
8372     <blockquote class="text">
8373     <p>INSTRUMENT_FILE -
8374     </p>
8375     <blockquote class="text">
8376     <p>File name of the instrument.
8377 schoenebeck 1363 Note that the character string may contain
8378     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8379 iliev 1162 </p>
8380     </blockquote>
8381    
8382    
8383     <p>INSTRUMENT_NR -
8384     </p>
8385     <blockquote class="text">
8386     <p>Index of the instrument within the file.
8387     </p>
8388     </blockquote>
8389    
8390    
8391     <p>FORMAT_FAMILY -
8392     </p>
8393     <blockquote class="text">
8394     <p>The format family of the instrument.
8395     </p>
8396     </blockquote>
8397    
8398    
8399     <p>FORMAT_VERSION -
8400     </p>
8401     <blockquote class="text">
8402     <p>The format version of the instrument.
8403     </p>
8404     </blockquote>
8405    
8406    
8407     <p>SIZE -
8408     </p>
8409     <blockquote class="text">
8410     <p>The size of the instrument in bytes.
8411     </p>
8412     </blockquote>
8413    
8414    
8415     <p>CREATED -
8416     </p>
8417     <blockquote class="text">
8418     <p>The date and time when the instrument is added
8419     in the instruments database, represented in
8420     "YYYY-MM-DD HH:MM:SS" format
8421     </p>
8422     </blockquote>
8423    
8424    
8425     <p>MODIFIED -
8426     </p>
8427     <blockquote class="text">
8428     <p>The date and time of the last modification of the
8429     instrument's database settings, represented in
8430     "YYYY-MM-DD HH:MM:SS" format
8431     </p>
8432     </blockquote>
8433    
8434    
8435     <p>DESCRIPTION -
8436     </p>
8437     <blockquote class="text">
8438 schoenebeck 1363 <p>A brief description of the instrument.
8439     Note that the character string may contain
8440     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8441 iliev 1162 </p>
8442     </blockquote>
8443    
8444    
8445     <p>IS_DRUM -
8446     </p>
8447     <blockquote class="text">
8448     <p>either true or false, determines whether the
8449     instrument is a drumkit or a chromatic instrument
8450     </p>
8451     </blockquote>
8452    
8453    
8454     <p>PRODUCT -
8455     </p>
8456     <blockquote class="text">
8457 schoenebeck 1363 <p>The product title of the instrument.
8458     Note that the character string may contain
8459     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8460 iliev 1162 </p>
8461     </blockquote>
8462    
8463    
8464     <p>ARTISTS -
8465     </p>
8466     <blockquote class="text">
8467 schoenebeck 1363 <p>Lists the artist names.
8468     Note that the character string may contain
8469     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8470 iliev 1162 </p>
8471     </blockquote>
8472    
8473    
8474     <p>KEYWORDS -
8475     </p>
8476     <blockquote class="text">
8477     <p>Provides a list of keywords that refer to the instrument.
8478     Keywords are separated with semicolon and blank.
8479 schoenebeck 1363 Note that the character string may contain
8480     <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8481 iliev 1162 </p>
8482     </blockquote>
8483    
8484    
8485     </blockquote>
8486    
8487    
8488     </blockquote><p>
8489    
8490     </p>
8491     <p>The mentioned fields above don't have to be in particular order.
8492     </p>
8493     <p>Example:
8494     </p>
8495     <p>
8496     </p>
8497     <blockquote class="text">
8498     <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
8499     </p>
8500     <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
8501     </p>
8502     <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8503     </p>
8504     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
8505     </p>
8506     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
8507     </p>
8508     <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
8509     </p>
8510     <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8511     </p>
8512     <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8513     </p>
8514     <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
8515     </p>
8516     <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
8517     </p>
8518     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
8519     </p>
8520     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
8521     </p>
8522     <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
8523     </p>
8524     <p>&nbsp;&nbsp;&nbsp;"."
8525     </p>
8526     </blockquote><p>
8527    
8528     </p>
8529     <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
8530     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8531 iliev 1189 <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
8532 iliev 1162 Renaming an instrument</h3>
8533    
8534     <p>The front-end can alter the name of a specific
8535     instrument by sending the following command:
8536     </p>
8537     <p>
8538     </p>
8539     <blockquote class="text">
8540     <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
8541     </p>
8542     </blockquote><p>
8543    
8544     </p>
8545     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8546     &lt;name&gt; is the new name for that instrument.
8547     </p>
8548     <p>Possible Answers:
8549     </p>
8550     <p>
8551     </p>
8552     <blockquote class="text">
8553     <p>"OK" -
8554     </p>
8555     <blockquote class="text">
8556     <p>on success
8557     </p>
8558     </blockquote>
8559    
8560    
8561     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8562     </p>
8563     <blockquote class="text">
8564     <p>in case the given instrument does not exists,
8565     or if an instrument with name equal to the new
8566     name already exists.
8567     </p>
8568     </blockquote>
8569    
8570    
8571     </blockquote><p>
8572    
8573     </p>
8574     <p>Example:
8575     </p>
8576     <p>
8577     </p>
8578     <blockquote class="text">
8579     <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
8580     </p>
8581     <p>S: "OK"
8582     </p>
8583     </blockquote><p>
8584    
8585     </p>
8586     <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
8587     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8588 iliev 1189 <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
8589 iliev 1162 Moving an instrument</h3>
8590    
8591     <p>The front-end can move a specific instrument to another directory by
8592     sending the following command:
8593     </p>
8594     <p>
8595     </p>
8596     <blockquote class="text">
8597     <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8598     </p>
8599     </blockquote><p>
8600    
8601     </p>
8602     <p>Where &lt;instr&gt; is the absolute path name of the instrument
8603     to move and &lt;dst&gt; is the directory where the instrument will
8604     be moved to.
8605     </p>
8606     <p>Possible Answers:
8607     </p>
8608     <p>
8609     </p>
8610     <blockquote class="text">
8611     <p>"OK" -
8612     </p>
8613     <blockquote class="text">
8614     <p>on success
8615     </p>
8616     </blockquote>
8617    
8618    
8619     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8620     </p>
8621     <blockquote class="text">
8622     <p>in case the given instrument does not exists,
8623     or if an instrument with name equal to the name of the
8624     specified instrument already exists in the destination
8625     directory.
8626     </p>
8627     </blockquote>
8628    
8629    
8630     </blockquote><p>
8631    
8632     </p>
8633     <p>Example:
8634     </p>
8635     <p>
8636     </p>
8637     <blockquote class="text">
8638     <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
8639     </p>
8640     <p>S: "OK"
8641     </p>
8642     </blockquote><p>
8643    
8644     </p>
8645 iliev 1189 <a name="COPY DB_INSTRUMENT"></a><br /><hr />
8646     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8647     <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
8648     Copying instruments</h3>
8649    
8650     <p>The front-end can copy a specific instrument to another directory by
8651     sending the following command:
8652     </p>
8653     <p>
8654     </p>
8655     <blockquote class="text">
8656     <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8657     </p>
8658     </blockquote><p>
8659    
8660     </p>
8661     <p>Where &lt;instr&gt; is the absolute path name of the instrument
8662     to copy and &lt;dst&gt; is the directory where the instrument will
8663     be copied to.
8664     </p>
8665     <p>Possible Answers:
8666     </p>
8667     <p>
8668     </p>
8669     <blockquote class="text">
8670     <p>"OK" -
8671     </p>
8672     <blockquote class="text">
8673     <p>on success
8674     </p>
8675     </blockquote>
8676    
8677    
8678     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8679     </p>
8680     <blockquote class="text">
8681     <p>in case the given instrument does not exists,
8682     or if an instrument with name equal to the name of the
8683     specified instrument already exists in the destination
8684     directory.
8685     </p>
8686     </blockquote>
8687    
8688    
8689     </blockquote><p>
8690    
8691     </p>
8692     <p>Example:
8693     </p>
8694     <p>
8695     </p>
8696     <blockquote class="text">
8697     <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
8698     </p>
8699     <p>S: "OK"
8700     </p>
8701     </blockquote><p>
8702    
8703     </p>
8704 iliev 1162 <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
8705     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8706 iliev 1189 <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
8707 iliev 1162 Changing the description of instrument</h3>
8708    
8709     <p>The front-end can alter the description of a specific
8710     instrument by sending the following command:
8711     </p>
8712     <p>
8713     </p>
8714     <blockquote class="text">
8715     <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
8716     </p>
8717     </blockquote><p>
8718    
8719     </p>
8720     <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8721 schoenebeck 1572 &lt;desc&gt; is the new description for the instrument
8722 schoenebeck 1363 (encapsulated into apostrophes, supporting escape sequences as described in chapter
8723     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8724 iliev 1162 </p>
8725     <p>Possible Answers:
8726     </p>
8727     <p>
8728     </p>
8729     <blockquote class="text">
8730     <p>"OK" -
8731     </p>
8732     <blockquote class="text">
8733     <p>on success
8734     </p>
8735     </blockquote>
8736    
8737    
8738     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8739     </p>
8740     <blockquote class="text">
8741     <p>in case the given instrument does not exists.
8742     </p>
8743     </blockquote>
8744    
8745    
8746     </blockquote><p>
8747    
8748     </p>
8749     <p>Example:
8750     </p>
8751     <p>
8752     </p>
8753     <blockquote class="text">
8754     <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
8755     </p>
8756     <p>S: "OK"
8757     </p>
8758     </blockquote><p>
8759    
8760     </p>
8761 iliev 1189 <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
8762     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8763     <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
8764     Finding instruments</h3>
8765    
8766     <p>The front-end can search for instruments
8767     in specific directory by sending the following command:
8768     </p>
8769     <p>
8770     </p>
8771     <blockquote class="text">
8772     <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8773     </p>
8774     </blockquote><p>
8775    
8776     </p>
8777     <p>Where &lt;dir&gt; should be replaced by the absolute path
8778     name of the directory to search in. If NON_RECURSIVE is specified, the
8779     directories located in subdirectories of the specified directory will not
8780     be searched. &lt;criteria-list&gt; is a list of search criterias
8781     in form of "key1=val1 key2=val2 ...". The following criterias are
8782     allowed:
8783     </p>
8784     <p>
8785    
8786     <p>NAME='&lt;search-string&gt;'
8787     </p>
8788     <blockquote class="text">
8789     <p>Restricts the search to instruments, which names
8790 schoenebeck 1363 satisfy the supplied search string (encapsulated into apostrophes,
8791     supporting escape sequences as described in chapter
8792     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8793 iliev 1189 </p>
8794     </blockquote><p>
8795    
8796     </p>
8797    
8798    
8799     <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
8800     </p>
8801     <blockquote class="text">
8802 schoenebeck 1251 <p>Restricts the search to instruments, which
8803 iliev 1189 size is in the specified range. If &lt;min&gt; is omitted,
8804     the search results are restricted to instruments with size less then
8805     or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
8806     search is restricted to instruments with size greater then
8807     or equal to &lt;min&gt;.
8808     </p>
8809     </blockquote><p>
8810    
8811     </p>
8812    
8813    
8814     <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8815     </p>
8816     <blockquote class="text">
8817     <p>Restricts the search to instruments, which creation
8818     date satisfies the specified period, where &lt;date-after&gt;
8819     and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8820     If &lt;date-after&gt; is omitted the search is restricted to
8821     instruments created before &lt;date-before&gt;. If
8822     &lt;date-before&gt; is omitted, the search is restricted
8823     to instruments created after &lt;date-after&gt;.
8824     </p>
8825     </blockquote><p>
8826    
8827     </p>
8828    
8829    
8830     <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8831     </p>
8832     <blockquote class="text">
8833     <p>Restricts the search to instruments, which
8834     date of last modification satisfies the specified period, where
8835     &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8836     format. If &lt;date-after&gt; is omitted the search is restricted to
8837     instruments, which are last modified before &lt;date-before&gt;. If
8838     &lt;date-before&gt; is omitted, the search is restricted to instruments,
8839     which are last modified after &lt;date-after&gt;.
8840     </p>
8841     </blockquote><p>
8842    
8843     </p>
8844    
8845    
8846     <p>DESCRIPTION='&lt;search-string&gt;'
8847     </p>
8848     <blockquote class="text">
8849     <p>Restricts the search to instruments with description
8850 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8851     supporting escape sequences as described in chapter
8852     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8853 iliev 1189 </p>
8854     </blockquote><p>
8855    
8856     </p>
8857    
8858    
8859     <p>PRODUCT='&lt;search-string&gt;'
8860     </p>
8861     <blockquote class="text">
8862     <p>Restricts the search to instruments with product info
8863 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8864     supporting escape sequences as described in chapter
8865     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8866 iliev 1189 </p>
8867     </blockquote><p>
8868    
8869     </p>
8870    
8871    
8872     <p>ARTISTS='&lt;search-string&gt;'
8873     </p>
8874     <blockquote class="text">
8875     <p>Restricts the search to instruments with artists info
8876 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8877     supporting escape sequences as described in chapter
8878     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8879 iliev 1189 </p>
8880     </blockquote><p>
8881    
8882     </p>
8883    
8884    
8885     <p>KEYWORDS='&lt;search-string&gt;'
8886     </p>
8887     <blockquote class="text">
8888     <p>Restricts the search to instruments with keyword list
8889 schoenebeck 1363 that satisfies the supplied search string (encapsulated into apostrophes,
8890     supporting escape sequences as described in chapter
8891     "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8892 iliev 1189 </p>
8893     </blockquote><p>
8894    
8895     </p>
8896    
8897    
8898     <p>IS_DRUM=true | false
8899     </p>
8900     <blockquote class="text">
8901 schoenebeck 1251 <p>Either true or false. Restricts the search to
8902 iliev 1189 drum kits or chromatic instruments.
8903     </p>
8904     </blockquote><p>
8905    
8906     </p>
8907    
8908    
8909     <p>FORMAT_FAMILIES='&lt;format-list&gt;'
8910     </p>
8911     <blockquote class="text">
8912     <p>Restricts the search to instruments of the supplied format families,
8913     where &lt;format-list&gt; is a comma separated list of format families.
8914     </p>
8915     </blockquote><p>
8916    
8917     </p>
8918    
8919    
8920     <p>Where &lt;search-string&gt; is either a regular expression, or a
8921     word list separated with spaces for OR search and with '+' for AND search.
8922     </p>
8923     <p>Possible Answers:
8924     </p>
8925     <p>
8926     </p>
8927     <blockquote class="text">
8928     <p>A comma separated list with the absolute path names (encapsulated into
8929     apostrophes) of all instruments in the specified directory that satisfy
8930     the supplied search criterias.
8931     </p>
8932     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8933     </p>
8934     <blockquote class="text">
8935     <p>if the given directory does not exist.
8936     </p>
8937     </blockquote>
8938    
8939    
8940     </blockquote><p>
8941    
8942     </p>
8943     <p>Example:
8944     </p>
8945     <p>
8946     </p>
8947     <blockquote class="text">
8948     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
8949     </p>
8950     <p>S: "'/Piano Collection/Bosendorfer 290'"
8951     </p>
8952     </blockquote><p>
8953    
8954     </p>
8955     <p>
8956     </p>
8957     <blockquote class="text">
8958     <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
8959     </p>
8960     <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
8961     </p>
8962     </blockquote><p>
8963    
8964     </p>
8965 iliev 1201 <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
8966     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8967     <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
8968     Getting job status information</h3>
8969    
8970     <p>The front-end can ask for the current status of a
8971     particular database instruments job by sending the following command:
8972     </p>
8973     <p>
8974     </p>
8975     <blockquote class="text">
8976     <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
8977     </p>
8978     </blockquote><p>
8979    
8980     </p>
8981     <p>Where &lt;job-id&gt; should be replaced by the numerical ID
8982     of the job the front-end is interested in.
8983     </p>
8984     <p>Possible Answers:
8985     </p>
8986     <p>
8987     </p>
8988     <blockquote class="text">
8989     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8990     Each answer line begins with the settings category name
8991     followed by a colon and then a space character &lt;SP&gt; and finally
8992     the info character string to that setting category. At the
8993     moment the following categories are defined:
8994     </p>
8995     <p>
8996     </p>
8997     <blockquote class="text">
8998     <p>FILES_TOTAL -
8999     </p>
9000     <blockquote class="text">
9001     <p>The total number of files scheduled for scanning
9002     </p>
9003     </blockquote>
9004    
9005    
9006     <p>FILES_SCANNED -
9007     </p>
9008     <blockquote class="text">
9009     <p>The current number of scanned files
9010     </p>
9011     </blockquote>
9012    
9013    
9014     <p>SCANNING -
9015     </p>
9016     <blockquote class="text">
9017     <p>The absolute path name of the file which is currently
9018     being scanned
9019     </p>
9020     </blockquote>
9021    
9022    
9023     <p>STATUS -
9024     </p>
9025     <blockquote class="text">
9026     <p>An integer value between 0 and 100 indicating the
9027     scanning progress percentage of the file which is
9028     currently being scanned
9029     </p>
9030     </blockquote>
9031    
9032    
9033     </blockquote>
9034    
9035    
9036     </blockquote><p>
9037    
9038     </p>
9039     <p>The mentioned fields above don't have to be in particular order.
9040     </p>
9041     <p>Example:
9042     </p>
9043     <p>
9044     </p>
9045     <blockquote class="text">
9046     <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
9047     </p>
9048     <p>S: "FILES_TOTAL: 12"
9049     </p>
9050     <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
9051     </p>
9052     <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9053     </p>
9054     <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9055     </p>
9056     <p>&nbsp;&nbsp;&nbsp;"."
9057     </p>
9058     </blockquote><p>
9059    
9060     </p>
9061 schoenebeck 1363 <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9062     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9063     <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9064     Formatting the instruments database</h3>
9065    
9066     <p>The front-end can remove all instruments and directories and re-create
9067     the instruments database structure (e.g., in case of a database corruption)
9068     by sending the following command:
9069     </p>
9070     <p>
9071     </p>
9072     <blockquote class="text">
9073     <p>FORMAT INSTRUMENTS_DB
9074     </p>
9075     </blockquote><p>
9076    
9077     </p>
9078     <p>Possible Answers:
9079     </p>
9080     <p>
9081     </p>
9082     <blockquote class="text">
9083     <p>"OK" -
9084     </p>
9085     <blockquote class="text">
9086     <p>on success
9087     </p>
9088     </blockquote>
9089    
9090    
9091     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9092     </p>
9093     <blockquote class="text">
9094     <p>If the formatting of the instruments database
9095     failed.
9096     </p>
9097     </blockquote>
9098    
9099    
9100     </blockquote><p>
9101    
9102     </p>
9103     <a name="editing_instruments"></a><br /><hr />
9104     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9105     <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9106     Editing Instruments</h3>
9107    
9108     <p>The sampler allows to edit instruments while playing with the
9109     sampler by spawning an external (3rd party) instrument editor
9110     application for a given instrument. The 3rd party instrument
9111     editor applications have to place a respective plugin DLL file
9112     into the sampler's plugins directory. The sampler will
9113     automatically try to load all plugin DLLs in that directory on
9114     startup and only on startup!
9115     </p>
9116     <p>At the moment there is only one command for this feature set,
9117     but this will most probably change in future.
9118     </p>
9119     <a name="EDIT INSTRUMENT"></a><br /><hr />
9120     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9121     <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9122     Opening an appropriate instrument editor application</h3>
9123    
9124     <p>The front-end can request to open an appropriate instrument
9125     editor application by sending the following command:
9126     </p>
9127     <p>
9128     </p>
9129     <blockquote class="text">
9130 schoenebeck 1430 <p>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;
9131 schoenebeck 1363 </p>
9132     </blockquote><p>
9133    
9134     </p>
9135     <p>Where &lt;sampler-channel&gt; should be replaced by the
9136     number of the sampler channel as given by the
9137     <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9138     or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9139     command.
9140     </p>
9141     <p>The sampler will try to ask all registered instrument
9142     editors (or to be more specific: their sampler plugins)
9143     whether they are capable to handle the instrument on the
9144     given sampler channel. The sampler will simply use the first
9145     instrument editor application which replied with a positive
9146     answer and spawn that instrument editor application within
9147     the sampler's process and provide that application access
9148     to the instrument's data structures, so both applications
9149     can share and access the same instruments data at the same
9150     time, thus allowing to immediately hear changes with the
9151     sampler made by the instrument editor.
9152     </p>
9153     <p>Note: consequently instrument editors are always spawned
9154     locally on the same machine where the sampler is running
9155     on!
9156     </p>
9157     <p>Possible Answers:
9158     </p>
9159     <p>
9160     </p>
9161     <blockquote class="text">
9162     <p>"OK" -
9163     </p>
9164     <blockquote class="text">
9165     <p>when an appropriate instrument editor was
9166     launched
9167     </p>
9168     </blockquote>
9169    
9170    
9171     <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9172     </p>
9173     <blockquote class="text">
9174     <p>when an appropriate instrument editor was
9175     launched, but there are noteworthy issues
9176     </p>
9177     </blockquote>
9178    
9179    
9180     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9181     </p>
9182     <blockquote class="text">
9183     <p>when an appropriate instrument editor
9184     could not be launched
9185     </p>
9186     </blockquote>
9187    
9188    
9189     </blockquote><p>
9190    
9191     </p>
9192     <p>Examples:
9193     </p>
9194     <p>
9195     </p>
9196     <blockquote class="text">
9197 schoenebeck 1430 <p>C: "EDIT CHANNEL INSTRUMENT 0"
9198 schoenebeck 1363 </p>
9199     <p>S: "OK"
9200     </p>
9201     </blockquote><p>
9202    
9203     </p>
9204 schoenebeck 1572 <a name="file_management"></a><br /><hr />
9205     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9206     <a name="rfc.section.6.10"></a><h3>6.10.&nbsp;
9207     Managing Files</h3>
9208    
9209     <p>You can query detailed informations about files located
9210     at the same system where the sampler instance is running on.
9211     Using this command set allows to retrieve file informations
9212     even remotely from another machine.
9213     </p>
9214     <a name="GET FILE INSTRUMENTS"></a><br /><hr />
9215     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9216     <a name="rfc.section.6.10.1"></a><h3>6.10.1.&nbsp;
9217     Retrieving amount of instruments of a file</h3>
9218    
9219     <p>The front-end can retrieve the amount of instruments
9220     within a given instrument file by sending the
9221     following command:
9222     </p>
9223     <p>
9224     </p>
9225     <blockquote class="text">
9226     <p>GET FILE INSTRUMENTS &lt;filename&gt;
9227     </p>
9228     </blockquote><p>
9229    
9230     </p>
9231     <p>Where &lt;filename&gt; is the name of the instrument
9232     file (encapsulated into apostrophes, supporting escape
9233     sequences as described in chapter
9234     "<a class='info' href='#character_set'>Character Set and Escape
9235     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9236     </p>
9237     <p>The sampler will try to ask all sampler engines,
9238     whether they support the given file and ask the first
9239     engine with a positive answer for the amount of
9240     instruments.
9241     </p>
9242     <p>Possible Answers:
9243     </p>
9244     <p>
9245     </p>
9246     <blockquote class="text">
9247     <p>On success, the sampler will answer by
9248     returning the amount of instruments.
9249    
9250     </p>
9251     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9252     </p>
9253     <blockquote class="text">
9254     <p>if the file could not be handled
9255     </p>
9256     </blockquote>
9257    
9258    
9259     </blockquote><p>
9260    
9261     </p>
9262     <p>Examples:
9263     </p>
9264     <p>
9265     </p>
9266     <blockquote class="text">
9267     <p>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9268     </p>
9269     <p>S: "10"
9270     </p>
9271     </blockquote><p>
9272    
9273     </p>
9274     <a name="LIST FILE INSTRUMENTS"></a><br /><hr />
9275     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9276     <a name="rfc.section.6.10.2"></a><h3>6.10.2.&nbsp;
9277     Retrieving all instruments of a file</h3>
9278    
9279     <p>The front-end can retrieve a list of all instruments
9280     within a given instrument file by sending the
9281     following command:
9282     </p>
9283     <p>
9284     </p>
9285     <blockquote class="text">
9286     <p>LIST FILE INSTRUMENTS &lt;filename&gt;
9287     </p>
9288     </blockquote><p>
9289    
9290     </p>
9291     <p>Where &lt;filename&gt; is the name of the instrument
9292     file (encapsulated into apostrophes, supporting escape
9293     sequences as described in chapter
9294     "<a class='info' href='#character_set'>Character Set and Escape
9295     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
9296     </p>
9297     <p>The sampler will try to ask all sampler engines,
9298     whether they support the given file and ask the first
9299     engine with a positive answer for a list of IDs for the
9300     instruments in the given file.
9301     </p>
9302     <p>Possible Answers:
9303     </p>
9304     <p>
9305     </p>
9306     <blockquote class="text">
9307     <p>On success, the sampler will answer by
9308     returning a comma separated list of
9309     instrument IDs.
9310    
9311     </p>
9312     <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9313     </p>
9314     <blockquote class="text">
9315     <p>if the file could not be handled
9316     </p>
9317     </blockquote>
9318    
9319    
9320     </blockquote><p>
9321    
9322     </p>
9323     <p>Examples:
9324     </p>
9325     <p>
9326     </p>
9327     <blockquote class="text">
9328     <p>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"
9329     </p>
9330     <p>S: "0,1,2,3,4,5,6,7,8,9"
9331     </p>
9332     </blockquote><p>
9333    
9334     </p>
9335     <a name="GET FILE INSTRUMENT INFO"></a><br /><hr />
9336     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9337     <a name="rfc.section.6.10.3"></a><h3>6.10.3.&nbsp;
9338     Retrieving informations about one instrument in a file</h3>
9339    
9340     <p>The front-end can retrieve detailed informations
9341     about a specific instrument within a given instrument
9342     file by sending the following command:
9343     </p>
9344     <p>
9345     </p>
9346     <blockquote class="text">
9347     <p>GET FILE INSTRUMENT INFO &lt;filename&gt;
9348     &lt;instr-id&gt;
9349     </p>
9350     </blockquote><p>
9351    
9352     </p>
9353     <p>Where &lt;filename&gt; is the name of the instrument
9354     file (encapsulated into apostrophes, supporting escape
9355     sequences as described in chapter
9356     "<a class='info' href='#character_set'>Character Set and Escape
9357     Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") and &lt;instr-id&gt; is the numeric
9358     instrument ID as returned by the
9359     <a class='info' href='#LIST FILE INSTRUMENTS'>"LIST FILE INSTRUMENTS"<span> (</span><span class='info'>Retrieving all instruments of a file</span><span>)</span></a> command.
9360     </p>
9361     <p>The sampler will try to ask all sampler engines,
9362     whether they support the given file and ask the first
9363     engine with a positive answer for informations about the
9364     specific instrument in the given file.
9365     </p>
9366     <p>Possible Answers:
9367     </p>
9368     <p>
9369     </p>
9370     <blockquote class="text">
9371     <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
9372     Each answer line begins with the settings category name
9373     followed by a colon and then a space character &lt;SP&gt; and finally
9374     the info character string to that setting category. At the
9375     moment the following categories are defined:
9376     </p>
9377     <p>
9378     </p>
9379     <blockquote class="text">
9380     <p>NAME -
9381     </p>
9382     <blockquote class="text">
9383     <p>name of the instrument as
9384     stored in the instrument file
9385     </p>
9386     </blockquote>
9387    
9388    
9389     <p>FORMAT_FAMILY -
9390     </p>
9391     <blockquote class="text">
9392     <p>name of the sampler format
9393     of the given instrument
9394     </p>
9395     </blockquote>
9396    
9397    
9398     <p>FORMAT_VERSION -
9399     </p>
9400     <blockquote class="text">
9401     <p>version of the sampler format
9402     the instrumen is stored as
9403     </p>
9404     </blockquote>
9405    
9406    
9407     <p>PRODUCT -
9408     </p>
9409     <blockquote class="text">
9410     <p>official product name of the
9411     instrument as stored in the file
9412    
9413     </p>
9414     </blockquote>
9415    
9416    
9417     <p>ARTISTS -
9418     </p>
9419     <blockquote class="text">
9420     <p>artists / sample library
9421     vendor of the instrument
9422     </p>
9423     </blockquote>
9424    
9425    
9426     </blockquote>
9427    
9428    
9429     </blockquote><p>
9430    
9431     </p>
9432     <p>The mentioned fields above don't have to be in particular order.
9433     </p>
9434     <p>Example:
9435     </p>
9436     <p>
9437     </p>
9438     <blockquote class="text">
9439     <p>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"
9440     </p>
9441     <p>S: "NAME: Lunatic Loops"
9442     </p>
9443     <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
9444     </p>
9445     <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"
9446     </p>
9447     <p>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"
9448     </p>
9449     <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"
9450     </p>
9451     <p>&nbsp;&nbsp;&nbsp;"."
9452     </p>
9453     </blockquote><p>
9454    
9455     </p>
9456 senoner 542 <a name="command_syntax"></a><br /><hr />
9457 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9458     <a name="rfc.section.7"></a><h3>7.&nbsp;
9459     Command Syntax</h3>
9460 senoner 542
9461 schoenebeck 974 <p>The grammar of the control protocol as descibed in <a class='info' href='#control_commands'>Section&nbsp;6<span> (</span><span class='info'>Description for control commands</span><span>)</span></a>
9462     is defined below using Backus-Naur Form (BNF as described in <a class='info' href='#RFC2234'>[RFC2234]<span> (</span><span class='info'>Crocker, D. and P. Overell, &ldquo;Augmented BNF for Syntax Specifications,&rdquo; 1997.</span><span>)</span></a>)
9463 schoenebeck 575 where applicable.
9464 schoenebeck 940
9465 senoner 542 </p>
9466 schoenebeck 575 <p>input =
9467     </p>
9468     <blockquote class="text">
9469     <p>line LF
9470 schoenebeck 940
9471 schoenebeck 575 </p>
9472     <p>/ line CR LF
9473 schoenebeck 940
9474 schoenebeck 575 </p>
9475 schoenebeck 708 </blockquote><p>
9476 schoenebeck 575
9477 schoenebeck 708 </p>
9478 schoenebeck 575 <p>line =
9479     </p>
9480     <blockquote class="text">
9481     <p>/* epsilon (empty line ignored) */
9482 schoenebeck 940
9483 schoenebeck 575 </p>
9484     <p>/ comment
9485 schoenebeck 940
9486 schoenebeck 575 </p>
9487     <p>/ command
9488 schoenebeck 940
9489 schoenebeck 575 </p>
9490     <p>/ error
9491 schoenebeck 940
9492 schoenebeck 575 </p>
9493 schoenebeck 708 </blockquote><p>
9494 schoenebeck 575
9495 schoenebeck 708 </p>
9496 schoenebeck 575 <p>comment =
9497     </p>
9498     <blockquote class="text">
9499     <p>'#'
9500 schoenebeck 940
9501 schoenebeck 575 </p>
9502     <p>/ comment '#'
9503 schoenebeck 940
9504 schoenebeck 575 </p>
9505     <p>/ comment SP
9506 schoenebeck 940
9507 schoenebeck 575 </p>
9508     <p>/ comment number
9509 schoenebeck 940
9510 schoenebeck 575 </p>
9511     <p>/ comment string
9512 schoenebeck 940
9513 schoenebeck 575 </p>
9514 schoenebeck 708 </blockquote><p>
9515 schoenebeck 575
9516 schoenebeck 708 </p>
9517 schoenebeck 575 <p>command =
9518     </p>
9519     <blockquote class="text">
9520 schoenebeck 974 <p>ADD SP add_instruction
9521 schoenebeck 940
9522 schoenebeck 575 </p>
9523 schoenebeck 945 <p>/ MAP SP map_instruction
9524    
9525     </p>
9526     <p>/ UNMAP SP unmap_instruction
9527    
9528     </p>
9529 schoenebeck 575 <p>/ GET SP get_instruction
9530 schoenebeck 940
9531 schoenebeck 575 </p>
9532     <p>/ CREATE SP create_instruction
9533 schoenebeck 940
9534 schoenebeck 575 </p>
9535     <p>/ DESTROY SP destroy_instruction
9536 schoenebeck 940
9537 schoenebeck 575 </p>
9538     <p>/ LIST SP list_instruction
9539 schoenebeck 940
9540 schoenebeck 575 </p>
9541     <p>/ LOAD SP load_instruction
9542 schoenebeck 940
9543 schoenebeck 575 </p>
9544 schoenebeck 945 <p>/ REMOVE SP remove_instruction
9545 schoenebeck 940
9546 schoenebeck 575 </p>
9547     <p>/ SET SP set_instruction
9548 schoenebeck 940
9549 schoenebeck 575 </p>
9550     <p>/ SUBSCRIBE SP subscribe_event
9551 schoenebeck 940
9552 schoenebeck 575 </p>
9553     <p>/ UNSUBSCRIBE SP unsubscribe_event
9554 schoenebeck 940
9555 schoenebeck 575 </p>
9556 schoenebeck 945 <p>/ RESET SP reset_instruction
9557 schoenebeck 940
9558 schoenebeck 575 </p>
9559 schoenebeck 945 <p>/ CLEAR SP clear_instruction
9560    
9561     </p>
9562 iliev 1189 <p>/ FIND SP find_instruction
9563    
9564     </p>
9565 iliev 1162 <p>/ MOVE SP move_instruction
9566    
9567     </p>
9568 iliev 1189 <p>/ COPY SP copy_instruction
9569    
9570     </p>
9571 schoenebeck 1251 <p>/ EDIT SP edit_instruction
9572    
9573     </p>
9574 schoenebeck 1363 <p>/ FORMAT SP format_instruction
9575    
9576     </p>
9577 schoenebeck 575 <p>/ RESET
9578 schoenebeck 940
9579 schoenebeck 575 </p>
9580     <p>/ QUIT
9581 schoenebeck 940
9582 schoenebeck 575 </p>
9583 schoenebeck 708 </blockquote><p>
9584 schoenebeck 575
9585 schoenebeck 708 </p>
9586 schoenebeck 974 <p>add_instruction =
9587     </p>
9588     <blockquote class="text">
9589     <p>CHANNEL
9590    
9591     </p>
9592 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9593 iliev 1162
9594     </p>
9595 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
9596 iliev 1162
9597     </p>
9598 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
9599 iliev 1162
9600     </p>
9601 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
9602 iliev 1201
9603     </p>
9604 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
9605 iliev 1201
9606     </p>
9607 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename
9608 iliev 1162
9609     </p>
9610 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
9611 iliev 1162
9612     </p>
9613 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP
9614    
9615     </p>
9616     <p>/ MIDI_INSTRUMENT_MAP SP map_name
9617    
9618     </p>
9619     </blockquote><p>
9620    
9621     </p>
9622 schoenebeck 575 <p>subscribe_event =
9623     </p>
9624     <blockquote class="text">
9625 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
9626 schoenebeck 940
9627 schoenebeck 575 </p>
9628 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9629    
9630     </p>
9631     <p>/ MIDI_INPUT_DEVICE_COUNT
9632    
9633     </p>
9634     <p>/ MIDI_INPUT_DEVICE_INFO
9635    
9636     </p>
9637     <p>/ CHANNEL_COUNT
9638    
9639     </p>
9640 schoenebeck 575 <p>/ VOICE_COUNT
9641 schoenebeck 940
9642 schoenebeck 575 </p>
9643     <p>/ STREAM_COUNT
9644 schoenebeck 940
9645 schoenebeck 575 </p>
9646     <p>/ BUFFER_FILL
9647 schoenebeck 940
9648 schoenebeck 575 </p>
9649     <p>/ CHANNEL_INFO
9650 schoenebeck 940
9651 schoenebeck 575 </p>
9652 iliev 1110 <p>/ FX_SEND_COUNT
9653    
9654     </p>
9655     <p>/ FX_SEND_INFO
9656    
9657     </p>
9658 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9659    
9660     </p>
9661     <p>/ MIDI_INSTRUMENT_MAP_INFO
9662    
9663     </p>
9664     <p>/ MIDI_INSTRUMENT_COUNT
9665    
9666     </p>
9667     <p>/ MIDI_INSTRUMENT_INFO
9668    
9669     </p>
9670 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9671    
9672     </p>
9673     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9674    
9675     </p>
9676     <p>/ DB_INSTRUMENT_COUNT
9677    
9678     </p>
9679     <p>/ DB_INSTRUMENT_INFO
9680    
9681     </p>
9682 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
9683    
9684     </p>
9685 schoenebeck 575 <p>/ MISCELLANEOUS
9686 schoenebeck 940
9687 schoenebeck 575 </p>
9688 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
9689    
9690     </p>
9691 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
9692    
9693     </p>
9694 iliev 1110 <p>/ GLOBAL_INFO
9695    
9696     </p>
9697 schoenebeck 708 </blockquote><p>
9698 schoenebeck 575
9699 schoenebeck 708 </p>
9700 schoenebeck 575 <p>unsubscribe_event =
9701     </p>
9702     <blockquote class="text">
9703 iliev 992 <p>AUDIO_OUTPUT_DEVICE_COUNT
9704 schoenebeck 940
9705 schoenebeck 575 </p>
9706 iliev 992 <p>/ AUDIO_OUTPUT_DEVICE_INFO
9707    
9708     </p>
9709     <p>/ MIDI_INPUT_DEVICE_COUNT
9710    
9711     </p>
9712     <p>/ MIDI_INPUT_DEVICE_INFO
9713    
9714     </p>
9715     <p>/ CHANNEL_COUNT
9716    
9717     </p>
9718 schoenebeck 575 <p>/ VOICE_COUNT
9719 schoenebeck 940
9720 schoenebeck 575 </p>
9721     <p>/ STREAM_COUNT
9722 schoenebeck 940
9723 schoenebeck 575 </p>
9724     <p>/ BUFFER_FILL
9725 schoenebeck 940
9726 schoenebeck 575 </p>
9727     <p>/ CHANNEL_INFO
9728 schoenebeck 940
9729 schoenebeck 575 </p>
9730 iliev 1110 <p>/ FX_SEND_COUNT
9731    
9732     </p>
9733     <p>/ FX_SEND_INFO
9734    
9735     </p>
9736 iliev 992 <p>/ MIDI_INSTRUMENT_MAP_COUNT
9737    
9738     </p>
9739     <p>/ MIDI_INSTRUMENT_MAP_INFO
9740    
9741     </p>
9742     <p>/ MIDI_INSTRUMENT_COUNT
9743    
9744     </p>
9745     <p>/ MIDI_INSTRUMENT_INFO
9746    
9747     </p>
9748 iliev 1162 <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9749    
9750     </p>
9751     <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9752    
9753     </p>
9754     <p>/ DB_INSTRUMENT_COUNT
9755    
9756     </p>
9757     <p>/ DB_INSTRUMENT_INFO
9758    
9759     </p>
9760 iliev 1201 <p>/ DB_INSTRUMENTS_JOB_INFO
9761    
9762     </p>
9763 schoenebeck 575 <p>/ MISCELLANEOUS
9764 schoenebeck 940
9765 schoenebeck 575 </p>
9766 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
9767    
9768     </p>
9769 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
9770    
9771     </p>
9772 iliev 1110 <p>/ GLOBAL_INFO
9773    
9774     </p>
9775 schoenebeck 708 </blockquote><p>
9776 schoenebeck 575
9777 schoenebeck 708 </p>
9778 schoenebeck 945 <p>map_instruction =
9779     </p>
9780     <blockquote class="text">
9781 schoenebeck 1048 <p>MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value
9782 schoenebeck 945
9783     </p>
9784 schoenebeck 1048 <p>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode
9785 schoenebeck 945
9786     </p>
9787 schoenebeck 1048 <p>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP entry_name
9788 schoenebeck 945
9789     </p>
9790 schoenebeck 1048 <p>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode SP entry_name
9791 schoenebeck 945
9792     </p>
9793     </blockquote><p>
9794    
9795     </p>
9796     <p>unmap_instruction =
9797     </p>
9798     <blockquote class="text">
9799 schoenebeck 974 <p>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
9800 schoenebeck 945
9801     </p>
9802     </blockquote><p>
9803    
9804     </p>
9805     <p>remove_instruction =
9806     </p>
9807     <blockquote class="text">
9808     <p>CHANNEL SP sampler_channel
9809    
9810     </p>
9811 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP midi_map
9812    
9813     </p>
9814     <p>/ MIDI_INSTRUMENT_MAP SP ALL
9815    
9816     </p>
9817 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
9818 iliev 1162
9819     </p>
9820 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9821 iliev 1162
9822     </p>
9823 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path
9824 iliev 1162
9825     </p>
9826 schoenebeck 945 </blockquote><p>
9827    
9828     </p>
9829 schoenebeck 575 <p>get_instruction =
9830     </p>
9831     <blockquote class="text">
9832     <p>AVAILABLE_ENGINES
9833 schoenebeck 940
9834 schoenebeck 575 </p>
9835     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
9836 schoenebeck 940
9837 schoenebeck 575 </p>
9838     <p>/ MIDI_INPUT_DRIVER SP INFO SP string
9839 schoenebeck 940
9840 schoenebeck 575 </p>
9841     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
9842 schoenebeck 940
9843 schoenebeck 575 </p>
9844     <p>/ MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9845 schoenebeck 940
9846 schoenebeck 575 </p>
9847     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
9848 schoenebeck 940
9849 schoenebeck 575 </p>
9850     <p>/ AUDIO_OUTPUT_DRIVER SP INFO SP string
9851 schoenebeck 940
9852 schoenebeck 575 </p>
9853     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
9854 schoenebeck 940
9855 schoenebeck 575 </p>
9856     <p>/ AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list
9857 schoenebeck 940
9858 schoenebeck 575 </p>
9859     <p>/ AUDIO_OUTPUT_DEVICES
9860 schoenebeck 940
9861 schoenebeck 575 </p>
9862     <p>/ MIDI_INPUT_DEVICES
9863 schoenebeck 940
9864 schoenebeck 575 </p>
9865     <p>/ AUDIO_OUTPUT_DEVICE SP INFO SP number
9866 schoenebeck 940
9867 schoenebeck 575 </p>
9868     <p>/ MIDI_INPUT_DEVICE SP INFO SP number
9869 schoenebeck 940
9870 schoenebeck 575 </p>
9871     <p>/ MIDI_INPUT_PORT SP INFO SP number SP number
9872 schoenebeck 940
9873 schoenebeck 575 </p>
9874     <p>/ MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
9875 schoenebeck 940
9876 schoenebeck 575 </p>
9877     <p>/ AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
9878 schoenebeck 940
9879 schoenebeck 575 </p>
9880     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string
9881 schoenebeck 940
9882 schoenebeck 575 </p>
9883     <p>/ CHANNELS
9884 schoenebeck 940
9885 schoenebeck 575 </p>
9886     <p>/ CHANNEL SP INFO SP sampler_channel
9887 schoenebeck 940
9888 schoenebeck 575 </p>
9889     <p>/ CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
9890 schoenebeck 940
9891 schoenebeck 575 </p>
9892     <p>/ CHANNEL SP STREAM_COUNT SP sampler_channel
9893 schoenebeck 940
9894 schoenebeck 575 </p>
9895     <p>/ CHANNEL SP VOICE_COUNT SP sampler_channel
9896 schoenebeck 940
9897 schoenebeck 575 </p>
9898     <p>/ ENGINE SP INFO SP engine_name
9899 schoenebeck 940
9900 schoenebeck 575 </p>
9901     <p>/ SERVER SP INFO
9902 schoenebeck 940
9903 schoenebeck 575 </p>
9904 schoenebeck 1572 <p>/ TOTAL_STREAM_COUNT
9905    
9906     </p>
9907 schoenebeck 940 <p>/ TOTAL_VOICE_COUNT
9908    
9909     </p>
9910     <p>/ TOTAL_VOICE_COUNT_MAX
9911    
9912     </p>
9913 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
9914 schoenebeck 945
9915     </p>
9916 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
9917 schoenebeck 945
9918     </p>
9919 schoenebeck 974 <p>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
9920    
9921     </p>
9922     <p>/ MIDI_INSTRUMENT_MAPS
9923    
9924     </p>
9925     <p>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
9926    
9927     </p>
9928 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
9929    
9930     </p>
9931     <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
9932    
9933     </p>
9934 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
9935 iliev 1189
9936     </p>
9937 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
9938 iliev 1162
9939     </p>
9940 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
9941 iliev 1162
9942     </p>
9943 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
9944 iliev 1189
9945     </p>
9946 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
9947 iliev 1162
9948     </p>
9949 schoenebeck 1363 <p>/ DB_INSTRUMENT SP INFO SP db_path
9950 iliev 1162
9951     </p>
9952 iliev 1201 <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
9953    
9954     </p>
9955 schoenebeck 1006 <p>/ VOLUME
9956    
9957     </p>
9958 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
9959    
9960     </p>
9961     <p>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
9962    
9963     </p>
9964 schoenebeck 708 </blockquote><p>
9965 schoenebeck 575
9966 schoenebeck 708 </p>
9967 schoenebeck 575 <p>set_instruction =
9968     </p>
9969     <blockquote class="text">
9970     <p>AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9971 schoenebeck 940
9972 schoenebeck 575 </p>
9973     <p>/ AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '=' param_val_list
9974 schoenebeck 940
9975 schoenebeck 575 </p>
9976     <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9977 schoenebeck 940
9978 schoenebeck 575 </p>
9979 schoenebeck 1363 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
9980    
9981     </p>
9982 schoenebeck 575 <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
9983 schoenebeck 940
9984 schoenebeck 575 </p>
9985     <p>/ CHANNEL SP set_chan_instruction
9986 schoenebeck 940
9987 schoenebeck 575 </p>
9988 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
9989    
9990     </p>
9991 iliev 1137 <p>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
9992    
9993     </p>
9994 schoenebeck 1002 <p>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
9995    
9996     </p>
9997 schoenebeck 1028 <p>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
9998    
9999     </p>
10000     <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
10001    
10002     </p>
10003 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
10004 iliev 1162
10005     </p>
10006 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
10007 iliev 1162
10008     </p>
10009 schoenebeck 1363 <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
10010 iliev 1162
10011     </p>
10012 schoenebeck 1363 <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
10013 iliev 1162
10014     </p>
10015 schoenebeck 575 <p>/ ECHO SP boolean
10016 schoenebeck 940
10017 schoenebeck 575 </p>
10018 schoenebeck 1006 <p>/ VOLUME SP volume_value
10019    
10020     </p>
10021 schoenebeck 708 </blockquote><p>
10022 schoenebeck 575
10023 schoenebeck 708 </p>
10024 schoenebeck 575 <p>create_instruction =
10025     </p>
10026     <blockquote class="text">
10027     <p>AUDIO_OUTPUT_DEVICE SP string SP key_val_list
10028 schoenebeck 940
10029 schoenebeck 575 </p>
10030     <p>/ AUDIO_OUTPUT_DEVICE SP string
10031 schoenebeck 940
10032 schoenebeck 575 </p>
10033     <p>/ MIDI_INPUT_DEVICE SP string SP key_val_list
10034 schoenebeck 940
10035 schoenebeck 575 </p>
10036     <p>/ MIDI_INPUT_DEVICE SP string
10037 schoenebeck 940
10038 schoenebeck 575 </p>
10039 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP midi_ctrl
10040    
10041     </p>
10042     <p>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
10043    
10044     </p>
10045 schoenebeck 708 </blockquote><p>
10046 schoenebeck 575
10047 schoenebeck 708 </p>
10048 schoenebeck 945 <p>reset_instruction =
10049     </p>
10050     <blockquote class="text">
10051     <p>CHANNEL SP sampler_channel
10052    
10053     </p>
10054     </blockquote><p>
10055    
10056     </p>
10057     <p>clear_instruction =
10058     </p>
10059     <blockquote class="text">
10060 schoenebeck 974 <p>MIDI_INSTRUMENTS SP midi_map
10061 schoenebeck 945
10062     </p>
10063 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
10064    
10065     </p>
10066 schoenebeck 945 </blockquote><p>
10067    
10068     </p>
10069 iliev 1189 <p>find_instruction =
10070     </p>
10071     <blockquote class="text">
10072 schoenebeck 1363 <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
10073 iliev 1189
10074     </p>
10075 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
10076 iliev 1189
10077     </p>
10078 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
10079 iliev 1189
10080     </p>
10081 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
10082 iliev 1189
10083     </p>
10084     </blockquote><p>
10085    
10086     </p>
10087 iliev 1162 <p>move_instruction =
10088     </p>
10089     <blockquote class="text">
10090 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10091 iliev 1162
10092     </p>
10093 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
10094 iliev 1162
10095     </p>
10096     </blockquote><p>
10097    
10098     </p>
10099 iliev 1189 <p>copy_instruction =
10100     </p>
10101     <blockquote class="text">
10102 schoenebeck 1363 <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
10103 iliev 1189
10104     </p>
10105 schoenebeck 1363 <p>/ DB_INSTRUMENT SP db_path SP db_path
10106 iliev 1189
10107     </p>
10108     </blockquote><p>
10109    
10110     </p>
10111 schoenebeck 575 <p>destroy_instruction =
10112     </p>
10113     <blockquote class="text">
10114     <p>AUDIO_OUTPUT_DEVICE SP number
10115 schoenebeck 940
10116 schoenebeck 575 </p>
10117     <p>/ MIDI_INPUT_DEVICE SP number
10118 schoenebeck 940
10119 schoenebeck 575 </p>
10120 schoenebeck 1002 <p>/ FX_SEND SP sampler_channel SP fx_send_id
10121    
10122     </p>
10123 schoenebeck 708 </blockquote><p>
10124 schoenebeck 575
10125 schoenebeck 708 </p>
10126 schoenebeck 575 <p>load_instruction =
10127     </p>
10128     <blockquote class="text">
10129     <p>INSTRUMENT SP load_instr_args
10130 schoenebeck 940
10131 schoenebeck 575 </p>
10132     <p>/ ENGINE SP load_engine_args
10133 schoenebeck 940
10134 schoenebeck 575 </p>
10135 schoenebeck 708 </blockquote><p>
10136 schoenebeck 575
10137 schoenebeck 708 </p>
10138 schoenebeck 575 <p>set_chan_instruction =
10139     </p>
10140     <blockquote class="text">
10141     <p>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
10142 schoenebeck 940
10143 schoenebeck 575 </p>
10144     <p>/ AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index SP audio_channel_index
10145 schoenebeck 940
10146 schoenebeck 575 </p>
10147     <p>/ AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
10148 schoenebeck 940
10149 schoenebeck 575 </p>
10150     <p>/ MIDI_INPUT SP sampler_channel SP device_index SP midi_input_port_index SP midi_input_channel_index
10151 schoenebeck 940
10152 schoenebeck 575 </p>
10153     <p>/ MIDI_INPUT_DEVICE SP sampler_channel SP device_index
10154 schoenebeck 940
10155 schoenebeck 575 </p>
10156     <p>/ MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
10157 schoenebeck 940
10158 schoenebeck 575 </p>
10159     <p>/ MIDI_INPUT_CHANNEL SP sampler_channel SP midi_input_channel_index
10160 schoenebeck 940
10161 schoenebeck 575 </p>
10162     <p>/ MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
10163 schoenebeck 940
10164 schoenebeck 575 </p>
10165     <p>/ VOLUME SP sampler_channel SP volume_value
10166 schoenebeck 940
10167 schoenebeck 575 </p>
10168 schoenebeck 708 <p>/ MUTE SP sampler_channel SP boolean
10169 schoenebeck 940
10170 schoenebeck 708 </p>
10171     <p>/ SOLO SP sampler_channel SP boolean
10172 schoenebeck 940
10173 schoenebeck 708 </p>
10174 schoenebeck 974 <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
10175    
10176     </p>
10177     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
10178    
10179     </p>
10180     <p>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
10181    
10182     </p>
10183 schoenebeck 708 </blockquote><p>
10184    
10185     </p>
10186 schoenebeck 1251 <p>edit_instruction =
10187     </p>
10188     <blockquote class="text">
10189 schoenebeck 1430 <p>CHANNEL SP INSTRUMENT SP sampler_channel
10190 schoenebeck 1251
10191     </p>
10192     </blockquote><p>
10193    
10194     </p>
10195 schoenebeck 1363 <p>format_instruction =
10196     </p>
10197     <blockquote class="text">
10198     <p>INSTRUMENTS_DB
10199    
10200     </p>
10201     </blockquote><p>
10202    
10203     </p>
10204 schoenebeck 1048 <p>modal_arg =
10205     </p>
10206     <blockquote class="text">
10207     <p>/* epsilon (empty argument) */
10208    
10209     </p>
10210     <p>/ NON_MODAL SP
10211    
10212     </p>
10213     </blockquote><p>
10214    
10215     </p>
10216 schoenebeck 575 <p>key_val_list =
10217     </p>
10218     <blockquote class="text">
10219     <p>string '=' param_val_list
10220 schoenebeck 940
10221 schoenebeck 575 </p>
10222     <p>/ key_val_list SP string '=' param_val_list
10223 schoenebeck 940
10224 schoenebeck 575 </p>
10225 schoenebeck 708 </blockquote><p>
10226 schoenebeck 575
10227 schoenebeck 708 </p>
10228 schoenebeck 575 <p>buffer_size_type =
10229     </p>
10230     <blockquote class="text">
10231     <p>BYTES
10232 schoenebeck 940
10233 schoenebeck 575 </p>
10234     <p>/ PERCENTAGE
10235 schoenebeck 940
10236 schoenebeck 575 </p>
10237 schoenebeck 708 </blockquote><p>
10238 schoenebeck 575
10239 schoenebeck 708 </p>
10240 schoenebeck 575 <p>list_instruction =
10241     </p>
10242     <blockquote class="text">
10243     <p>AUDIO_OUTPUT_DEVICES
10244 schoenebeck 940
10245 schoenebeck 575 </p>
10246     <p>/ MIDI_INPUT_DEVICES
10247 schoenebeck 940
10248 schoenebeck 575 </p>
10249     <p>/ CHANNELS
10250 schoenebeck 940
10251 schoenebeck 575 </p>
10252     <p>/ AVAILABLE_ENGINES
10253 schoenebeck 940
10254 schoenebeck 575 </p>
10255     <p>/ AVAILABLE_MIDI_INPUT_DRIVERS
10256 schoenebeck 940
10257 schoenebeck 575 </p>
10258     <p>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
10259 schoenebeck 940
10260 schoenebeck 575 </p>
10261 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP midi_map
10262 schoenebeck 945
10263     </p>
10264 schoenebeck 974 <p>/ MIDI_INSTRUMENTS SP ALL
10265    
10266     </p>
10267     <p>/ MIDI_INSTRUMENT_MAPS
10268    
10269     </p>
10270 schoenebeck 1002 <p>/ FX_SENDS SP sampler_channel
10271    
10272     </p>
10273 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
10274 iliev 1189
10275     </p>
10276 schoenebeck 1363 <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
10277 iliev 1162
10278     </p>
10279 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
10280 iliev 1189
10281     </p>
10282 schoenebeck 1363 <p>/ DB_INSTRUMENTS SP db_path
10283 iliev 1162
10284     </p>
10285 schoenebeck 1572 <p>/ FILE SP INSTRUMENTS SP filename
10286    
10287     </p>
10288 schoenebeck 708 </blockquote><p>
10289 schoenebeck 575
10290 schoenebeck 708 </p>
10291 schoenebeck 575 <p>load_instr_args =
10292     </p>
10293     <blockquote class="text">
10294     <p>filename SP instrument_index SP sampler_channel
10295 schoenebeck 940
10296 schoenebeck 575 </p>
10297     <p>/ NON_MODAL SP filename SP instrument_index SP sampler_channel
10298 schoenebeck 940
10299 schoenebeck 575 </p>
10300 schoenebeck 708 </blockquote><p>
10301 schoenebeck 575
10302 schoenebeck 708 </p>
10303 schoenebeck 575 <p>load_engine_args =
10304     </p>
10305     <blockquote class="text">
10306     <p>engine_name SP sampler_channel
10307 schoenebeck 940
10308 schoenebeck 575 </p>
10309 schoenebeck 708 </blockquote><p>
10310 schoenebeck 575
10311 schoenebeck 708 </p>
10312 schoenebeck 945 <p>instr_load_mode =
10313     </p>
10314     <blockquote class="text">
10315     <p>ON_DEMAND
10316    
10317     </p>
10318     <p>/ ON_DEMAND_HOLD
10319    
10320     </p>
10321     <p>/ PERSISTENT
10322    
10323     </p>
10324     </blockquote><p>
10325    
10326     </p>
10327 schoenebeck 575 <p>device_index =
10328     </p>
10329     <blockquote class="text">
10330     <p>number
10331 schoenebeck 940
10332 schoenebeck 575 </p>
10333 schoenebeck 708 </blockquote><p>
10334 schoenebeck 575
10335 schoenebeck 708 </p>
10336 schoenebeck 575 <p>audio_channel_index =
10337     </p>
10338     <blockquote class="text">
10339     <p>number
10340 schoenebeck 940
10341 schoenebeck 575 </p>
10342 schoenebeck 708 </blockquote><p>
10343 schoenebeck 575
10344 schoenebeck 708 </p>
10345 schoenebeck 575 <p>audio_output_type_name =
10346     </p>
10347     <blockquote class="text">
10348     <p>string
10349 schoenebeck 940
10350 schoenebeck 575 </p>
10351 schoenebeck 708 </blockquote><p>
10352 schoenebeck 575
10353 schoenebeck 708 </p>
10354 schoenebeck 575 <p>midi_input_port_index =
10355     </p>
10356     <blockquote class="text">
10357     <p>number
10358 schoenebeck 940
10359 schoenebeck 575 </p>
10360 schoenebeck 708 </blockquote><p>
10361 schoenebeck 575
10362 schoenebeck 708 </p>
10363 schoenebeck 575 <p>midi_input_channel_index =
10364     </p>
10365     <blockquote class="text">
10366     <p>number
10367 schoenebeck 940
10368 schoenebeck 575 </p>
10369     <p>/ ALL
10370 schoenebeck 940
10371 schoenebeck 575 </p>
10372 schoenebeck 708 </blockquote><p>
10373 schoenebeck 575
10374 schoenebeck 708 </p>
10375 schoenebeck 575 <p>midi_input_type_name =
10376     </p>
10377     <blockquote class="text">
10378     <p>string
10379 schoenebeck 940
10380 schoenebeck 575 </p>
10381 schoenebeck 708 </blockquote><p>
10382 schoenebeck 575
10383 schoenebeck 708 </p>
10384 schoenebeck 974 <p>midi_map =
10385 schoenebeck 945 </p>
10386     <blockquote class="text">
10387     <p>number
10388    
10389     </p>
10390     </blockquote><p>
10391    
10392     </p>
10393 schoenebeck 974 <p>midi_bank =
10394 schoenebeck 945 </p>
10395     <blockquote class="text">
10396     <p>number
10397    
10398     </p>
10399     </blockquote><p>
10400    
10401     </p>
10402     <p>midi_prog =
10403     </p>
10404     <blockquote class="text">
10405     <p>number
10406    
10407     </p>
10408     </blockquote><p>
10409    
10410     </p>
10411 schoenebeck 1002 <p>midi_ctrl =
10412     </p>
10413     <blockquote class="text">
10414     <p>number
10415    
10416     </p>
10417     </blockquote><p>
10418    
10419     </p>
10420 schoenebeck 575 <p>volume_value =
10421     </p>
10422     <blockquote class="text">
10423     <p>dotnum
10424 schoenebeck 940
10425 schoenebeck 575 </p>
10426     <p>/ number
10427 schoenebeck 940
10428 schoenebeck 575 </p>
10429 schoenebeck 708 </blockquote><p>
10430 schoenebeck 575
10431 schoenebeck 708 </p>
10432 schoenebeck 575 <p>sampler_channel =
10433     </p>
10434     <blockquote class="text">
10435     <p>number
10436 schoenebeck 940
10437 schoenebeck 575 </p>
10438 schoenebeck 708 </blockquote><p>
10439 schoenebeck 575
10440 schoenebeck 708 </p>
10441 schoenebeck 575 <p>instrument_index =
10442     </p>
10443     <blockquote class="text">
10444     <p>number
10445 schoenebeck 940
10446 schoenebeck 575 </p>
10447 schoenebeck 708 </blockquote><p>
10448 schoenebeck 575
10449 schoenebeck 708 </p>
10450 schoenebeck 1002 <p>fx_send_id =
10451     </p>
10452     <blockquote class="text">
10453     <p>number
10454    
10455     </p>
10456     </blockquote><p>
10457    
10458     </p>
10459 schoenebeck 575 <p>engine_name =
10460     </p>
10461     <blockquote class="text">
10462     <p>string
10463 schoenebeck 940
10464 schoenebeck 575 </p>
10465 schoenebeck 708 </blockquote><p>
10466 schoenebeck 575
10467 schoenebeck 708 </p>
10468 schoenebeck 1363 <p>filename =
10469 iliev 1162 </p>
10470     <blockquote class="text">
10471 schoenebeck 1363 <p>path
10472 iliev 1162
10473     </p>
10474     </blockquote><p>
10475    
10476     </p>
10477 schoenebeck 1363 <p>db_path =
10478 iliev 1162 </p>
10479     <blockquote class="text">
10480 schoenebeck 1363 <p>path
10481 iliev 1162
10482     </p>
10483     </blockquote><p>
10484    
10485     </p>
10486 schoenebeck 974 <p>map_name =
10487     </p>
10488     <blockquote class="text">
10489 schoenebeck 1390 <p>stringval_escaped
10490 schoenebeck 974
10491     </p>
10492     </blockquote><p>
10493    
10494     </p>
10495 schoenebeck 945 <p>entry_name =
10496     </p>
10497     <blockquote class="text">
10498 schoenebeck 1390 <p>stringval_escaped
10499 schoenebeck 945
10500     </p>
10501     </blockquote><p>
10502    
10503     </p>
10504 schoenebeck 1002 <p>fx_send_name =
10505     </p>
10506     <blockquote class="text">
10507 schoenebeck 1390 <p>stringval_escaped
10508 schoenebeck 1002
10509     </p>
10510     </blockquote><p>
10511    
10512     </p>
10513 schoenebeck 575 <p>param_val_list =
10514     </p>
10515     <blockquote class="text">
10516     <p>param_val
10517 schoenebeck 940
10518 schoenebeck 575 </p>
10519     <p>/ param_val_list','param_val
10520 schoenebeck 940
10521 schoenebeck 575 </p>
10522 schoenebeck 708 </blockquote><p>
10523 schoenebeck 575
10524 schoenebeck 708 </p>
10525 schoenebeck 575 <p>param_val =
10526     </p>
10527     <blockquote class="text">
10528     <p>string
10529 schoenebeck 940
10530 schoenebeck 575 </p>
10531 schoenebeck 940 <p>/ stringval
10532    
10533 schoenebeck 575 </p>
10534     <p>/ number
10535 schoenebeck 940
10536 schoenebeck 575 </p>
10537     <p>/ dotnum
10538 schoenebeck 940
10539 schoenebeck 575 </p>
10540 schoenebeck 708 </blockquote><p>
10541 schoenebeck 575
10542 schoenebeck 708 </p>
10543 iliev 1189 <p>query_val_list =
10544     </p>
10545     <blockquote class="text">
10546     <p>string '=' query_val
10547    
10548     </p>
10549     <p>/ query_val_list SP string '=' query_val
10550    
10551     </p>
10552     </blockquote><p>
10553    
10554     </p>
10555     <p>query_val =
10556     </p>
10557     <blockquote class="text">
10558 schoenebeck 1390 <p>text_escaped
10559 iliev 1189
10560     </p>
10561 schoenebeck 1363 <p>/ stringval_escaped
10562 iliev 1189
10563     </p>
10564     </blockquote><p>
10565    
10566     </p>
10567 iliev 1201 <p>scan_mode =
10568     </p>
10569     <blockquote class="text">
10570     <p>RECURSIVE
10571    
10572     </p>
10573     <p>/ NON_RECURSIVE
10574    
10575     </p>
10576     <p>/ FLAT
10577    
10578     </p>
10579     </blockquote><p>
10580    
10581     </p>
10582 schoenebeck 1251 <a name="character_set"></a><br /><hr />
10583     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10584     <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
10585     Character Set and Escape Sequences</h3>
10586    
10587     <p>Older versions of this protocol up to and including v1.1 only
10588     supported the standard ASCII character set (ASCII code 0 - 127)
10589     <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>, all younger versions of this protocol
10590     however support the Extended ASCII character set (ASCII code
10591     0 - 255). The same group of younger protocols also support
10592     escape sequences, but only for certain, explicitly declared
10593     parts of the protocol. The supported escape sequences are
10594     defined as follows:
10595     </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
10596     <col align="left"><col align="left">
10597     <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
10598     <tr>
10599     <td align="left">\n</td>
10600     <td align="left">new line</td>
10601     </tr>
10602     <tr>
10603     <td align="left">\r</td>
10604     <td align="left">carriage return</td>
10605     </tr>
10606     <tr>
10607     <td align="left">\f</td>
10608     <td align="left">form feed</td>
10609     </tr>
10610     <tr>
10611     <td align="left">\t</td>
10612     <td align="left">horizontal tab</td>
10613     </tr>
10614     <tr>
10615     <td align="left">\v</td>
10616     <td align="left">vertical tab</td>
10617     </tr>
10618     <tr>
10619     <td align="left">\'</td>
10620     <td align="left">apostrophe</td>
10621     </tr>
10622     <tr>
10623     <td align="left">\"</td>
10624     <td align="left">quotation mark</td>
10625     </tr>
10626     <tr>
10627     <td align="left">\\</td>
10628     <td align="left">backslash</td>
10629     </tr>
10630     <tr>
10631     <td align="left">\OOO</td>
10632     <td align="left">three digit octal ASCII code of the character</td>
10633     </tr>
10634     <tr>
10635     <td align="left">\xHH</td>
10636     <td align="left">two digit hex ASCII code of the character</td>
10637     </tr>
10638     </table>
10639    
10640     <p>Notice: due to the transition of certain parts of the
10641     protocol which now support escape sequences, a slight backward
10642     incompatibility to protocols version v1.1 and younger has been
10643     introduced. The only difference is that in parts of the protocol
10644     where escape characters are now supported, a backslash characters
10645     MUST be escaped as well (that is as double backslash), whereas
10646     in the old versions a single backslash was sufficient.
10647     </p>
10648 schoenebeck 1390 <p>The following LSCP commands support escape sequences as part
10649 schoenebeck 1400 of their filename / path based arguments and / or may contain
10650     a filename / path with escape sequences in their response:
10651 schoenebeck 1390 </p>
10652     <blockquote class="text">
10653     <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
10654     </p>
10655 schoenebeck 1400 <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10656     </p>
10657 schoenebeck 1390 <p><a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
10658     </p>
10659 schoenebeck 1400 <p><a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
10660     </p>
10661 schoenebeck 1390 <p><a class='info' href='#ADD DB_INSTRUMENT_DIRECTORY'>"ADD DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Creating a new instrument directory</span><span>)</span></a>
10662     </p>
10663     <p><a class='info' href='#ADD DB_INSTRUMENTS'>"ADD DB_INSTRUMENTS"<span> (</span><span class='info'>Adding instruments to the instruments database</span><span>)</span></a>
10664     </p>
10665     <p><a class='info' href='#REMOVE DB_INSTRUMENT_DIRECTORY'>"REMOVE DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Deleting an instrument directory</span><span>)</span></a>
10666     </p>
10667     <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
10668     </p>
10669     <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORIES'>"GET DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Getting amount of instrument directories</span><span>)</span></a>
10670     </p>
10671     <p><a class='info' href='#LIST DB_INSTRUMENT_DIRECTORIES'>"LIST DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Listing all directories in specific directory</span><span>)</span></a>
10672     </p>
10673     <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORY INFO'>"GET DB_INSTRUMENT_DIRECTORY INFO"<span> (</span><span class='info'>Getting instrument directory information</span><span>)</span></a>
10674     </p>
10675     <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
10676     </p>
10677     <p><a class='info' href='#LIST DB_INSTRUMENTS'>"LIST DB_INSTRUMENTS"<span> (</span><span class='info'>Listing all instruments in specific directory</span><span>)</span></a>
10678     </p>
10679     <p><a class='info' href='#GET DB_INSTRUMENT INFO'>"GET DB_INSTRUMENT INFO"<span> (</span><span class='info'>Getting instrument information</span><span>)</span></a>
10680     </p>
10681     <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY NAME'>"SET DB_INSTRUMENT_DIRECTORY NAME"<span> (</span><span class='info'>Renaming an instrument directory</span><span>)</span></a>
10682     </p>
10683     <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION'>"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"<span> (</span><span class='info'>Changing the description of directory</span><span>)</span></a>
10684     </p>
10685     <p><a class='info' href='#SET DB_INSTRUMENT NAME'>"SET DB_INSTRUMENT NAME"<span> (</span><span class='info'>Renaming an instrument</span><span>)</span></a>
10686     </p>
10687     <p><a class='info' href='#SET DB_INSTRUMENT DESCRIPTION'>"SET DB_INSTRUMENT DESCRIPTION"<span> (</span><span class='info'>Changing the description of instrument</span><span>)</span></a>
10688     </p>
10689     <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10690     </p>
10691     <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10692     </p>
10693     <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
10694     </p>
10695     <p><a class='info' href='#MOVE DB_INSTRUMENT_DIRECTORY'>"MOVE DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Moving an instrument directory</span><span>)</span></a>
10696     </p>
10697     <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
10698     </p>
10699     <p><a class='info' href='#COPY DB_INSTRUMENT_DIRECTORY'>"COPY DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Copying instrument directories</span><span>)</span></a>
10700     </p>
10701 schoenebeck 1572 <p><a class='info' href='#GET FILE INSTRUMENTS'>"GET FILE INSTRUMENTS"<span> (</span><span class='info'>Retrieving amount of instruments of a file</span><span>)</span></a>
10702     </p>
10703     <p><a class='info' href='#LIST FILE INSTRUMENTS'>"LIST FILE INSTRUMENTS"<span> (</span><span class='info'>Retrieving all instruments of a file</span><span>)</span></a>
10704     </p>
10705     <p><a class='info' href='#GET FILE INSTRUMENT INFO'>"GET FILE INSTRUMENT INFO"<span> (</span><span class='info'>Retrieving informations about one instrument in a file</span><span>)</span></a>
10706     </p>
10707 schoenebeck 1390 </blockquote><p>
10708     Note that the forward slash character ('/') has a special meaning in
10709     filename / path based arguments: it acts as separator of the nodes in
10710     the path, thus if a directory- or filename includes a forward slash
10711     (not intended as path node separator), you MUST escape that slash
10712     either with the respective hex escape sequence ("\x2f") or with the
10713     respective octal escape sequence ("\057").
10714    
10715     </p>
10716     <p>
10717 schoenebeck 1572 Note for Windows: file path arguments in LSCP are expected
10718     to use forward slashes as directory node separator similar
10719     to Unix based operating systems. In contrast to Unix however
10720     a Windows typical drive character is expected to be
10721     prefixed to the path. That is an original Windows file path
10722     like "D:\Sounds\My.gig" would become in LSCP:
10723     "D:/Sounds/My.gig".
10724    
10725     </p>
10726     <p>
10727 schoenebeck 1390 The following LSCP commands even support escape sequences as
10728     part of at least one of their text-based arguments (i.e. entity name,
10729 schoenebeck 1400 description) and / or may contain escape sequences in at least one of
10730     their text-based fields in their response:
10731 schoenebeck 1390 </p>
10732     <blockquote class="text">
10733 schoenebeck 1400 <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
10734     </p>
10735     <p><a class='info' href='#GET ENGINE INFO'>"GET ENGINE INFO"<span> (</span><span class='info'>Getting information about an engine</span><span>)</span></a>
10736     </p>
10737     <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10738     </p>
10739     <p><a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
10740     </p>
10741     <p><a class='info' href='#GET FX_SEND INFO'>"GET FX_SEND INFO"<span> (</span><span class='info'>Getting effect send information</span><span>)</span></a>
10742     </p>
10743     <p><a class='info' href='#SET FX_SEND NAME'>"SET FX_SEND NAME"<span> (</span><span class='info'>Changing effect send's name</span><span>)</span></a>
10744     </p>
10745     <p><a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
10746     </p>
10747     <p><a class='info' href='#GET MIDI_INSTRUMENT_MAP INFO'>"GET MIDI_INSTRUMENT_MAP INFO"<span> (</span><span class='info'>Getting MIDI instrument map information</span><span>)</span></a>
10748     </p>
10749 schoenebeck 1390 <p><a class='info' href='#ADD MIDI_INSTRUMENT_MAP'>"ADD MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Create a new MIDI instrument map</span><span>)</span></a>
10750     </p>
10751     <p><a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
10752     </p>
10753     <p><a class='info' href='#SET MIDI_INSTRUMENT_MAP NAME'>"SET MIDI_INSTRUMENT_MAP NAME"<span> (</span><span class='info'>Renaming a MIDI instrument map</span><span>)</span></a>
10754     </p>
10755 schoenebeck 1430 <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORY INFO'>"GET DB_INSTRUMENT_DIRECTORY INFO"<span> (</span><span class='info'>Getting instrument directory information</span><span>)</span></a>
10756     </p>
10757 schoenebeck 1390 <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY NAME'>"SET DB_INSTRUMENT_DIRECTORY NAME"<span> (</span><span class='info'>Renaming an instrument directory</span><span>)</span></a>
10758     </p>
10759     <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION'>"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"<span> (</span><span class='info'>Changing the description of directory</span><span>)</span></a>
10760     </p>
10761 schoenebeck 1400 <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10762     </p>
10763 schoenebeck 1430 <p><a class='info' href='#GET DB_INSTRUMENT INFO'>"GET DB_INSTRUMENT INFO"<span> (</span><span class='info'>Getting instrument information</span><span>)</span></a>
10764     </p>
10765 schoenebeck 1390 <p><a class='info' href='#SET DB_INSTRUMENT NAME'>"SET DB_INSTRUMENT NAME"<span> (</span><span class='info'>Renaming an instrument</span><span>)</span></a>
10766     </p>
10767     <p><a class='info' href='#SET DB_INSTRUMENT DESCRIPTION'>"SET DB_INSTRUMENT DESCRIPTION"<span> (</span><span class='info'>Changing the description of instrument</span><span>)</span></a>
10768     </p>
10769 schoenebeck 1400 <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10770 schoenebeck 1390 </p>
10771     </blockquote><p>
10772     Please note that these lists are manually maintained. If you
10773     find a command that also supports escape sequences we forgot to
10774     mention here, please report it!
10775    
10776     </p>
10777 senoner 542 <a name="events"></a><br /><hr />
10778 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10779     <a name="rfc.section.8"></a><h3>8.&nbsp;
10780     Events</h3>
10781 senoner 542
10782     <p>This chapter will describe all currently defined events supported by LinuxSampler.
10783     </p>
10784 iliev 992 <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT"></a><br /><hr />
10785 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10786     <a name="rfc.section.8.1"></a><h3>8.1.&nbsp;
10787 iliev 992 Number of audio output devices changed</h3>
10788    
10789     <p>Client may want to be notified when the total number of audio output devices on the
10790     back-end changes by issuing the following command:
10791     </p>
10792     <p>
10793     </p>
10794     <blockquote class="text">
10795     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT
10796     </p>
10797     </blockquote><p>
10798    
10799     </p>
10800     <p>Server will start sending the following notification messages:
10801     </p>
10802     <p>
10803     </p>
10804     <blockquote class="text">
10805     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"
10806     </p>
10807     </blockquote><p>
10808    
10809     </p>
10810     <p>where &lt;devices&gt; will be replaced by the new number
10811     of audio output devices.
10812     </p>
10813     <a name="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO"></a><br /><hr />
10814     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10815     <a name="rfc.section.8.2"></a><h3>8.2.&nbsp;
10816     Audio output device's settings changed</h3>
10817    
10818     <p>Client may want to be notified when changes were made to audio output devices on the
10819     back-end by issuing the following command:
10820     </p>
10821     <p>
10822     </p>
10823     <blockquote class="text">
10824     <p>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO
10825     </p>
10826     </blockquote><p>
10827    
10828     </p>
10829     <p>Server will start sending the following notification messages:
10830     </p>
10831     <p>
10832     </p>
10833     <blockquote class="text">
10834     <p>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"
10835     </p>
10836     </blockquote><p>
10837    
10838     </p>
10839     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
10840     which settings has been changed. The front-end will have to send
10841     the respective command to actually get the audio output device info. Because these messages
10842     will be triggered by LSCP commands issued by other clients rather than real
10843     time events happening on the server, it is believed that an empty notification
10844     message is sufficient here.
10845     </p>
10846     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT"></a><br /><hr />
10847     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10848     <a name="rfc.section.8.3"></a><h3>8.3.&nbsp;
10849     Number of MIDI input devices changed</h3>
10850    
10851     <p>Client may want to be notified when the total number of MIDI input devices on the
10852     back-end changes by issuing the following command:
10853     </p>
10854     <p>
10855     </p>
10856     <blockquote class="text">
10857     <p>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT
10858     </p>
10859     </blockquote><p>
10860    
10861     </p>
10862     <p>Server will start sending the following notification messages:
10863     </p>
10864     <p>
10865     </p>
10866     <blockquote class="text">
10867     <p>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"
10868     </p>
10869     </blockquote><p>
10870    
10871     </p>
10872     <p>where &lt;devices&gt; will be replaced by the new number
10873     of MIDI input devices.
10874     </p>
10875     <a name="SUBSCRIBE MIDI_INPUT_DEVICE_INFO"></a><br /><hr />
10876     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10877     <a name="rfc.section.8.4"></a><h3>8.4.&nbsp;
10878     MIDI input device's settings changed</h3>
10879    
10880     <p>Client may want to be notified when changes were made to MIDI input devices on the
10881     back-end by issuing the following command:
10882     </p>
10883     <p>
10884     </p>
10885     <blockquote class="text">
10886     <p>SUBSCRIBE MIDI_INPUT_DEVICE_INFO
10887     </p>
10888     </blockquote><p>
10889    
10890     </p>
10891     <p>Server will start sending the following notification messages:
10892     </p>
10893     <p>
10894     </p>
10895     <blockquote class="text">
10896     <p>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"
10897     </p>
10898     </blockquote><p>
10899    
10900     </p>
10901     <p>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
10902     which settings has been changed. The front-end will have to send
10903     the respective command to actually get the MIDI input device info. Because these messages
10904     will be triggered by LSCP commands issued by other clients rather than real
10905     time events happening on the server, it is believed that an empty notification
10906     message is sufficient here.
10907     </p>
10908     <a name="SUBSCRIBE CHANNEL_COUNT"></a><br /><hr />
10909     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10910     <a name="rfc.section.8.5"></a><h3>8.5.&nbsp;
10911 schoenebeck 974 Number of sampler channels changed</h3>
10912 senoner 542
10913     <p>Client may want to be notified when the total number of channels on the
10914     back-end changes by issuing the following command:
10915     </p>
10916 schoenebeck 708 <p>
10917     </p>
10918 senoner 542 <blockquote class="text">
10919 schoenebeck 558 <p>SUBSCRIBE CHANNEL_COUNT
10920 senoner 542 </p>
10921 schoenebeck 708 </blockquote><p>
10922 schoenebeck 940
10923 schoenebeck 708 </p>
10924 senoner 542 <p>Server will start sending the following notification messages:
10925     </p>
10926 schoenebeck 708 <p>
10927     </p>
10928 senoner 542 <blockquote class="text">
10929 schoenebeck 558 <p>"NOTIFY:CHANNEL_COUNT:&lt;channels&gt;"
10930 senoner 542 </p>
10931 schoenebeck 708 </blockquote><p>
10932 schoenebeck 940
10933 schoenebeck 708 </p>
10934 senoner 542 <p>where &lt;channels&gt; will be replaced by the new number
10935     of sampler channels.
10936     </p>
10937 schoenebeck 940 <a name="SUBSCRIBE VOICE_COUNT"></a><br /><hr />
10938 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10939 iliev 992 <a name="rfc.section.8.6"></a><h3>8.6.&nbsp;
10940 schoenebeck 974 Number of active voices changed</h3>
10941 senoner 542
10942     <p>Client may want to be notified when the number of voices on the
10943     back-end changes by issuing the following command:
10944     </p>
10945 schoenebeck 708 <p>
10946     </p>
10947 senoner 542 <blockquote class="text">
10948     <p>SUBSCRIBE VOICE_COUNT
10949     </p>
10950 schoenebeck 708 </blockquote><p>
10951 schoenebeck 940
10952 schoenebeck 708 </p>
10953 senoner 542 <p>Server will start sending the following notification messages:
10954     </p>
10955 schoenebeck 708 <p>
10956     </p>
10957 senoner 542 <blockquote class="text">
10958 iliev 1110 <p>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"
10959 senoner 542 </p>
10960 schoenebeck 708 </blockquote><p>
10961 schoenebeck 940
10962 schoenebeck 708 </p>
10963 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10964     voice count change occurred and &lt;voices&gt; by the new number of
10965     active voices on that channel.
10966     </p>
10967 schoenebeck 940 <a name="SUBSCRIBE STREAM_COUNT"></a><br /><hr />
10968 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10969 iliev 992 <a name="rfc.section.8.7"></a><h3>8.7.&nbsp;
10970 schoenebeck 974 Number of active disk streams changed</h3>
10971 senoner 542
10972     <p>Client may want to be notified when the number of streams on the back-end
10973     changes by issuing the following command: SUBSCRIBE STREAM_COUNT
10974     </p>
10975 schoenebeck 708 <p>
10976     </p>
10977 senoner 542 <blockquote class="text">
10978     <p>SUBSCRIBE STREAM_COUNT
10979     </p>
10980 schoenebeck 708 </blockquote><p>
10981 schoenebeck 940
10982 schoenebeck 708 </p>
10983 senoner 542 <p>Server will start sending the following notification messages:
10984     </p>
10985 schoenebeck 708 <p>
10986     </p>
10987 senoner 542 <blockquote class="text">
10988     <p>"NOTIFY:STREAM_COUNT:&lt;sampler-channel&gt; &lt;streams&gt;"
10989     </p>
10990 schoenebeck 708 </blockquote><p>
10991 schoenebeck 940
10992 schoenebeck 708 </p>
10993 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
10994     stream count change occurred and &lt;streams&gt; by the new number of
10995     active disk streams on that channel.
10996     </p>
10997 schoenebeck 940 <a name="SUBSCRIBE BUFFER_FILL"></a><br /><hr />
10998 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10999 iliev 992 <a name="rfc.section.8.8"></a><h3>8.8.&nbsp;
11000 schoenebeck 974 Disk stream buffer fill state changed</h3>
11001 senoner 542
11002     <p>Client may want to be notified when the buffer fill state of a disk stream
11003     on the back-end changes by issuing the following command:
11004     </p>
11005 schoenebeck 708 <p>
11006     </p>
11007 senoner 542 <blockquote class="text">
11008     <p>SUBSCRIBE BUFFER_FILL
11009     </p>
11010 schoenebeck 708 </blockquote><p>
11011 schoenebeck 940
11012 schoenebeck 708 </p>
11013 senoner 542 <p>Server will start sending the following notification messages:
11014     </p>
11015 schoenebeck 708 <p>
11016     </p>
11017 senoner 542 <blockquote class="text">
11018     <p>"NOTIFY:BUFFER_FILL:&lt;sampler-channel&gt; &lt;fill-data&gt;"
11019     </p>
11020 schoenebeck 708 </blockquote><p>
11021 schoenebeck 940
11022 schoenebeck 708 </p>
11023 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11024     buffer fill state change occurred on and &lt;fill-data&gt; will be replaced by the
11025 schoenebeck 974 buffer fill data for this channel as described in <a class='info' href='#GET CHANNEL BUFFER_FILL'>Section&nbsp;6.4.13<span> (</span><span class='info'>Current fill state of disk stream buffers</span><span>)</span></a>
11026     as if the <a class='info' href='#GET CHANNEL BUFFER_FILL'>"GET CHANNEL BUFFER_FILL PERCENTAGE"<span> (</span><span class='info'>Current fill state of disk stream buffers</span><span>)</span></a> command was issued on this channel.
11027 senoner 542 </p>
11028 iliev 992 <a name="SUBSCRIBE CHANNEL_INFO"></a><br /><hr />
11029 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11030 iliev 992 <a name="rfc.section.8.9"></a><h3>8.9.&nbsp;
11031 schoenebeck 974 Channel information changed</h3>
11032 senoner 542
11033     <p>Client may want to be notified when changes were made to sampler channels on the
11034 schoenebeck 561 back-end by issuing the following command:
11035 senoner 542 </p>
11036 schoenebeck 708 <p>
11037     </p>
11038 senoner 542 <blockquote class="text">
11039 schoenebeck 558 <p>SUBSCRIBE CHANNEL_INFO
11040 senoner 542 </p>
11041 schoenebeck 708 </blockquote><p>
11042 schoenebeck 940
11043 schoenebeck 708 </p>
11044 senoner 542 <p>Server will start sending the following notification messages:
11045     </p>
11046 schoenebeck 708 <p>
11047     </p>
11048 senoner 542 <blockquote class="text">
11049 schoenebeck 558 <p>"NOTIFY:CHANNEL_INFO:&lt;sampler-channel&gt;"
11050 senoner 542 </p>
11051 schoenebeck 708 </blockquote><p>
11052 schoenebeck 940
11053 schoenebeck 708 </p>
11054 senoner 542 <p>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
11055     channel info change occurred. The front-end will have to send
11056     the respective command to actually get the channel info. Because these messages
11057     will be triggered by LSCP commands issued by other clients rather than real
11058     time events happening on the server, it is believed that an empty notification
11059     message is sufficient here.
11060     </p>
11061 iliev 1110 <a name="SUBSCRIBE FX_SEND_COUNT"></a><br /><hr />
11062     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11063     <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
11064     Number of effect sends changed</h3>
11065    
11066 schoenebeck 1251 <p>Client may want to be notified when the number of effect sends on
11067 iliev 1110 a particular sampler channel is changed by issuing the following command:
11068     </p>
11069     <p>
11070     </p>
11071     <blockquote class="text">
11072     <p>SUBSCRIBE FX_SEND_COUNT
11073     </p>
11074     </blockquote><p>
11075    
11076     </p>
11077     <p>Server will start sending the following notification messages:
11078     </p>
11079     <p>
11080     </p>
11081     <blockquote class="text">
11082     <p>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"
11083     </p>
11084     </blockquote><p>
11085    
11086     </p>
11087     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11088     channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
11089     be replaced by the new number of effect sends on that channel.
11090     </p>
11091     <a name="SUBSCRIBE FX_SEND_INFO"></a><br /><hr />
11092     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11093     <a name="rfc.section.8.11"></a><h3>8.11.&nbsp;
11094     Effect send information changed</h3>
11095    
11096     <p>Client may want to be notified when changes were made to effect sends on a
11097     a particular sampler channel by issuing the following command:
11098     </p>
11099     <p>
11100     </p>
11101     <blockquote class="text">
11102     <p>SUBSCRIBE FX_SEND_INFO
11103     </p>
11104     </blockquote><p>
11105    
11106     </p>
11107     <p>Server will start sending the following notification messages:
11108     </p>
11109     <p>
11110     </p>
11111     <blockquote class="text">
11112     <p>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"
11113     </p>
11114     </blockquote><p>
11115    
11116     </p>
11117     <p>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
11118     channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
11119     be replaced by the numerical ID of the changed effect send.
11120     </p>
11121 schoenebeck 940 <a name="SUBSCRIBE TOTAL_VOICE_COUNT"></a><br /><hr />
11122 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11123 iliev 1110 <a name="rfc.section.8.12"></a><h3>8.12.&nbsp;
11124 schoenebeck 974 Total number of active voices changed</h3>
11125 senoner 542
11126 schoenebeck 940 <p>Client may want to be notified when the total number of voices on the
11127     back-end changes by issuing the following command:
11128     </p>
11129     <p>
11130     </p>
11131     <blockquote class="text">
11132     <p>SUBSCRIBE TOTAL_VOICE_COUNT
11133     </p>
11134     </blockquote><p>
11135    
11136     </p>
11137     <p>Server will start sending the following notification messages:
11138     </p>
11139     <p>
11140     </p>
11141     <blockquote class="text">
11142 iliev 1110 <p>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"
11143 schoenebeck 940 </p>
11144     </blockquote><p>
11145    
11146     </p>
11147     <p>where &lt;voices&gt; will be replaced by the new number of
11148     all currently active voices.
11149     </p>
11150 schoenebeck 1572 <a name="SUBSCRIBE TOTAL_STREAM_COUNT"></a><br /><hr />
11151     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11152     <a name="rfc.section.8.13"></a><h3>8.13.&nbsp;
11153     Total number of active disk streams changed</h3>
11154    
11155     <p>Client may want to be notified when the total number of disk streams on the
11156     back-end changes by issuing the following command:
11157     </p>
11158     <p>
11159     </p>
11160     <blockquote class="text">
11161     <p>SUBSCRIBE TOTAL_STREAM_COUNT
11162     </p>
11163     </blockquote><p>
11164    
11165     </p>
11166     <p>Server will start sending the following notification messages:
11167     </p>
11168     <p>
11169     </p>
11170     <blockquote class="text">
11171     <p>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"
11172     </p>
11173     </blockquote><p>
11174    
11175     </p>
11176     <p>where &lt;streams&gt; will be replaced by the new number of
11177     all currently active disk streams.
11178     </p>
11179 iliev 992 <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT"></a><br /><hr />
11180     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11181 schoenebeck 1572 <a name="rfc.section.8.14"></a><h3>8.14.&nbsp;
11182 iliev 992 Number of MIDI instrument maps changed</h3>
11183    
11184     <p>Client may want to be notified when the number of MIDI instrument maps on the
11185     back-end changes by issuing the following command:
11186     </p>
11187     <p>
11188     </p>
11189     <blockquote class="text">
11190     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT
11191     </p>
11192     </blockquote><p>
11193    
11194     </p>
11195     <p>Server will start sending the following notification messages:
11196     </p>
11197     <p>
11198     </p>
11199     <blockquote class="text">
11200     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"
11201     </p>
11202     </blockquote><p>
11203    
11204     </p>
11205     <p>where &lt;maps&gt; will be replaced by the new number
11206     of MIDI instrument maps.
11207     </p>
11208     <a name="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO"></a><br /><hr />
11209     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11210 schoenebeck 1572 <a name="rfc.section.8.15"></a><h3>8.15.&nbsp;
11211 iliev 992 MIDI instrument map information changed</h3>
11212    
11213     <p>Client may want to be notified when changes were made to MIDI instrument maps on the
11214     back-end by issuing the following command:
11215     </p>
11216     <p>
11217     </p>
11218     <blockquote class="text">
11219     <p>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO
11220     </p>
11221     </blockquote><p>
11222    
11223     </p>
11224     <p>Server will start sending the following notification messages:
11225     </p>
11226     <p>
11227     </p>
11228     <blockquote class="text">
11229     <p>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"
11230     </p>
11231     </blockquote><p>
11232    
11233     </p>
11234     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11235     for which information changes occurred. The front-end will have to send
11236     the respective command to actually get the MIDI instrument map info. Because these messages
11237     will be triggered by LSCP commands issued by other clients rather than real
11238     time events happening on the server, it is believed that an empty notification
11239     message is sufficient here.
11240     </p>
11241     <a name="SUBSCRIBE MIDI_INSTRUMENT_COUNT"></a><br /><hr />
11242     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11243 schoenebeck 1572 <a name="rfc.section.8.16"></a><h3>8.16.&nbsp;
11244 iliev 992 Number of MIDI instruments changed</h3>
11245    
11246     <p>Client may want to be notified when the number of MIDI instrument maps on the
11247     back-end changes by issuing the following command:
11248     </p>
11249     <p>
11250     </p>
11251     <blockquote class="text">
11252     <p>SUBSCRIBE MIDI_INSTRUMENT_COUNT
11253     </p>
11254     </blockquote><p>
11255    
11256     </p>
11257     <p>Server will start sending the following notification messages:
11258     </p>
11259     <p>
11260     </p>
11261     <blockquote class="text">
11262     <p>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"
11263     </p>
11264     </blockquote><p>
11265    
11266     </p>
11267     <p>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
11268     the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
11269     the new number of MIDI instruments in the specified map.
11270     </p>
11271     <a name="SUBSCRIBE MIDI_INSTRUMENT_INFO"></a><br /><hr />
11272     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11273 schoenebeck 1572 <a name="rfc.section.8.17"></a><h3>8.17.&nbsp;
11274 iliev 992 MIDI instrument information changed</h3>
11275    
11276     <p>Client may want to be notified when changes were made to MIDI instruments on the
11277     back-end by issuing the following command:
11278     </p>
11279     <p>
11280     </p>
11281     <blockquote class="text">
11282     <p>SUBSCRIBE MIDI_INSTRUMENT_INFO
11283     </p>
11284     </blockquote><p>
11285    
11286     </p>
11287     <p>Server will start sending the following notification messages:
11288     </p>
11289     <p>
11290     </p>
11291     <blockquote class="text">
11292     <p>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"
11293     </p>
11294     </blockquote><p>
11295    
11296     </p>
11297     <p>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
11298     in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
11299     the location of the changed MIDI instrument in the map. The front-end will have to send
11300     the respective command to actually get the MIDI instrument info. Because these messages
11301     will be triggered by LSCP commands issued by other clients rather than real
11302     time events happening on the server, it is believed that an empty notification
11303     message is sufficient here.
11304     </p>
11305 iliev 1110 <a name="SUBSCRIBE GLOBAL_INFO"></a><br /><hr />
11306     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11307 schoenebeck 1572 <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
11308 iliev 1110 Global settings changed</h3>
11309    
11310     <p>Client may want to be notified when changes to the global settings
11311     of the sampler were made by issuing the following command:
11312     </p>
11313     <p>
11314     </p>
11315     <blockquote class="text">
11316     <p>SUBSCRIBE GLOBAL_INFO
11317     </p>
11318     </blockquote><p>
11319    
11320     </p>
11321     <p>Server will start sending the following types of notification messages:
11322     </p>
11323     <p>
11324     </p>
11325     <blockquote class="text">
11326     <p>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
11327     golbal volume of the sampler is changed, where &lt;volume&gt; will be
11328     replaced by the optional dotted floating point value, reflecting the
11329     new global volume parameter.
11330     </p>
11331     </blockquote><p>
11332    
11333     </p>
11334 iliev 1162 <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
11335     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11336 schoenebeck 1572 <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
11337 iliev 1162 Number of database instrument directories changed</h3>
11338    
11339     <p>Client may want to be notified when the number of instrument
11340     directories in a particular directory in the instruments database
11341     is changed by issuing the following command:
11342     </p>
11343     <p>
11344     </p>
11345     <blockquote class="text">
11346     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
11347     </p>
11348     </blockquote><p>
11349    
11350     </p>
11351     <p>Server will start sending the following notification messages:
11352     </p>
11353     <p>
11354     </p>
11355     <blockquote class="text">
11356     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
11357     </p>
11358     </blockquote><p>
11359    
11360     </p>
11361     <p>where &lt;dir-path&gt; will be replaced by the absolute path
11362     name of the directory in the instruments database,
11363     in which the number of directories is changed.
11364     </p>
11365     <p>Note that when a non-empty directory is removed, this event
11366     is not sent for the subdirectories in that directory.
11367     </p>
11368     <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
11369     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11370 schoenebeck 1572 <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
11371 iliev 1162 Database instrument directory information changed</h3>
11372    
11373     <p>Client may want to be notified when changes were made to directories
11374     in the instruments database by issuing the following command:
11375     </p>
11376     <p>
11377     </p>
11378     <blockquote class="text">
11379     <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
11380     </p>
11381     </blockquote><p>
11382    
11383     </p>
11384     <p>Server will start sending the following notification messages:
11385     </p>
11386     <p>
11387     </p>
11388     <blockquote class="text">
11389     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
11390     </p>
11391     </blockquote><p>
11392    
11393     </p>
11394     <p>where &lt;dir-path&gt; will be replaced by the absolute path name
11395     of the directory, for which information changes occurred. The front-end will have to send
11396     the respective command to actually get the updated directory info. Because these messages
11397     will be triggered by LSCP commands issued by other clients rather than real
11398     time events happening on the server, it is believed that an empty notification
11399     message is sufficient here.
11400     </p>
11401     <p>
11402     </p>
11403     <blockquote class="text">
11404     <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
11405     </p>
11406     </blockquote><p>
11407    
11408     </p>
11409     <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
11410     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11411     the new name of the directory, encapsulated into apostrophes.
11412     </p>
11413     <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
11414     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11415 schoenebeck 1572 <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
11416 iliev 1162 Number of database instruments changed</h3>
11417    
11418     <p>Client may want to be notified when the number of instruments
11419     in a particular directory in the instruments database
11420     is changed by issuing the following command:
11421     </p>
11422     <p>
11423     </p>
11424     <blockquote class="text">
11425     <p>SUBSCRIBE DB_INSTRUMENT_COUNT
11426     </p>
11427     </blockquote><p>
11428    
11429     </p>
11430     <p>Server will start sending the following notification messages:
11431     </p>
11432     <p>
11433     </p>
11434     <blockquote class="text">
11435     <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
11436     </p>
11437     </blockquote><p>
11438    
11439     </p>
11440     <p>where &lt;dir-path&gt; will be replaced by the absolute path
11441     name of the directory in the instruments database,
11442     in which the number of instruments is changed.
11443     </p>
11444     <p>Note that when a non-empty directory is removed, this event
11445     is not sent for the instruments in that directory.
11446     </p>
11447     <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
11448     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11449 schoenebeck 1572 <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
11450 iliev 1162 Database instrument information changed</h3>
11451    
11452     <p>Client may want to be notified when changes were made to instruments
11453     in the instruments database by issuing the following command:
11454     </p>
11455     <p>
11456     </p>
11457     <blockquote class="text">
11458     <p>SUBSCRIBE DB_INSTRUMENT_INFO
11459     </p>
11460     </blockquote><p>
11461    
11462     </p>
11463     <p>Server will start sending the following notification messages:
11464     </p>
11465     <p>
11466     </p>
11467     <blockquote class="text">
11468     <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
11469     </p>
11470     </blockquote><p>
11471    
11472     </p>
11473     <p>where &lt;instr-path&gt; will be replaced by the absolute path name
11474     of the instrument, which settings are changed. The front-end will have to send
11475     the respective command to actually get the updated directory info. Because these messages
11476     will be triggered by LSCP commands issued by other clients rather than real
11477     time events happening on the server, it is believed that an empty notification
11478     message is sufficient here.
11479     </p>
11480     <p>
11481     </p>
11482     <blockquote class="text">
11483     <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
11484     </p>
11485     </blockquote><p>
11486    
11487     </p>
11488     <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
11489     (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11490     the new name of the instrument, encapsulated into apostrophes.
11491     </p>
11492 iliev 1201 <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
11493     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11494 schoenebeck 1572 <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
11495 iliev 1201 Database job status information changed</h3>
11496    
11497     <p>Client may want to be notified when the status of particular database
11498     instruments job is changed by issuing the following command:
11499     </p>
11500     <p>
11501     </p>
11502     <blockquote class="text">
11503     <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
11504     </p>
11505     </blockquote><p>
11506    
11507     </p>
11508     <p>Server will start sending the following notification messages:
11509     </p>
11510     <p>
11511     </p>
11512     <blockquote class="text">
11513     <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
11514     </p>
11515     </blockquote><p>
11516    
11517     </p>
11518     <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
11519     which status is changed. The front-end will have to send the respective
11520     command to actually get the status info. Because these messages
11521     will be triggered by LSCP commands issued by other clients rather than real
11522     time events happening on the server, it is believed that an empty notification
11523     message is sufficient here.
11524     </p>
11525 schoenebeck 940 <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
11526 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11527 schoenebeck 1572 <a name="rfc.section.8.24"></a><h3>8.24.&nbsp;
11528 schoenebeck 974 Miscellaneous and debugging events</h3>
11529 schoenebeck 940
11530 senoner 542 <p>Client may want to be notified of miscellaneous and debugging events occurring at
11531     the server by issuing the following command:
11532     </p>
11533 schoenebeck 708 <p>
11534     </p>
11535 senoner 542 <blockquote class="text">
11536     <p>SUBSCRIBE MISCELLANEOUS
11537     </p>
11538 schoenebeck 708 </blockquote><p>
11539 schoenebeck 940
11540 schoenebeck 708 </p>
11541 senoner 542 <p>Server will start sending the following notification messages:
11542     </p>
11543 schoenebeck 708 <p>
11544     </p>
11545 senoner 542 <blockquote class="text">
11546     <p>"NOTIFY:MISCELLANEOUS:&lt;string&gt;"
11547     </p>
11548 schoenebeck 708 </blockquote><p>
11549 schoenebeck 940
11550 schoenebeck 708 </p>
11551 senoner 542 <p>where &lt;string&gt; will be replaced by whatever data server
11552     wants to send to the client. Client MAY display this data to the
11553     user AS IS to facilitate debugging.
11554     </p>
11555 schoenebeck 974 <a name="anchor14"></a><br /><hr />
11556     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11557     <a name="rfc.section.9"></a><h3>9.&nbsp;
11558     Security Considerations</h3>
11559 senoner 542
11560     <p>As there is so far no method of authentication and authorization
11561     defined and so not required for a client applications to succeed to
11562     connect, running LinuxSampler might be a security risk for the host
11563     system the LinuxSampler instance is running on.
11564     </p>
11565 schoenebeck 974 <a name="anchor15"></a><br /><hr />
11566     <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11567     <a name="rfc.section.10"></a><h3>10.&nbsp;
11568     Acknowledgments</h3>
11569 senoner 542
11570     <p>This document has benefited greatly from the comments of the
11571     following people, discussed on the LinuxSampler developer's mailing
11572     list:
11573     </p>
11574 schoenebeck 708 <p>
11575     </p>
11576 senoner 542 <blockquote class="text">
11577     <p>Rui Nuno Capela
11578     </p>
11579     <p>Vladimir Senkov
11580     </p>
11581     <p>Mark Knecht
11582     </p>
11583 schoenebeck 561 <p>Grigor Iliev
11584     </p>
11585 schoenebeck 708 </blockquote><p>
11586 schoenebeck 940
11587 schoenebeck 708 </p>
11588 senoner 542 <a name="rfc.references1"></a><br /><hr />
11589 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11590 schoenebeck 708 <h3>11.&nbsp;References</h3>
11591 senoner 542 <table width="99%" border="0">
11592 schoenebeck 1251 <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
11593     <td class="author-text">UCLA, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc20.txt">ASCII format for Network Interchange</a>,&rdquo; RFC&nbsp;20, 1969.</td></tr>
11594 senoner 542 <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
11595 schoenebeck 708 <td class="author-text">Bradner, S., &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2119.txt">Key words for use in RFCs to Indicate Requirement Levels</a>,&rdquo; RFC&nbsp;2119, 1997.</td></tr>
11596 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
11597 schoenebeck 708 <td class="author-text">Crocker, D. and P. Overell, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2234.txt">Augmented BNF for Syntax Specifications</a>,&rdquo; RFC&nbsp;2234, 1997.</td></tr>
11598 schoenebeck 575 <tr><td class="author-text" valign="top"><a name="RFC793">[RFC793]</a></td>
11599 schoenebeck 708 <td class="author-text">Defense Advanced Research Projects Agency, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc793.txt">TRANSMISSION CONTROL PROTOCOL</a>,&rdquo; RFC&nbsp;793, 1981.</td></tr>
11600 senoner 542 </table>
11601    
11602     <a name="rfc.authors"></a><br /><hr />
11603 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11604 senoner 542 <h3>Author's Address</h3>
11605     <table width="99%" border="0" cellpadding="0" cellspacing="0">
11606     <tr><td class="author-text">&nbsp;</td>
11607     <td class="author-text">C.
11608     Schoenebeck</td></tr>
11609     <tr><td class="author-text">&nbsp;</td>
11610     <td class="author-text">Interessengemeinschaft Software Engineering e. V.</td></tr>
11611     <tr><td class="author-text">&nbsp;</td>
11612     <td class="author-text">Max-Planck-Str. 39</td></tr>
11613     <tr><td class="author-text">&nbsp;</td>
11614     <td class="author-text">74081 Heilbronn</td></tr>
11615     <tr><td class="author-text">&nbsp;</td>
11616     <td class="author-text">Germany</td></tr>
11617 schoenebeck 708 <tr><td class="author" align="right">Email:&nbsp;</td>
11618 senoner 542 <td class="author-text"><a href="mailto:schoenebeck at software minus engineering dot org">schoenebeck at software minus engineering dot org</a></td></tr>
11619     </table>
11620     <a name="rfc.copyright"></a><br /><hr />
11621 schoenebeck 974 <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11622     <h3>Full Copyright Statement</h3>
11623 senoner 542 <p class='copyright'>
11624 iliev 1110 Copyright &copy; The IETF Trust (2007).</p>
11625 senoner 542 <p class='copyright'>
11626 schoenebeck 974 This document is subject to the rights,
11627     licenses and restrictions contained in BCP&nbsp;78,
11628     and except as set forth therein,
11629     the authors retain all their rights.</p>
11630 senoner 542 <p class='copyright'>
11631 schoenebeck 974 This document and the information contained herein are provided
11632     on an &ldquo;AS IS&rdquo; basis and THE CONTRIBUTOR,
11633 iliev 1110 THE ORGANIZATION HE/SHE REPRESENTS
11634     OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST
11635     AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
11636     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
11637     THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
11638     IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
11639     PURPOSE.</p>
11640 schoenebeck 974 <h3>Intellectual Property</h3>
11641 senoner 542 <p class='copyright'>
11642 schoenebeck 974 The IETF takes no position regarding the validity or scope of any
11643     Intellectual Property Rights or other rights that might be claimed
11644     to pertain to the implementation or use of the technology
11645     described in this document or the extent to which any license
11646     under such rights might or might not be available; nor does it
11647     represent that it has made any independent effort to identify any
11648     such rights.
11649     Information on the procedures with respect to
11650     rights in RFC documents can be found in BCP&nbsp;78 and BCP&nbsp;79.</p>
11651 senoner 542 <p class='copyright'>
11652 schoenebeck 974 Copies of IPR disclosures made to the IETF Secretariat and any
11653     assurances of licenses to be made available,
11654     or the result of an attempt made to obtain a general license or
11655     permission for the use of such proprietary rights by implementers or
11656     users of this specification can be obtained from the IETF on-line IPR
11657     repository at <a href='http://www.ietf.org/ipr'>http://www.ietf.org/ipr</a>.</p>
11658 senoner 542 <p class='copyright'>
11659 schoenebeck 974 The IETF invites any interested party to bring to its attention
11660     any copyrights,
11661     patents or patent applications,
11662     or other
11663     proprietary rights that may cover technology that may be required
11664     to implement this standard.
11665     Please address the information to the IETF at <a href='mailto:ietf-ipr@ietf.org'>ietf-ipr@ietf.org</a>.</p>
11666 senoner 542 <h3>Acknowledgment</h3>
11667     <p class='copyright'>
11668 schoenebeck 974 Funding for the RFC Editor function is provided by
11669     the IETF Administrative Support Activity (IASA).</p>
11670 senoner 542 </body></html>
11671 schoenebeck 1363

  ViewVC Help
Powered by ViewVC