/[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 1110 - (hide annotations) (download) (as text)
Thu Mar 22 21:12:10 2007 UTC (17 years, 1 month ago) by iliev
File MIME type: text/html
File size: 300878 byte(s)
- Added new notification events for tracking
effect send changes and global volume changes

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

  ViewVC Help
Powered by ViewVC