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

Contents of /web/trunk/www.linuxsampler.org/api/draft-linuxsampler-protocol.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1773 - (show annotations) (download)
Wed Sep 10 15:14:31 2008 UTC (15 years, 7 months ago) by iliev
File MIME type: text/plain
File size: 235980 byte(s)
- updated the lscp spec

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

  ViewVC Help
Powered by ViewVC