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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 561 by schoenebeck, Sat May 21 20:01:32 2005 UTC revision 708 by schoenebeck, Thu Jul 21 09:18:40 2005 UTC
# Line 1  Line 1 
1    
2    
3    
4  LinuxSampler Developers                                   C. Schoenebeck  LinuxSampler Developers                                   C. Schoenebeck
5  Internet-Draft                           Interessengemeinschaft Software  Internet-Draft                           Interessengemeinschaft Software
6  Expires: November 19, 2005                             Engineering e. V.  Expires: November 2, 2005                              Engineering e. V.
7                                                              May 21, 2005                                                                  May 2005
8    
9    
10                       LinuxSampler Control Protocol                       LinuxSampler Control Protocol
11                                  lscp.txt                                  LSCP 1.1
12    
13  Status of this Memo  Status of this Memo
14    
15     This document is an Internet-Draft and is in full conformance with     This document is an Internet-Draft and is in full conformance with
16     all provisions of Section 10 of RFC2026.     all provisions of Section 10 of RFC 2026.
17    
18     Internet-Drafts are working documents of the Internet Engineering     Internet-Drafts are working documents of the Internet Engineering
19     Task Force (IETF), its areas, and its working groups.  Note that     Task Force (IETF), its areas, and its working groups.  Note that
20     other groups may also distribute working documents as     other groups may also distribute working documents as Internet-
21     Internet-Drafts.     Drafts.
22    
23     Internet-Drafts are draft documents valid for a maximum of six months     Internet-Drafts are draft documents valid for a maximum of six months
24     and may be updated, replaced, or obsoleted by other documents at any     and may be updated, replaced, or obsoleted by other documents at any
# Line 30  Status of this Memo Line 31  Status of this Memo
31     The list of Internet-Draft Shadow Directories can be accessed at     The list of Internet-Draft Shadow Directories can be accessed at
32     http://www.ietf.org/shadow.html.     http://www.ietf.org/shadow.html.
33    
34     This Internet-Draft will expire on November 19, 2005.     This Internet-Draft will expire on November 2, 2005.
35    
36  Copyright Notice  Copyright Notice
37    
# Line 40  Abstract Line 41  Abstract
41    
42     The LinuxSampler Control Protocol (LSCP) is an application-level     The LinuxSampler Control Protocol (LSCP) is an application-level
43     protocol primarily intended for local and remote controlling the     protocol primarily intended for local and remote controlling the
44     LinuxSampler main application, which is a sophisticated console     LinuxSampler backend application, which is a sophisticated server-
45     application essentially playing back audio samples and manipulating     like console application essentially playing back audio samples and
46     the samples in real time to certain extent.     manipulating the samples in real time to certain extent.
47    
48    
49    
# Line 51  Abstract Line 52  Abstract
52    
53    
54    
55    Schoenebeck             Expires November 2, 2005                [Page 1]
56    
57  Schoenebeck            Expires November 19, 2005                [Page 1]  Internet-Draft        LinuxSampler Control Protocol             May 2005
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
58    
59    
60  Table of Contents  Table of Contents
61    
62     1.   Requirements notation  . . . . . . . . . . . . . . . . . . .   4     1.   Requirements notation  . . . . . . . . . . . . . . . . . . .   4
63     2.   Introduction . . . . . . . . . . . . . . . . . . . . . . . .   5     2.   Versioning of this specification . . . . . . . . . . . . . .   5
64     3.   Focus of this protocol . . . . . . . . . . . . . . . . . . .   6     3.   Introduction . . . . . . . . . . . . . . . . . . . . . . . .   6
65     4.   Communication Overview . . . . . . . . . . . . . . . . . . .   7     4.   Focus of this protocol . . . . . . . . . . . . . . . . . . .   7
66       4.1  Request/response communication method  . . . . . . . . . .   7     5.   Communication Overview . . . . . . . . . . . . . . . . . . .   8
67         4.1.1  Result format  . . . . . . . . . . . . . . . . . . . .   8       5.1  Request/response communication method  . . . . . . . . . .   8
68       4.2  Subscribe/notify communication method  . . . . . . . . . .   9         5.1.1  Result format  . . . . . . . . . . . . . . . . . . . .   9
69     5.   Description for control commands . . . . . . . . . . . . . .  12       5.2  Subscribe/notify communication method  . . . . . . . . . .  11
70       5.1  Ignored lines and comments . . . . . . . . . . . . . . . .  12     6.   Description for control commands . . . . . . . . . . . . . .  13
71       5.2  Configuring audio drivers  . . . . . . . . . . . . . . . .  12       6.1  Ignored lines and comments . . . . . . . . . . . . . . . .  13
72         5.2.1  Getting amount of available audio output drivers . . .  12       6.2  Configuring audio drivers  . . . . . . . . . . . . . . . .  13
73         5.2.2  Getting all available audio output drivers . . . . . .  13         6.2.1  Getting amount of available audio output drivers . . .  13
74         5.2.3  Getting information about a specific audio output         6.2.2  Getting all available audio output drivers . . . . . .  14
75                driver . . . . . . . . . . . . . . . . . . . . . . . .  13         6.2.3  Getting information about a specific audio output
76         5.2.4  Getting information about specific audio output                driver . . . . . . . . . . . . . . . . . . . . . . . .  14
77                driver parameter . . . . . . . . . . . . . . . . . . .  14         6.2.4  Getting information about specific audio output
78         5.2.5  Creating an audio output device  . . . . . . . . . . .  17                driver parameter . . . . . . . . . . . . . . . . . . .  15
79         5.2.6  Destroying an audio output device  . . . . . . . . . .  17         6.2.5  Creating an audio output device  . . . . . . . . . . .  19
80         5.2.7  Getting all created audio output device count  . . . .  18         6.2.6  Destroying an audio output device  . . . . . . . . . .  20
81         5.2.8  Getting all created audio output device list . . . . .  18         6.2.7  Getting all created audio output device count  . . . .  21
82         5.2.9  Getting current settings of an audio output device . .  19         6.2.8  Getting all created audio output device list . . . . .  21
83         5.2.10   Changing settings of audio output devices  . . . . .  20         6.2.9  Getting current settings of an audio output device . .  21
84         5.2.11   Getting information about an audio channel . . . . .  20         6.2.10   Changing settings of audio output devices  . . . . .  23
85         5.2.12   Getting information about specific audio channel         6.2.11   Getting information about an audio channel . . . . .  24
86                  parameter  . . . . . . . . . . . . . . . . . . . . .  22         6.2.12   Getting information about specific audio channel
87         5.2.13   Changing settings of audio output channels . . . . .  23                  parameter  . . . . . . . . . . . . . . . . . . . . .  25
88       5.3  Configuring MIDI input drivers . . . . . . . . . . . . . .  24         6.2.13   Changing settings of audio output channels . . . . .  27
89         5.3.1  Getting amount of available MIDI input drivers . . . .  24       6.3  Configuring MIDI input drivers . . . . . . . . . . . . . .  28
90         5.3.2  Getting all available MIDI input drivers . . . . . . .  25         6.3.1  Getting amount of available MIDI input drivers . . . .  29
91         5.3.3  Getting information about a specific MIDI input         6.3.2  Getting all available MIDI input drivers . . . . . . .  29
92                driver . . . . . . . . . . . . . . . . . . . . . . . .  25         6.3.3  Getting information about a specific MIDI input
93         5.3.4  Getting information about specific MIDI input                driver . . . . . . . . . . . . . . . . . . . . . . . .  30
94                driver parameter . . . . . . . . . . . . . . . . . . .  26         6.3.4  Getting information about specific MIDI input
95         5.3.5  Creating a MIDI input device . . . . . . . . . . . . .  28                driver parameter . . . . . . . . . . . . . . . . . . .  31
96         5.3.6  Destroying a MIDI input device . . . . . . . . . . . .  29         6.3.5  Creating a MIDI input device . . . . . . . . . . . . .  33
97         5.3.7  Getting all created MIDI input device count  . . . . .  29         6.3.6  Destroying a MIDI input device . . . . . . . . . . . .  34
98         5.3.8  Getting all created MIDI input device list . . . . . .  29         6.3.7  Getting all created MIDI input device count  . . . . .  35
99         5.3.9  Getting current settings of a MIDI input device  . . .  30         6.3.8  Getting all created MIDI input device list . . . . . .  35
100         5.3.10   Changing settings of MIDI input devices  . . . . . .  31         6.3.9  Getting current settings of a MIDI input device  . . .  36
101         5.3.11   Getting information about a MIDI port  . . . . . . .  31         6.3.10   Changing settings of MIDI input devices  . . . . . .  37
102         5.3.12   Getting information about specific MIDI port         6.3.11   Getting information about a MIDI port  . . . . . . .  38
103                  parameter  . . . . . . . . . . . . . . . . . . . . .  32         6.3.12   Getting information about specific MIDI port
104         5.3.13   Changing settings of MIDI input ports  . . . . . . .  33                  parameter  . . . . . . . . . . . . . . . . . . . . .  38
105       5.4  Configuring sampler channels . . . . . . . . . . . . . . .  34         6.3.13   Changing settings of MIDI input ports  . . . . . . .  40
106         5.4.1  Loading an instrument  . . . . . . . . . . . . . . . .  34       6.4  Configuring sampler channels . . . . . . . . . . . . . . .  41
107         5.4.2  Loading a sampler engine . . . . . . . . . . . . . . .  35         6.4.1  Loading an instrument  . . . . . . . . . . . . . . . .  41
108    
109    
110    
111  Schoenebeck            Expires November 19, 2005                [Page 2]  Schoenebeck             Expires November 2, 2005                [Page 2]
112    
113  Internet-Draft       LinuxSampler Control Protocol              May 2005  Internet-Draft        LinuxSampler Control Protocol             May 2005
114    
115    
116         5.4.3  Getting all created sampler channel count  . . . . . .  36         6.4.2  Loading a sampler engine . . . . . . . . . . . . . . .  42
117         5.4.4  Getting all created sampler channel list . . . . . . .  36         6.4.3  Getting all created sampler channel count  . . . . . .  43
118         5.4.5  Adding a new sampler channel . . . . . . . . . . . . .  36         6.4.4  Getting all created sampler channel list . . . . . . .  43
119         5.4.6  Removing a sampler channel . . . . . . . . . . . . . .  37         6.4.5  Adding a new sampler channel . . . . . . . . . . . . .  44
120         5.4.7  Getting amount of available engines  . . . . . . . . .  38         6.4.6  Removing a sampler channel . . . . . . . . . . . . . .  45
121         5.4.8  Getting all available engines  . . . . . . . . . . . .  38         6.4.7  Getting amount of available engines  . . . . . . . . .  45
122         5.4.9  Getting information about an engine  . . . . . . . . .  38         6.4.8  Getting all available engines  . . . . . . . . . . . .  46
123         5.4.10   Getting sampler channel information  . . . . . . . .  39         6.4.9  Getting information about an engine  . . . . . . . . .  46
124         5.4.11   Current number of active voices  . . . . . . . . . .  41         6.4.10   Getting sampler channel information  . . . . . . . .  47
125         5.4.12   Current number of active disk streams  . . . . . . .  41         6.4.11   Current number of active voices  . . . . . . . . . .  50
126         5.4.13   Current fill state of disk stream buffers  . . . . .  42         6.4.12   Current number of active disk streams  . . . . . . .  50
127         5.4.14   Setting audio output device  . . . . . . . . . . . .  42         6.4.13   Current fill state of disk stream buffers  . . . . .  51
128         5.4.15   Setting audio output type  . . . . . . . . . . . . .  43         6.4.14   Setting audio output device  . . . . . . . . . . . .  52
129         5.4.16   Setting audio output channel . . . . . . . . . . . .  44         6.4.15   Setting audio output type  . . . . . . . . . . . . .  53
130         5.4.17   Setting MIDI input device  . . . . . . . . . . . . .  44         6.4.16   Setting audio output channel . . . . . . . . . . . .  53
131         5.4.18   Setting MIDI input type  . . . . . . . . . . . . . .  45         6.4.17   Setting MIDI input device  . . . . . . . . . . . . .  54
132         5.4.19   Setting MIDI input port  . . . . . . . . . . . . . .  45         6.4.18   Setting MIDI input type  . . . . . . . . . . . . . .  55
133         5.4.20   Setting MIDI input channel . . . . . . . . . . . . .  46         6.4.19   Setting MIDI input port  . . . . . . . . . . . . . .  56
134         5.4.21   Setting channel volume . . . . . . . . . . . . . . .  46         6.4.20   Setting MIDI input channel . . . . . . . . . . . . .  56
135         5.4.22   Resetting a sampler channel  . . . . . . . . . . . .  47         6.4.21   Setting channel volume . . . . . . . . . . . . . . .  57
136       5.5  Controlling connection . . . . . . . . . . . . . . . . . .  48         6.4.22   Muting a sampler channel . . . . . . . . . . . . . .  58
137         5.5.1  Register front-end for receiving event messages  . . .  48         6.4.23   Soloing a sampler channel  . . . . . . . . . . . . .  58
138         5.5.2  Unregister front-end for not receiving event         6.4.24   Resetting a sampler channel  . . . . . . . . . . . .  59
139                messages . . . . . . . . . . . . . . . . . . . . . . .  48       6.5  Controlling connection . . . . . . . . . . . . . . . . . .  60
140         5.5.3  Enable or disable echo of commands . . . . . . . . . .  49         6.5.1  Register front-end for receiving event messages  . . .  60
141         5.5.4  Close client connection  . . . . . . . . . . . . . . .  49         6.5.2  Unregister front-end for not receiving event
142       5.6  Global commands  . . . . . . . . . . . . . . . . . . . . .  50                messages . . . . . . . . . . . . . . . . . . . . . . .  61
143         5.6.1  Reset sampler  . . . . . . . . . . . . . . . . . . . .  50         6.5.3  Enable or disable echo of commands . . . . . . . . . .  61
144     6.   Command Syntax . . . . . . . . . . . . . . . . . . . . . . .  51         6.5.4  Close client connection  . . . . . . . . . . . . . . .  62
145     7.   Events . . . . . . . . . . . . . . . . . . . . . . . . . . .  52       6.6  Global commands  . . . . . . . . . . . . . . . . . . . . .  62
146       7.1  Number of sampler channels changed . . . . . . . . . . . .  52         6.6.1  Reset sampler  . . . . . . . . . . . . . . . . . . . .  62
147       7.2  Number of active voices changed  . . . . . . . . . . . . .  52         6.6.2  General sampler informations . . . . . . . . . . . . .  62
148       7.3  Number of active disk streams changed  . . . . . . . . . .  52     7.   Command Syntax . . . . . . . . . . . . . . . . . . . . . . .  64
149       7.4  Disk stream buffer fill state changed  . . . . . . . . . .  53     8.   Events . . . . . . . . . . . . . . . . . . . . . . . . . . .  71
150       7.5  Channel information changed  . . . . . . . . . . . . . . .  53       8.1  Number of sampler channels changed . . . . . . . . . . . .  71
151       7.6  Miscellaneous and debugging events . . . . . . . . . . . .  53       8.2  Number of active voices changed  . . . . . . . . . . . . .  71
152     8.   Security Considerations  . . . . . . . . . . . . . . . . . .  55       8.3  Number of active disk streams changed  . . . . . . . . . .  71
153     9.   Acknowledgments  . . . . . . . . . . . . . . . . . . . . . .  56       8.4  Disk stream buffer fill state changed  . . . . . . . . . .  72
154     10.  References . . . . . . . . . . . . . . . . . . . . . . . . .  56       8.5  Channel information changed  . . . . . . . . . . . . . . .  72
155          Author's Address . . . . . . . . . . . . . . . . . . . . . .  56       8.6  Miscellaneous and debugging events . . . . . . . . . . . .  72
156          Intellectual Property and Copyright Statements . . . . . . .  57     9.   Security Considerations  . . . . . . . . . . . . . . . . . .  74
157       10.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . .  75
158       11.  References . . . . . . . . . . . . . . . . . . . . . . . . .  75
159            Author's Address . . . . . . . . . . . . . . . . . . . . . .  75
160            Intellectual Property and Copyright Statements . . . . . . .  76
161    
162    
163    
164    
165    
166    
167    Schoenebeck             Expires November 2, 2005                [Page 3]
168    
169    Internet-Draft        LinuxSampler Control Protocol             May 2005
 Schoenebeck            Expires November 19, 2005                [Page 3]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
170    
171    
172  1.  Requirements notation  1.  Requirements notation
# Line 178  Internet-Draft       LinuxSampler Contro Line 178  Internet-Draft       LinuxSampler Contro
178     This protocol is always case-sensitive if not explicitly claimed the     This protocol is always case-sensitive if not explicitly claimed the
179     opposite.     opposite.
180    
181     In examples, "C:" and "S:" indicate lines sent by the client     In examples, "C:" and "S:" indicate lines sent by the client (front-
182     (front-end) and server (LinuxSampler) respectively.  Lines in     end) and server (LinuxSampler) respectively.  Lines in examples must
183     examples must be interpreted as every line being CRLF terminated     be interpreted as every line being CRLF terminated (carriage return
184     (carriage return character followed by line feed character as defined     character followed by line feed character as defined in the ASCII
185     in the ASCII standard), thus the following example:     standard), thus the following example:
186    
187        C: "some line"        C: "some line"
188    
189           "another line"           "another line"
190    
191     must actually be interpreted as client sending the following message:     must actually be interpreted as client sending the following message:
# Line 203  Internet-Draft       LinuxSampler Contro Line 204  Internet-Draft       LinuxSampler Contro
204     sequence scenario:     sequence scenario:
205    
206     o  server sending message "a"     o  server sending message "a"
207    
208     o  followed by a delay (pause) with arbitrary duration     o  followed by a delay (pause) with arbitrary duration
209    
210     o  followed by server sending message "bcd<CR>"     o  followed by server sending message "bcd<CR>"
211    
212     o  again followed by a delay (pause) with arbitrary duration     o  again followed by a delay (pause) with arbitrary duration
213    
214     o  followed by server sending the message "<LF>"     o  followed by server sending the message "<LF>"
215    
216     where again <CR> and <LF> symbolize the carriage return and line feed     where again <CR> and <LF> symbolize the carriage return and line feed
# Line 215  Internet-Draft       LinuxSampler Contro Line 220  Internet-Draft       LinuxSampler Contro
220    
221    
222    
223    Schoenebeck             Expires November 2, 2005                [Page 4]
224    
225    Internet-Draft        LinuxSampler Control Protocol             May 2005
226    
227    
228    2.  Versioning of this specification
229    
230       LSCP will certainly be extended and enhanced by-and-by.  Each
231       official release of the LSCP specification will be tagged with a
232       unique version tuple.  The version tuple consists at least of a major
233       and minor version number like:
234    
235          "1.2"
236    
237       In this example the major version number would be "1" and the minor
238       version number would be "2".  Note that the version tuple might also
239       have more than two elements.  The major version number defines a
240       group of backward compatible versions.  That means a frontend is
241       compatible to the connected sampler if and only if the LSCP versions
242       to which each of the two parties complies to, match both of the
243       following rules:
244    
245       Compatibility:
246    
247       1.  The frontend's LSCP major version and the sampler's LSCP major
248           version are exactly equal.
249    
250       2.  The frontend's LSCP minor version is less or equal than the
251           sampler's LSCP minor version.
252    
253       Compatibility can only be claimed if both rules are true.  The
254       frontend can use the "GET SERVER INFO" (Section 6.6.2) command to get
255       the version of the LSCP specification the sampler complies with.
256    
257    
258    
259    
260    
261    
 Schoenebeck            Expires November 19, 2005                [Page 4]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
