/[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 1162 - (hide annotations) (download) (as text)
Mon Apr 16 16:02:19 2007 UTC (17 years ago) by iliev
File MIME type: text/html
File size: 346490 byte(s)
* Implemented instruments database

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

  ViewVC Help
Powered by ViewVC