/[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 1137 - (hide annotations) (download) (as text)
Thu Mar 29 10:06:37 2007 UTC (17 years ago) by iliev
File MIME type: text/html
File size: 303699 byte(s)
- Added new LSCP command - SET FX_SEND NAME
- Added new field - DEFAULT to the
  GET MIDI_INSTRUMENT_MAP INFO command response

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

  ViewVC Help
Powered by ViewVC