262    
263    
264  2.  Introduction  
265    
266    
267    
268    
269    
270    
271    
272    
273    
274    
275    
276    
277    
278    
279    Schoenebeck             Expires November 2, 2005                [Page 5]
280    
281    Internet-Draft        LinuxSampler Control Protocol             May 2005
282    
283    
284    3.  Introduction
285    
286     LinuxSampler is a so called software sampler application capable to     LinuxSampler is a so called software sampler application capable to
287     playback audio samples from a computer's Random Access Memory (RAM)     playback audio samples from a computer's Random Access Memory (RAM)
# Line 235  Internet-Draft       LinuxSampler Contro Line 291  Internet-Draft       LinuxSampler Contro
291     virtual channels which will be referred in this document as "sampler     virtual channels which will be referred in this document as "sampler
292     channels".  The channels are in such way virtual as they can be     channels".  The channels are in such way virtual as they can be
293     connected to an arbitrary MIDI input method and arbitrary MIDI     connected to an arbitrary MIDI input method and arbitrary MIDI
294     channel (e.g.  sampler channel 17 could be connected to an ALSA     channel (e.g. sampler channel 17 could be connected to an ALSA
295     sequencer device 64:0 and listening to MIDI channel 1 there).  Each     sequencer device 64:0 and listening to MIDI channel 1 there).  Each
296     sampler engine will be assigned an own instance of one of the     sampler channel will be associated with an instance of one of the
297     available sampler engines (e.g.  GigEngine, DLSEngine).  The audio     available sampler engines (e.g.  GigEngine, DLSEngine).  The audio
298     output of each sampler channel can be routed to an arbitrary audio     output of each sampler channel can be routed to an arbitrary audio
299     output method (ALSA / JACK) and an arbitrary audio output channel     output method (ALSA / JACK) and an arbitrary audio output channel
# Line 276  Internet-Draft       LinuxSampler Contro Line 332  Internet-Draft       LinuxSampler Contro
332    
333    
334    
335  Schoenebeck            Expires November 19, 2005                [Page 5]  Schoenebeck             Expires November 2, 2005                [Page 6]
336    
337  Internet-Draft       LinuxSampler Control Protocol              May 2005  Internet-Draft        LinuxSampler Control Protocol             May 2005
338    
339    
340  3.  Focus of this protocol  4.  Focus of this protocol
341    
342     Main focus of this protocol is to provide a way to configure a     Main focus of this protocol is to provide a way to configure a
343     running LinuxSampler instance and to retrieve information about it.     running LinuxSampler instance and to retrieve information about it.
# Line 332  Internet-Draft       LinuxSampler Contro Line 388  Internet-Draft       LinuxSampler Contro
388    
389    
390    
391  Schoenebeck            Expires November 19, 2005                [Page 6]  Schoenebeck             Expires November 2, 2005                [Page 7]
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
392    
393    Internet-Draft        LinuxSampler Control Protocol             May 2005
394    
395  4.  Communication Overview  
396    5.  Communication Overview
397    
398     There are two distinct methods of communication between a running     There are two distinct methods of communication between a running
399     instance of LinuxSampler and one or more control applications, so     instance of LinuxSampler and one or more control applications, so
# Line 349  Internet-Draft       LinuxSampler Contro Line 405  Internet-Draft       LinuxSampler Contro
405     more effort to be implemented in the front-end application.  The two     more effort to be implemented in the front-end application.  The two
406     communication methods will be described next.     communication methods will be described next.
407    
408  4.1  Request/response communication method  5.1  Request/response communication method
409    
410     This simple communication method is based on TCP.  The front-end     This simple communication method is based on TCP [RFC793].  The
411     application establishes a TCP connection to the LinuxSampler instance     front-end application establishes a TCP connection to the
412     on a certain host system.  Then the front-end application will send     LinuxSampler instance on a certain host system.  Then the front-end
413     certain ASCII based commands as defined in this document (every     application will send certain ASCII based commands as defined in this
414     command line must be CRLF terminated - see "Conventions used in this     document (every command line must be CRLF terminated - see
415     document" at the beginning of this document) and the LinuxSampler     "Conventions used in this document" at the beginning of this
416     application will response after a certain process time with an     document) and the LinuxSampler application will response after a
417     appropriate ASCII based answer, also as defined in this document.  So     certain process time with an appropriate ASCII based answer, also as
418     this TCP communication is simply based on query and answer paradigm.     defined in this document.  So this TCP communication is simply based
419     That way LinuxSampler is only able to answer on queries from     on query and answer paradigm.  That way LinuxSampler is only able to
420     front-ends, but not able to automatically send messages to the client     answer on queries from front-ends, but not able to automatically send
421     if it's not asked to.  The fronted should not reconnect to     messages to the client if it's not asked to.  The fronted should not
422     LinuxSampler for every single command, instead it should keep the     reconnect to LinuxSampler for every single command, instead it should
423     connection established and simply resend message(s) for subsequent     keep the connection established and simply resend message(s) for
424     commands.  To keep information in the front-end up-to-date the     subsequent commands.  To keep information in the front-end up-to-date
425     front-end has to periodically send new requests to get the current     the front-end has to periodically send new requests to get the
426     information from the LinuxSampler instance.  This is often referred     current information from the LinuxSampler instance.  This is often
427     to as "polling".  While polling is simple to implement and may be OK     referred to as "polling".  While polling is simple to implement and
428     to use in some cases, there may be disadvantages to polling such as     may be OK to use in some cases, there may be disadvantages to polling
429     network traffic overhead and information being out of date.  It is     such as network traffic overhead and information being out of date.
430     possible for a client or several clients to open more than one     It is possible for a client or several clients to open more than one
431     connection to the server at the same time.  It is also possible to     connection to the server at the same time.  It is also possible to
432     send more than one request to the server at the same time but if     send more than one request to the server at the same time but if
433     those requests are sent over the same connection server MUST execute     those requests are sent over the same connection server MUST execute
# Line 388  Internet-Draft       LinuxSampler Contro Line 444  Internet-Draft       LinuxSampler Contro
444    
445    
446    
447  Schoenebeck            Expires November 19, 2005                [Page 7]  Schoenebeck             Expires November 2, 2005                [Page 8]
448    
449  Internet-Draft       LinuxSampler Control Protocol              May 2005  Internet-Draft        LinuxSampler Control Protocol             May 2005
450    
451    
452  4.1.1  Result format  5.1.1  Result format
453    
454     Result set could be one of the following types:     Result set could be one of the following types:
455    
456     1.  Normal     1.  Normal
457    
458     2.  Warning     2.  Warning
459    
460     3.  Error     3.  Error
461    
462     Warning and Error result sets MUST be single line and have the     Warning and Error result sets MUST be single line and have the
463     following format:     following format:
464    
465     o  "WRN:<warning-code>:<warning-message>"     o  "WRN:<warning-code>:<warning-message>"
466    
467     o  "ERR:<error-code>:<error-message>"     o  "ERR:<error-code>:<error-message>"
468    
469     Where <warning-code> and <error-code> are numeric unique identifiers     Where <warning-code> and <error-code> are numeric unique identifiers
# Line 414  Internet-Draft       LinuxSampler Contro Line 473  Internet-Draft       LinuxSampler Contro
473     Examples:     Examples:
474    
475        C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0        C: "LOAD INSTRUMENT '/home/me/Boesendorfer24bit.gig" 0 0
476    
477        S: "WRN:32:This is a 24 bit patch which is not supported natively        S: "WRN:32:This is a 24 bit patch which is not supported natively
478        yet."        yet."
479    
480        C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"        C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA EAR"
481    
482        S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter        S: "ERR:3456:Audio output driver 'ALSA' does not have a parameter
483        'EAR'."        'EAR'."
484    
485        C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"        C: "GET AUDIO_OUTPUT_DEVICE INFO 123456"
486    
487        S: "ERR:9:There is no audio output device with index 123456."        S: "ERR:9:There is no audio output device with index 123456."
488    
489     Normal result sets could be:     Normal result sets could be:
490    
491     1.  Empty     1.  Empty
492    
493     2.  Single line     2.  Single line
494    
495     3.  Multi-line     3.  Multi-line
496    
497     Empty result set is issued when the server only needed to acknowledge     Empty result set is issued when the server only needed to acknowledge
498     the fact that the request was received and it was processed     the fact that the request was received and it was processed
499     successfully and no additional information is available.  This result     successfully and no additional information is available.  This result
    set has the following format:  
500    
       "OK"  
501    
    Example:  
502    
503        C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"  Schoenebeck             Expires November 2, 2005                [Page 9]
504    
505    Internet-Draft        LinuxSampler Control Protocol             May 2005
506    
507    
508       set has the following format:
509    
510  Schoenebeck            Expires November 19, 2005                [Page 8]        "OK"
511    
512  Internet-Draft       LinuxSampler Control Protocol              May 2005     Example:
513    
514          C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4"
515    
516        S: "OK"        S: "OK"
517    
# Line 461  Internet-Draft       LinuxSampler Contro Line 525  Internet-Draft       LinuxSampler Contro
525     Example:     Example:
526    
527        C: "GET AUDIO_OUTPUT_DEVICE INFO 0"        C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
528    
529        S: "DRIVER: ALSA"        S: "DRIVER: ALSA"
530    
531           "CHANNELS: 2"           "CHANNELS: 2"
532    
533           "SAMPLERATE: 44100"           "SAMPLERATE: 44100"
534    
535           "ACTIVE: true"           "ACTIVE: true"
536    
537           "FRAGMENTS: 2"           "FRAGMENTS: 2"
538    
539           "FRAGMENTSIZE: 128"           "FRAGMENTSIZE: 128"
540    
541           "CARD: '0,0'"           "CARD: '0,0'"
542    
543           "."           "."
544    
545     In addition to above mentioned formats, warnings and empty result     In addition to above mentioned formats, warnings and empty result
# Line 475  Internet-Draft       LinuxSampler Contro Line 547  Internet-Draft       LinuxSampler Contro
547     respectively:     respectively:
548    
549     o  "WRN[<index>]:<warning-code>:<warning-message>"     o  "WRN[<index>]:<warning-code>:<warning-message>"
550    
551     o  "OK[<index>]"     o  "OK[<index>]"
552    
553     where <index> is command specific and is used to indicate channel     where <index> is command specific and is used to indicate channel
554     number that the result set was related to or other integer value.     number that the result set was related to or other integer value.
555    
556    
557    
558    
559    Schoenebeck             Expires November 2, 2005               [Page 10]
560    
561    Internet-Draft        LinuxSampler Control Protocol             May 2005
562    
563    
564     Each line of the result set MUST end with <CRLF>.     Each line of the result set MUST end with <CRLF>.
565    
566     Examples:     Examples:
567    
568        C: "ADD CHANNEL"        C: "ADD CHANNEL"
569    
570        S: "OK[12]"        S: "OK[12]"
571    
572        C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"        C: "CREATE AUDIO_OUTPUT_DEVICE ALSA SAMPLERATE=96000"
573    
574        S: "WRN[0]:32:Sample rate not supported, using 44100 instead."        S: "WRN[0]:32:Sample rate not supported, using 44100 instead."
575    
576  4.2  Subscribe/notify communication method  
577    5.2  Subscribe/notify communication method
578    
579     This more sophisticated communication method is actually only an     This more sophisticated communication method is actually only an
580     extension of the simple request/response communication method.  The     extension of the simple request/response communication method.  The
581     front-end still uses a TCP connection and sends the same commands on     front-end still uses a TCP connection and sends the same commands on
582     the TCP connection.  Two extra commands are SUBSCRIBE and UNSUBSCRIBE     the TCP connection.  Two extra commands are SUBSCRIBE and UNSUBSCRIBE
583     commands that allow a client to tell the server that it is interested     commands that allow a client to tell the server that it is interested
   
   
   
 Schoenebeck            Expires November 19, 2005                [Page 9]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
584     in receiving notifications about certain events as they happen on the     in receiving notifications about certain events as they happen on the
585     server.  The SUBSCRIBE command has the following syntax:     server.  The SUBSCRIBE command has the following syntax:
586    
# Line 527  Internet-Draft       LinuxSampler Contro Line 603  Internet-Draft       LinuxSampler Contro
603    
604     1.  Events MUST NOT be sent to any client who has not issued an     1.  Events MUST NOT be sent to any client who has not issued an
605         appropriate SUBSCRIBE command.         appropriate SUBSCRIBE command.
606    
607     2.  Events MUST only be sent using the same connection that was used     2.  Events MUST only be sent using the same connection that was used
608         to subscribe to them.         to subscribe to them.
609    
610     3.  When response is being sent to the client, event MUST be inserted     3.  When response is being sent to the client, event MUST be inserted
611         in the stream before or after the response, but NOT in the         in the stream before or after the response, but NOT in the
612    
613    
614    
615    Schoenebeck             Expires November 2, 2005               [Page 11]
616    
617    Internet-Draft        LinuxSampler Control Protocol             May 2005
618    
619    
620         middle.  Same is true about the response.  It should never be         middle.  Same is true about the response.  It should never be
621         inserted in the middle of the event message as well as any other         inserted in the middle of the event message as well as any other
622         response.         response.
# Line 542  Internet-Draft       LinuxSampler Contro Line 628  Internet-Draft       LinuxSampler Contro
628    
629     where <event-id> will be replace by the respective event that client     where <event-id> will be replace by the respective event that client
630     is no longer interested in receiving.  For a list of supported events     is no longer interested in receiving.  For a list of supported events
631     see Section 7.     see Section 8.
632    
633     Example: the fill states of disk stream buffers have changed on     Example: the fill states of disk stream buffers have changed on
634     sampler channel 4 and the LinuxSampler instance will react by sending     sampler channel 4 and the LinuxSampler instance will react by sending
# Line 554  Internet-Draft       LinuxSampler Contro Line 640  Internet-Draft       LinuxSampler Contro
640     channel 4, where the stream with ID "35" is filled by 62%, stream     channel 4, where the stream with ID "35" is filled by 62%, stream
641     with ID 33 is filled by 80% and stream with ID 37 is filled by 98%.     with ID 33 is filled by 80% and stream with ID 37 is filled by 98%.
642    
   
   
 Schoenebeck            Expires November 19, 2005               [Page 10]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
643     Clients may choose to open more than one connection to the server and     Clients may choose to open more than one connection to the server and
644     use some connections to receive notifications while using other     use some connections to receive notifications while using other
645     connections to issue commands to the back-end.  This is entirely     connections to issue commands to the back-end.  This is entirely
# Line 589  Internet-Draft       LinuxSampler Contro Line 668  Internet-Draft       LinuxSampler Contro
668    
669    
670    
671    Schoenebeck             Expires November 2, 2005               [Page 12]
672    
673    Internet-Draft        LinuxSampler Control Protocol             May 2005
674    
675    
676    6.  Description for control commands
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 11]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
 5.  Description for control commands  
677    
678     This chapter will describe the available control commands that can be     This chapter will describe the available control commands that can be
679     sent on the TCP connection in detail.  Some certain commands (e.g.     sent on the TCP connection in detail.  Some certain commands (e.g.
680     "GET CHANNEL INFO" (Section 5.4.10) or "GET ENGINE INFO" (Section     "GET CHANNEL INFO" (Section 6.4.10) or "GET ENGINE INFO"
681     5.4.9)) lead to multiple-line responses.  In this case LinuxSampler     (Section 6.4.9)) lead to multiple-line responses.  In this case
682     signals the end of the response by a "." (single dot) line.     LinuxSampler signals the end of the response by a "." (single dot)
683       line.
684    
685  5.1  Ignored lines and comments  6.1  Ignored lines and comments
686    
687     White lines, that is lines which only contain space and tabulator     White lines, that is lines which only contain space and tabulator
688     characters, and lines that start with a "#" character are ignored,     characters, and lines that start with a "#" character are ignored,
689     thus it's possible for example to group commands and to place     thus it's possible for example to group commands and to place
690     comments in a LSCP script file.     comments in a LSCP script file.
691    
692  5.2  Configuring audio drivers  6.2  Configuring audio drivers
693    
694     Instances of drivers in LinuxSampler are called devices.  You can use     Instances of drivers in LinuxSampler are called devices.  You can use
695     multiple audio devices simultaneously, e.g.  to output the sound of     multiple audio devices simultaneously, e.g. to output the sound of
696     one sampler channel using the ALSA audio output driver, and on     one sampler channel using the ALSA audio output driver, and on
697     another sampler channel you might want to use the JACK audio output     another sampler channel you might want to use the JACK audio output
698     driver.  For particular audio output systems it's also possible to     driver.  For particular audio output systems it's also possible to
699     create several devices of the same audio output driver, e.g.  two     create several devices of the same audio output driver, e.g. two
700     separate ALSA audio output devices for using two different sound     separate ALSA audio output devices for using two different sound
701     cards at the same time.  This chapter describes all commands to     cards at the same time.  This chapter describes all commands to
702     configure LinuxSampler's audio output devices and their parameters.     configure LinuxSampler's audio output devices and their parameters.
# Line 649  Internet-Draft       LinuxSampler Contro Line 706  Internet-Draft       LinuxSampler Contro
706     values have to be obtained at runtime.  This makes the protocol a bit     values have to be obtained at runtime.  This makes the protocol a bit
707     abstract, but has the advantage, that front-ends can be written     abstract, but has the advantage, that front-ends can be written
708     independently of what drivers are currently implemented and what     independently of what drivers are currently implemented and what
709     parameters these drivers are actually offering.  This means     parameters these drivers are actually offering.  This means front-
710     front-ends can even handle drivers which are implemented somewhere in     ends can even handle drivers which are implemented somewhere in
711     future without modifying the front-end at all.     future without modifying the front-end at all.
712    
713     Note: examples in this chapter showing particular parameters of     Note: examples in this chapter showing particular parameters of
# Line 661  Internet-Draft       LinuxSampler Contro Line 718  Internet-Draft       LinuxSampler Contro
718     retrieve what parameters drivers are offering, how to retrieve their     retrieve what parameters drivers are offering, how to retrieve their
719     possible values, etc.     possible values, etc.
720    
721  5.2.1  Getting amount of available audio output drivers  6.2.1  Getting amount of available audio output drivers
722    
723     Use the following command to get the number of audio output drivers     Use the following command to get the number of audio output drivers
    currently available for the LinuxSampler instance:  
724    
725    
726    
727  Schoenebeck            Expires November 19, 2005               [Page 12]  Schoenebeck             Expires November 2, 2005               [Page 13]
728    
729  Internet-Draft       LinuxSampler Control Protocol              May 2005  Internet-Draft        LinuxSampler Control Protocol             May 2005
730    
731    
732       currently available for the LinuxSampler instance:
733    
734        GET AVAILABLE_AUDIO_OUTPUT_DRIVERS        GET AVAILABLE_AUDIO_OUTPUT_DRIVERS
735    
736     Possible Answers:     Possible Answers:
# Line 683  Internet-Draft       LinuxSampler Contro Line 741  Internet-Draft       LinuxSampler Contro
741     Example:     Example:
742    
743        C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"        C: "GET AVAILABLE_AUDIO_OUTPUT_DRIVERS"
744    
745        S: "2"        S: "2"
746    
747  5.2.2  Getting all available audio output drivers  
748    6.2.2  Getting all available audio output drivers
749    
750     Use the following command to list all audio output drivers currently     Use the following command to list all audio output drivers currently
751     available for the LinuxSampler instance:     available for the LinuxSampler instance:
# Line 700  Internet-Draft       LinuxSampler Contro Line 760  Internet-Draft       LinuxSampler Contro
760     Example:     Example:
761    
762        C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"        C: "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS"
763    
764        S: "ALSA,JACK"        S: "ALSA,JACK"
765    
766  5.2.3  Getting information about a specific audio output driver  
767    6.2.3  Getting information about a specific audio output driver
768    
769     Use the following command to get detailed information about a     Use the following command to get detailed information about a
770     specific audio output driver:     specific audio output driver:
# Line 710  Internet-Draft       LinuxSampler Contro Line 772  Internet-Draft       LinuxSampler Contro
772        GET AUDIO_OUTPUT_DRIVER INFO <audio-output-driver>        GET AUDIO_OUTPUT_DRIVER INFO <audio-output-driver>
773    
774     Where <audio-output-driver> is the name of the audio output driver,     Where <audio-output-driver> is the name of the audio output driver,
775     returned by the "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Section 5.2.2)     returned by the "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Section 6.2.2)
776     command.     command.
777    
778     Possible Answers:     Possible Answers:
779    
780    
781    
782    
783    Schoenebeck             Expires November 2, 2005               [Page 14]
784    
785    Internet-Draft        LinuxSampler Control Protocol             May 2005
786    
787    
788        LinuxSampler will answer by sending a <CRLF> separated list.  Each        LinuxSampler will answer by sending a <CRLF> separated list.  Each
789        answer line begins with the information category name followed by        answer line begins with the information category name followed by
790        a colon and then a space character <SP> and finally the info        a colon and then a space character <SP> and finally the info
# Line 723  Internet-Draft       LinuxSampler Contro Line 793  Internet-Draft       LinuxSampler Contro
793    
794    
795    
   
 Schoenebeck            Expires November 19, 2005               [Page 13]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
   
796           DESCRIPTION -           DESCRIPTION -
797    
798              character string describing the audio output driver              character string describing the audio output driver
799    
800           VERSION -           VERSION -
801    
802              character string reflecting the driver's version              character string reflecting the driver's version
803    
804           PARAMETERS -           PARAMETERS -
805    
806              comma separated list of all parameters available for the              comma separated list of all parameters available for the
807              given audio output driver, at least parameters 'channels',              given audio output driver, at least parameters 'channels',
808              'samplerate' and 'active' are offered by all audio output              'samplerate' and 'active' are offered by all audio output
809              drivers              drivers
810    
811        The mentioned fields above don't have to be in particular order.        The mentioned fields above don't have to be in particular order.
812    
813     Example:     Example:
814    
815        C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"        C: "GET AUDIO_OUTPUT_DRIVER INFO ALSA"
816    
817        S: "DESCRIPTION: Advanced Linux Sound Architecture"        S: "DESCRIPTION: Advanced Linux Sound Architecture"
818    
819           "VERSION: 1.0"           "VERSION: 1.0"
820    
821           "PARAMETERS: DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,           "PARAMETERS: DRIVER,CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,
822        FRAGMENTSIZE,CARD"        FRAGMENTSIZE,CARD"
823    
824           "."           "."
825    
826  5.2.4  Getting information about specific audio output driver parameter  
827    6.2.4  Getting information about specific audio output driver parameter
828    
829     Use the following command to get detailed information about a     Use the following command to get detailed information about a
830     specific audio output driver parameter:     specific audio output driver parameter:
# Line 758  Internet-Draft       LinuxSampler Contro Line 832  Internet-Draft       LinuxSampler Contro
832        GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO <audio> <prm> [<deplist>]        GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO <audio> <prm> [<deplist>]
833    
834     Where <audio> is the name of the audio output driver as returned by     Where <audio> is the name of the audio output driver as returned by
835     the "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Section 5.2.2) command,     the "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Section 6.2.2) command,
836    
837    
838    
839    Schoenebeck             Expires November 2, 2005               [Page 15]
840    
841    Internet-Draft        LinuxSampler Control Protocol             May 2005
842    
843    
844     <prm> a specific parameter name for which information should be     <prm> a specific parameter name for which information should be
845     obtained (as returned by the "GET AUDIO_OUTPUT_DRIVER INFO" (Section     obtained (as returned by the "GET AUDIO_OUTPUT_DRIVER INFO"
846     5.2.3) command) and <deplist> is an optional list of parameters on     (Section 6.2.3) command) and <deplist> is an optional list of
847     which the sought parameter <prm> depends on, <deplist> is a list of     parameters on which the sought parameter <prm> depends on, <deplist>
848     key-value pairs in form of "key1=val1 key2=val2 ...", where character     is a list of key-value pairs in form of "key1=val1 key2=val2 ...",
849     string values are encapsulated into apostrophes (').  Arguments given     where character string values are encapsulated into apostrophes (').
850     with <deplist> which are not dependency parameters of <prm> will be     Arguments given with <deplist> which are not dependency parameters of
851     ignored, means the front-end application can simply put all     <prm> will be ignored, means the front-end application can simply put
852     parameters into <deplist> with the values already selected by the     all parameters into <deplist> with the values already selected by the
853     user.     user.
854    
855     Possible Answers:     Possible Answers:
# Line 777  Internet-Draft       LinuxSampler Contro Line 859  Internet-Draft       LinuxSampler Contro
859        a colon and then a space character <SP> and finally the info        a colon and then a space character <SP> and finally the info
860        character string to that info category.  There are information        character string to that info category.  There are information
861        which is always returned, independently of the given driver        which is always returned, independently of the given driver
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 14]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
862        parameter and there are optional information which is only shown        parameter and there are optional information which is only shown
863        dependently to given driver parameter.  At the moment the        dependently to given driver parameter.  At the moment the
864        following information categories are defined:        following information categories are defined:
865    
866        TYPE -        TYPE -
867    
868           either "BOOL" for boolean value(s) or "INT" for integer           either "BOOL" for boolean value(s) or "INT" for integer
869           value(s) or "FLOAT" for dotted number(s) or "STRING" for           value(s) or "FLOAT" for dotted number(s) or "STRING" for
870           character string(s) (always returned, no matter which driver           character string(s) (always returned, no matter which driver
871           parameter)           parameter)
872    
873        DESCRIPTION -        DESCRIPTION -
874    
875           arbitrary text describing the purpose of the parameter (always           arbitrary text describing the purpose of the parameter (always
876           returned, no matter which driver parameter)           returned, no matter which driver parameter)
877    
878        MANDATORY -        MANDATORY -
879    
880           either true or false, defines if this parameter must be given           either true or false, defines if this parameter must be given
881           when the device is to be created with the 'CREATE           when the device is to be created with the 'CREATE
882           AUDIO_OUTPUT_DEVICE' (Section 5.2.5) command (always returned,           AUDIO_OUTPUT_DEVICE' (Section 6.2.5) command (always returned,
883           no matter which driver parameter)           no matter which driver parameter)
884    
885        FIX -        FIX -
886    
887           either true or false, if false then this parameter can be           either true or false, if false then this parameter can be
888           changed at any time, once the device is created by the 'CREATE           changed at any time, once the device is created by the 'CREATE
889           AUDIO_OUTPUT_DEVICE' (Section 5.2.5) command (always returned,           AUDIO_OUTPUT_DEVICE' (Section 6.2.5) command (always returned,
890           no matter which driver parameter)           no matter which driver parameter)
891    
892    
893    
894    
895    Schoenebeck             Expires November 2, 2005               [Page 16]
896    
897    Internet-Draft        LinuxSampler Control Protocol             May 2005
898    
899    
900        MULTIPLICITY -        MULTIPLICITY -
901    
902           either true or false, defines if this parameter allows only one           either true or false, defines if this parameter allows only one
903           value or a list of values, where true means multiple values and           value or a list of values, where true means multiple values and
904           false only a single value allowed (always returned, no matter           false only a single value allowed (always returned, no matter
905           which driver parameter)           which driver parameter)
906    
907        DEPENDS -        DEPENDS -
908    
909           comma separated list of parameters this parameter depends on,           comma separated list of parameters this parameter depends on,
910           means the values for fields 'DEFAULT', 'RANGE_MIN', 'RANGE_MAX'           means the values for fields 'DEFAULT', 'RANGE_MIN', 'RANGE_MAX'
911           and 'POSSIBILITIES' might depend on these listed parameters,           and 'POSSIBILITIES' might depend on these listed parameters,
# Line 822  Internet-Draft       LinuxSampler Contro Line 915  Internet-Draft       LinuxSampler Contro
915           possible values for 'samplerate' depends on the sound card           possible values for 'samplerate' depends on the sound card
916           which can be chosen by the 'card' parameter (optionally           which can be chosen by the 'card' parameter (optionally
917           returned, dependent to driver parameter)           returned, dependent to driver parameter)
918    
919        DEFAULT -        DEFAULT -
920    
921           reflects the default value for this parameter which is used           reflects the default value for this parameter which is used
922           when the device is created and not explicitly given with the           when the device is created and not explicitly given with the
923           'CREATE AUDIO_OUTPUT_DEVICE' (Section 5.2.5) command, in case           'CREATE AUDIO_OUTPUT_DEVICE' (Section 6.2.5) command, in case
924           of MULTIPLCITY=true, this is a comma separated list, that's why           of MULTIPLCITY=true, this is a comma separated list, that's why
925           character strings are encapsulated into apostrophes (')           character strings are encapsulated into apostrophes (')
926           (optionally returned, dependent to driver parameter)           (optionally returned, dependent to driver parameter)
927    
928        RANGE_MIN -        RANGE_MIN -
929    
930           defines lower limit of the allowed value range for this           defines lower limit of the allowed value range for this
931           parameter, can be an integer value as well as a dotted number,           parameter, can be an integer value as well as a dotted number,
932           this parameter is often used in conjunction with RANGE_MAX, but           this parameter is often used in conjunction with RANGE_MAX, but
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 15]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
933           may also appear without (optionally returned, dependent to           may also appear without (optionally returned, dependent to
934           driver parameter)           driver parameter)
935    
936        RANGE_MAX -        RANGE_MAX -
937    
938           defines upper limit of the allowed value range for this           defines upper limit of the allowed value range for this
939           parameter, can be an integer value as well as a dotted number,           parameter, can be an integer value as well as a dotted number,
940           this parameter is often used in conjunction with RANGE_MIN, but           this parameter is often used in conjunction with RANGE_MIN, but
941           may also appear without (optionally returned, dependent to           may also appear without (optionally returned, dependent to
942           driver parameter)           driver parameter)
943    
944        POSSIBILITIES -        POSSIBILITIES -
945    
946           comma separated list of possible values for this parameter,           comma separated list of possible values for this parameter,
947           character strings are encapsulated into apostrophes (optionally           character strings are encapsulated into apostrophes (optionally
948    
949    
950    
951    Schoenebeck             Expires November 2, 2005               [Page 17]
952    
953    Internet-Draft        LinuxSampler Control Protocol             May 2005
954    
955    
956           returned, dependent to driver parameter)           returned, dependent to driver parameter)
957    
958     The mentioned fields above don't have to be in particular order.     The mentioned fields above don't have to be in particular order.
# Line 859  Internet-Draft       LinuxSampler Contro Line 960  Internet-Draft       LinuxSampler Contro
960     Examples:     Examples:
961    
962        C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"        C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD"
963    
964        S: "DESCRIPTION: sound card to be used"        S: "DESCRIPTION: sound card to be used"
965    
966           "TYPE: STRING"           "TYPE: STRING"
967    
968           "MANDATORY: false"           "MANDATORY: false"
969    
970           "FIX: true"           "FIX: true"
971    
972           "MULTIPLICITY: false"           "MULTIPLICITY: false"
973    
974           "DEFAULT: '0,0'"           "DEFAULT: '0,0'"
975    
976           "POSSIBILITIES: '0,0','1,0','2,0'"           "POSSIBILITIES: '0,0','1,0','2,0'"
977    
978           "."           "."
979    
980        C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"        C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE"
981    
982        S: "DESCRIPTION: output sample rate in Hz"        S: "DESCRIPTION: output sample rate in Hz"
983    
984           "TYPE: INT"           "TYPE: INT"
985    
986           "MANDATORY: false"           "MANDATORY: false"
987    
988           "FIX: false"           "FIX: false"
989    
990           "MULTIPLICITY: false"           "MULTIPLICITY: false"
991    
992           "DEPENDS: card"           "DEPENDS: card"
993    
994           "DEFAULT: 44100"           "DEFAULT: 44100"
995    
996           "."           "."
997    
998        C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE        C: "GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA SAMPLERATE
999        CARD='0,0'"        CARD='0,0'"
1000    
1001        S: "DESCRIPTION: output sample rate in Hz"        S: "DESCRIPTION: output sample rate in Hz"
1002    
1003    
1004    
1005    
1006    
1007    Schoenebeck             Expires November 2, 2005               [Page 18]
1008    
1009    Internet-Draft        LinuxSampler Control Protocol             May 2005
1010    
1011    
1012           "TYPE: INT"           "TYPE: INT"
1013    
1014           "MANDATORY: false"           "MANDATORY: false"
          "FIX: false"  
          "MULTIPLICITY: false"  
          "DEPENDS: card"  
          "DEFAULT: 44100"  
          "RANGE_MIN: 22050"  
1015    
1016             "FIX: false"
1017    
1018             "MULTIPLICITY: false"
1019    
1020             "DEPENDS: card"
1021    
1022  Schoenebeck            Expires November 19, 2005               [Page 16]           "DEFAULT: 44100"
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
1023    
1024             "RANGE_MIN: 22050"
1025    
1026           "RANGE_MAX: 96000"           "RANGE_MAX: 96000"
1027    
1028           "."           "."
1029    
1030  5.2.5  Creating an audio output device  
1031    6.2.5  Creating an audio output device
1032    
1033     Use the following command to create a new audio output device for     Use the following command to create a new audio output device for
1034     the desired audio output system:     the desired audio output system:
# Line 908  Internet-Draft       LinuxSampler Contro Line 1036  Internet-Draft       LinuxSampler Contro
1036        CREATE AUDIO_OUTPUT_DEVICE <audio-output-driver> [<param-list>]        CREATE AUDIO_OUTPUT_DEVICE <audio-output-driver> [<param-list>]
1037    
1038     Where <audio-output-driver> should be replaced by the desired audio     Where <audio-output-driver> should be replaced by the desired audio
1039     output system and <param-list> by an optional list of driver specific     output system as returned by the "LIST
1040     parameters in form of "key1=val1 key2=val2 ...", where character     AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Section 6.2.2) command and <param-
1041     string values should be encapsulated into apostrophes (').  Note that     list> by an optional list of driver specific parameters in form of
1042     there might be drivers which require parameter(s) to be given with     "key1=val1 key2=val2 ...", where character string values should be
1043     this command.  Use the previously described commands in this chapter     encapsulated into apostrophes (').  Note that there might be drivers
1044     to get this information.     which require parameter(s) to be given with this command.  Use the
1045       previously described commands in this chapter to get this
1046       information.
1047    
1048     Possible Answers:     Possible Answers:
1049    
1050        "OK[<device-id>]" -        "OK[<device-id>]" -
1051    
1052           in case the device was successfully created, where <device-id>           in case the device was successfully created, where <device-id>
1053           is the numerical ID of the new device           is the numerical ID of the new device
1054    
1055        "WRN[<device-id>]:<warning-code>:<warning-message>" -        "WRN[<device-id>]:<warning-code>:<warning-message>" -
1056    
1057           in case the device was created successfully, where <device-id>           in case the device was created successfully, where <device-id>
1058           is the numerical ID of the new device, but there are noteworthy           is the numerical ID of the new device, but there are noteworthy
1059           issue(s) related (e.g.  sound card doesn't support given           issue(s) related (e.g. sound card doesn't support given
1060    
1061    
1062    
1063    Schoenebeck             Expires November 2, 2005               [Page 19]
1064    
1065    Internet-Draft        LinuxSampler Control Protocol             May 2005
1066    
1067    
1068           hardware parameters and the driver is using fall-back values),           hardware parameters and the driver is using fall-back values),
1069           providing an appropriate warning code and warning message           providing an appropriate warning code and warning message
1070    
1071        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
1072    
1073           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
1074           error message           error message
1075    
1076     Examples:     Examples:
1077    
1078        C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"        C: "CREATE AUDIO_OUTPUT_DEVICE ALSA"
1079    
1080        S: "OK[0]"        S: "OK[0]"
1081    
1082        C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"        C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' SAMPLERATE=96000"
1083    
1084        S: "OK[1]"        S: "OK[1]"
1085    
1086  5.2.6  Destroying an audio output device  
1087    6.2.6  Destroying an audio output device
1088    
1089     Use the following command to destroy a created output device:     Use the following command to destroy a created output device:
1090    
1091        DESTROY AUDIO_OUTPUT_DEVICE <device-id>        DESTROY AUDIO_OUTPUT_DEVICE <device-id>
1092    
1093     Where <device-id> should be replaced by the numerical ID of the audio     Where <device-id> should be replaced by the numerical ID of the audio
1094       output device as given by the "CREATE AUDIO_OUTPUT_DEVICE"
1095       (Section 6.2.5) or "LIST AUDIO_OUTPUT_DEVICES" (Section 6.2.8)
1096       command.
 Schoenebeck            Expires November 19, 2005               [Page 17]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
    output device as given by the "CREATE AUDIO_OUTPUT_DEVICE" (Section  
    5.2.5) or "LIST AUDIO_OUTPUT_DEVICES" (Section 5.2.8) command.  
1097    
1098     Possible Answers:     Possible Answers:
1099    
1100        "OK" -        "OK" -
1101    
1102           in case the device was successfully destroyed           in case the device was successfully destroyed
1103    
1104        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
1105    
1106           in case the device was destroyed successfully, but there are           in case the device was destroyed successfully, but there are
1107           noteworthy issue(s) related (e.g.  an audio over ethernet           noteworthy issue(s) related (e.g. an audio over ethernet driver
1108           driver was unloaded but the other host might not be informed           was unloaded but the other host might not be informed about
1109           about this situation), providing an appropriate warning code           this situation), providing an appropriate warning code and
1110           and warning message           warning message
1111    
1112        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
1113    
1114           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
1115           error message           error message
1116    
1117    
1118    
1119    Schoenebeck             Expires November 2, 2005               [Page 20]
1120    
1121    Internet-Draft        LinuxSampler Control Protocol             May 2005
1122    
1123    
1124     Example:     Example:
1125    
1126        C: "DESTROY AUDIO_OUTPUT_DEVICE 0"        C: "DESTROY AUDIO_OUTPUT_DEVICE 0"
1127    
1128        S: "OK"        S: "OK"
1129    
1130  5.2.7  Getting all created audio output device count  
1131    6.2.7  Getting all created audio output device count
1132    
1133     Use the following command to count all created audio output devices:     Use the following command to count all created audio output devices:
1134    
# Line 989  Internet-Draft       LinuxSampler Contro Line 1142  Internet-Draft       LinuxSampler Contro
1142     Example:     Example:
1143    
1144        C: "GET AUDIO_OUTPUT_DEVICES"        C: "GET AUDIO_OUTPUT_DEVICES"
1145    
1146        S: "4"        S: "4"
1147    
1148  5.2.8  Getting all created audio output device list  
1149    6.2.8  Getting all created audio output device list
1150    
1151     Use the following command to list all created audio output devices:     Use the following command to list all created audio output devices:
1152    
# Line 1002  Internet-Draft       LinuxSampler Contro Line 1157  Internet-Draft       LinuxSampler Contro
1157        LinuxSampler will answer by sending a comma separated list with        LinuxSampler will answer by sending a comma separated list with
1158        the numerical IDs of all audio output devices.        the numerical IDs of all audio output devices.
1159    
   
   
 Schoenebeck            Expires November 19, 2005               [Page 18]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
1160     Example:     Example:
1161    
1162        C: "LIST AUDIO_OUTPUT_DEVICES"        C: "LIST AUDIO_OUTPUT_DEVICES"
1163    
1164        S: "0,1,4,5"        S: "0,1,4,5"
1165    
1166  5.2.9  Getting current settings of an audio output device  
1167    6.2.9  Getting current settings of an audio output device
1168    
1169     Use the following command to get current settings of a specific,     Use the following command to get current settings of a specific,
1170     created audio output device:     created audio output device:
1171    
1172    
1173    
1174    
1175    Schoenebeck             Expires November 2, 2005               [Page 21]
1176    
1177    Internet-Draft        LinuxSampler Control Protocol             May 2005
1178    
1179    
1180        GET AUDIO_OUTPUT_DEVICE INFO <device-id>        GET AUDIO_OUTPUT_DEVICE INFO <device-id>
1181    
1182     Where <device-id> should be replaced by numerical ID of the audio     Where <device-id> should be replaced by numerical ID of the audio
1183     output device as e.g.  returned by the "LIST AUDIO_OUTPUT_DEVICES"     output device as e.g. returned by the "LIST AUDIO_OUTPUT_DEVICES"
1184     (Section 5.2.8) command.     (Section 6.2.8) command.
1185    
1186     Possible Answers:     Possible Answers:
1187    
# Line 1036  Internet-Draft       LinuxSampler Contro Line 1194  Internet-Draft       LinuxSampler Contro
1194     (independently of device):     (independently of device):
1195    
1196        DRIVER -        DRIVER -
1197    
1198           identifier of the used audio output driver, as also returned by           identifier of the used audio output driver, as also returned by
1199           the "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Section 5.2.2)           the "LIST AVAILABLE_AUDIO_OUTPUT_DRIVERS" (Section 6.2.2)
1200           command           command
1201    
1202        CHANNELS -        CHANNELS -
1203    
1204           amount of audio output channels this device currently offers           amount of audio output channels this device currently offers
1205    
1206        SAMPLERATE -        SAMPLERATE -
1207    
1208           playback sample rate the device uses           playback sample rate the device uses
1209    
1210        ACTIVE -        ACTIVE -
1211    
1212           either true or false, if false then the audio device is           either true or false, if false then the audio device is
1213           inactive and doesn't output any sound, nor do the sampler           inactive and doesn't output any sound, nor do the sampler
1214           channels connected to this audio device render any audio           channels connected to this audio device render any audio
# Line 1051  Internet-Draft       LinuxSampler Contro Line 1216  Internet-Draft       LinuxSampler Contro
1216     The mentioned fields above don't have to be in particular order.  The     The mentioned fields above don't have to be in particular order.  The
1217     fields above are only those fields which are returned by all audio     fields above are only those fields which are returned by all audio
1218     output devices.  Every audio output driver might have its own,     output devices.  Every audio output driver might have its own,
1219     additional driver specific parameters (see Section 5.2.3) which are     additional driver specific parameters (see Section 6.2.3) which are
1220     also returned by this command.     also returned by this command.
1221    
1222     Example:     Example:
1223    
1224          C: "GET AUDIO_OUTPUT_DEVICE INFO 0"
1225    
1226          S: "DRIVER: ALSA"
1227    
1228    
1229    
1230  Schoenebeck            Expires November 19, 2005               [Page 19]  
1231    Schoenebeck             Expires November 2, 2005               [Page 22]
1232  Internet-Draft       LinuxSampler Control Protocol              May 2005  
1233    Internet-Draft        LinuxSampler Control Protocol             May 2005
1234    
1235    
       C: "GET AUDIO_OUTPUT_DEVICE INFO 0"  
       S: "DRIVER: ALSA"  
1236           "CHANNELS: 2"           "CHANNELS: 2"
1237    
1238           "SAMPLERATE: 44100"           "SAMPLERATE: 44100"
1239    
1240           "ACTIVE: true"           "ACTIVE: true"
1241    
1242           "FRAGMENTS: 2"           "FRAGMENTS: 2"
1243    
1244           "FRAGMENTSIZE: 128"           "FRAGMENTSIZE: 128"
1245    
1246           "CARD: '0,0'"           "CARD: '0,0'"
1247    
1248           "."           "."
1249    
1250  5.2.10  Changing settings of audio output devices  
1251    6.2.10  Changing settings of audio output devices
1252    
1253     Use the following command to alter a specific setting of a created     Use the following command to alter a specific setting of a created
1254     audio output device:     audio output device:
# Line 1083  Internet-Draft       LinuxSampler Contro Line 1256  Internet-Draft       LinuxSampler Contro
1256        SET AUDIO_OUTPUT_DEVICE_PARAMETER <device-id> <key>=<value>        SET AUDIO_OUTPUT_DEVICE_PARAMETER <device-id> <key>=<value>
1257    
1258     Where <device-id> should be replaced by the numerical ID of the audio     Where <device-id> should be replaced by the numerical ID of the audio
1259     output device, <key> by the name of the parameter to change and     output device as given by the "CREATE AUDIO_OUTPUT_DEVICE"
1260     <value> by the new value for this parameter.     (Section 6.2.5) or "LIST AUDIO_OUTPUT_DEVICES" (Section 6.2.8)
1261       command, <key> by the name of the parameter to change and <value> by
1262       the new value for this parameter.
1263    
1264     Possible Answers:     Possible Answers:
1265    
1266        "OK" -        "OK" -
1267    
1268           in case setting was successfully changed           in case setting was successfully changed
1269    
1270        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
1271    
1272           in case setting was changed successfully, but there are           in case setting was changed successfully, but there are
1273           noteworthy issue(s) related, providing an appropriate warning           noteworthy issue(s) related, providing an appropriate warning
1274           code and warning message           code and warning message
1275    
1276        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
1277    
1278           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
1279           error message           error message
1280    
1281     Example:     Example:
1282    
1283    
1284    
1285    
1286    
1287    Schoenebeck             Expires November 2, 2005               [Page 23]
1288    
1289    Internet-Draft        LinuxSampler Control Protocol             May 2005
1290    
1291    
1292        C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"        C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 FRAGMENTSIZE=128"
1293    
1294        S: "OK"        S: "OK"
1295    
1296  5.2.11  Getting information about an audio channel  
1297    6.2.11  Getting information about an audio channel
1298    
1299     Use the following command to get information about an audio channel:     Use the following command to get information about an audio channel:
1300    
1301        GET AUDIO_OUTPUT_CHANNEL INFO <device-id> <audio-chan>        GET AUDIO_OUTPUT_CHANNEL INFO <device-id> <audio-chan>
1302    
1303     Where <device-id> is the numerical ID of the audio output device and     Where <device-id> is the numerical ID of the audio output device as
1304     <audio-chan> the audio channel number.     given by the "CREATE AUDIO_OUTPUT_DEVICE" (Section 6.2.5) or "LIST
1305       AUDIO_OUTPUT_DEVICES" (Section 6.2.8) command and <audio-chan> the
1306       audio channel number.
1307    
1308     Possible Answers:     Possible Answers:
1309    
   
   
 Schoenebeck            Expires November 19, 2005               [Page 20]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
1310        LinuxSampler will answer by sending a <CRLF> separated list.  Each        LinuxSampler will answer by sending a <CRLF> separated list.  Each
1311        answer line begins with the information category name followed by        answer line begins with the information category name followed by
1312        a colon and then a space character <SP> and finally the info        a colon and then a space character <SP> and finally the info
1313        character string to that info category.  At the moment the        character string to that info category.  At the moment the
1314        following information categories are defined:        following information categories are defined:
1315    
1316    
1317    
1318           NAME -           NAME -
1319    
1320              arbitrary character string naming the channel, which doesn't              arbitrary character string naming the channel, which doesn't
1321              have to be unique (always returned by all audio channels)              have to be unique (always returned by all audio channels)
1322    
1323           IS_MIX_CHANNEL -           IS_MIX_CHANNEL -
1324    
1325              either true or false, a mix-channel is not a real,              either true or false, a mix-channel is not a real,
1326              independent audio channel, but a virtual channel which is              independent audio channel, but a virtual channel which is
1327              mixed to another real channel, this mechanism is needed for              mixed to another real channel, this mechanism is needed for
1328              sampler engines which need more audio channels than the used              sampler engines which need more audio channels than the used
1329              audio system might be able to offer (always returned by all              audio system might be able to offer (always returned by all
1330              audio channels)              audio channels)
1331    
1332           MIX_CHANNEL_DESTINATION -           MIX_CHANNEL_DESTINATION -
1333    
1334              numerical ID (positive integer including 0) which reflects              numerical ID (positive integer including 0) which reflects
1335              the real audio channel (of the same audio output device)              the real audio channel (of the same audio output device)
1336              this mix channel refers to, means where the audio signal              this mix channel refers to, means where the audio signal
1337              actually will be routed / added to (only returned in case              actually will be routed / added to (only returned in case
1338              the audio channel is mix channel)              the audio channel is mix channel)
1339    
1340    
1341    
1342    
1343    Schoenebeck             Expires November 2, 2005               [Page 24]
1344    
1345    Internet-Draft        LinuxSampler Control Protocol             May 2005
1346    
1347    
1348     The mentioned fields above don't have to be in particular order.  The     The mentioned fields above don't have to be in particular order.  The
1349     fields above are only those fields which are generally returned for     fields above are only those fields which are generally returned for
1350     the described cases by all audio channels regardless of the audio     the described cases by all audio channels regardless of the audio
# Line 1153  Internet-Draft       LinuxSampler Contro Line 1354  Internet-Draft       LinuxSampler Contro
1354     Examples:     Examples:
1355    
1356        C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"        C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 0"
1357    
1358        S: "NAME: studio monitor left"        S: "NAME: studio monitor left"
1359    
1360           "IS_MIX_CHANNEL: false"           "IS_MIX_CHANNEL: false"
1361    
1362           "."           "."
1363    
1364        C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"        C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 1"
1365    
1366        S: "NAME: studio monitor right"        S: "NAME: studio monitor right"
1367    
1368           "IS_MIX_CHANNEL: false"           "IS_MIX_CHANNEL: false"
          "."  
1369    
       C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"  
       S: "NAME: studio monitor left"  
          "IS_MIX_CHANNEL: true"  
          "MIX_CHANNEL_DESTINATION: 1"  
1370           "."           "."
1371    
1372          C: "GET AUDIO_OUTPUT_CHANNEL INFO 0 2"
1373    
1374          S: "NAME: studio monitor left"
1375    
1376             "IS_MIX_CHANNEL: true"
1377    
1378             "MIX_CHANNEL_DESTINATION: 1"
1379    
1380  Schoenebeck            Expires November 19, 2005               [Page 21]           "."
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
1381    
1382        C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"        C: "GET AUDIO_OUTPUT_CHANNEL INFO 1 0"
1383    
1384        S: "NAME: 'ardour (left)'"        S: "NAME: 'ardour (left)'"
1385    
1386           "IS_MIX_CHANNEL: false"           "IS_MIX_CHANNEL: false"
1387    
1388           "JACK_BINDINGS: 'ardour:0'"           "JACK_BINDINGS: 'ardour:0'"
1389    
1390           "."           "."
1391    
1392  5.2.12  Getting information about specific audio channel parameter  
1393    6.2.12  Getting information about specific audio channel parameter
1394    
1395     Use the following command to get detailed information about specific     Use the following command to get detailed information about specific
1396    
1397    
1398    
1399    Schoenebeck             Expires November 2, 2005               [Page 25]
1400    
1401    Internet-Draft        LinuxSampler Control Protocol             May 2005
1402    
1403    
1404     audio channel parameter:     audio channel parameter:
1405    
1406        GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO <dev-id> <chan> <param>        GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO <dev-id> <chan> <param>
1407    
1408     Where <dev-id> is the numerical ID of the audio output device as     Where <dev-id> is the numerical ID of the audio output device as
1409     returned by the "LIST AUDIO_OUTPUT_DEVICES" (Section 5.2.8) command,     returned by the "CREATE AUDIO_OUTPUT_DEVICE" (Section 6.2.5) or "LIST
1410     <chan> the audio channel number and <param> a specific channel     AUDIO_OUTPUT_DEVICES" (Section 6.2.8) command, <chan> the audio
1411     parameter name for which information should be obtained (as returned     channel number and <param> a specific channel parameter name for
1412     by the "GET AUDIO_OUTPUT_CHANNEL INFO" (Section 5.2.11) command).     which information should be obtained (as returned by the "GET
1413       AUDIO_OUTPUT_CHANNEL INFO" (Section 6.2.11) command).
1414    
1415     Possible Answers:     Possible Answers:
1416    
# Line 1207  Internet-Draft       LinuxSampler Contro Line 1423  Internet-Draft       LinuxSampler Contro
1423        dependently to the given audio channel.  At the moment the        dependently to the given audio channel.  At the moment the
1424        following information categories are defined:        following information categories are defined:
1425    
1426    
1427    
1428           TYPE -           TYPE -
1429    
1430              either "BOOL" for boolean value(s) or "INT" for integer              either "BOOL" for boolean value(s) or "INT" for integer
1431              value(s) or "FLOAT" for dotted number(s) or "STRING" for              value(s) or "FLOAT" for dotted number(s) or "STRING" for
1432              character string(s) (always returned)              character string(s) (always returned)
1433    
1434           DESCRIPTION -           DESCRIPTION -
1435    
1436              arbitrary text describing the purpose of the parameter              arbitrary text describing the purpose of the parameter
1437              (always returned)              (always returned)
1438    
1439           FIX -           FIX -
1440    
1441              either true or false, if true then this parameter is read              either true or false, if true then this parameter is read
1442              only, thus cannot be altered (always returned)              only, thus cannot be altered (always returned)
1443    
1444           MULTIPLICITY -           MULTIPLICITY -
1445    
1446              either true or false, defines if this parameter allows only              either true or false, defines if this parameter allows only
1447              one value or a list of values, where true means multiple              one value or a list of values, where true means multiple
1448              values and false only a single value allowed (always              values and false only a single value allowed (always
1449              returned)              returned)
          RANGE_MIN -  
             defines lower limit of the allowed value range for this  
             parameter, can be an integer value as well as a dotted  
1450    
1451    
1452    
 Schoenebeck            Expires November 19, 2005               [Page 22]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
1453    
1454    
1455    Schoenebeck             Expires November 2, 2005               [Page 26]
1456    
1457    Internet-Draft        LinuxSampler Control Protocol             May 2005
1458    
1459    
1460             RANGE_MIN -
1461    
1462                defines lower limit of the allowed value range for this
1463                parameter, can be an integer value as well as a dotted
1464              number, usually used in conjunction with 'RANGE_MAX', but              number, usually used in conjunction with 'RANGE_MAX', but
1465              may also appear without (optionally returned, dependent to              may also appear without (optionally returned, dependent to
1466              driver and channel parameter)              driver and channel parameter)
1467    
1468           RANGE_MAX -           RANGE_MAX -
1469    
1470              defines upper limit of the allowed value range for this              defines upper limit of the allowed value range for this
1471              parameter, can be an integer value as well as a dotted              parameter, can be an integer value as well as a dotted
1472              number, usually used in conjunction with 'RANGE_MIN', but              number, usually used in conjunction with 'RANGE_MIN', but
1473              may also appear without (optionally returned, dependent to              may also appear without (optionally returned, dependent to
1474              driver and channel parameter)              driver and channel parameter)
1475    
1476           POSSIBILITIES -           POSSIBILITIES -
1477    
1478              comma separated list of possible values for this parameter,              comma separated list of possible values for this parameter,
1479              character strings are encapsulated into apostrophes              character strings are encapsulated into apostrophes
1480              (optionally returned, dependent to driver and channel              (optionally returned, dependent to driver and channel
1481              parameter)              parameter)
1482    
1483        The mentioned fields above don't have to be in particular order.        The mentioned fields above don't have to be in particular order.
1484    
1485     Example:     Example:
1486    
1487        C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"        C: "GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 1 0 JACK_BINDINGS"
1488    
1489        S: "DESCRIPTION: bindings to other JACK clients"        S: "DESCRIPTION: bindings to other JACK clients"
1490    
1491           "TYPE: STRING"           "TYPE: STRING"
1492    
1493           "FIX: false"           "FIX: false"
1494    
1495           "MULTIPLICITY: true"           "MULTIPLICITY: true"
1496    
1497           "POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"           "POSSIBILITIES: 'PCM:0','PCM:1','ardour:0','ardour:1'"
1498    
1499           "."           "."
1500    
1501  5.2.13  Changing settings of audio output channels  
1502    6.2.13  Changing settings of audio output channels
1503    
1504     Use the following command to alter a specific setting of an audio     Use the following command to alter a specific setting of an audio
1505     output channel:     output channel:
1506    
1507    
1508    
1509    
1510    
1511    Schoenebeck             Expires November 2, 2005               [Page 27]
1512    
1513    Internet-Draft        LinuxSampler Control Protocol             May 2005
1514    
1515    
1516        SET AUDIO_OUTPUT_CHANNEL_PARAMETER <dev-id> <chn> <key>=<value>        SET AUDIO_OUTPUT_CHANNEL_PARAMETER <dev-id> <chn> <key>=<value>
1517    
1518     Where <dev-id> should be replaced by the numerical ID of the audio     Where <dev-id> should be replaced by the numerical ID of the audio
1519     device, <chn> by the audio channel number, <key> by the name of the     output device as returned by the "CREATE AUDIO_OUTPUT_DEVICE"
1520       (Section 6.2.5) or "LIST AUDIO_OUTPUT_DEVICES" (Section 6.2.8)
1521       command, <chn> by the audio channel number, <key> by the name of the
1522     parameter to change and <value> by the new value for this parameter.     parameter to change and <value> by the new value for this parameter.
1523    
1524     Possible Answers:     Possible Answers:
1525    
1526        "OK" -        "OK" -
1527    
1528           in case setting was successfully changed           in case setting was successfully changed
1529    
1530        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
1531    
1532           in case setting was changed successfully, but there are           in case setting was changed successfully, but there are
1533           noteworthy issue(s) related, providing an appropriate warning           noteworthy issue(s) related, providing an appropriate warning
1534           code and warning message           code and warning message
1535    
1536        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
1537    
1538           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
1539           error message           error message
1540    
   
   
 Schoenebeck            Expires November 19, 2005               [Page 23]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
1541     Example:     Example:
1542    
1543        C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"        C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 JACK_BINDINGS='PCM:0'"
1544    
1545        S: "OK"        S: "OK"
1546    
1547        C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"        C: "SET AUDIO_OUTPUT_CHANNEL PARAMETER 0 0 NAME='monitor left'"
1548    
1549        S: "OK"        S: "OK"
1550    
1551  5.3  Configuring MIDI input drivers  
1552    6.3  Configuring MIDI input drivers
1553    
1554     Instances of drivers in LinuxSampler are called devices.  You can use     Instances of drivers in LinuxSampler are called devices.  You can use
1555     multiple MIDI devices simultaneously, e.g.  to use MIDI over ethernet     multiple MIDI devices simultaneously, e.g. to use MIDI over ethernet
1556     as MIDI input on one sampler channel and ALSA as MIDI input on     as MIDI input on one sampler channel and ALSA as MIDI input on
1557     another sampler channel.  For particular MIDI input systems it's also     another sampler channel.  For particular MIDI input systems it's also
1558     possible to create several devices of the same MIDI input type.  This     possible to create several devices of the same MIDI input type.  This
# Line 1309  Internet-Draft       LinuxSampler Contro Line 1561  Internet-Draft       LinuxSampler Contro
1561    
1562     Instead of defining commands and parameters for each driver     Instead of defining commands and parameters for each driver
1563     individually, all possible parameters, their meanings and possible     individually, all possible parameters, their meanings and possible
1564    
1565    
1566    
1567    Schoenebeck             Expires November 2, 2005               [Page 28]
1568    
1569    Internet-Draft        LinuxSampler Control Protocol             May 2005
1570    
1571    
1572     values have to be obtained at runtime.  This makes the protocol a bit     values have to be obtained at runtime.  This makes the protocol a bit
1573     abstract, but has the advantage, that front-ends can be written     abstract, but has the advantage, that front-ends can be written
1574     independently of what drivers are currently implemented and what     independently of what drivers are currently implemented and what
1575     parameters these drivers are actually offering.  This means     parameters these drivers are actually offering.  This means front-
1576     front-ends can even handle drivers which are implemented somewhere in     ends can even handle drivers which are implemented somewhere in
1577     future without modifying the front-end at all.     future without modifying the front-end at all.
1578    
1579     Commands for configuring MIDI input devices are pretty much the same     Commands for configuring MIDI input devices are pretty much the same
# Line 1328  Internet-Draft       LinuxSampler Contro Line 1588  Internet-Draft       LinuxSampler Contro
1588     retrieve what parameters drivers are offering, how to retrieve their     retrieve what parameters drivers are offering, how to retrieve their
1589     possible values, etc.     possible values, etc.
1590    
1591  5.3.1  Getting amount of available MIDI input drivers  6.3.1  Getting amount of available MIDI input drivers
1592    
1593     Use the following command to get the number of MIDI input drivers     Use the following command to get the number of MIDI input drivers
1594     currently available for the LinuxSampler instance:     currently available for the LinuxSampler instance:
# Line 1337  Internet-Draft       LinuxSampler Contro Line 1597  Internet-Draft       LinuxSampler Contro
1597    
1598     Possible Answers:     Possible Answers:
1599    
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 24]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
1600        LinuxSampler will answer by sending the number of available MIDI        LinuxSampler will answer by sending the number of available MIDI
1601        input drivers.        input drivers.
1602    
1603     Example:     Example:
1604    
1605        C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"        C: "GET AVAILABLE_MIDI_INPUT_DRIVERS"
1606    
1607        S: "2"        S: "2"
1608    
1609  5.3.2  Getting all available MIDI input drivers  
1610    6.3.2  Getting all available MIDI input drivers
1611    
1612     Use the following command to list all MIDI input drivers currently     Use the following command to list all MIDI input drivers currently
1613     available for the LinuxSampler instance:     available for the LinuxSampler instance:
# Line 1362  Internet-Draft       LinuxSampler Contro Line 1616  Internet-Draft       LinuxSampler Contro
1616    
1617     Possible Answers:     Possible Answers:
1618    
1619    
1620    
1621    
1622    
1623    Schoenebeck             Expires November 2, 2005               [Page 29]
1624    
1625    Internet-Draft        LinuxSampler Control Protocol             May 2005
1626    
1627    
1628        LinuxSampler will answer by sending comma separated character        LinuxSampler will answer by sending comma separated character
1629        strings, each symbolizing a MIDI input driver.        strings, each symbolizing a MIDI input driver.
1630    
1631     Example:     Example:
1632    
1633        C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"        C: "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
1634    
1635        S: "ALSA,JACK"        S: "ALSA,JACK"
1636    
1637  5.3.3  Getting information about a specific MIDI input driver  
1638    6.3.3  Getting information about a specific MIDI input driver
1639    
1640     Use the following command to get detailed information about a     Use the following command to get detailed information about a
1641     specific MIDI input driver:     specific MIDI input driver:
1642    
1643        GET MIDI_INPUT_DRIVER INFO <midi-input-driver>        GET MIDI_INPUT_DRIVER INFO <midi-input-driver>
1644    
1645     Where <midi-input-driver> is the name of the MIDI input driver.     Where <midi-input-driver> is the name of the MIDI input driver as
1646       returned by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Section 6.3.2)
1647       command.
1648    
1649     Possible Answers:     Possible Answers:
1650    
# Line 1387  Internet-Draft       LinuxSampler Contro Line 1654  Internet-Draft       LinuxSampler Contro
1654        character string to that info category.  At the moment the        character string to that info category.  At the moment the
1655        following information categories are defined:        following information categories are defined:
1656    
1657    
1658    
1659           DESCRIPTION -           DESCRIPTION -
1660    
1661              arbitrary description text about the MIDI input driver              arbitrary description text about the MIDI input driver
1662    
1663           VERSION -           VERSION -
1664    
1665              arbitrary character string regarding the driver's version              arbitrary character string regarding the driver's version
1666    
1667           PARAMETERS -           PARAMETERS -
1668    
1669                comma separated list of all parameters available for the
1670                given MIDI input driver
1671    
1672          The mentioned fields above don't have to be in particular order.
1673    
1674       Example:
1675    
 Schoenebeck            Expires November 19, 2005               [Page 25]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
1676    
1677    
             comma separated list of all parameters available for the  
             given MIDI input driver  
       The mentioned fields above don't have to be in particular order.  
1678    
1679     Example:  Schoenebeck             Expires November 2, 2005               [Page 30]
1680    
1681    Internet-Draft        LinuxSampler Control Protocol             May 2005
1682    
1683    
1684        C: "GET MIDI_INPUT_DRIVER INFO ALSA"        C: "GET MIDI_INPUT_DRIVER INFO ALSA"
1685    
1686        S: "DESCRIPTION: Advanced Linux Sound Architecture"        S: "DESCRIPTION: Advanced Linux Sound Architecture"
1687    
1688           "VERSION: 1.0"           "VERSION: 1.0"
1689    
1690           "PARAMETERS: DRIVER,ACTIVE"           "PARAMETERS: DRIVER,ACTIVE"
1691    
1692           "."           "."
1693    
1694  5.3.4  Getting information about specific MIDI input driver parameter  
1695    6.3.4  Getting information about specific MIDI input driver parameter
1696    
1697     Use the following command to get detailed information about a     Use the following command to get detailed information about a
1698     specific parameter of a specific MIDI input driver:     specific parameter of a specific MIDI input driver:
# Line 1421  Internet-Draft       LinuxSampler Contro Line 1700  Internet-Draft       LinuxSampler Contro
1700        GET MIDI_INPUT_DRIVER_PARAMETER INFO <midit> <param> [<deplist>]        GET MIDI_INPUT_DRIVER_PARAMETER INFO <midit> <param> [<deplist>]
1701    
1702     Where <midit> is the name of the MIDI input driver as returned by the     Where <midit> is the name of the MIDI input driver as returned by the
1703     "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Section 5.3.2) command, <param>     "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Section 6.3.2) command, <param>
1704     a specific parameter name for which information should be obtained     a specific parameter name for which information should be obtained
1705     (as returned by the "GET MIDI_INPUT_DRIVER INFO" (Section 5.3.3)     (as returned by the "GET MIDI_INPUT_DRIVER INFO" (Section 6.3.3)
1706     command) and <deplist> is an optional list of parameters on which the     command) and <deplist> is an optional list of parameters on which the
1707     sought parameter <param> depends on, <deplist> is a key-value pair     sought parameter <param> depends on, <deplist> is a key-value pair
1708     list in form of "key1=val1 key2=val2 ...", where character string     list in form of "key1=val1 key2=val2 ...", where character string
# Line 1444  Internet-Draft       LinuxSampler Contro Line 1723  Internet-Draft       LinuxSampler Contro
1723     defined:     defined:
1724    
1725        TYPE -        TYPE -
1726    
1727           either "BOOL" for boolean value(s) or "INT" for integer           either "BOOL" for boolean value(s) or "INT" for integer
1728           value(s) or "FLOAT" for dotted number(s) or "STRING" for           value(s) or "FLOAT" for dotted number(s) or "STRING" for
1729           character string(s) (always returned, no matter which driver           character string(s) (always returned, no matter which driver
# Line 1452  Internet-Draft       LinuxSampler Contro Line 1732  Internet-Draft       LinuxSampler Contro
1732    
1733    
1734    
1735  Schoenebeck            Expires November 19, 2005               [Page 26]  Schoenebeck             Expires November 2, 2005               [Page 31]
1736    
1737  Internet-Draft       LinuxSampler Control Protocol              May 2005  Internet-Draft        LinuxSampler Control Protocol             May 2005
1738    
1739    
1740        DESCRIPTION -        DESCRIPTION -
1741    
1742           arbitrary text describing the purpose of the parameter (always           arbitrary text describing the purpose of the parameter (always
1743           returned, no matter which driver parameter)           returned, no matter which driver parameter)
1744    
1745        MANDATORY -        MANDATORY -
1746    
1747           either true or false, defines if this parameter must be given           either true or false, defines if this parameter must be given
1748           when the device is to be created with the 'CREATE           when the device is to be created with the 'CREATE
1749           MIDI_INPUT_DEVICE' (Section 5.3.5) command (always returned, no           MIDI_INPUT_DEVICE' (Section 6.3.5) command (always returned, no
1750           matter which driver parameter)           matter which driver parameter)
1751    
1752        FIX -        FIX -
1753    
1754           either true or false, if false then this parameter can be           either true or false, if false then this parameter can be
1755           changed at any time, once the device is created by the 'CREATE           changed at any time, once the device is created by the 'CREATE
1756           MIDI_INPUT_DEVICE' (Section 5.3.5) command (always returned, no           MIDI_INPUT_DEVICE' (Section 6.3.5) command (always returned, no
1757           matter which driver parameter)           matter which driver parameter)
1758    
1759        MULTIPLICITY -        MULTIPLICITY -
1760    
1761           either true or false, defines if this parameter allows only one           either true or false, defines if this parameter allows only one
1762           value or a list of values, where true means multiple values and           value or a list of values, where true means multiple values and
1763           false only a single value allowed (always returned, no matter           false only a single value allowed (always returned, no matter
1764           which driver parameter)           which driver parameter)
1765    
1766        DEPENDS -        DEPENDS -
1767    
1768           comma separated list of parameters this parameter depends on,           comma separated list of parameters this parameter depends on,
1769           means the values for fields 'DEFAULT', 'RANGE_MIN', 'RANGE_MAX'           means the values for fields 'DEFAULT', 'RANGE_MIN', 'RANGE_MAX'
1770           and 'POSSIBILITIES' might depend on these listed parameters,           and 'POSSIBILITIES' might depend on these listed parameters,
# Line 1485  Internet-Draft       LinuxSampler Contro Line 1774  Internet-Draft       LinuxSampler Contro
1774           possible values for 'samplerate' depends on the sound card           possible values for 'samplerate' depends on the sound card
1775           which can be chosen by the 'card' parameter (optionally           which can be chosen by the 'card' parameter (optionally
1776           returned, dependent to driver parameter)           returned, dependent to driver parameter)
1777    
1778        DEFAULT -        DEFAULT -
1779    
1780           reflects the default value for this parameter which is used           reflects the default value for this parameter which is used
1781           when the device is created and not explicitly given with the           when the device is created and not explicitly given with the
1782           'CREATE MIDI_INPUT_DEVICE' (Section 5.3.5) command, in case of           'CREATE MIDI_INPUT_DEVICE' (Section 6.3.5) command, in case of
1783           MULTIPLCITY=true, this is a comma separated list, that's why           MULTIPLCITY=true, this is a comma separated list, that's why
1784           character strings are encapsulated into apostrophes (')           character strings are encapsulated into apostrophes (')
1785           (optionally returned, dependent to driver parameter)           (optionally returned, dependent to driver parameter)
1786    
1787    
1788    
1789    
1790    
1791    Schoenebeck             Expires November 2, 2005               [Page 32]
1792    
1793    Internet-Draft        LinuxSampler Control Protocol             May 2005
1794    
1795    
1796        RANGE_MIN -        RANGE_MIN -
1797    
1798           defines lower limit of the allowed value range for this           defines lower limit of the allowed value range for this
1799           parameter, can be an integer value as well as a dotted number,           parameter, can be an integer value as well as a dotted number,
1800           this parameter is often used in conjunction with RANGE_MAX, but           this parameter is often used in conjunction with RANGE_MAX, but
1801           may also appear without (optionally returned, dependent to           may also appear without (optionally returned, dependent to
1802           driver parameter)           driver parameter)
1803    
1804        RANGE_MAX -        RANGE_MAX -
1805    
1806           defines upper limit of the allowed value range for this           defines upper limit of the allowed value range for this
1807           parameter, can be an integer value as well as a dotted number,           parameter, can be an integer value as well as a dotted number,
1808           this parameter is often used in conjunction with RANGE_MIN, but           this parameter is often used in conjunction with RANGE_MIN, but
1809           may also appear without (optionally returned, dependent to           may also appear without (optionally returned, dependent to
1810           driver parameter)           driver parameter)
1811    
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 27]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
1812        POSSIBILITIES -        POSSIBILITIES -
1813    
1814           comma separated list of possible values for this parameter,           comma separated list of possible values for this parameter,
1815           character strings are encapsulated into apostrophes (optionally           character strings are encapsulated into apostrophes (optionally
1816           returned, dependent to driver parameter)           returned, dependent to driver parameter)
# Line 1523  Internet-Draft       LinuxSampler Contro Line 1820  Internet-Draft       LinuxSampler Contro
1820     Example:     Example:
1821    
1822        C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"        C: "GET MIDI_INPUT_DRIVER_PARAMETER INFO ALSA ACTIVE"
1823    
1824        S: "DESCRIPTION: Whether device is enabled"        S: "DESCRIPTION: Whether device is enabled"
1825    
1826           "TYPE: BOOL"           "TYPE: BOOL"
1827    
1828           "MANDATORY: false"           "MANDATORY: false"
1829    
1830           "FIX: false"           "FIX: false"
1831    
1832           "MULTIPLICITY: false"           "MULTIPLICITY: false"
1833    
1834           "DEFAULT: true"           "DEFAULT: true"
1835    
1836           "."           "."
1837    
1838  5.3.5  Creating a MIDI input device  
1839    6.3.5  Creating a MIDI input device
1840    
1841     Use the following command to create a new MIDI input device for  the     Use the following command to create a new MIDI input device for  the
1842     desired MIDI input system:     desired MIDI input system:
1843    
1844    
1845    
1846    
1847    Schoenebeck             Expires November 2, 2005               [Page 33]
1848    
1849    Internet-Draft        LinuxSampler Control Protocol             May 2005
1850    
1851    
1852        CREATE MIDI_INPUT_DEVICE <midi-input-driver> [<param-list>]        CREATE MIDI_INPUT_DEVICE <midi-input-driver> [<param-list>]
1853    
1854     Where <midi-input-driver> should be replaced by the desired MIDI     Where <midi-input-driver> should be replaced by the desired MIDI
1855     input system and <param-list> by an optional list of driver specific     input system as returned by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS"
1856     parameters in form of "key1=val1 key2=val2 ...", where character     (Section 6.3.2) command and <param-list> by an optional list of
1857     string values should be encapsulated into apostrophes (').  Note that     driver specific parameters in form of "key1=val1 key2=val2 ...",
1858     there might be drivers which require parameter(s) to be given with     where character string values should be encapsulated into apostrophes
1859     this command.  Use the previously described commands in this chapter     (').  Note that there might be drivers which require parameter(s) to
1860     to get that information.     be given with this command.  Use the previously described commands in
1861       this chapter to get that information.
1862    
1863     Possible Answers:     Possible Answers:
1864    
1865        "OK[<device-id>]" -        "OK[<device-id>]" -
1866    
1867           in case the device was successfully created, where <device-id>           in case the device was successfully created, where <device-id>
1868           is the numerical ID of the new device           is the numerical ID of the new device
1869    
1870        "WRN[<device-id>]:<warning-code>:<warning-message>" -        "WRN[<device-id>]:<warning-code>:<warning-message>" -
1871    
1872           in case the driver was loaded successfully, where <device-id>           in case the driver was loaded successfully, where <device-id>
1873           is the numerical ID of the new device, but there are noteworthy           is the numerical ID of the new device, but there are noteworthy
1874           issue(s) related, providing an appropriate warning code and           issue(s) related, providing an appropriate warning code and
1875           warning message           warning message
1876    
1877        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
1878    
1879           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
1880           error message           error message
1881    
1882     Example:     Example:
1883    
   
   
 Schoenebeck            Expires November 19, 2005               [Page 28]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
1884        C: "CREATE MIDI_INPUT_DEVICE ALSA"        C: "CREATE MIDI_INPUT_DEVICE ALSA"
1885    
1886        S: "OK[0]"        S: "OK[0]"
1887    
1888  5.3.6  Destroying a MIDI input device  
1889    6.3.6  Destroying a MIDI input device
1890    
1891     Use the following command to destroy a created MIDI input device:     Use the following command to destroy a created MIDI input device:
1892    
1893        DESTROY MIDI_INPUT_DEVICE <device-id>        DESTROY MIDI_INPUT_DEVICE <device-id>
1894    
1895     Where <device-id> should be replaced by the device's numerical ID.     Where <device-id> should be replaced by the device's numerical ID as
1896       returned by the "CREATE MIDI_INPUT_DEVICE" (Section 6.3.5) or "LIST
1897       MIDI_INPUT_DEVICES" (Section 6.3.8) command.
1898    
1899     Possible Answers:     Possible Answers:
1900    
1901    
1902    
1903    Schoenebeck             Expires November 2, 2005               [Page 34]
1904    
1905    Internet-Draft        LinuxSampler Control Protocol             May 2005
1906    
1907    
1908        "OK" -        "OK" -
1909    
1910           in case the device was successfully destroyed           in case the device was successfully destroyed
1911    
1912        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
1913    
1914           in case the device was destroyed, but there are noteworthy           in case the device was destroyed, but there are noteworthy
1915           issue(s) related, providing an appropriate warning code and           issue(s) related, providing an appropriate warning code and
1916           warning message           warning message
1917    
1918        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
1919    
1920           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
1921           error message           error message
1922    
1923     Example:     Example:
1924    
1925        C: "DESTROY MIDI_INPUT_DEVICE 0"        C: "DESTROY MIDI_INPUT_DEVICE 0"
1926    
1927        S: "OK"        S: "OK"
1928    
1929  5.3.7  Getting all created MIDI input device count  
1930    6.3.7  Getting all created MIDI input device count
1931    
1932     Use the following command to count all created MIDI input devices:     Use the following command to count all created MIDI input devices:
1933    
# Line 1611  Internet-Draft       LinuxSampler Contro Line 1941  Internet-Draft       LinuxSampler Contro
1941     Example:     Example:
1942    
1943        C: "GET MIDI_INPUT_DEVICES"        C: "GET MIDI_INPUT_DEVICES"
1944    
1945        S: "3"        S: "3"
1946    
1947  5.3.8  Getting all created MIDI input device list  
1948    6.3.8  Getting all created MIDI input device list
1949    
1950     Use the following command to list all created MIDI input devices:     Use the following command to list all created MIDI input devices:
1951    
1952          LIST MIDI_INPUT_DEVICES
1953    
1954       Possible Answers:
1955    
1956    
 Schoenebeck            Expires November 19, 2005               [Page 29]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
1957    
1958    
1959        LIST MIDI_INPUT_DEVICES  Schoenebeck             Expires November 2, 2005               [Page 35]
1960    
1961    Internet-Draft        LinuxSampler Control Protocol             May 2005
1962    
    Possible Answers:  
1963    
1964        LinuxSampler will answer by sending a comma separated list with        LinuxSampler will answer by sending a comma separated list with
1965        the numerical Ids of all created MIDI input devices.        the numerical Ids of all created MIDI input devices.
# Line 1635  Internet-Draft       LinuxSampler Contro Line 1967  Internet-Draft       LinuxSampler Contro
1967     Examples:     Examples:
1968    
1969        C: "LIST MIDI_INPUT_DEVICES"        C: "LIST MIDI_INPUT_DEVICES"
1970    
1971        S: "0,1,2"        S: "0,1,2"
1972    
1973        C: "LIST MIDI_INPUT_DEVICES"        C: "LIST MIDI_INPUT_DEVICES"
1974    
1975        S: "1,3"        S: "1,3"
1976    
1977  5.3.9  Getting current settings of a MIDI input device  
1978    6.3.9  Getting current settings of a MIDI input device
1979    
1980     Use the following command to get current settings of a specific,     Use the following command to get current settings of a specific,
1981     created MIDI input device:     created MIDI input device:
1982    
1983        GET MIDI_INPUT_DEVICE INFO <device-id>        GET MIDI_INPUT_DEVICE INFO <device-id>
1984    
1985     Where <device-id> is the numerical ID of the MIDI input device.     Where <device-id> is the numerical ID of the MIDI input device as
1986       returned by the "CREATE MIDI_INPUT_DEVICE" (Section 6.3.5) or "LIST
1987       MIDI_INPUT_DEVICES" (Section 6.3.8) command.
1988    
1989     Possible Answers:     Possible Answers:
1990    
# Line 1659  Internet-Draft       LinuxSampler Contro Line 1996  Internet-Draft       LinuxSampler Contro
1996        apostrophes (').  At the moment the following information        apostrophes (').  At the moment the following information
1997        categories are defined (independent of driver):        categories are defined (independent of driver):
1998    
1999    
2000    
2001           DRIVER -           DRIVER -
2002              identifier of the used MIDI input driver, as e.g.  returned  
2003              by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Section 5.3.2)              identifier of the used MIDI input driver, as e.g. returned
2004                by the "LIST AVAILABLE_MIDI_INPUT_DRIVERS" (Section 6.3.2)
2005              command              command
2006    
2007           ACTIVE -           ACTIVE -
2008    
2009              either true or false, if false then the MIDI device is              either true or false, if false then the MIDI device is
2010              inactive and doesn't listen to any incoming MIDI events and              inactive and doesn't listen to any incoming MIDI events and
2011              thus doesn't forward them to connected sampler channels              thus doesn't forward them to connected sampler channels
2012    
    The mentioned fields above don't have to be in particular order.  The  
    fields above are only those fields which are returned by all MIDI  
    input devices.  Every MIDI input driver might have its own,  
    additional driver specific parameters (see "GET MIDI_INPUT_DRIVER  
    INFO" (Section 5.3.3) command) which are also returned by this  
2013    
2014    
2015    Schoenebeck             Expires November 2, 2005               [Page 36]
2016    
2017  Schoenebeck            Expires November 19, 2005               [Page 30]  Internet-Draft        LinuxSampler Control Protocol             May 2005
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
2018    
2019    
2020       The mentioned fields above don't have to be in particular order.  The
2021       fields above are only those fields which are returned by all MIDI
2022       input devices.  Every MIDI input driver might have its own,
2023       additional driver specific parameters (see "GET MIDI_INPUT_DRIVER
2024       INFO" (Section 6.3.3) command) which are also returned by this
2025     command.     command.
2026    
2027     Example:     Example:
2028    
2029        C: "GET MIDI_INPUT_DEVICE INFO 0"        C: "GET MIDI_INPUT_DEVICE INFO 0"
2030    
2031        S: "DRIVER: ALSA"        S: "DRIVER: ALSA"
2032    
2033           "ACTIVE: true"           "ACTIVE: true"
2034    
2035           "."           "."
2036    
2037  5.3.10  Changing settings of MIDI input devices  
2038    6.3.10  Changing settings of MIDI input devices
2039    
2040     Use the following command to alter a specific setting of a created     Use the following command to alter a specific setting of a created
2041     MIDI input device:     MIDI input device:
# Line 1698  Internet-Draft       LinuxSampler Contro Line 2043  Internet-Draft       LinuxSampler Contro
2043        SET MIDI_INPUT_DEVICE_PARAMETER <device-id> <key>=<value>        SET MIDI_INPUT_DEVICE_PARAMETER <device-id> <key>=<value>
2044    
2045     Where <device-id> should be replaced by the numerical ID of the MIDI     Where <device-id> should be replaced by the numerical ID of the MIDI
2046     input device, <key> by the name of the parameter to change and     input device as returned by the "CREATE MIDI_INPUT_DEVICE"
2047     <value> by the new value for this parameter.     (Section 6.3.5) or "LIST MIDI_INPUT_DEVICES" (Section 6.3.8) command,
2048       <key> by the name of the parameter to change and <value> by the new
2049       value for this parameter.
2050    
2051     Possible Answers:     Possible Answers:
2052    
2053        "OK" -        "OK" -
2054    
2055           in case setting was successfully changed           in case setting was successfully changed
2056    
2057        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
2058    
2059           in case setting was changed successfully, but there are           in case setting was changed successfully, but there are
2060           noteworthy issue(s) related, providing an appropriate warning           noteworthy issue(s) related, providing an appropriate warning
2061           code and warning message           code and warning message
2062    
2063        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
2064    
2065           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
2066           error message           error message
2067    
2068    
2069    
2070    
2071    Schoenebeck             Expires November 2, 2005               [Page 37]
2072    
2073    Internet-Draft        LinuxSampler Control Protocol             May 2005
2074    
2075    
2076     Example:     Example:
2077    
2078        C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"        C: "SET MIDI_INPUT_DEVICE_PARAMETER 0 ACTIVE=false"
2079    
2080        S: "OK"        S: "OK"
2081    
2082  5.3.11  Getting information about a MIDI port  
2083    6.3.11  Getting information about a MIDI port
2084    
2085     Use the following command to get information about a MIDI port:     Use the following command to get information about a MIDI port:
2086    
2087        GET MIDI_INPUT_PORT INFO <device-id> <midi-port>        GET MIDI_INPUT_PORT INFO <device-id> <midi-port>
2088    
2089     Where <device-id> is the numerical ID of the MIDI input device and     Where <device-id> is the numerical ID of the MIDI input device as
2090     <midi-port> the MIDI input port number.     returned by the "CREATE MIDI_INPUT_DEVICE" (Section 6.3.5) or "LIST
2091       MIDI_INPUT_DEVICES" (Section 6.3.8) command and <midi-port> the MIDI
2092       input port number.
2093    
2094     Possible Answers:     Possible Answers:
2095    
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 31]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
2096        LinuxSampler will answer by sending a <CRLF> separated list.  Each        LinuxSampler will answer by sending a <CRLF> separated list.  Each
2097        answer line begins with the information category name followed by        answer line begins with the information category name followed by
2098        a colon and then a space character <SP> and finally the info        a colon and then a space character <SP> and finally the info
2099        character string to that info category.  At the moment the        character string to that info category.  At the moment the
2100        following information categories are defined:        following information categories are defined:
2101    
2102        NAME -        NAME -
2103    
2104           arbitrary character string naming the port           arbitrary character string naming the port
2105    
2106     The field above is only the one which is returned by all MIDI ports     The field above is only the one which is returned by all MIDI ports
# Line 1752  Internet-Draft       LinuxSampler Contro Line 2110  Internet-Draft       LinuxSampler Contro
2110     Example:     Example:
2111    
2112        C: "GET MIDI_INPUT_PORT INFO 0 0"        C: "GET MIDI_INPUT_PORT INFO 0 0"
2113    
2114        S: "NAME: 'Masterkeyboard'"        S: "NAME: 'Masterkeyboard'"
2115    
2116           "ALSA_SEQ_BINDINGS: '64:0'"           "ALSA_SEQ_BINDINGS: '64:0'"
2117    
2118           "."           "."
2119    
2120  5.3.12  Getting information about specific MIDI port parameter  
2121    6.3.12  Getting information about specific MIDI port parameter
2122    
2123     Use the following command to get detailed information about specific     Use the following command to get detailed information about specific
2124    
2125    
2126    
2127    Schoenebeck             Expires November 2, 2005               [Page 38]
2128    
2129    Internet-Draft        LinuxSampler Control Protocol             May 2005
2130    
2131    
2132     MIDI port parameter:     MIDI port parameter:
2133    
2134        GET MIDI_INPUT_PORT_PARAMETER INFO <dev-id> <port> <param>        GET MIDI_INPUT_PORT_PARAMETER INFO <dev-id> <port> <param>
2135    
2136     Where <dev-id> is the numerical ID of the MIDI input device as     Where <dev-id> is the numerical ID of the MIDI input device as
2137     returned by the "LIST MIDI_INPUT_DEVICES" (Section 5.3.8) command,     returned by the "CREATE MIDI_INPUT_DEVICE" (Section 6.3.5) or "LIST
2138     <port> the MIDI port number and <param> a specific port parameter     MIDI_INPUT_DEVICES" (Section 6.3.8) command, <port> the MIDI port
2139     name for which information should be obtained (as returned by the     number and <param> a specific port parameter name for which
2140     "GET MIDI_INPUT_PORT INFO" (Section 5.3.11) command).     information should be obtained (as returned by the "GET
2141       MIDI_INPUT_PORT INFO" (Section 6.3.11) command).
2142    
2143     Possible Answers:     Possible Answers:
2144    
# Line 1779  Internet-Draft       LinuxSampler Contro Line 2150  Internet-Draft       LinuxSampler Contro
2150        parameter and there is optional information which are only shown        parameter and there is optional information which are only shown
2151        dependently to the given MIDI port.  At the moment the following        dependently to the given MIDI port.  At the moment the following
2152        information categories are defined:        information categories are defined:
2153    
2154        TYPE -        TYPE -
2155    
2156           either "BOOL" for boolean value(s) or "INT" for integer           either "BOOL" for boolean value(s) or "INT" for integer
2157           value(s) or "FLOAT" for dotted number(s) or "STRING" for           value(s) or "FLOAT" for dotted number(s) or "STRING" for
2158           character string(s) (always returned)           character string(s) (always returned)
       DESCRIPTION -  
   
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 32]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
2159    
2160          DESCRIPTION -
2161    
2162           arbitrary text describing the purpose of the parameter (always           arbitrary text describing the purpose of the parameter (always
2163           returned)           returned)
2164    
2165        FIX -        FIX -
2166    
2167           either true or false, if true then this parameter is read only,           either true or false, if true then this parameter is read only,
2168           thus cannot be altered (always returned)           thus cannot be altered (always returned)
2169    
2170        MULTIPLICITY -        MULTIPLICITY -
2171    
2172           either true or false, defines if this parameter allows only one           either true or false, defines if this parameter allows only one
2173           value or a list of values, where true means multiple values and           value or a list of values, where true means multiple values and
2174           false only a single value allowed (always returned)           false only a single value allowed (always returned)
2175    
2176        RANGE_MIN -        RANGE_MIN -
2177    
2178           defines lower limit of the allowed value range for this           defines lower limit of the allowed value range for this
2179           parameter, can be an integer value as well as a dotted number,           parameter, can be an integer value as well as a dotted number,
2180    
2181    
2182    
2183    Schoenebeck             Expires November 2, 2005               [Page 39]
2184    
2185    Internet-Draft        LinuxSampler Control Protocol             May 2005
2186    
2187    
2188           this parameter is usually used in conjunction with 'RANGE_MAX'           this parameter is usually used in conjunction with 'RANGE_MAX'
2189           but may also appear without (optionally returned, dependent to           but may also appear without (optionally returned, dependent to
2190           driver and port parameter)           driver and port parameter)
2191    
2192        RANGE_MAX -        RANGE_MAX -
2193    
2194           defines upper limit of the allowed value range for this           defines upper limit of the allowed value range for this
2195           parameter, can be an integer value as well as a dotted number,           parameter, can be an integer value as well as a dotted number,
2196           this parameter is usually used in conjunction with 'RANGE_MIN'           this parameter is usually used in conjunction with 'RANGE_MIN'
2197           but may also appear without (optionally returned, dependent to           but may also appear without (optionally returned, dependent to
2198           driver and port parameter)           driver and port parameter)
2199    
2200        POSSIBILITIES -        POSSIBILITIES -
2201    
2202           comma separated list of possible values for this parameter,           comma separated list of possible values for this parameter,
2203           character strings are encapsulated into apostrophes (optionally           character strings are encapsulated into apostrophes (optionally
2204           returned, dependent to device and port parameter)           returned, dependent to device and port parameter)
# Line 1824  Internet-Draft       LinuxSampler Contro Line 2208  Internet-Draft       LinuxSampler Contro
2208     Example:     Example:
2209    
2210        C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"        C: "GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS"
2211    
2212        S: "DESCRIPTION: bindings to other ALSA sequencer clients"        S: "DESCRIPTION: bindings to other ALSA sequencer clients"
2213    
2214           "TYPE: STRING"           "TYPE: STRING"
2215    
2216           "FIX: false"           "FIX: false"
2217    
2218           "MULTIPLICITY: true"           "MULTIPLICITY: true"
2219    
2220           "POSSIBILITIES: '64:0','68:0','68:1'"           "POSSIBILITIES: '64:0','68:0','68:1'"
2221    
2222           "."           "."
2223    
2224  5.3.13  Changing settings of MIDI input ports  
2225    6.3.13  Changing settings of MIDI input ports
2226    
2227     Use the following command to alter a specific setting of a MIDI input     Use the following command to alter a specific setting of a MIDI input
2228     port:     port:
# Line 1839  Internet-Draft       LinuxSampler Contro Line 2230  Internet-Draft       LinuxSampler Contro
2230        SET MIDI_INPUT_PORT_PARAMETER <device-id> <port> <key>=<value>        SET MIDI_INPUT_PORT_PARAMETER <device-id> <port> <key>=<value>
2231    
2232     Where <device-id> should be replaced by the numerical ID of the MIDI     Where <device-id> should be replaced by the numerical ID of the MIDI
2233     device, <port> by the MIDI port number, <key> by the name of the     device as returned by the "CREATE MIDI_INPUT_DEVICE" (Section 6.3.5)
2234     parameter to change and <value> by the new value for this parameter.     or "LIST MIDI_INPUT_DEVICES" (Section 6.3.8) command, <port> by the
2235       MIDI port number, <key> by the name of the parameter to change and
2236    
2237    
2238    
2239    Schoenebeck             Expires November 2, 2005               [Page 40]
2240    
2241  Schoenebeck            Expires November 19, 2005               [Page 33]  Internet-Draft        LinuxSampler Control Protocol             May 2005
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
2242    
2243    
2244       <value> by the new value for this parameter.
2245    
2246     Possible Answers:     Possible Answers:
2247    
2248        "OK" -        "OK" -
2249    
2250           in case setting was successfully changed           in case setting was successfully changed
2251    
2252        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
2253    
2254           in case setting was changed successfully, but there are           in case setting was changed successfully, but there are
2255           noteworthy issue(s) related, providing an appropriate warning           noteworthy issue(s) related, providing an appropriate warning
2256           code and warning message           code and warning message
2257    
2258        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
2259    
2260           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
2261           error message           error message
2262    
# Line 1865  Internet-Draft       LinuxSampler Contro Line 2264  Internet-Draft       LinuxSampler Contro
2264    
2265    
2266    
2267  5.4  Configuring sampler channels  
2268    6.4  Configuring sampler channels
2269    
2270     The following commands describe how to add and remove sampler     The following commands describe how to add and remove sampler
2271     channels, deploy sampler engines, load instruments and connect     channels, associate a sampler channel with a sampler engine, load
2272     sampler channels to MIDI and audio devices.     instruments and connect sampler channels to MIDI and audio devices.
2273    
2274  5.4.1  Loading an instrument  6.4.1  Loading an instrument
2275    
2276     An instrument file can be loaded and assigned to a sampler channel by     An instrument file can be loaded and assigned to a sampler channel by
2277     one of the following commands:     one of the following commands:
2278    
2279        LOAD INSTRUMENT [NON_MODAL] '<filename>' <instr-index>        LOAD INSTRUMENT [NON_MODAL] '<filename>' <instr-index> <sampler-
2280        <sampler-channel>        channel>
2281    
2282     Where <filename> is the name of the instrument file on the     Where <filename> is the name of the instrument file on the
2283     LinuxSampler instance's host system, <instr-index> the index of the     LinuxSampler instance's host system, <instr-index> the index of the
# Line 1889  Internet-Draft       LinuxSampler Contro Line 2289  Internet-Draft       LinuxSampler Contro
2289     is that the regular command returns OK only after the instrument has     is that the regular command returns OK only after the instrument has
2290     been fully loaded and the channel is ready to be used while NON_MODAL     been fully loaded and the channel is ready to be used while NON_MODAL
2291     version returns immediately and a background process is launched to     version returns immediately and a background process is launched to
2292     load the instrument on the channel.  The GET CHANNEL INFO (Section  
2293     5.4.10) command can be used to obtain loading progress from  
2294    
2295    Schoenebeck             Expires November 2, 2005               [Page 41]
2296    
2297    Internet-Draft        LinuxSampler Control Protocol             May 2005
2298    
2299    
2300       load the instrument on the channel.  The GET CHANNEL INFO
2301       (Section 6.4.10) command can be used to obtain loading progress from
2302     INSTRUMENT_STATUS field.  LOAD command will perform sanity checks     INSTRUMENT_STATUS field.  LOAD command will perform sanity checks
2303     such as making sure that the file could be read and it is of a proper     such as making sure that the file could be read and it is of a proper
2304     format and SHOULD return ERR and SHOULD not launch the background     format and SHOULD return ERR and SHOULD not launch the background
# Line 1898  Internet-Draft       LinuxSampler Contro Line 2306  Internet-Draft       LinuxSampler Contro
2306    
2307     Possible Answers:     Possible Answers:
2308    
   
   
 Schoenebeck            Expires November 19, 2005               [Page 34]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
2309        "OK" -        "OK" -
2310    
2311           in case the instrument was successfully loaded           in case the instrument was successfully loaded
2312    
2313        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
2314    
2315           in case the instrument was loaded successfully, but there are           in case the instrument was loaded successfully, but there are
2316           noteworthy issue(s) related (e.g.  Engine doesn't support one           noteworthy issue(s) related (e.g.  Engine doesn't support one
2317           or more patch parameters provided by the loaded instrument           or more patch parameters provided by the loaded instrument
2318           file), providing an appropriate warning code and warning           file), providing an appropriate warning code and warning
2319           message           message
2320    
2321        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
2322    
2323           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
2324           error message           error message
2325    
# Line 1921  Internet-Draft       LinuxSampler Contro Line 2327  Internet-Draft       LinuxSampler Contro
2327    
2328    
2329    
 5.4.2  Loading a sampler engine  
2330    
2331     A sample engine can be deployed and assigned to a specific sampler  6.4.2  Loading a sampler engine
2332     channel by the following command:  
2333       A sampler engine type can be associated to a specific sampler channel
2334       by the following command:
2335    
2336        LOAD ENGINE <engine-name> <sampler-channel>        LOAD ENGINE <engine-name> <sampler-channel>
2337    
2338     Where <engine-name> is an engine name as obtained by the "LIST     Where <engine-name> is an engine name as obtained by the "LIST
2339     AVAILABLE_ENGINES" (Section 5.4.8) command and <sampler-channel> the     AVAILABLE_ENGINES" (Section 6.4.8) command and <sampler-channel> the
2340     sampler channel the deployed engine should be assigned to.  Even if     sampler channel as returned by the "ADD CHANNEL" (Section 6.4.5) or
2341     the respective sampler channel has already a deployed engine with     "LIST CHANNELS" (Section 6.4.4) command where the engine type should
2342     that engine name, a new engine instance will be assigned to the     be assigned to.  This command should be issued after adding a new
2343     sampler channel.     sampler channel and before any other control commands on the new
2344       sampler channel.  It can also be used to change the engine type of a
2345       sampler channel.  This command has (currently) no way to define or
2346       force if a new engine instance should be created and assigned to the
2347       given sampler channel or if an already existing instance of that
2348    
2349    
2350    
2351    Schoenebeck             Expires November 2, 2005               [Page 42]
2352    
2353    Internet-Draft        LinuxSampler Control Protocol             May 2005
2354    
2355    
2356       engine type, shared with other sampler channels, should be used.
2357    
2358     Possible Answers:     Possible Answers:
2359    
2360        "OK" -        "OK" -
2361    
2362           in case the engine was successfully deployed           in case the engine was successfully deployed
2363    
2364        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
2365    
2366           in case the engine was deployed successfully, but there are           in case the engine was deployed successfully, but there are
2367           noteworthy issue(s) related, providing an appropriate warning           noteworthy issue(s) related, providing an appropriate warning
2368           code and warning message           code and warning message
2369    
2370        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
2371    
2372           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
2373           error message           error message
2374    
# Line 1952  Internet-Draft       LinuxSampler Contro Line 2377  Internet-Draft       LinuxSampler Contro
2377    
2378    
2379    
2380    6.4.3  Getting all created sampler channel count
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 35]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
 5.4.3  Getting all created sampler channel count  
2381    
2382     The number of sampler channels can change on runtime.  To get the     The number of sampler channels can change on runtime.  To get the
2383     current amount of sampler channels, the front-end can send the     current amount of sampler channels, the front-end can send the
# Line 1977  Internet-Draft       LinuxSampler Contro Line 2393  Internet-Draft       LinuxSampler Contro
2393     Example:     Example:
2394    
2395        C: "GET CHANNELS"        C: "GET CHANNELS"
2396    
2397        S: "12"        S: "12"
2398    
2399  5.4.4  Getting all created sampler channel list  
2400    6.4.4  Getting all created sampler channel list
2401    
2402     The number of sampler channels can change on runtime.  To get the     The number of sampler channels can change on runtime.  To get the
2403     current list of sampler channels, the front-end can send the     current list of sampler channels, the front-end can send the
2404    
2405    
2406    
2407    Schoenebeck             Expires November 2, 2005               [Page 43]
2408    
2409    Internet-Draft        LinuxSampler Control Protocol             May 2005
2410    
2411    
2412     following command:     following command:
2413    
2414        LIST CHANNELS        LIST CHANNELS
# Line 1995  Internet-Draft       LinuxSampler Contro Line 2421  Internet-Draft       LinuxSampler Contro
2421     Example:     Example:
2422    
2423        C: "LIST CHANNELS"        C: "LIST CHANNELS"
2424    
2425        S: "0,1,2,3,4,5,6,9,10,11,15,20"        S: "0,1,2,3,4,5,6,9,10,11,15,20"
2426    
2427  5.4.5  Adding a new sampler channel  
2428    6.4.5  Adding a new sampler channel
2429    
2430     A new sampler channel can be added to the end of the sampler channel     A new sampler channel can be added to the end of the sampler channel
2431     list by sending the following command:     list by sending the following command:
# Line 2007  Internet-Draft       LinuxSampler Contro Line 2435  Internet-Draft       LinuxSampler Contro
2435     This will increment the sampler channel count by one and the new     This will increment the sampler channel count by one and the new
2436     sampler channel will be appended to the end of the sampler channel     sampler channel will be appended to the end of the sampler channel
2437     list.  The front-end should send the respective, related commands     list.  The front-end should send the respective, related commands
2438     right after to e.g.  load an engine, load an instrument and setting     right after to e.g. load an engine, load an instrument and setting
2439     input, output method and eventually other commands to initialize the     input, output method and eventually other commands to initialize the
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 36]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
2440     new channel.  The front-end should use the sampler channel returned     new channel.  The front-end should use the sampler channel returned
2441     by the answer of this command to perform the previously recommended     by the answer of this command to perform the previously recommended
2442     commands, to avoid race conditions e.g.  with other front-ends that     commands, to avoid race conditions e.g. with other front-ends that
2443     might also have sent an "ADD CHANNEL" command.     might also have sent an "ADD CHANNEL" command.
2444    
2445     Possible Answers:     Possible Answers:
2446    
2447        "OK[<sampler-channel>]" -        "OK[<sampler-channel>]" -
2448           in case a new sampler channel could be added, where  
2449           <sampler-channel> reflects the channel number of the new           in case a new sampler channel could be added, where <sampler-
2450           created sampler channel which should be used to set up the           channel> reflects the channel number of the new created sampler
2451           sampler channel by sending subsequent initialization commands           channel which should be used to set up the sampler channel by
2452             sending subsequent initialization commands
2453    
2454        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
2455    
2456           in case a new channel was added successfully, but there are           in case a new channel was added successfully, but there are
2457           noteworthy issue(s) related, providing an appropriate warning           noteworthy issue(s) related, providing an appropriate warning
2458           code and warning message           code and warning message
2459    
2460    
2461    
2462    
2463    Schoenebeck             Expires November 2, 2005               [Page 44]
2464    
2465    Internet-Draft        LinuxSampler Control Protocol             May 2005
2466    
2467    
2468        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
2469    
2470           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
2471           error message           error message
2472    
# Line 2041  Internet-Draft       LinuxSampler Contro Line 2474  Internet-Draft       LinuxSampler Contro
2474    
2475    
2476    
2477  5.4.6  Removing a sampler channel  
2478    6.4.6  Removing a sampler channel
2479    
2480     A sampler channel can be removed by sending the following command:     A sampler channel can be removed by sending the following command:
2481    
2482        REMOVE CHANNEL <sampler-channel>        REMOVE CHANNEL <sampler-channel>
2483    
2484     Where <sampler-channel> should be replaced by the number of the     Where <sampler-channel> should be replaced by the number of the
2485     sampler channel as given by the "ADD CHANNEL" (Section 5.4.5) or     sampler channel as given by the "ADD CHANNEL" (Section 6.4.5) or
2486     "LIST CHANNELS" (Section 5.4.4) command.  The channel numbers of all     "LIST CHANNELS" (Section 6.4.4) command.  The channel numbers of all
2487     subsequent sampler channels remain the same.     subsequent sampler channels remain the same.
2488    
2489     Possible Answers:     Possible Answers:
2490    
2491        "OK" -        "OK" -
2492    
2493           in case the given sampler channel could be removed           in case the given sampler channel could be removed
2494    
2495        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
2496    
2497           in case the given channel was removed, but there are noteworthy           in case the given channel was removed, but there are noteworthy
2498           issue(s) related, providing an appropriate warning code and           issue(s) related, providing an appropriate warning code and
2499           warning message           warning message
2500    
2501        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
2502    
2503           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
2504           error message           error message
2505    
# Line 2068  Internet-Draft       LinuxSampler Contro Line 2507  Internet-Draft       LinuxSampler Contro
2507    
2508    
2509    
 Schoenebeck            Expires November 19, 2005               [Page 37]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
2510    
2511    6.4.7  Getting amount of available engines
2512    
2513       The front-end can ask for the number of available engines by sending
2514       the following command:
2515    
2516    
 5.4.7  Getting amount of available engines  
2517    
2518     The front-end can ask for the number of available engines by sending  
2519     the following command:  Schoenebeck             Expires November 2, 2005               [Page 45]
2520    
2521    Internet-Draft        LinuxSampler Control Protocol             May 2005
2522    
2523    
2524        GET AVAILABLE_ENGINES        GET AVAILABLE_ENGINES
2525    
# Line 2090  Internet-Draft       LinuxSampler Contro Line 2531  Internet-Draft       LinuxSampler Contro
2531     Example:     Example:
2532    
2533        C: "GET AVAILABLE_ENGINES"        C: "GET AVAILABLE_ENGINES"
2534    
2535        S: "4"        S: "4"
2536    
2537  5.4.8  Getting all available engines  
2538    6.4.8  Getting all available engines
2539    
2540     The front-end can ask for a list of all available engines by sending     The front-end can ask for a list of all available engines by sending
2541     the following command:     the following command:
# Line 2109  Internet-Draft       LinuxSampler Contro Line 2552  Internet-Draft       LinuxSampler Contro
2552     Example:     Example:
2553    
2554        C: "LIST AVAILABLE_ENGINES"        C: "LIST AVAILABLE_ENGINES"
2555    
2556        S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"        S: "'GigEngine','AkaiEngine','DLSEngine','JoesCustomEngine'"
2557    
2558  5.4.9  Getting information about an engine  
2559    6.4.9  Getting information about an engine
2560    
2561     The front-end can ask for information about a specific engine by     The front-end can ask for information about a specific engine by
2562     sending the following command:     sending the following command:
# Line 2119  Internet-Draft       LinuxSampler Contro Line 2564  Internet-Draft       LinuxSampler Contro
2564        GET ENGINE INFO <engine-name>        GET ENGINE INFO <engine-name>
2565    
2566     Where <engine-name> is an engine name as obtained by the "LIST     Where <engine-name> is an engine name as obtained by the "LIST
2567     AVAILABLE_ENGINES" (Section 5.4.8) command.     AVAILABLE_ENGINES" (Section 6.4.8) command.
2568    
2569       Possible Answers:
2570    
2571    
2572    
 Schoenebeck            Expires November 19, 2005               [Page 38]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
2573    
2574    
2575     Possible Answers:  Schoenebeck             Expires November 2, 2005               [Page 46]
2576    
2577    Internet-Draft        LinuxSampler Control Protocol             May 2005
2578    
2579    
2580        LinuxSampler will answer by sending a <CRLF> separated list.  Each        LinuxSampler will answer by sending a <CRLF> separated list.  Each
2581        answer line begins with the information category name followed by        answer line begins with the information category name followed by
# Line 2137  Internet-Draft       LinuxSampler Contro Line 2583  Internet-Draft       LinuxSampler Contro
2583        character string to that info category.  At the moment the        character string to that info category.  At the moment the
2584        following categories are defined:        following categories are defined:
2585    
2586    
2587    
2588           DESCRIPTION -           DESCRIPTION -
2589    
2590              arbitrary description text about the engine              arbitrary description text about the engine
2591    
2592           VERSION -           VERSION -
2593    
2594              arbitrary character string regarding the engine's version              arbitrary character string regarding the engine's version
2595    
2596     The mentioned fields above don't have to be in particular order.     The mentioned fields above don't have to be in particular order.
# Line 2147  Internet-Draft       LinuxSampler Contro Line 2598  Internet-Draft       LinuxSampler Contro
2598     Example:     Example:
2599    
2600        C: "GET ENGINE INFO JoesCustomEngine"        C: "GET ENGINE INFO JoesCustomEngine"
2601    
2602        S: "DESCRIPTION: this is Joe's custom sampler engine"        S: "DESCRIPTION: this is Joe's custom sampler engine"
2603    
2604           "VERSION: testing-1.0"           "VERSION: testing-1.0"
2605    
2606           "."           "."
2607    
2608  5.4.10  Getting sampler channel information  
2609    6.4.10  Getting sampler channel information
2610    
2611     The front-end can ask for the current settings of a sampler channel     The front-end can ask for the current settings of a sampler channel
2612     by sending the following command:     by sending the following command:
# Line 2159  Internet-Draft       LinuxSampler Contro Line 2614  Internet-Draft       LinuxSampler Contro
2614        GET CHANNEL INFO <sampler-channel>        GET CHANNEL INFO <sampler-channel>
2615    
2616     Where <sampler-channel> is the sampler channel number the front-end     Where <sampler-channel> is the sampler channel number the front-end
2617     is interested in.     is interested in as returned by the "ADD CHANNEL" (Section 6.4.5) or
2618       "LIST CHANNELS" (Section 6.4.4) command.
2619    
2620     Possible Answers:     Possible Answers:
2621    
# Line 2169  Internet-Draft       LinuxSampler Contro Line 2625  Internet-Draft       LinuxSampler Contro
2625        character string to that setting category.  At the moment the        character string to that setting category.  At the moment the
2626        following categories are defined:        following categories are defined:
2627    
          ENGINE_NAME -  
             name of the engine that is deployed on the sampler channel,  
             "NONE" if there's no engine deployed yet for this sampler  
             channel  
          AUDIO_OUTPUT_DEVICE -  
             numerical ID of the audio output device which is currently  
             connected to this sampler channel to output the audio  
             signal, "NONE" if there's no device connected to this  
2628    
2629    
2630    
2631  Schoenebeck            Expires November 19, 2005               [Page 39]  Schoenebeck             Expires November 2, 2005               [Page 47]
2632    
2633  Internet-Draft       LinuxSampler Control Protocol              May 2005  Internet-Draft        LinuxSampler Control Protocol             May 2005
2634    
2635    
2636    
2637    
2638             ENGINE_NAME -
2639    
2640                name of the engine that is associated with the sampler
2641                channel, "NONE" if there's no engine associated yet for this
2642              sampler channel              sampler channel
2643    
2644             AUDIO_OUTPUT_DEVICE -
2645    
2646                numerical ID of the audio output device which is currently
2647                connected to this sampler channel to output the audio
2648                signal, "NONE" if there's no device connected to this
2649                sampler channel
2650    
2651           AUDIO_OUTPUT_CHANNELS -           AUDIO_OUTPUT_CHANNELS -
2652    
2653              number of output channels the sampler channel offers              number of output channels the sampler channel offers
2654              (dependent to used sampler engine and loaded instrument)              (dependent to used sampler engine and loaded instrument)
2655    
2656           AUDIO_OUTPUT_ROUTING -           AUDIO_OUTPUT_ROUTING -
2657    
2658              comma separated list which reflects to which audio channel              comma separated list which reflects to which audio channel
2659              of the selected audio output device each sampler output              of the selected audio output device each sampler output
2660              channel is routed to, e.g.  "0,3" would mean the engine's              channel is routed to, e.g. "0,3" would mean the engine's
2661              output channel 0 is routed to channel 0 of the audio output              output channel 0 is routed to channel 0 of the audio output
2662              device and the engine's output channel 1 is routed to the              device and the engine's output channel 1 is routed to the
2663              channel 3 of the audio output device              channel 3 of the audio output device
2664    
2665           INSTRUMENT_FILE -           INSTRUMENT_FILE -
2666    
2667              the file name of the loaded instrument, "NONE" if there's no              the file name of the loaded instrument, "NONE" if there's no
2668              instrument yet loaded for this sampler channel              instrument yet loaded for this sampler channel
2669    
2670           INSTRUMENT_NR -           INSTRUMENT_NR -
2671    
2672              the instrument index number of the loaded instrument              the instrument index number of the loaded instrument
2673    
2674           INSTRUMENT_NAME -           INSTRUMENT_NAME -
2675    
2676              the instrument name of the loaded instrument              the instrument name of the loaded instrument
2677    
2678           INSTRUMENT_STATUS -           INSTRUMENT_STATUS -
2679    
2680              integer values 0 to 100 indicating loading progress              integer values 0 to 100 indicating loading progress
2681              percentage for the instrument.  Negative value indicates a              percentage for the instrument.  Negative value indicates a
2682              loading exception.  Value of 100 indicates that the              loading exception.  Value of 100 indicates that the
2683              instrument is fully loaded.              instrument is fully loaded.
2684    
2685    
2686    
2687    Schoenebeck             Expires November 2, 2005               [Page 48]
2688    
2689    Internet-Draft        LinuxSampler Control Protocol             May 2005
2690    
2691    
2692           MIDI_INPUT_DEVICE -           MIDI_INPUT_DEVICE -
2693    
2694              numerical ID of the MIDI input device which is currently              numerical ID of the MIDI input device which is currently
2695              connected to this sampler channel to deliver MIDI input              connected to this sampler channel to deliver MIDI input
2696              commands, "NONE" if there's no device connected to this              commands, "NONE" if there's no device connected to this
2697              sampler channel              sampler channel
2698    
2699           MIDI_INPUT_PORT -           MIDI_INPUT_PORT -
2700    
2701              port number of the MIDI input device              port number of the MIDI input device
2702    
2703           MIDI_INPUT_CHANNEL -           MIDI_INPUT_CHANNEL -
2704    
2705              the MIDI input channel number this sampler channel should              the MIDI input channel number this sampler channel should
2706              listen to or "ALL" to listen on all MIDI channels              listen to or "ALL" to listen on all MIDI channels
2707    
2708           VOLUME -           VOLUME -
2709    
2710              optionally dotted number for the channel volume factor              optionally dotted number for the channel volume factor
2711              (where a value < 1.0 means attenuation and a value > 1.0              (where a value < 1.0 means attenuation and a value > 1.0
2712              means amplification)              means amplification)
2713    
2714             MUTE -
2715    
2716                Determines whether the channel is muted, "true" if the
2717                channel is muted, "false" if the channel is not muted, and
2718                "MUTED_BY_SOLO" if the channel is muted because of the
2719                presence of a solo channel and will be unmuted when there
2720                are no solo channels left
2721    
2722             SOLO -
2723    
2724                Determines whether this is a solo channel, "true" if the
2725                channel is a solo channel; "false" otherwise
2726    
2727     The mentioned fields above don't have to be in particular order.     The mentioned fields above don't have to be in particular order.
2728    
2729     Example:     Example:
2730    
2731        C: "GET CHANNEL INFO 34"        C: "GET CHANNEL INFO 34"
2732    
2733        S: "ENGINE_NAME: GigEngine"        S: "ENGINE_NAME: GigEngine"
2734    
2735           "VOLUME: 1.0"           "VOLUME: 1.0"
2736    
2737           "AUDIO_OUTPUT_DEVICE: 0"           "AUDIO_OUTPUT_DEVICE: 0"
          "AUDIO_OUTPUT_CHANNELS: 2"  
2738    
2739    
2740    
2741    
 Schoenebeck            Expires November 19, 2005               [Page 40]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
2742    
2743    Schoenebeck             Expires November 2, 2005               [Page 49]
2744    
2745    Internet-Draft        LinuxSampler Control Protocol             May 2005
2746    
2747    
2748             "AUDIO_OUTPUT_CHANNELS: 2"
2749    
2750           "AUDIO_OUTPUT_ROUTING: 0,1"           "AUDIO_OUTPUT_ROUTING: 0,1"
2751    
2752           "INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"           "INSTRUMENT_FILE: /home/joe/FazioliPiano.gig"
2753    
2754           "INSTRUMENT_NR: 0"           "INSTRUMENT_NR: 0"
2755    
2756           "INSTRUMENT_NAME: Fazioli Piano"           "INSTRUMENT_NAME: Fazioli Piano"
2757    
2758           "INSTRUMENT_STATUS: 100"           "INSTRUMENT_STATUS: 100"
2759    
2760           "MIDI_INPUT_DEVICE: 0"           "MIDI_INPUT_DEVICE: 0"
2761    
2762           "MIDI_INPUT_PORT: 0"           "MIDI_INPUT_PORT: 0"
2763    
2764           "MIDI_INPUT_CHANNEL: 5"           "MIDI_INPUT_CHANNEL: 5"
2765    
2766           "."           "."
2767    
2768  5.4.11  Current number of active voices  
2769    6.4.11  Current number of active voices
2770    
2771     The front-end can ask for the current number of active voices on a     The front-end can ask for the current number of active voices on a
2772     sampler channel by sending the following command:     sampler channel by sending the following command:
# Line 2259  Internet-Draft       LinuxSampler Contro Line 2774  Internet-Draft       LinuxSampler Contro
2774        GET CHANNEL VOICE_COUNT <sampler-channel>        GET CHANNEL VOICE_COUNT <sampler-channel>
2775    
2776     Where <sampler-channel> is the sampler channel number the front-end     Where <sampler-channel> is the sampler channel number the front-end
2777     is interested in.     is interested in as returned by the "ADD CHANNEL" (Section 6.4.5) or
2778       "LIST CHANNELS" (Section 6.4.4) command.
2779    
2780     Possible Answers:     Possible Answers:
2781    
# Line 2270  Internet-Draft       LinuxSampler Contro Line 2786  Internet-Draft       LinuxSampler Contro
2786    
2787    
2788    
2789  5.4.12  Current number of active disk streams  
2790    6.4.12  Current number of active disk streams
2791    
2792     The front-end can ask for the current number of active disk streams     The front-end can ask for the current number of active disk streams
2793     on a sampler channel by sending the following command:     on a sampler channel by sending the following command:
2794    
2795    
2796    
2797    
2798    
2799    Schoenebeck             Expires November 2, 2005               [Page 50]
2800    
2801    Internet-Draft        LinuxSampler Control Protocol             May 2005
2802    
2803    
2804        GET CHANNEL STREAM_COUNT <sampler-channel>        GET CHANNEL STREAM_COUNT <sampler-channel>
2805    
2806     Where <sampler-channel> is the sampler channel number the front-end     Where <sampler-channel> is the sampler channel number the front-end
2807     is interested in.     is interested in as returned by the "ADD CHANNEL" (Section 6.4.5) or
2808       "LIST CHANNELS" (Section 6.4.4) command.
2809    
2810     Possible Answers:     Possible Answers:
2811    
# Line 2292  Internet-Draft       LinuxSampler Contro Line 2819  Internet-Draft       LinuxSampler Contro
2819    
2820    
2821    
2822  Schoenebeck            Expires November 19, 2005               [Page 41]  6.4.13  Current fill state of disk stream buffers
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
   
   
 5.4.13  Current fill state of disk stream buffers  
2823    
2824     The front-end can ask for the current fill state of all disk streams     The front-end can ask for the current fill state of all disk streams
2825     on a sampler channel by sending the following command:     on a sampler channel by sending the following command:
# Line 2311  Internet-Draft       LinuxSampler Contro Line 2831  Internet-Draft       LinuxSampler Contro
2831        GET CHANNEL BUFFER_FILL PERCENTAGE <sampler-channel>        GET CHANNEL BUFFER_FILL PERCENTAGE <sampler-channel>
2832    
2833     to get the fill state in percent, where <sampler-channel> is the     to get the fill state in percent, where <sampler-channel> is the
2834     sampler channel number the front-end is interested in.     sampler channel number the front-end is interested in as returned by
2835       the "ADD CHANNEL" (Section 6.4.5) or "LIST CHANNELS" (Section 6.4.4)
2836       command.
2837    
2838     Possible Answers:     Possible Answers:
2839    
# Line 2328  Internet-Draft       LinuxSampler Contro Line 2850  Internet-Draft       LinuxSampler Contro
2850    
2851     Examples:     Examples:
2852    
2853    
2854    
2855    Schoenebeck             Expires November 2, 2005               [Page 51]
2856    
2857    Internet-Draft        LinuxSampler Control Protocol             May 2005
2858    
2859    
2860        C: "GET CHANNEL BUFFER_FILL BYTES 4"        C: "GET CHANNEL BUFFER_FILL BYTES 4"
2861    
2862        S: "[115]420500,[116]510300,[75]110000,[120]230700"        S: "[115]420500,[116]510300,[75]110000,[120]230700"
2863    
2864        C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"        C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
2865    
2866        S: "[115]90%,[116]98%,[75]40%,[120]62%"        S: "[115]90%,[116]98%,[75]40%,[120]62%"
2867    
2868        C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"        C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4"
2869    
2870        S: ""        S: ""
2871    
2872  5.4.14  Setting audio output device  
2873    6.4.14  Setting audio output device
2874    
2875     The front-end can set the audio output device on a specific sampler     The front-end can set the audio output device on a specific sampler
2876     channel by sending the following command:     channel by sending the following command:
# Line 2343  Internet-Draft       LinuxSampler Contro Line 2878  Internet-Draft       LinuxSampler Contro
2878        SET CHANNEL AUDIO_OUTPUT_DEVICE <sampler-channel>        SET CHANNEL AUDIO_OUTPUT_DEVICE <sampler-channel>
2879        <audio-device-id>        <audio-device-id>
2880    
2881     Where <audio-device-id> is the numerical ID of the audio output     Where <sampler-channel> is the respective sampler channel number as
2882     device and <sampler-channel> is the respective sampler channel     returned by the "ADD CHANNEL" (Section 6.4.5) or "LIST CHANNELS"
2883       (Section 6.4.4) command and <audio-device-id> is the numerical ID of
2884       the audio output device as given by the "CREATE AUDIO_OUTPUT_DEVICE"
2885       (Section 6.2.5) or "LIST AUDIO_OUTPUT_DEVICES" (Section 6.2.8)
2886  Schoenebeck            Expires November 19, 2005               [Page 42]     command.
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
    number.  
2887    
2888     Possible Answers:     Possible Answers:
2889    
2890        "OK" -        "OK" -
2891    
2892           on success           on success
2893    
2894        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
2895    
2896           if audio output device was set, but there are noteworthy           if audio output device was set, but there are noteworthy
2897           issue(s) related, providing an appropriate warning code and           issue(s) related, providing an appropriate warning code and
2898           warning message           warning message
2899    
2900        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
2901    
2902           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
2903           error message           error message
2904    
# Line 2371  Internet-Draft       LinuxSampler Contro Line 2906  Internet-Draft       LinuxSampler Contro
2906    
2907    
2908    
2909  5.4.15  Setting audio output type  
2910    
2911    Schoenebeck             Expires November 2, 2005               [Page 52]
2912    
2913    Internet-Draft        LinuxSampler Control Protocol             May 2005
2914    
2915    
2916    
2917    
2918    
2919    6.4.15  Setting audio output type
2920    
2921     DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!     DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
2922    
2923     The front-end can alter the audio output type on a specific sampler     The front-end can alter the audio output type on a specific sampler
2924     channel by sending the following command:     channel by sending the following command:
2925    
2926        SET CHANNEL AUDIO_OUTPUT_TYPE <sampler-channel>        SET CHANNEL AUDIO_OUTPUT_TYPE <sampler-channel> <audio-output-
2927        <audio-output-type>        type>
2928    
2929     Where <audio-output-type> is currently either "ALSA" or "JACK" and     Where <audio-output-type> is currently either "ALSA" or "JACK" and
2930     <sampler-channel> is the respective sampler channel number.     <sampler-channel> is the respective sampler channel number.
# Line 2387  Internet-Draft       LinuxSampler Contro Line 2932  Internet-Draft       LinuxSampler Contro
2932     Possible Answers:     Possible Answers:
2933    
2934        "OK" -        "OK" -
2935    
2936           on success           on success
2937    
2938        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
2939    
2940           if audio output type was set, but there are noteworthy issue(s)           if audio output type was set, but there are noteworthy issue(s)
2941           related, providing an appropriate warning code and warning           related, providing an appropriate warning code and warning
2942           message           message
2943    
2944        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
2945    
2946           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
2947           error message           error message
2948    
# Line 2401  Internet-Draft       LinuxSampler Contro Line 2951  Internet-Draft       LinuxSampler Contro
2951    
2952    
2953    
2954    6.4.16  Setting audio output channel
2955    
2956       The front-end can alter the audio output channel on a specific
2957       sampler channel by sending the following command:
2958    
2959          SET CHANNEL AUDIO_OUTPUT_CHANNEL <sampler-chan> <audio-out>
2960          <audio-in>
2961    
2962  Schoenebeck            Expires November 19, 2005               [Page 43]     Where <sampler-chan> is the sampler channel number as returned by the
2963       "ADD CHANNEL" (Section 6.4.5) or "LIST CHANNELS" (Section 6.4.4)
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
2964    
2965    
 5.4.16  Setting audio output channel  
2966    
2967     The front-end can alter the audio output channel on a specific  Schoenebeck             Expires November 2, 2005               [Page 53]
2968     sampler channel by sending the following command:  
2969    Internet-Draft        LinuxSampler Control Protocol             May 2005
2970    
       SET CHANNEL AUDIO_OUTPUT_CHANNEL <sampler-chan> <audio-out>  
       <audio-in>  
2971    
2972     Where <sampler-chan> is the sampler channel number, <audio-out> is     command, <audio-out> is the numerical ID of the sampler channel's
2973     the numerical ID of the sampler channel's audio output channel which     audio output channel which should be rerouted and <audio-in> is the
2974     should be rerouted and <audio-in> is the numerical ID of the audio     numerical ID of the audio channel of the selected audio output device
2975     channel of the selected audio output device where <audio-out> should     where <audio-out> should be routed to.
    be routed to.  
2976    
2977     Possible Answers:     Possible Answers:
2978    
2979        "OK" -        "OK" -
2980    
2981           on success           on success
2982    
2983        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
2984    
2985           if audio output channel was set, but there are noteworthy           if audio output channel was set, but there are noteworthy
2986           issue(s) related, providing an appropriate warning code and           issue(s) related, providing an appropriate warning code and
2987           warning message           warning message
2988    
2989        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
2990    
2991           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
2992           error message           error message
2993    
# Line 2439  Internet-Draft       LinuxSampler Contro Line 2995  Internet-Draft       LinuxSampler Contro
2995    
2996    
2997    
2998  5.4.17  Setting MIDI input device  
2999    6.4.17  Setting MIDI input device
3000    
3001     The front-end can set the MIDI input device on a specific sampler     The front-end can set the MIDI input device on a specific sampler
3002     channel by sending the following command:     channel by sending the following command:
3003    
3004        SET CHANNEL MIDI_INPUT_DEVICE <sampler-channel> <midi-device-id>        SET CHANNEL MIDI_INPUT_DEVICE <sampler-channel> <midi-device-id>
3005    
3006     Where <sampler-channel> is the sampler channel number and     Where <sampler-channel> is the sampler channel number as returned by
3007     <midi-device-id> is the the numerical ID of the MIDI input device.     the "ADD CHANNEL" (Section 6.4.5) or "LIST CHANNELS" (Section 6.4.4)
3008       command and <midi-device-id> is  the numerical ID of the MIDI input
3009       device as returned by the "CREATE MIDI_INPUT_DEVICE" (Section 6.3.5)
3010       or "LIST MIDI_INPUT_DEVICES" (Section 6.3.8) command.
3011    
3012     Possible Answers:     Possible Answers:
3013    
3014        "OK" -        "OK" -
3015    
3016           on success           on success
       "WRN:<warning-code>:<warning-message>" -  
          if MIDI input device was set, but there are noteworthy issue(s)  
          related, providing an appropriate warning code and warning  
          message  
3017    
3018    
3019    
 Schoenebeck            Expires November 19, 2005               [Page 44]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
3020    
3021    
3022    
3023    Schoenebeck             Expires November 2, 2005               [Page 54]
3024    
3025    Internet-Draft        LinuxSampler Control Protocol             May 2005
3026    
3027    
3028          "WRN:<warning-code>:<warning-message>" -
3029    
3030             if MIDI input device was set, but there are noteworthy issue(s)
3031             related, providing an appropriate warning code and warning
3032             message
3033    
3034        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
3035    
3036           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
3037           error message           error message
3038    
# Line 2473  Internet-Draft       LinuxSampler Contro Line 3040  Internet-Draft       LinuxSampler Contro
3040    
3041    
3042    
3043  5.4.18  Setting MIDI input type  
3044    6.4.18  Setting MIDI input type
3045    
3046     DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!     DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!
3047    
# Line 2482  Internet-Draft       LinuxSampler Contro Line 3050  Internet-Draft       LinuxSampler Contro
3050    
3051        SET CHANNEL MIDI_INPUT_TYPE <sampler-channel> <midi-input-type>        SET CHANNEL MIDI_INPUT_TYPE <sampler-channel> <midi-input-type>
3052    
3053     Where <midi-input-type> is currently only "ALSA" and     Where <midi-input-type> is currently only "ALSA" and <sampler-
3054     <sampler-channel> is the respective sampler channel number.     channel> is the respective sampler channel number.
3055    
3056     Possible Answers:     Possible Answers:
3057    
3058        "OK" -        "OK" -
3059    
3060           on success           on success
3061    
3062        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
3063    
3064           if MIDI input type was set, but there are noteworthy issue(s)           if MIDI input type was set, but there are noteworthy issue(s)
3065           related, providing an appropriate warning code and warning           related, providing an appropriate warning code and warning
3066           message           message
3067    
3068        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
3069    
3070           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
3071           error message           error message
3072    
# Line 2501  Internet-Draft       LinuxSampler Contro Line 3074  Internet-Draft       LinuxSampler Contro
3074    
3075    
3076    
3077  5.4.19  Setting MIDI input port  
3078    
3079    Schoenebeck             Expires November 2, 2005               [Page 55]
3080    
3081    Internet-Draft        LinuxSampler Control Protocol             May 2005
3082    
3083    
3084    
3085    
3086    
3087    6.4.19  Setting MIDI input port
3088    
3089     The front-end can alter the MIDI input port on a specific sampler     The front-end can alter the MIDI input port on a specific sampler
3090     channel by sending the following command:     channel by sending the following command:
# Line 2513  Internet-Draft       LinuxSampler Contro Line 3096  Internet-Draft       LinuxSampler Contro
3096    
3097     Possible Answers:     Possible Answers:
3098    
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 45]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
3099        "OK" -        "OK" -
3100    
3101           on success           on success
3102    
3103        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
3104    
3105           if MIDI input port was set, but there are noteworthy issue(s)           if MIDI input port was set, but there are noteworthy issue(s)
3106           related, providing an appropriate warning code and warning           related, providing an appropriate warning code and warning
3107           message           message
3108    
3109        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
3110    
3111           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
3112           error message           error message
3113    
# Line 2535  Internet-Draft       LinuxSampler Contro Line 3115  Internet-Draft       LinuxSampler Contro
3115    
3116    
3117    
3118  5.4.20  Setting MIDI input channel  
3119    6.4.20  Setting MIDI input channel
3120    
3121     The front-end can alter the MIDI channel a sampler channel should     The front-end can alter the MIDI channel a sampler channel should
3122     listen to by sending the following command:     listen to by sending the following command:
# Line 2548  Internet-Draft       LinuxSampler Contro Line 3129  Internet-Draft       LinuxSampler Contro
3129    
3130     Possible Answers:     Possible Answers:
3131    
3132    
3133    
3134    
3135    Schoenebeck             Expires November 2, 2005               [Page 56]
3136    
3137    Internet-Draft        LinuxSampler Control Protocol             May 2005
3138    
3139    
3140        "OK" -        "OK" -
3141    
3142           on success           on success
3143    
3144        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
3145    
3146           if MIDI input channel was set, but there are noteworthy           if MIDI input channel was set, but there are noteworthy
3147           issue(s) related, providing an appropriate warning code and           issue(s) related, providing an appropriate warning code and
3148           warning message           warning message
3149    
3150        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
3151    
3152           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
3153           error message           error message
3154    
# Line 2562  Internet-Draft       LinuxSampler Contro Line 3156  Internet-Draft       LinuxSampler Contro
3156    
3157    
3158    
3159  5.4.21  Setting channel volume  
3160    6.4.21  Setting channel volume
3161    
3162     The front-end can alter the volume of a sampler channel by sending     The front-end can alter the volume of a sampler channel by sending
3163     the following command:     the following command:
3164    
3165        SET CHANNEL VOLUME <sampler-channel> <volume>        SET CHANNEL VOLUME <sampler-channel> <volume>
3166    
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 46]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
3167     Where <volume> is an optionally dotted positive number (a value     Where <volume> is an optionally dotted positive number (a value
3168     smaller than 1.0 means attenuation, whereas a value greater than 1.0     smaller than 1.0 means attenuation, whereas a value greater than 1.0
3169     means amplification) and <sampler-channel> defines the sampler     means amplification) and <sampler-channel> defines the sampler
# Line 2585  Internet-Draft       LinuxSampler Contro Line 3172  Internet-Draft       LinuxSampler Contro
3172     Possible Answers:     Possible Answers:
3173    
3174        "OK" -        "OK" -
3175    
3176           on success           on success
3177    
3178        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
3179    
3180           if channel volume was set, but there are noteworthy issue(s)           if channel volume was set, but there are noteworthy issue(s)
3181           related, providing an appropriate warning code and warning           related, providing an appropriate warning code and warning
3182           message           message
3183    
3184        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
3185    
3186           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
3187           error message           error message
3188    
3189    
3190    
3191    Schoenebeck             Expires November 2, 2005               [Page 57]
3192    
3193    Internet-Draft        LinuxSampler Control Protocol             May 2005
3194    
3195    
3196     Examples:     Examples:
3197    
3198    
3199    
3200  5.4.22  Resetting a sampler channel  
3201    6.4.22  Muting a sampler channel
3202    
3203       The front-end can mute/unmute a specific sampler channel by sending
3204       the following command:
3205    
3206          SET CHANNEL MUTE <sampler-channel> <mute>
3207    
3208       Where <sampler-channel> is the respective sampler channel number as
3209       returned by the "ADD CHANNEL" (Section 6.4.5) or "LIST CHANNELS"
3210       (Section 6.4.4) command and <mute> should be replaced either by "1"
3211       to mute the channel or "0" to unmute the channel.
3212    
3213       Possible Answers:
3214    
3215          "OK" -
3216    
3217             on success
3218    
3219          "WRN:<warning-code>:<warning-message>" -
3220    
3221             if the channel was muted/unmuted, but there are noteworthy
3222             issue(s) related, providing an appropriate warning code and
3223             warning message
3224    
3225          "ERR:<error-code>:<error-message>" -
3226    
3227             in case it failed, providing an appropriate error code and
3228             error message
3229    
3230       Examples:
3231    
3232    
3233    
3234    
3235    6.4.23  Soloing a sampler channel
3236    
3237       The front-end can solo/unsolo a specific sampler channel by sending
3238       the following command:
3239    
3240          SET CHANNEL SOLO <sampler-channel> <solo>
3241    
3242       Where <sampler-channel> is the respective sampler channel number as
3243       returned by the "ADD CHANNEL" (Section 6.4.5) or "LIST CHANNELS"
3244    
3245    
3246    
3247    Schoenebeck             Expires November 2, 2005               [Page 58]
3248    
3249    Internet-Draft        LinuxSampler Control Protocol             May 2005
3250    
3251    
3252       (Section 6.4.4) command and <solo> should be replaced either by "1"
3253       to solo the channel or "0" to unsolo the channel.
3254    
3255       Possible Answers:
3256    
3257          "OK" -
3258    
3259             on success
3260    
3261          "WRN:<warning-code>:<warning-message>" -
3262    
3263             if the channel was soloed/unsoloed, but there are noteworthy
3264             issue(s) related, providing an appropriate warning code and
3265             warning message
3266    
3267          "ERR:<error-code>:<error-message>" -
3268    
3269             in case it failed, providing an appropriate error code and
3270             error message
3271    
3272       Examples:
3273    
3274    
3275    
3276    
3277    6.4.24  Resetting a sampler channel
3278    
3279     The front-end can reset a particular sampler channel by sending the     The front-end can reset a particular sampler channel by sending the
3280     following command:     following command:
# Line 2613  Internet-Draft       LinuxSampler Contro Line 3289  Internet-Draft       LinuxSampler Contro
3289     Possible Answers:     Possible Answers:
3290    
3291        "OK" -        "OK" -
3292    
3293           on success           on success
3294    
3295        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
3296    
3297           if channel was reset, but there are noteworthy issue(s)           if channel was reset, but there are noteworthy issue(s)
3298           related, providing an appropriate warning code and warning           related, providing an appropriate warning code and warning
3299           message           message
       "ERR:<error-code>:<error-message>" -  
          in case it failed, providing an appropriate error code and  
          error message  
3300    
    Examples:  
3301    
3302    
3303    Schoenebeck             Expires November 2, 2005               [Page 59]
3304    
3305    Internet-Draft        LinuxSampler Control Protocol             May 2005
3306    
3307    
3308  Schoenebeck            Expires November 19, 2005               [Page 47]        "ERR:<error-code>:<error-message>" -
3309    
3310  Internet-Draft       LinuxSampler Control Protocol              May 2005           in case it failed, providing an appropriate error code and
3311             error message
3312    
3313       Examples:
3314    
3315    
3316    
3317    
3318  5.5  Controlling connection  6.5  Controlling connection
3319    
3320     The following commands are used to control the connection to     The following commands are used to control the connection to
3321     LinuxSampler.     LinuxSampler.
3322    
3323  5.5.1  Register front-end for receiving event messages  6.5.1  Register front-end for receiving event messages
3324    
3325     The front-end can register itself to the LinuxSampler application to     The front-end can register itself to the LinuxSampler application to
3326     be informed about noteworthy events by sending this command:     be informed about noteworthy events by sending this command:
# Line 2653  Internet-Draft       LinuxSampler Contro Line 3333  Internet-Draft       LinuxSampler Contro
3333     Possible Answers:     Possible Answers:
3334    
3335        "OK" -        "OK" -
3336    
3337           on success           on success
3338    
3339        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
3340    
3341           if registration succeeded, but there are noteworthy issue(s)           if registration succeeded, but there are noteworthy issue(s)
3342           related, providing an appropriate warning code and warning           related, providing an appropriate warning code and warning
3343           message           message
3344    
3345        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
3346    
3347           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
3348           error message           error message
3349    
# Line 2666  Internet-Draft       LinuxSampler Contro Line 3351  Internet-Draft       LinuxSampler Contro
3351    
3352    
3353    
3354  5.5.2  Unregister front-end for not receiving event messages  
3355    
3356    
3357    
3358    
3359    Schoenebeck             Expires November 2, 2005               [Page 60]
3360    
3361    Internet-Draft        LinuxSampler Control Protocol             May 2005
3362    
3363    
3364    6.5.2  Unregister front-end for not receiving event messages
3365    
3366     The front-end can unregister itself if it doesn't want to receive     The front-end can unregister itself if it doesn't want to receive
3367     event messages anymore by sending the following command:     event messages anymore by sending the following command:
# Line 2679  Internet-Draft       LinuxSampler Contro Line 3374  Internet-Draft       LinuxSampler Contro
3374     Possible Answers:     Possible Answers:
3375    
3376        "OK" -        "OK" -
          on success  
   
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 48]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
3377    
3378             on success
3379    
3380        "WRN:<warning-code>:<warning-message>" -        "WRN:<warning-code>:<warning-message>" -
3381    
3382           if unregistration succeeded, but there are noteworthy issue(s)           if unregistration succeeded, but there are noteworthy issue(s)
3383           related, providing an appropriate warning code and warning           related, providing an appropriate warning code and warning
3384           message           message
3385    
3386        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
3387    
3388           in case it failed, providing an appropriate error code and           in case it failed, providing an appropriate error code and
3389           error message           error message
3390    
# Line 2701  Internet-Draft       LinuxSampler Contro Line 3392  Internet-Draft       LinuxSampler Contro
3392    
3393    
3394    
3395  5.5.3  Enable or disable echo of commands  
3396    6.5.3  Enable or disable echo of commands
3397    
3398     To enable or disable back sending of commands to the client the     To enable or disable back sending of commands to the client the
3399     following command can be used:     following command can be used:
# Line 2717  Internet-Draft       LinuxSampler Contro Line 3409  Internet-Draft       LinuxSampler Contro
3409    
3410     Possible Answers:     Possible Answers:
3411    
3412    
3413    
3414    
3415    Schoenebeck             Expires November 2, 2005               [Page 61]
3416    
3417    Internet-Draft        LinuxSampler Control Protocol             May 2005
3418    
3419    
3420        "OK" -        "OK" -
3421    
3422           usually           usually
3423    
3424        "ERR:<error-code>:<error-message>" -        "ERR:<error-code>:<error-message>" -
3425           on syntax error, e.g.  non boolean value  
3426             on syntax error, e.g. non boolean value
3427    
3428     Examples:     Examples:
3429    
3430    
3431    
3432  5.5.4  Close client connection  
3433    6.5.4  Close client connection
3434    
3435     The client can close its network connection to LinuxSampler by     The client can close its network connection to LinuxSampler by
3436     sending the following command:     sending the following command:
# Line 2736  Internet-Draft       LinuxSampler Contro Line 3440  Internet-Draft       LinuxSampler Contro
3440     This is probably more interesting for manual telnet connections to     This is probably more interesting for manual telnet connections to
3441     LinuxSampler than really useful for a front-end implementation.     LinuxSampler than really useful for a front-end implementation.
3442    
3443    6.6  Global commands
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 49]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
   
   
 5.6  Global commands  
3444    
3445     The following commands have global impact on the sampler.     The following commands have global impact on the sampler.
3446    
3447  5.6.1  Reset sampler  6.6.1  Reset sampler
3448    
3449     The front-end can reset the whole sampler by sending the following     The front-end can reset the whole sampler by sending the following
3450     command:     command:
# Line 2759  Internet-Draft       LinuxSampler Contro Line 3454  Internet-Draft       LinuxSampler Contro
3454     Possible Answers:     Possible Answers:
3455    
3456        "OK" -        "OK" -
3457    
3458           always           always
3459    
3460     Examples:     Examples:
# Line 2766  Internet-Draft       LinuxSampler Contro Line 3462  Internet-Draft       LinuxSampler Contro
3462    
3463    
3464    
3465    6.6.2  General sampler informations
3466    
3467       The client can ask for general informations about the LinuxSampler
3468    
3469    
3470    
3471    Schoenebeck             Expires November 2, 2005               [Page 62]
3472    
3473    Internet-Draft        LinuxSampler Control Protocol             May 2005
3474    
3475    
3476       instance by sending the following command:
3477    
3478          GET SERVER INFO
3479    
3480       Possible Answers:
3481    
3482          LinuxSampler will answer by sending a <CRLF> separated list.  Each
3483          answer line begins with the information category name followed by
3484          a colon and then a space character <SP> and finally the info
3485          character string to that information category.  At the moment the
3486          following categories are defined:
3487    
3488    
3489    
3490             DESCRIPTION -
3491    
3492                arbitrary textual description about the sampler
3493    
3494             VERSION -
3495    
3496                version of the sampler
3497    
3498             PROTOCOL_VERSION -
3499    
3500                version of the LSCP specification the sampler complies with
3501                (see Section 2 for details)
3502    
3503       The mentioned fields above don't have to be in particular order.
3504       Other fields might be added in future.
3505    
3506    
3507    
3508    
3509    
3510    
3511    
3512    
3513    
3514    
3515    
3516    
3517    
3518    
3519    
3520    
3521    
3522    
3523    
3524    
3525    
3526    
3527    Schoenebeck             Expires November 2, 2005               [Page 63]
3528    
3529    Internet-Draft        LinuxSampler Control Protocol             May 2005
3530    
3531    
3532    7.  Command Syntax
3533    
3534       The grammar of the control protocol as descibed in Section 6 is
3535       defined below using Backus-Naur Form (BNF as described in [RFC2234])
3536       where applicable.
3537    
3538       input =
3539    
3540          line LF
3541    
3542          / line CR LF
3543    
3544       line =
3545    
3546          /* epsilon (empty line ignored) */
3547    
3548          / comment
3549    
3550          / command
3551    
3552          / error
3553    
3554       comment =
3555    
3556          '#'
3557    
3558          / comment '#'
3559    
3560          / comment SP
3561    
3562          / comment number
3563    
3564          / comment string
3565    
3566       command =
3567    
3568          ADD SP CHANNEL
3569    
3570          / GET SP get_instruction
3571    
3572          / CREATE SP create_instruction
3573    
3574          / DESTROY SP destroy_instruction
3575    
3576          / LIST SP list_instruction
3577    
3578          / LOAD SP load_instruction
3579    
3580    
3581    
3582    
3583    Schoenebeck             Expires November 2, 2005               [Page 64]
3584    
3585    Internet-Draft        LinuxSampler Control Protocol             May 2005
3586    
3587    
3588          / REMOVE SP CHANNEL SP sampler_channel
3589    
3590          / SET SP set_instruction
3591    
3592          / SUBSCRIBE SP subscribe_event
3593    
3594          / UNSUBSCRIBE SP unsubscribe_event
3595    
3596          / SELECT SP text
3597    
3598          / RESET SP CHANNEL SP sampler_channel
3599    
3600          / RESET
3601    
3602          / QUIT
3603    
3604  Schoenebeck            Expires November 19, 2005               [Page 50]     subscribe_event =
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
3605    
3606          CHANNEL_COUNT
3607    
3608  6.  Command Syntax        / VOICE_COUNT
3609    
3610     TODO: will soon automatically included from src/network/lscp.y,        / STREAM_COUNT
    meanwhile have a look at that file to get the exact definition of the  
    command syntax.  
3611    
3612          / BUFFER_FILL
3613    
3614          / CHANNEL_INFO
3615    
3616          / MISCELLANEOUS
3617    
3618       unsubscribe_event =
3619    
3620          CHANNEL_COUNT
3621    
3622          / VOICE_COUNT
3623    
3624          / STREAM_COUNT
3625    
3626          / BUFFER_FILL
3627    
3628          / CHANNEL_INFO
3629    
3630          / MISCELLANEOUS
3631    
3632       get_instruction =
3633    
3634          AVAILABLE_ENGINES
3635    
3636    
3637    
3638    
3639    Schoenebeck             Expires November 2, 2005               [Page 65]
3640    
3641    Internet-Draft        LinuxSampler Control Protocol             May 2005
3642    
3643    
3644          / AVAILABLE_MIDI_INPUT_DRIVERS
3645    
3646          / MIDI_INPUT_DRIVER SP INFO SP string
3647    
3648          / MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string
3649    
3650          / MIDI_INPUT_DRIVER_PARAMETER SP INFO SP string SP string SP
3651          key_val_list
3652    
3653          / AVAILABLE_AUDIO_OUTPUT_DRIVERS
3654    
3655          / AUDIO_OUTPUT_DRIVER SP INFO SP string
3656    
3657          / AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
3658    
3659          / AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP
3660          key_val_list
3661    
3662          / AUDIO_OUTPUT_DEVICES
3663    
3664          / MIDI_INPUT_DEVICES
3665    
3666          / AUDIO_OUTPUT_DEVICE SP INFO SP number
3667    
3668          / MIDI_INPUT_DEVICE SP INFO SP number
3669    
3670          / MIDI_INPUT_PORT SP INFO SP number SP number
3671    
3672          / MIDI_INPUT_PORT_PARAMETER SP INFO SP number SP number SP string
3673    
3674          / AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number
3675    
3676          / AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP
3677          string
3678    
3679          / CHANNELS
3680    
3681          / CHANNEL SP INFO SP sampler_channel
3682    
3683          / CHANNEL SP BUFFER_FILL SP buffer_size_type SP sampler_channel
3684    
3685          / CHANNEL SP STREAM_COUNT SP sampler_channel
3686    
3687          / CHANNEL SP VOICE_COUNT SP sampler_channel
3688    
3689          / ENGINE SP INFO SP engine_name
3690    
3691    
3692    
3693    
3694    
3695    Schoenebeck             Expires November 2, 2005               [Page 66]
3696    
3697  Schoenebeck            Expires November 19, 2005               [Page 51]  Internet-Draft        LinuxSampler Control Protocol             May 2005
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
3698    
3699    
3700  7.  Events        / SERVER SP INFO
3701    
3702       set_instruction =
3703    
3704          AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '='
3705          param_val_list
3706    
3707          / AUDIO_OUTPUT_CHANNEL_PARAMETER SP number SP number SP string '='
3708          param_val_list
3709    
3710          / MIDI_INPUT_DEVICE_PARAMETER SP number SP string '='
3711          param_val_list
3712    
3713          / MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '='
3714          param_val_list
3715    
3716          / CHANNEL SP set_chan_instruction
3717    
3718          / ECHO SP boolean
3719    
3720       create_instruction =
3721    
3722          AUDIO_OUTPUT_DEVICE SP string SP key_val_list
3723    
3724          / AUDIO_OUTPUT_DEVICE SP string
3725    
3726          / MIDI_INPUT_DEVICE SP string SP key_val_list
3727    
3728          / MIDI_INPUT_DEVICE SP string
3729    
3730       destroy_instruction =
3731    
3732          AUDIO_OUTPUT_DEVICE SP number
3733    
3734          / MIDI_INPUT_DEVICE SP number
3735    
3736       load_instruction =
3737    
3738          INSTRUMENT SP load_instr_args
3739    
3740          / ENGINE SP load_engine_args
3741    
3742       set_chan_instruction =
3743    
3744          AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
3745    
3746          / AUDIO_OUTPUT_CHANNEL SP sampler_channel SP audio_channel_index
3747          SP audio_channel_index
3748    
3749    
3750    
3751    Schoenebeck             Expires November 2, 2005               [Page 67]
3752    
3753    Internet-Draft        LinuxSampler Control Protocol             May 2005
3754    
3755    
3756          / AUDIO_OUTPUT_TYPE SP sampler_channel SP audio_output_type_name
3757    
3758          / MIDI_INPUT SP sampler_channel SP device_index SP
3759          midi_input_port_index SP midi_input_channel_index
3760    
3761          / MIDI_INPUT_DEVICE SP sampler_channel SP device_index
3762    
3763          / MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index
3764    
3765          / MIDI_INPUT_CHANNEL SP sampler_channel SP
3766          midi_input_channel_index
3767    
3768          / MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name
3769    
3770          / VOLUME SP sampler_channel SP volume_value
3771    
3772          / MUTE SP sampler_channel SP boolean
3773    
3774          / SOLO SP sampler_channel SP boolean
3775    
3776       key_val_list =
3777    
3778          string '=' param_val_list
3779    
3780          / key_val_list SP string '=' param_val_list
3781    
3782       buffer_size_type =
3783    
3784          BYTES
3785    
3786          / PERCENTAGE
3787    
3788       list_instruction =
3789    
3790          AUDIO_OUTPUT_DEVICES
3791    
3792          / MIDI_INPUT_DEVICES
3793    
3794          / CHANNELS
3795    
3796          / AVAILABLE_ENGINES
3797    
3798          / AVAILABLE_MIDI_INPUT_DRIVERS
3799    
3800          / AVAILABLE_AUDIO_OUTPUT_DRIVERS
3801    
3802       load_instr_args =
3803    
3804    
3805    
3806    
3807    Schoenebeck             Expires November 2, 2005               [Page 68]
3808    
3809    Internet-Draft        LinuxSampler Control Protocol             May 2005
3810    
3811    
3812          filename SP instrument_index SP sampler_channel
3813    
3814          / NON_MODAL SP filename SP instrument_index SP sampler_channel
3815    
3816       load_engine_args =
3817    
3818          engine_name SP sampler_channel
3819    
3820       device_index =
3821    
3822          number
3823    
3824       audio_channel_index =
3825    
3826          number
3827    
3828       audio_output_type_name =
3829    
3830          string
3831    
3832       midi_input_port_index =
3833    
3834          number
3835    
3836       midi_input_channel_index =
3837    
3838          number
3839    
3840          / ALL
3841    
3842       midi_input_type_name =
3843    
3844          string
3845    
3846       volume_value =
3847    
3848          dotnum
3849    
3850          / number
3851    
3852       sampler_channel =
3853    
3854          number
3855    
3856       instrument_index =
3857    
3858          number
3859    
3860    
3861    
3862    
3863    Schoenebeck             Expires November 2, 2005               [Page 69]
3864    
3865    Internet-Draft        LinuxSampler Control Protocol             May 2005
3866    
3867    
3868       engine_name =
3869    
3870          string
3871    
3872       filename =
3873    
3874          stringval
3875    
3876       param_val_list =
3877    
3878          param_val
3879    
3880          / param_val_list','param_val
3881    
3882       param_val =
3883    
3884          string
3885    
3886          / '\'' string '\''
3887    
3888          / '\"' string '\"'
3889    
3890          / number
3891    
3892          / dotnum
3893    
3894    
3895    
3896    
3897    
3898    
3899    
3900    
3901    
3902    
3903    
3904    
3905    
3906    
3907    
3908    
3909    
3910    
3911    
3912    
3913    
3914    
3915    
3916    
3917    
3918    
3919    Schoenebeck             Expires November 2, 2005               [Page 70]
3920    
3921    Internet-Draft        LinuxSampler Control Protocol             May 2005
3922    
3923    
3924    8.  Events
3925    
3926     This chapter will describe all currently defined events supported by     This chapter will describe all currently defined events supported by
3927     LinuxSampler.     LinuxSampler.
3928    
3929  7.1  Number of sampler channels changed  8.1  Number of sampler channels changed
3930    
3931     Client may want to be notified when the total number of channels on     Client may want to be notified when the total number of channels on
3932     the back-end changes by issuing the following command:     the back-end changes by issuing the following command:
# Line 2876  Internet-Draft       LinuxSampler Contro Line 3940  Internet-Draft       LinuxSampler Contro
3940     where <channels> will be replaced by the new number of sampler     where <channels> will be replaced by the new number of sampler
3941     channels.     channels.
3942    
3943  7.2  Number of active voices changed  8.2  Number of active voices changed
3944    
3945     Client may want to be notified when the number of voices on the     Client may want to be notified when the number of voices on the back-
3946     back-end changes by issuing the following command:     end changes by issuing the following command:
3947    
3948        SUBSCRIBE VOICE_COUNT        SUBSCRIBE VOICE_COUNT
3949    
# Line 2891  Internet-Draft       LinuxSampler Contro Line 3955  Internet-Draft       LinuxSampler Contro
3955     voice count change occurred and <voices> by the new number of active     voice count change occurred and <voices> by the new number of active
3956     voices on that channel.     voices on that channel.
3957    
3958  7.3  Number of active disk streams changed  8.3  Number of active disk streams changed
3959    
3960     Client may want to be notified when the number of streams on the     Client may want to be notified when the number of streams on the
3961     back-end changes by issuing the following command: SUBSCRIBE     back-end changes by issuing the following command: SUBSCRIBE
# Line 2908  Internet-Draft       LinuxSampler Contro Line 3972  Internet-Draft       LinuxSampler Contro
3972    
3973    
3974    
3975  Schoenebeck            Expires November 19, 2005               [Page 52]  Schoenebeck             Expires November 2, 2005               [Page 71]
3976    
3977  Internet-Draft       LinuxSampler Control Protocol              May 2005  Internet-Draft        LinuxSampler Control Protocol             May 2005
3978    
3979    
3980     active disk streams on that channel.     active disk streams on that channel.
3981    
3982  7.4  Disk stream buffer fill state changed  8.4  Disk stream buffer fill state changed
3983    
3984     Client may want to be notified when the buffer fill state of a disk     Client may want to be notified when the buffer fill state of a disk
3985     stream on the back-end changes by issuing the following command:     stream on the back-end changes by issuing the following command:
# Line 2928  Internet-Draft       LinuxSampler Contro Line 3992  Internet-Draft       LinuxSampler Contro
3992    
3993     where <sampler-channel> will be replaced by the sampler channel the     where <sampler-channel> will be replaced by the sampler channel the
3994     buffer fill state change occurred on and <fill-data> will be replaced     buffer fill state change occurred on and <fill-data> will be replaced
3995     by the buffer fill data for this channel as described in Section     by the buffer fill data for this channel as described in
3996     5.4.13 as if the "GET CHANNEL BUFFER_FILL PERCENTAGE" (Section     Section 6.4.13 as if the "GET CHANNEL BUFFER_FILL PERCENTAGE"
3997     5.4.13) command was issued on this channel.     (Section 6.4.13) command was issued on this channel.
3998    
3999  7.5  Channel information changed  8.5  Channel information changed
4000    
4001     Client may want to be notified when changes were made to sampler     Client may want to be notified when changes were made to sampler
4002     channels on the back-end by issuing the following command:     channels on the back-end by issuing the following command:
# Line 2950  Internet-Draft       LinuxSampler Contro Line 4014  Internet-Draft       LinuxSampler Contro
4014     rather than real time events happening on the server, it is believed     rather than real time events happening on the server, it is believed
4015     that an empty notification message is sufficient here.     that an empty notification message is sufficient here.
4016    
4017  7.6  Miscellaneous and debugging events  8.6  Miscellaneous and debugging events
4018    
4019     Client may want to be notified of miscellaneous and debugging events     Client may want to be notified of miscellaneous and debugging events
4020     occurring at the server by issuing the following command:     occurring at the server by issuing the following command:
# Line 2959  Internet-Draft       LinuxSampler Contro Line 4023  Internet-Draft       LinuxSampler Contro
4023    
4024     Server will start sending the following notification messages:     Server will start sending the following notification messages:
4025    
       "NOTIFY:MISCELLANEOUS:<string>"  
4026    
4027    
4028    
4029    
 Schoenebeck            Expires November 19, 2005               [Page 53]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
4030    
4031    Schoenebeck             Expires November 2, 2005               [Page 72]
4032    
4033    Internet-Draft        LinuxSampler Control Protocol             May 2005
4034    
4035    
4036          "NOTIFY:MISCELLANEOUS:<string>"
4037    
4038     where <string> will be replaced by whatever data server wants to send     where <string> will be replaced by whatever data server wants to send
4039     to the client.  Client MAY display this data to the user AS IS to     to the client.  Client MAY display this data to the user AS IS to
# Line 3018  Internet-Draft       LinuxSampler Contro Line 4084  Internet-Draft       LinuxSampler Contro
4084    
4085    
4086    
4087    Schoenebeck             Expires November 2, 2005               [Page 73]
4088    
4089    Internet-Draft        LinuxSampler Control Protocol             May 2005
4090    
 Schoenebeck            Expires November 19, 2005               [Page 54]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
4091    
4092    9.  Security Considerations
 8.  Security Considerations  
4093    
4094     As there is so far no method of authentication and authorization     As there is so far no method of authentication and authorization
4095     defined and so not required for a client applications to succeed to     defined and so not required for a client applications to succeed to
# Line 3076  Internet-Draft       LinuxSampler Contro Line 4140  Internet-Draft       LinuxSampler Contro
4140    
4141    
4142    
4143  Schoenebeck            Expires November 19, 2005               [Page 55]  Schoenebeck             Expires November 2, 2005               [Page 74]
4144    
4145  Internet-Draft       LinuxSampler Control Protocol              May 2005  Internet-Draft        LinuxSampler Control Protocol             May 2005
4146    
4147    
4148  9.  Acknowledgments  10.  Acknowledgments
4149    
4150     This document has benefited greatly from the comments of the     This document has benefited greatly from the comments of the
4151     following people, discussed on the LinuxSampler developer's mailing     following people, discussed on the LinuxSampler developer's mailing
4152     list:     list:
4153    
4154        Rui Nuno Capela        Rui Nuno Capela
4155    
4156        Vladimir Senkov        Vladimir Senkov
4157    
4158        Mark Knecht        Mark Knecht
4159    
4160        Grigor Iliev        Grigor Iliev
4161    
4162  10  References  
4163    11.  References
4164    
4165     [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate     [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
4166                Requirement Levels", BCP 14, RFC 2119, March 1997.                Requirement Levels", RFC 2119, 1997.
4167    
4168       [RFC2234]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
4169                  Specifications", RFC 2234, 1997.
4170    
4171       [RFC793]   Defense Advanced Research Projects Agency, "TRANSMISSION
4172                  CONTROL PROTOCOL", RFC 793, 1981.
4173    
4174    
4175  Author's Address  Author's Address
# Line 3106  Author's Address Line 4180  Author's Address
4180     74081 Heilbronn     74081 Heilbronn
4181     Germany     Germany
4182    
4183     EMail: schoenebeck at software minus engineering dot org     Email: schoenebeck at software minus engineering dot org
   
   
4184    
4185    
4186    
# Line 3124  Author's Address Line 4196  Author's Address
4196    
4197    
4198    
4199    Schoenebeck             Expires November 2, 2005               [Page 75]
4200    
4201    Internet-Draft        LinuxSampler Control Protocol             May 2005
   
   
   
   
   
   
 Schoenebeck            Expires November 19, 2005               [Page 56]  
   
 Internet-Draft       LinuxSampler Control Protocol              May 2005  
4202    
4203    
4204  Intellectual Property Statement  Intellectual Property Statement
# Line 3146  Intellectual Property Statement Line 4210  Intellectual Property Statement
4210     might or might not be available; neither does it represent that it     might or might not be available; neither does it represent that it
4211     has made any effort to identify any such rights.  Information on the     has made any effort to identify any such rights.  Information on the
4212     IETF's procedures with respect to rights in standards-track and     IETF's procedures with respect to rights in standards-track and
4213     standards-related documentation can be found in BCP-11.  Copies of     standards-related documentation can be found in BCP 11.  Copies of
4214     claims of rights made available for publication and any assurances of     claims of rights made available for publication and any assurances of
4215     licenses to be made available, or the result of an attempt made to     licenses to be made available, or the result of an attempt made to
4216     obtain a general license or permission for the use of such     obtain a general license or permission for the use of such
# Line 3188  Full Copyright Statement Line 4252  Full Copyright Statement
4252    
4253    
4254    
4255  Schoenebeck            Expires November 19, 2005               [Page 57]  Schoenebeck             Expires November 2, 2005               [Page 76]
4256    
4257  Internet-Draft       LinuxSampler Control Protocol              May 2005  Internet-Draft        LinuxSampler Control Protocol             May 2005
4258    
4259    
4260     HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF     HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
# Line 3244  Acknowledgment Line 4308  Acknowledgment
4308    
4309    
4310    
4311  Schoenebeck            Expires November 19, 2005               [Page 58]  Schoenebeck             Expires November 2, 2005               [Page 77]
4312    

Legend:
Removed from v.561  
changed lines
  Added in v.708

  ViewVC Help
Powered by ViewVC