/[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 944 by schoenebeck, Sat Nov 25 17:18:12 2006 UTC revision 945 by schoenebeck, Sun Nov 26 16:39:49 2006 UTC
# Line 3  Line 3 
3    
4  LinuxSampler Developers                                   C. Schoenebeck  LinuxSampler Developers                                   C. Schoenebeck
5  Internet-Draft                           Interessengemeinschaft Software  Internet-Draft                           Interessengemeinschaft Software
6  Expires: May 29, 2007                                  Engineering e. V.  Expires: May 30, 2007                                  Engineering e. V.
7                                                         November 25, 2006                                                         November 26, 2006
8    
9    
10                       LinuxSampler Control Protocol                       LinuxSampler Control Protocol
11                                  LSCP 1.1                                  LSCP 1.2
12    
13  Status of this Memo  Status of this Memo
14    
# Line 31  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 May 29, 2007.     This Internet-Draft will expire on May 30, 2007.
35    
36  Copyright Notice  Copyright Notice
37    
# Line 52  Abstract Line 52  Abstract
52    
53    
54    
55  Schoenebeck               Expires May 29, 2007                  [Page 1]  Schoenebeck               Expires May 30, 2007                  [Page 1]
56    
57  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
58    
59    
60  Table of Contents  Table of Contents
61    
62     1.  Requirements notation  . . . . . . . . . . . . . . . . . . . .  4     1.  Requirements notation  . . . . . . . . . . . . . . . . . . . .  5
63     2.  Versioning of this specification . . . . . . . . . . . . . . .  5     2.  Versioning of this specification . . . . . . . . . . . . . . .  6
64     3.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  6     3.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  7
65     4.  Focus of this protocol . . . . . . . . . . . . . . . . . . . .  7     4.  Focus of this protocol . . . . . . . . . . . . . . . . . . . .  8
66     5.  Communication Overview . . . . . . . . . . . . . . . . . . . .  8     5.  Communication Overview . . . . . . . . . . . . . . . . . . . .  9
67       5.1.  Request/response communication method  . . . . . . . . . .  8       5.1.  Request/response communication method  . . . . . . . . . .  9
68         5.1.1.  Result format  . . . . . . . . . . . . . . . . . . . .  9         5.1.1.  Result format  . . . . . . . . . . . . . . . . . . . . 10
69       5.2.  Subscribe/notify communication method  . . . . . . . . . . 11       5.2.  Subscribe/notify communication method  . . . . . . . . . . 12
70     6.  Description for control commands . . . . . . . . . . . . . . . 13     6.  Description for control commands . . . . . . . . . . . . . . . 14
71       6.1.  Ignored lines and comments . . . . . . . . . . . . . . . . 13       6.1.  Ignored lines and comments . . . . . . . . . . . . . . . . 14
72       6.2.  Configuring audio drivers  . . . . . . . . . . . . . . . . 13       6.2.  Configuring audio drivers  . . . . . . . . . . . . . . . . 14
73         6.2.1.  Getting amount of available audio output drivers . . . 13         6.2.1.  Getting amount of available audio output drivers . . . 14
74         6.2.2.  Getting all available audio output drivers . . . . . . 14         6.2.2.  Getting all available audio output drivers . . . . . . 15
75         6.2.3.  Getting information about a specific audio output         6.2.3.  Getting information about a specific audio output
76                 driver . . . . . . . . . . . . . . . . . . . . . . . . 14                 driver . . . . . . . . . . . . . . . . . . . . . . . . 15
77         6.2.4.  Getting information about specific audio output         6.2.4.  Getting information about specific audio output
78                 driver parameter . . . . . . . . . . . . . . . . . . . 15                 driver parameter . . . . . . . . . . . . . . . . . . . 16
79         6.2.5.  Creating an audio output device  . . . . . . . . . . . 19         6.2.5.  Creating an audio output device  . . . . . . . . . . . 20
80         6.2.6.  Destroying an audio output device  . . . . . . . . . . 20         6.2.6.  Destroying an audio output device  . . . . . . . . . . 21
81         6.2.7.  Getting all created audio output device count  . . . . 21         6.2.7.  Getting all created audio output device count  . . . . 22
82         6.2.8.  Getting all created audio output device list . . . . . 21         6.2.8.  Getting all created audio output device list . . . . . 22
83         6.2.9.  Getting current settings of an audio output device . . 21         6.2.9.  Getting current settings of an audio output device . . 22
84         6.2.10. Changing settings of audio output devices  . . . . . . 23         6.2.10. Changing settings of audio output devices  . . . . . . 24
85         6.2.11. Getting information about an audio channel . . . . . . 23         6.2.11. Getting information about an audio channel . . . . . . 24
86         6.2.12. Getting information about specific audio channel         6.2.12. Getting information about specific audio channel
87                 parameter  . . . . . . . . . . . . . . . . . . . . . . 25                 parameter  . . . . . . . . . . . . . . . . . . . . . . 26
88         6.2.13. Changing settings of audio output channels . . . . . . 27         6.2.13. Changing settings of audio output channels . . . . . . 28
89       6.3.  Configuring MIDI input drivers . . . . . . . . . . . . . . 28       6.3.  Configuring MIDI input drivers . . . . . . . . . . . . . . 29
90         6.3.1.  Getting amount of available MIDI input drivers . . . . 29         6.3.1.  Getting amount of available MIDI input drivers . . . . 30
91         6.3.2.  Getting all available MIDI input drivers . . . . . . . 29         6.3.2.  Getting all available MIDI input drivers . . . . . . . 30
92         6.3.3.  Getting information about a specific MIDI input         6.3.3.  Getting information about a specific MIDI input
93                 driver . . . . . . . . . . . . . . . . . . . . . . . . 29                 driver . . . . . . . . . . . . . . . . . . . . . . . . 30
94         6.3.4.  Getting information about specific MIDI input         6.3.4.  Getting information about specific MIDI input
95                 driver parameter . . . . . . . . . . . . . . . . . . . 30                 driver parameter . . . . . . . . . . . . . . . . . . . 31
96         6.3.5.  Creating a MIDI input device . . . . . . . . . . . . . 33         6.3.5.  Creating a MIDI input device . . . . . . . . . . . . . 34
97         6.3.6.  Destroying a MIDI input device . . . . . . . . . . . . 34         6.3.6.  Destroying a MIDI input device . . . . . . . . . . . . 35
98         6.3.7.  Getting all created MIDI input device count  . . . . . 35         6.3.7.  Getting all created MIDI input device count  . . . . . 36
99         6.3.8.  Getting all created MIDI input device list . . . . . . 35         6.3.8.  Getting all created MIDI input device list . . . . . . 36
100         6.3.9.  Getting current settings of a MIDI input device  . . . 35         6.3.9.  Getting current settings of a MIDI input device  . . . 36
101         6.3.10. Changing settings of MIDI input devices  . . . . . . . 37         6.3.10. Changing settings of MIDI input devices  . . . . . . . 38
102         6.3.11. Getting information about a MIDI port  . . . . . . . . 37         6.3.11. Getting information about a MIDI port  . . . . . . . . 38
103         6.3.12. Getting information about specific MIDI port         6.3.12. Getting information about specific MIDI port
104                 parameter  . . . . . . . . . . . . . . . . . . . . . . 38                 parameter  . . . . . . . . . . . . . . . . . . . . . . 39
105         6.3.13. Changing settings of MIDI input ports  . . . . . . . . 40         6.3.13. Changing settings of MIDI input ports  . . . . . . . . 41
106       6.4.  Configuring sampler channels . . . . . . . . . . . . . . . 41       6.4.  Configuring sampler channels . . . . . . . . . . . . . . . 42
107         6.4.1.  Loading an instrument  . . . . . . . . . . . . . . . . 41         6.4.1.  Loading an instrument  . . . . . . . . . . . . . . . . 42
108    
109    
110    
111  Schoenebeck               Expires May 29, 2007                  [Page 2]  Schoenebeck               Expires May 30, 2007                  [Page 2]
112    
113  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
114    
115    
116         6.4.2.  Loading a sampler engine . . . . . . . . . . . . . . . 42         6.4.2.  Loading a sampler engine . . . . . . . . . . . . . . . 43
117         6.4.3.  Getting all created sampler channel count  . . . . . . 43         6.4.3.  Getting all created sampler channel count  . . . . . . 44
118         6.4.4.  Getting all created sampler channel list . . . . . . . 43         6.4.4.  Getting all created sampler channel list . . . . . . . 44
119         6.4.5.  Adding a new sampler channel . . . . . . . . . . . . . 43         6.4.5.  Adding a new sampler channel . . . . . . . . . . . . . 44
120         6.4.6.  Removing a sampler channel . . . . . . . . . . . . . . 44         6.4.6.  Removing a sampler channel . . . . . . . . . . . . . . 45
121         6.4.7.  Getting amount of available engines  . . . . . . . . . 45         6.4.7.  Getting amount of available engines  . . . . . . . . . 46
122         6.4.8.  Getting all available engines  . . . . . . . . . . . . 45         6.4.8.  Getting all available engines  . . . . . . . . . . . . 46
123         6.4.9.  Getting information about an engine  . . . . . . . . . 46         6.4.9.  Getting information about an engine  . . . . . . . . . 47
124         6.4.10. Getting sampler channel information  . . . . . . . . . 47         6.4.10. Getting sampler channel information  . . . . . . . . . 48
125         6.4.11. Current number of active voices  . . . . . . . . . . . 50         6.4.11. Current number of active voices  . . . . . . . . . . . 51
126         6.4.12. Current number of active disk streams  . . . . . . . . 50         6.4.12. Current number of active disk streams  . . . . . . . . 51
127         6.4.13. Current fill state of disk stream buffers  . . . . . . 50         6.4.13. Current fill state of disk stream buffers  . . . . . . 51
128         6.4.14. Setting audio output device  . . . . . . . . . . . . . 51         6.4.14. Setting audio output device  . . . . . . . . . . . . . 52
129         6.4.15. Setting audio output type  . . . . . . . . . . . . . . 52         6.4.15. Setting audio output type  . . . . . . . . . . . . . . 53
130         6.4.16. Setting audio output channel . . . . . . . . . . . . . 53         6.4.16. Setting audio output channel . . . . . . . . . . . . . 54
131         6.4.17. Setting MIDI input device  . . . . . . . . . . . . . . 54         6.4.17. Setting MIDI input device  . . . . . . . . . . . . . . 55
132         6.4.18. Setting MIDI input type  . . . . . . . . . . . . . . . 54         6.4.18. Setting MIDI input type  . . . . . . . . . . . . . . . 55
133         6.4.19. Setting MIDI input port  . . . . . . . . . . . . . . . 55         6.4.19. Setting MIDI input port  . . . . . . . . . . . . . . . 56
134         6.4.20. Setting MIDI input channel . . . . . . . . . . . . . . 56         6.4.20. Setting MIDI input channel . . . . . . . . . . . . . . 57
135         6.4.21. Setting channel volume . . . . . . . . . . . . . . . . 56         6.4.21. Setting channel volume . . . . . . . . . . . . . . . . 57
136         6.4.22. Muting a sampler channel . . . . . . . . . . . . . . . 57         6.4.22. Muting a sampler channel . . . . . . . . . . . . . . . 58
137         6.4.23. Soloing a sampler channel  . . . . . . . . . . . . . . 58         6.4.23. Soloing a sampler channel  . . . . . . . . . . . . . . 59
138         6.4.24. Resetting a sampler channel  . . . . . . . . . . . . . 58         6.4.24. Resetting a sampler channel  . . . . . . . . . . . . . 59
139       6.5.  Controlling connection . . . . . . . . . . . . . . . . . . 59       6.5.  Controlling connection . . . . . . . . . . . . . . . . . . 60
140         6.5.1.  Register front-end for receiving event messages  . . . 59         6.5.1.  Register front-end for receiving event messages  . . . 60
141         6.5.2.  Unregister front-end for not receiving event         6.5.2.  Unregister front-end for not receiving event
142                 messages . . . . . . . . . . . . . . . . . . . . . . . 60                 messages . . . . . . . . . . . . . . . . . . . . . . . 61
143         6.5.3.  Enable or disable echo of commands . . . . . . . . . . 61         6.5.3.  Enable or disable echo of commands . . . . . . . . . . 62
144         6.5.4.  Close client connection  . . . . . . . . . . . . . . . 61         6.5.4.  Close client connection  . . . . . . . . . . . . . . . 62
145       6.6.  Global commands  . . . . . . . . . . . . . . . . . . . . . 61       6.6.  Global commands  . . . . . . . . . . . . . . . . . . . . . 62
146         6.6.1.  Current number of active voices  . . . . . . . . . . . 61         6.6.1.  Current number of active voices  . . . . . . . . . . . 62
147         6.6.2.  Maximum amount of active voices  . . . . . . . . . . . 62         6.6.2.  Maximum amount of active voices  . . . . . . . . . . . 63
148         6.6.3.  Reset sampler  . . . . . . . . . . . . . . . . . . . . 62         6.6.3.  Reset sampler  . . . . . . . . . . . . . . . . . . . . 63
149         6.6.4.  General sampler informations . . . . . . . . . . . . . 62         6.6.4.  General sampler informations . . . . . . . . . . . . . 63
150     7.  Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . 64       6.7.  MIDI Instrument Mapping  . . . . . . . . . . . . . . . . . 64
151     8.  Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71         6.7.1.  Create or replace a MIDI instrument map entry  . . . . 64
152       8.1.  Number of sampler channels changed . . . . . . . . . . . . 71         6.7.2.  Getting ammount of MIDI instrument map entries . . . . 67
153       8.2.  Number of active voices changed  . . . . . . . . . . . . . 71         6.7.3.  Getting indeces of all MIDI instrument map entries . . 67
154       8.3.  Number of active disk streams changed  . . . . . . . . . . 71         6.7.4.  Remove an entry from the MIDI instrument map . . . . . 68
155       8.4.  Disk stream buffer fill state changed  . . . . . . . . . . 72         6.7.5.  Get current settings of MIDI instrument map entry  . . 69
156       8.5.  Channel information changed  . . . . . . . . . . . . . . . 72         6.7.6.  Clear MIDI instrument map  . . . . . . . . . . . . . . 70
157       8.6.  Total number of active voices changed  . . . . . . . . . . 72     7.  Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . 72
158       8.7.  Miscellaneous and debugging events . . . . . . . . . . . . 73     8.  Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
159     9.  Security Considerations  . . . . . . . . . . . . . . . . . . . 74       8.1.  Number of sampler channels changed . . . . . . . . . . . . 81
160     10. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 75       8.2.  Number of active voices changed  . . . . . . . . . . . . . 81
161     11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 75       8.3.  Number of active disk streams changed  . . . . . . . . . . 81
162     Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 76       8.4.  Disk stream buffer fill state changed  . . . . . . . . . . 82
163     Intellectual Property and Copyright Statements . . . . . . . . . . 77       8.5.  Channel information changed  . . . . . . . . . . . . . . . 82
164    
165    
166    
167  Schoenebeck               Expires May 29, 2007                  [Page 3]  Schoenebeck               Expires May 30, 2007                  [Page 3]
168    
169    Internet-Draft        LinuxSampler Control Protocol        November 2006
170    
171    
172         8.6.  Total number of active voices changed  . . . . . . . . . . 82
173         8.7.  Miscellaneous and debugging events . . . . . . . . . . . . 83
174       9.  Security Considerations  . . . . . . . . . . . . . . . . . . . 84
175       10. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 85
176       11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 85
177       Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 86
178       Intellectual Property and Copyright Statements . . . . . . . . . . 87
179    
180    
181    
182    
183    
184    
185    
186    
187    
188    
189    
190    
191    
192    
193    
194    
195    
196    
197    
198    
199    
200    
201    
202    
203    
204    
205    
206    
207    
208    
209    
210    
211    
212    
213    
214    
215    
216    
217    
218    
219    
220    
221    
222    
223    Schoenebeck               Expires May 30, 2007                  [Page 4]
224    
225  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
226    
# Line 220  Internet-Draft        LinuxSampler Contr Line 276  Internet-Draft        LinuxSampler Contr
276    
277    
278    
279  Schoenebeck               Expires May 29, 2007                  [Page 4]  Schoenebeck               Expires May 30, 2007                  [Page 5]
280    
281  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
282    
# Line 276  Internet-Draft        LinuxSampler Contr Line 332  Internet-Draft        LinuxSampler Contr
332    
333    
334    
335  Schoenebeck               Expires May 29, 2007                  [Page 5]  Schoenebeck               Expires May 30, 2007                  [Page 6]
336    
337  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
338    
# Line 332  Internet-Draft        LinuxSampler Contr Line 388  Internet-Draft        LinuxSampler Contr
388    
389    
390    
391  Schoenebeck               Expires May 29, 2007                  [Page 6]  Schoenebeck               Expires May 30, 2007                  [Page 7]
392    
393  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
394    
# Line 388  Internet-Draft        LinuxSampler Contr Line 444  Internet-Draft        LinuxSampler Contr
444    
445    
446    
447  Schoenebeck               Expires May 29, 2007                  [Page 7]  Schoenebeck               Expires May 30, 2007                  [Page 8]
448    
449  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
450    
# Line 444  Internet-Draft        LinuxSampler Contr Line 500  Internet-Draft        LinuxSampler Contr
500    
501    
502    
503  Schoenebeck               Expires May 29, 2007                  [Page 8]  Schoenebeck               Expires May 30, 2007                  [Page 9]
504    
505  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
506    
# Line 500  Internet-Draft        LinuxSampler Contr Line 556  Internet-Draft        LinuxSampler Contr
556    
557    
558    
559  Schoenebeck               Expires May 29, 2007                  [Page 9]  Schoenebeck               Expires May 30, 2007                 [Page 10]
560    
561  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
562    
# Line 556  Internet-Draft        LinuxSampler Contr Line 612  Internet-Draft        LinuxSampler Contr
612    
613    
614    
615  Schoenebeck               Expires May 29, 2007                 [Page 10]  Schoenebeck               Expires May 30, 2007                 [Page 11]
616    
617  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
618    
# Line 612  Internet-Draft        LinuxSampler Contr Line 668  Internet-Draft        LinuxSampler Contr
668    
669    
670    
671  Schoenebeck               Expires May 29, 2007                 [Page 11]  Schoenebeck               Expires May 30, 2007                 [Page 12]
672    
673  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
674    
# Line 668  Internet-Draft        LinuxSampler Contr Line 724  Internet-Draft        LinuxSampler Contr
724    
725    
726    
727  Schoenebeck               Expires May 29, 2007                 [Page 12]  Schoenebeck               Expires May 30, 2007                 [Page 13]
728    
729  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
730    
# Line 724  Internet-Draft        LinuxSampler Contr Line 780  Internet-Draft        LinuxSampler Contr
780    
781    
782    
783  Schoenebeck               Expires May 29, 2007                 [Page 13]  Schoenebeck               Expires May 30, 2007                 [Page 14]
784    
785  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
786    
# Line 780  Internet-Draft        LinuxSampler Contr Line 836  Internet-Draft        LinuxSampler Contr
836    
837    
838    
839  Schoenebeck               Expires May 29, 2007                 [Page 14]  Schoenebeck               Expires May 30, 2007                 [Page 15]
840    
841  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
842    
# Line 836  Internet-Draft        LinuxSampler Contr Line 892  Internet-Draft        LinuxSampler Contr
892    
893    
894    
895  Schoenebeck               Expires May 29, 2007                 [Page 15]  Schoenebeck               Expires May 30, 2007                 [Page 16]
896    
897  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
898    
# Line 892  Internet-Draft        LinuxSampler Contr Line 948  Internet-Draft        LinuxSampler Contr
948    
949    
950    
951  Schoenebeck               Expires May 29, 2007                 [Page 16]  Schoenebeck               Expires May 30, 2007                 [Page 17]
952    
953  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
954    
# Line 948  Internet-Draft        LinuxSampler Contr Line 1004  Internet-Draft        LinuxSampler Contr
1004    
1005    
1006    
1007  Schoenebeck               Expires May 29, 2007                 [Page 17]  Schoenebeck               Expires May 30, 2007                 [Page 18]
1008    
1009  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1010    
# Line 1004  Internet-Draft        LinuxSampler Contr Line 1060  Internet-Draft        LinuxSampler Contr
1060    
1061    
1062    
1063  Schoenebeck               Expires May 29, 2007                 [Page 18]  Schoenebeck               Expires May 30, 2007                 [Page 19]
1064    
1065  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1066    
# Line 1060  Internet-Draft        LinuxSampler Contr Line 1116  Internet-Draft        LinuxSampler Contr
1116    
1117    
1118    
1119  Schoenebeck               Expires May 29, 2007                 [Page 19]  Schoenebeck               Expires May 30, 2007                 [Page 20]
1120    
1121  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1122    
# Line 1116  Internet-Draft        LinuxSampler Contr Line 1172  Internet-Draft        LinuxSampler Contr
1172    
1173    
1174    
1175  Schoenebeck               Expires May 29, 2007                 [Page 20]  Schoenebeck               Expires May 30, 2007                 [Page 21]
1176    
1177  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1178    
# Line 1172  Internet-Draft        LinuxSampler Contr Line 1228  Internet-Draft        LinuxSampler Contr
1228    
1229    
1230    
1231  Schoenebeck               Expires May 29, 2007                 [Page 21]  Schoenebeck               Expires May 30, 2007                 [Page 22]
1232    
1233  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1234    
# Line 1228  Internet-Draft        LinuxSampler Contr Line 1284  Internet-Draft        LinuxSampler Contr
1284    
1285    
1286    
1287  Schoenebeck               Expires May 29, 2007                 [Page 22]  Schoenebeck               Expires May 30, 2007                 [Page 23]
1288    
1289  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1290    
# Line 1284  Internet-Draft        LinuxSampler Contr Line 1340  Internet-Draft        LinuxSampler Contr
1340    
1341    
1342    
1343  Schoenebeck               Expires May 29, 2007                 [Page 23]  Schoenebeck               Expires May 30, 2007                 [Page 24]
1344    
1345  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1346    
# Line 1340  Internet-Draft        LinuxSampler Contr Line 1396  Internet-Draft        LinuxSampler Contr
1396    
1397    
1398    
1399  Schoenebeck               Expires May 29, 2007                 [Page 24]  Schoenebeck               Expires May 30, 2007                 [Page 25]
1400    
1401  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1402    
# Line 1396  Internet-Draft        LinuxSampler Contr Line 1452  Internet-Draft        LinuxSampler Contr
1452    
1453    
1454    
1455  Schoenebeck               Expires May 29, 2007                 [Page 25]  Schoenebeck               Expires May 30, 2007                 [Page 26]
1456    
1457  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1458    
# Line 1452  Internet-Draft        LinuxSampler Contr Line 1508  Internet-Draft        LinuxSampler Contr
1508    
1509    
1510    
1511  Schoenebeck               Expires May 29, 2007                 [Page 26]  Schoenebeck               Expires May 30, 2007                 [Page 27]
1512    
1513  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1514    
# Line 1508  Internet-Draft        LinuxSampler Contr Line 1564  Internet-Draft        LinuxSampler Contr
1564    
1565    
1566    
1567  Schoenebeck               Expires May 29, 2007                 [Page 27]  Schoenebeck               Expires May 30, 2007                 [Page 28]
1568    
1569  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1570    
# Line 1564  Internet-Draft        LinuxSampler Contr Line 1620  Internet-Draft        LinuxSampler Contr
1620    
1621    
1622    
1623  Schoenebeck               Expires May 29, 2007                 [Page 28]  Schoenebeck               Expires May 30, 2007                 [Page 29]
1624    
1625  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1626    
# Line 1620  Internet-Draft        LinuxSampler Contr Line 1676  Internet-Draft        LinuxSampler Contr
1676    
1677    
1678    
1679  Schoenebeck               Expires May 29, 2007                 [Page 29]  Schoenebeck               Expires May 30, 2007                 [Page 30]
1680    
1681  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1682    
# Line 1676  Internet-Draft        LinuxSampler Contr Line 1732  Internet-Draft        LinuxSampler Contr
1732    
1733    
1734    
1735  Schoenebeck               Expires May 29, 2007                 [Page 30]  Schoenebeck               Expires May 30, 2007                 [Page 31]
1736    
1737  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1738    
# Line 1732  Internet-Draft        LinuxSampler Contr Line 1788  Internet-Draft        LinuxSampler Contr
1788    
1789    
1790    
1791  Schoenebeck               Expires May 29, 2007                 [Page 31]  Schoenebeck               Expires May 30, 2007                 [Page 32]
1792    
1793  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1794    
# Line 1788  Internet-Draft        LinuxSampler Contr Line 1844  Internet-Draft        LinuxSampler Contr
1844    
1845    
1846    
1847  Schoenebeck               Expires May 29, 2007                 [Page 32]  Schoenebeck               Expires May 30, 2007                 [Page 33]
1848    
1849  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1850    
# Line 1844  Internet-Draft        LinuxSampler Contr Line 1900  Internet-Draft        LinuxSampler Contr
1900    
1901    
1902    
1903  Schoenebeck               Expires May 29, 2007                 [Page 33]  Schoenebeck               Expires May 30, 2007                 [Page 34]
1904    
1905  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1906    
# Line 1900  Internet-Draft        LinuxSampler Contr Line 1956  Internet-Draft        LinuxSampler Contr
1956    
1957    
1958    
1959  Schoenebeck               Expires May 29, 2007                 [Page 34]  Schoenebeck               Expires May 30, 2007                 [Page 35]
1960    
1961  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
1962    
# Line 1956  Internet-Draft        LinuxSampler Contr Line 2012  Internet-Draft        LinuxSampler Contr
2012    
2013    
2014    
2015  Schoenebeck               Expires May 29, 2007                 [Page 35]  Schoenebeck               Expires May 30, 2007                 [Page 36]
2016    
2017  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2018    
# Line 2012  Internet-Draft        LinuxSampler Contr Line 2068  Internet-Draft        LinuxSampler Contr
2068    
2069    
2070    
2071  Schoenebeck               Expires May 29, 2007                 [Page 36]  Schoenebeck               Expires May 30, 2007                 [Page 37]
2072    
2073  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2074    
# Line 2068  Internet-Draft        LinuxSampler Contr Line 2124  Internet-Draft        LinuxSampler Contr
2124    
2125    
2126    
2127  Schoenebeck               Expires May 29, 2007                 [Page 37]  Schoenebeck               Expires May 30, 2007                 [Page 38]
2128    
2129  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2130    
# Line 2124  Internet-Draft        LinuxSampler Contr Line 2180  Internet-Draft        LinuxSampler Contr
2180    
2181    
2182    
2183  Schoenebeck               Expires May 29, 2007                 [Page 38]  Schoenebeck               Expires May 30, 2007                 [Page 39]
2184    
2185  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2186    
# Line 2180  Internet-Draft        LinuxSampler Contr Line 2236  Internet-Draft        LinuxSampler Contr
2236    
2237    
2238    
2239  Schoenebeck               Expires May 29, 2007                 [Page 39]  Schoenebeck               Expires May 30, 2007                 [Page 40]
2240    
2241  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2242    
# Line 2236  Internet-Draft        LinuxSampler Contr Line 2292  Internet-Draft        LinuxSampler Contr
2292    
2293    
2294    
2295  Schoenebeck               Expires May 29, 2007                 [Page 40]  Schoenebeck               Expires May 30, 2007                 [Page 41]
2296    
2297  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2298    
# Line 2292  Internet-Draft        LinuxSampler Contr Line 2348  Internet-Draft        LinuxSampler Contr
2348    
2349    
2350    
2351  Schoenebeck               Expires May 29, 2007                 [Page 41]  Schoenebeck               Expires May 30, 2007                 [Page 42]
2352    
2353  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2354    
# Line 2348  Internet-Draft        LinuxSampler Contr Line 2404  Internet-Draft        LinuxSampler Contr
2404    
2405    
2406    
2407  Schoenebeck               Expires May 29, 2007                 [Page 42]  Schoenebeck               Expires May 30, 2007                 [Page 43]
2408    
2409  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2410    
# Line 2404  Internet-Draft        LinuxSampler Contr Line 2460  Internet-Draft        LinuxSampler Contr
2460    
2461    
2462    
2463  Schoenebeck               Expires May 29, 2007                 [Page 43]  Schoenebeck               Expires May 30, 2007                 [Page 44]
2464    
2465  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2466    
# Line 2460  Internet-Draft        LinuxSampler Contr Line 2516  Internet-Draft        LinuxSampler Contr
2516    
2517    
2518    
2519  Schoenebeck               Expires May 29, 2007                 [Page 44]  Schoenebeck               Expires May 30, 2007                 [Page 45]
2520    
2521  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2522    
# Line 2516  Internet-Draft        LinuxSampler Contr Line 2572  Internet-Draft        LinuxSampler Contr
2572    
2573    
2574    
2575  Schoenebeck               Expires May 29, 2007                 [Page 45]  Schoenebeck               Expires May 30, 2007                 [Page 46]
2576    
2577  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2578    
# Line 2572  Internet-Draft        LinuxSampler Contr Line 2628  Internet-Draft        LinuxSampler Contr
2628    
2629    
2630    
2631  Schoenebeck               Expires May 29, 2007                 [Page 46]  Schoenebeck               Expires May 30, 2007                 [Page 47]
2632    
2633  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2634    
# Line 2628  Internet-Draft        LinuxSampler Contr Line 2684  Internet-Draft        LinuxSampler Contr
2684    
2685    
2686    
2687  Schoenebeck               Expires May 29, 2007                 [Page 47]  Schoenebeck               Expires May 30, 2007                 [Page 48]
2688    
2689  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2690    
# Line 2684  Internet-Draft        LinuxSampler Contr Line 2740  Internet-Draft        LinuxSampler Contr
2740    
2741    
2742    
2743  Schoenebeck               Expires May 29, 2007                 [Page 48]  Schoenebeck               Expires May 30, 2007                 [Page 49]
2744    
2745  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2746    
# Line 2740  Internet-Draft        LinuxSampler Contr Line 2796  Internet-Draft        LinuxSampler Contr
2796    
2797    
2798    
2799  Schoenebeck               Expires May 29, 2007                 [Page 49]  Schoenebeck               Expires May 30, 2007                 [Page 50]
2800    
2801  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2802    
# Line 2796  Internet-Draft        LinuxSampler Contr Line 2852  Internet-Draft        LinuxSampler Contr
2852    
2853    
2854    
2855  Schoenebeck               Expires May 29, 2007                 [Page 50]  Schoenebeck               Expires May 30, 2007                 [Page 51]
2856    
2857  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2858    
# Line 2852  Internet-Draft        LinuxSampler Contr Line 2908  Internet-Draft        LinuxSampler Contr
2908    
2909    
2910    
2911  Schoenebeck               Expires May 29, 2007                 [Page 51]  Schoenebeck               Expires May 30, 2007                 [Page 52]
2912    
2913  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2914    
# Line 2908  Internet-Draft        LinuxSampler Contr Line 2964  Internet-Draft        LinuxSampler Contr
2964    
2965    
2966    
2967  Schoenebeck               Expires May 29, 2007                 [Page 52]  Schoenebeck               Expires May 30, 2007                 [Page 53]
2968    
2969  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
2970    
# Line 2964  Internet-Draft        LinuxSampler Contr Line 3020  Internet-Draft        LinuxSampler Contr
3020    
3021    
3022    
3023  Schoenebeck               Expires May 29, 2007                 [Page 53]  Schoenebeck               Expires May 30, 2007                 [Page 54]
3024    
3025  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3026    
# Line 3020  Internet-Draft        LinuxSampler Contr Line 3076  Internet-Draft        LinuxSampler Contr
3076    
3077    
3078    
3079  Schoenebeck               Expires May 29, 2007                 [Page 54]  Schoenebeck               Expires May 30, 2007                 [Page 55]
3080    
3081  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3082    
# Line 3076  Internet-Draft        LinuxSampler Contr Line 3132  Internet-Draft        LinuxSampler Contr
3132    
3133    
3134    
3135  Schoenebeck               Expires May 29, 2007                 [Page 55]  Schoenebeck               Expires May 30, 2007                 [Page 56]
3136    
3137  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3138    
# Line 3132  Internet-Draft        LinuxSampler Contr Line 3188  Internet-Draft        LinuxSampler Contr
3188    
3189    
3190    
3191  Schoenebeck               Expires May 29, 2007                 [Page 56]  Schoenebeck               Expires May 30, 2007                 [Page 57]
3192    
3193  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3194    
# Line 3188  Internet-Draft        LinuxSampler Contr Line 3244  Internet-Draft        LinuxSampler Contr
3244    
3245    
3246    
3247  Schoenebeck               Expires May 29, 2007                 [Page 57]  Schoenebeck               Expires May 30, 2007                 [Page 58]
3248    
3249  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3250    
# Line 3244  Internet-Draft        LinuxSampler Contr Line 3300  Internet-Draft        LinuxSampler Contr
3300    
3301    
3302    
3303  Schoenebeck               Expires May 29, 2007                 [Page 58]  Schoenebeck               Expires May 30, 2007                 [Page 59]
3304    
3305  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3306    
# Line 3300  Internet-Draft        LinuxSampler Contr Line 3356  Internet-Draft        LinuxSampler Contr
3356    
3357    
3358    
3359  Schoenebeck               Expires May 29, 2007                 [Page 59]  Schoenebeck               Expires May 30, 2007                 [Page 60]
3360    
3361  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3362    
# Line 3356  Internet-Draft        LinuxSampler Contr Line 3412  Internet-Draft        LinuxSampler Contr
3412    
3413    
3414    
3415  Schoenebeck               Expires May 29, 2007                 [Page 60]  Schoenebeck               Expires May 30, 2007                 [Page 61]
3416    
3417  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3418    
# Line 3412  Internet-Draft        LinuxSampler Contr Line 3468  Internet-Draft        LinuxSampler Contr
3468    
3469    
3470    
3471  Schoenebeck               Expires May 29, 2007                 [Page 61]  Schoenebeck               Expires May 30, 2007                 [Page 62]
3472    
3473  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3474    
# Line 3468  Internet-Draft        LinuxSampler Contr Line 3524  Internet-Draft        LinuxSampler Contr
3524    
3525    
3526    
3527  Schoenebeck               Expires May 29, 2007                 [Page 62]  Schoenebeck               Expires May 30, 2007                 [Page 63]
3528    
3529  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3530    
# Line 3494  Internet-Draft        LinuxSampler Contr Line 3550  Internet-Draft        LinuxSampler Contr
3550     The mentioned fields above don't have to be in particular order.     The mentioned fields above don't have to be in particular order.
3551     Other fields might be added in future.     Other fields might be added in future.
3552    
3553    6.7.  MIDI Instrument Mapping
3554    
3555       The MIDI protocol provides a way to switch between instruments by
3556       sending so called MIDI bank select and MIDI program change messages
3557       which are essentially just numbers.  The following commands allow to
3558       actually map arbitrary MIDI bank select / program change numbers with
3559       real instruments.
3560    
3561       By default, that is when the sampler is launched, this map will be
3562       empty, thus the sampler will simply ignore all program change
3563       messages.  The front-end has to explicitly add entries to the map so
3564       the sampler knows how to react on a given program change message,
3565       that is by switching to the respectively defined engine type and
3566       loading the respective instrument.
3567    
3568       Also note per MIDI specification a bank select message does not cause
3569       to switch to another instrument.  Instead when receiving a bank
3570       select message the bank value will be stored and a subsequent program
3571       change message (which may occur at any time) will finally cause the
3572       sampler to switch to the respective instrument as reflected by the
3573       current MIDI instrument map.
3574    
3575    6.7.1.  Create or replace a MIDI instrument map entry
3576    
3577       The front-end can create a new or replace an existing entry in the
3578       sampler's MIDI instrument map by sending the following command:
3579    
3580    
3581    
3582    
3583    Schoenebeck               Expires May 30, 2007                 [Page 64]
3584    
3585    Internet-Draft        LinuxSampler Control Protocol        November 2006
3586    
3587    
3588          MAP MIDI_INSTRUMENT <midi_bank_msb> <midi_bank_lsb> <midi_prog>
3589          <engine_name> <filename> <instrument_index> <volume_value>
3590          [<instr_load_mode>] [<name>]
3591    
3592       Where <midi_bank_msb> is an integer value between 0..127 reflecting
3593       the MIDI bank select MSB (coarse) index, <midi_bank_lsb> an integer
3594       value between 0..127 reflecting the MIDI bank select LSB (fine)
3595       index, <midi_prog> an integer value between 0..127 reflecting the
3596       MIDI program change index, <engine_name> a sampler engine name as
3597       returned by the "LIST AVAILABLE_ENGINES" (Section 6.4.8) command (not
3598       encapsulated into apostrophes), <filename> the name of the
3599       instrument's file to be deployed (encapsulated into apostrophes),
3600       <instrument_index> the index (integer value) of the instrument within
3601       the given file, <volume_value> reflects the master volume of the
3602       instrument as optionally dotted number (where a value < 1.0 means
3603       attenuation and a value > 1.0 means amplification).  This parameter
3604       easily allows to adjust the volume of all intruments within a custom
3605       instrument map without having to adjust their instrument files.  The
3606       OPTIONAL <instr_load_mode> argument defines the life time of the
3607       instrument, that is when the instrument should be loaded, when freed
3608       and has exactly the following possibilities:
3609    
3610          "ON_DEMAND" -
3611    
3612             The instrument will be loaded when needed, that is when
3613             demanded by at least one sampler channel.  It will immediately
3614             be freed from memory when not needed by any sampler channel
3615             anymore.
3616    
3617          "ON_DEMAND_HOLD" -
3618    
3619             The instrument will be loaded when needed, that is when
3620             demanded by at least one sampler channel.  It will be kept in
3621             memory even when not needed by any sampler channel anymore.
3622             Instruments with this mode are only freed when the sampler is
3623             reset or all mapping entries with this mode (and respective
3624             instrument) are explicitly changed to "ON_DEMAND" and no
3625             sampler channel is using the instrument anymore.
3626    
3627          "PERSISTENT" -
3628    
3629             The instrument will immediately be loaded into memory in the
3630             background when this mapping command is sent and the instrument
3631             is kept all the time.  Instruments with this mode are only
3632             freed when the sampler is reset or all mapping entries with
3633             this mode (and respective instrument) are explicitly changed to
3634             "ON_DEMAND" and no sampler channel is using the instrument
3635             anymore.
3636    
3637    
3638    
3639    Schoenebeck               Expires May 30, 2007                 [Page 65]
3640    
3641    Internet-Draft        LinuxSampler Control Protocol        November 2006
3642    
3643    
3644          not supplied -
3645    
3646             In case there is no <instr_load_mode> argument given, it will
3647             be up to the InstrumentManager to decide which mode to use.
3648             Usually it will use "ON_DEMAND" if an entry for the given
3649             instrument does not exist in the InstrumentManager's list yet,
3650             otherwise if an entry already exists, it will simply stick with
3651             the mode currently reflected by the already existing entry,
3652             that is it will not change the mode.
3653    
3654       The <instr_load_mode> argument thus allows to define an appropriate
3655       strategy (low memory consumption vs. fast instrument switching) for
3656       each instrument individually.  Note, the following restrictions apply
3657       to this argument: "ON_DEMAND_HOLD" and "PERSISTENT" have to be
3658       supported by the respective sampler engine (which is technically the
3659       case when the engine provides an InstrumentManager for its format).
3660       If this is not the case the argument will automatically fall back to
3661       the default value "ON_DEMAND".  Also the load mode of one instrument
3662       may automatically change the laod mode of other instrument(s), i.e.
3663       because the instruments are part of the same file and the engine does
3664       not allow a way to manage load modes for them individually.  Due to
3665       this, in case the frontend shows the load modes of entries, the
3666       frontend should retrieve the actual mode by i.e. sending "GET
3667       MIDI_INSTRUMENT INFO" (Section 6.7.5) command(s).  Finally the
3668       OPTIONAL <name> argument allows to set a custom name (encapsulated
3669       into apostrophes) for the mapping entry, useful for frontends for
3670       displaying an appropriate name for mapped instruments (using "GET
3671       MIDI_INSTRUMENT INFO" (Section 6.7.5)).
3672    
3673       The "MAP MIDI_INSTRUMENT" command will immediately return, thus it
3674       will not block when an instrument is to be loaded due to a
3675       "PERSISTENT" type entry as instruments are loaded in the background.
3676       As a consequence this command may not necessarily return an error
3677       i.e. when the given instrument file does not exist or may turn out to
3678       be corrupt.
3679    
3680       Possible Answers:
3681    
3682          "OK" -
3683    
3684             usually
3685    
3686          "ERR:<error-code>:<error-message>" -
3687    
3688             when the given engine does not exist or a value is out of range
3689    
3690       Examples:
3691    
3692    
3693    
3694    
3695    Schoenebeck               Expires May 30, 2007                 [Page 66]
3696    
3697    Internet-Draft        LinuxSampler Control Protocol        November 2006
3698    
3699    
3700          C: "MAP MIDI_INSTRUMENT 3 0 0 gig '/usr/share/Steinway D.gig' 0
3701          0.8 PERSISTENT"
3702    
3703          S: "OK"
3704    
3705          C: "MAP MIDI_INSTRUMENT 127 4 50 gig '/home/john/foostrings.gig' 7
3706          1.0"
3707    
3708          S: "OK"
3709    
3710          C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0
3711          'Normal Piano'"
3712    
3713          S: "OK"
3714    
3715          C: "MAP MIDI_INSTRUMENT 1 0 0 gig '/usr/share/piano.gig' 0 0.25
3716          'Silent Piano'"
3717    
3718          S: "OK"
3719    
3720          C: "MAP MIDI_INSTRUMENT 99 8 120 gig '/home/joe/foodrums.gig' 0
3721          1.0 PERSISTENT 'Foo Drumkit'"
3722    
3723          S: "OK"
3724    
3725    6.7.2.  Getting ammount of MIDI instrument map entries
3726    
3727       The front-end can query the amount of currently existing MIDI
3728       instrument map entries by sending the following command:
3729    
3730          GET MIDI_INSTRUMENTS
3731    
3732       Possible Answers:
3733    
3734          LinuxSampler will answer by sending the current number of entries
3735          in the sampler's MIDI instrument map.
3736    
3737       Example:
3738    
3739          C: "GET MIDI_INSTRUMENTS"
3740    
3741          S: "634"
3742    
3743    6.7.3.  Getting indeces of all MIDI instrument map entries
3744    
3745       The front-end can query a list of all currently existing MIDI
3746       instrument map entries by sending the following command:
3747    
3748    
3749    
3750    
3751    Schoenebeck               Expires May 30, 2007                 [Page 67]
3752    
3753    Internet-Draft        LinuxSampler Control Protocol        November 2006
3754    
3755    
3756          LIST MIDI_INSTRUMENTS
3757    
3758       Possible Answers:
3759    
3760          LinuxSampler will answer by sending a comma separated list of MIDI
3761          bank MSB (coarse) - MIDI bank LSB (fine) - MIDI program triples,
3762          where each triple is encapsulated into curly braces.  The list is
3763          returned in one single line.  Each triple just reflects the key of
3764          the respective map entry, thus subsequent "GET MIDI_INSTRUMENT
3765          INFO" (Section 6.7.5) command(s) are necessary to retrieve
3766          detailed informations about each entry.
3767    
3768       Example:
3769    
3770          C: "LIST MIDI_INSTRUMENTS"
3771    
3772          S: "{0,0,0},{0,0,1},{120,0,3},{120,0,4},{23,127,127}"
3773    
3774    6.7.4.  Remove an entry from the MIDI instrument map
3775    
3776       The front-end can delete an entry from the MIDI instrument map by
3777       sending the following command:
3778    
3779          UNMAP MIDI_INSTRUMENT <midi_bank_msb> <midi_bank_lsb> <midi_prog>
3780    
3781       Where <midi_bank_msb> is an integer value between 0..127 reflecting
3782       the MIDI bank MSB (coarse) value, <midi_bank_lsb> an integer value
3783       between 0..127 reflecting the MIDI bank LSB (fine) value and
3784       <midi_prog> an integer value between 0..127 reflecting the MIDI
3785       program value of the map entrie's key index triple.
3786    
3787       Possible Answers:
3788    
3789          "OK" -
3790    
3791             usually
3792    
3793          "ERR:<error-code>:<error-message>" -
3794    
3795             when index out of bounds
3796    
3797       Example:
3798    
3799          C: "UNMAP MIDI_INSTRUMENT 2 40 127"
3800    
3801          S: "OK"
3802    
3803    
3804    
3805    
3806    
3807    Schoenebeck               Expires May 30, 2007                 [Page 68]
3808    
3809    Internet-Draft        LinuxSampler Control Protocol        November 2006
3810    
3811    
3812    6.7.5.  Get current settings of MIDI instrument map entry
3813    
3814       The front-end can retrieve the current settings of a certain
3815       instrument map entry by sending the following command:
3816    
3817          GET MIDI_INSTRUMENT INFO <midi_bank_msb> <midi_bank_lsb>
3818          <midi_prog>
3819    
3820       Where <midi_bank_msb> is an integer value between 0..127 reflecting
3821       the MIDI bank MSB (coarse) value, <midi_bank_lsb> an integer value
3822       between 0..127 reflecting the MIDI bank LSB (fine) value and
3823       <midi_prog> an integer value between 0..127 reflecting the MIDI
3824       program value of the map entrie's key index triple.
3825    
3826       Possible Answers:
3827    
3828          LinuxSampler will answer by sending a <CRLF> separated list.  Each
3829          answer line begins with the information category name followed by
3830          a colon and then a space character <SP> and finally the info
3831          character string to that info category.  At the moment the
3832          following categories are defined:
3833    
3834          "NAME" -
3835    
3836             Name for this MIDI instrument map entry (if defined).  This
3837             name shall be used by frontends for displaying a name for this
3838             mapped instrument.  It can be set and changed with the "MAP
3839             MIDI_INSTRUMENT" (Section 6.7.1) command and does not have to
3840             be unique.
3841    
3842          "ENGINE_NAME" -
3843    
3844             Name of the engine to be deployed for this instrument.
3845    
3846          "INSTRUMENT_FILE" -
3847    
3848             File name of the instrument.
3849    
3850          "INSTRUMENT_NR" -
3851    
3852             Index of the instrument within the file.
3853    
3854          "INSTRUMENT_NAME" -
3855    
3856             Name of the loaded instrument as reflected by its file.  In
3857             contrast to the "NAME" field, the "INSTRUMENT_NAME" field
3858             cannot be changed.
3859    
3860    
3861    
3862    
3863    Schoenebeck               Expires May 30, 2007                 [Page 69]
3864    
3865    Internet-Draft        LinuxSampler Control Protocol        November 2006
3866    
3867    
3868          "LOAD_MODE" -
3869    
3870             Life time of instrument (see "MAP MIDI_INSTRUMENT"
3871             (Section 6.7.1) for details about this setting).
3872    
3873          "VOLUME" -
3874    
3875             master volume of the instrument as optionally dotted number
3876             (where a value < 1.0 means attenuation and a value > 1.0 means
3877             amplification)
3878    
3879          The mentioned fields above don't have to be in particular order.
3880    
3881       Example:
3882    
3883          C: "GET MIDI_INSTRUMENT INFO 3 45 120"
3884    
3885          S: "NAME: Drums for Foo Song"
3886    
3887             "ENGINE_NAME: GigEngine"
3888    
3889             "INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"
3890    
3891             "INSTRUMENT_NR: 0"
3892    
3893             "INSTRUMENT_NAME: Joe's Drumkit"
3894    
3895             "LOAD_MODE: PERSISTENT"
3896    
3897             "VOLUME: 1.0"
3898    
3899             "."
3900    
3901    6.7.6.  Clear MIDI instrument map
3902    
3903       The front-end can clear the whole MIDI instrument map, that is delete
3904       all entries by sending the following command:
3905    
3906          CLEAR MIDI_INSTRUMENTS
3907    
3908       Possible Answers:
3909    
3910          "OK" -
3911    
3912             always
3913    
3914       Example:
3915    
3916    
3917    
3918    
3919  Schoenebeck               Expires May 29, 2007                 [Page 63]  Schoenebeck               Expires May 30, 2007                 [Page 70]
3920    
3921    Internet-Draft        LinuxSampler Control Protocol        November 2006
3922    
3923    
3924          C: "CLEAR MIDI_INSTRUMENTS"
3925    
3926          S: "OK"
3927    
3928    
3929    
3930    
3931    
3932    
3933    
3934    
3935    
3936    
3937    
3938    
3939    
3940    
3941    
3942    
3943    
3944    
3945    
3946    
3947    
3948    
3949    
3950    
3951    
3952    
3953    
3954    
3955    
3956    
3957    
3958    
3959    
3960    
3961    
3962    
3963    
3964    
3965    
3966    
3967    
3968    
3969    
3970    
3971    
3972    
3973    
3974    
3975    Schoenebeck               Expires May 30, 2007                 [Page 71]
3976    
3977  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
3978    
# Line 3567  Internet-Draft        LinuxSampler Contr Line 4015  Internet-Draft        LinuxSampler Contr
4015    
4016        ADD SP CHANNEL        ADD SP CHANNEL
4017    
4018          / MAP SP map_instruction
4019    
4020          / UNMAP SP unmap_instruction
4021    
4022        / GET SP get_instruction        / GET SP get_instruction
4023    
4024        / CREATE SP create_instruction        / CREATE SP create_instruction
4025    
4026        / DESTROY SP destroy_instruction        / DESTROY SP destroy_instruction
4027    
       / LIST SP list_instruction  
   
       / LOAD SP load_instruction  
4028    
4029    
4030    
4031    Schoenebeck               Expires May 30, 2007                 [Page 72]
 Schoenebeck               Expires May 29, 2007                 [Page 64]  
4032    
4033  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
4034    
4035    
4036        / REMOVE SP CHANNEL SP sampler_channel        / LIST SP list_instruction
4037    
4038          / LOAD SP load_instruction
4039    
4040          / REMOVE SP remove_instruction
4041    
4042        / SET SP set_instruction        / SET SP set_instruction
4043    
# Line 3595  Internet-Draft        LinuxSampler Contr Line 4047  Internet-Draft        LinuxSampler Contr
4047    
4048        / SELECT SP text        / SELECT SP text
4049    
4050        / RESET SP CHANNEL SP sampler_channel        / RESET SP reset_instruction
4051    
4052          / CLEAR SP clear_instruction
4053    
4054        / RESET        / RESET
4055    
# Line 3627  Internet-Draft        LinuxSampler Contr Line 4081  Internet-Draft        LinuxSampler Contr
4081    
4082        / BUFFER_FILL        / BUFFER_FILL
4083    
4084    
4085    
4086    
4087    Schoenebeck               Expires May 30, 2007                 [Page 73]
4088    
4089    Internet-Draft        LinuxSampler Control Protocol        November 2006
4090    
4091    
4092        / CHANNEL_INFO        / CHANNEL_INFO
4093    
4094        / MISCELLANEOUS        / MISCELLANEOUS
4095    
4096        / TOTAL_VOICE_COUNT        / TOTAL_VOICE_COUNT
4097    
4098       map_instruction =
4099    
4100          MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP
4101          engine_name SP filename SP instrument_index SP volume_value
4102    
4103          / MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog
4104          SP engine_name SP filename SP instrument_index SP volume_value SP
4105          instr_load_mode
4106    
4107  Schoenebeck               Expires May 29, 2007                 [Page 65]        / MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog
4108          SP engine_name SP filename SP instrument_index SP volume_value SP
4109  Internet-Draft        LinuxSampler Control Protocol        November 2006        entry_name
4110    
4111          / MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog
4112          SP engine_name SP filename SP instrument_index SP volume_value SP
4113          instr_load_mode SP entry_name
4114    
4115       unmap_instruction =
4116    
4117          MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog
4118    
4119       remove_instruction =
4120    
4121          CHANNEL SP sampler_channel
4122    
4123     get_instruction =     get_instruction =
4124    
# Line 3658  Internet-Draft        LinuxSampler Contr Line 4137  Internet-Draft        LinuxSampler Contr
4137    
4138        / AUDIO_OUTPUT_DRIVER SP INFO SP string        / AUDIO_OUTPUT_DRIVER SP INFO SP string
4139    
4140    
4141    
4142    
4143    Schoenebeck               Expires May 30, 2007                 [Page 74]
4144    
4145    Internet-Draft        LinuxSampler Control Protocol        November 2006
4146    
4147    
4148        / AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string        / AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string
4149    
4150        / AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP        / AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP
# Line 3688  Internet-Draft        LinuxSampler Contr Line 4175  Internet-Draft        LinuxSampler Contr
4175    
4176        / CHANNEL SP STREAM_COUNT SP sampler_channel        / CHANNEL SP STREAM_COUNT SP sampler_channel
4177    
   
   
   
   
 Schoenebeck               Expires May 29, 2007                 [Page 66]  
   
 Internet-Draft        LinuxSampler Control Protocol        November 2006  
   
   
4178        / CHANNEL SP VOICE_COUNT SP sampler_channel        / CHANNEL SP VOICE_COUNT SP sampler_channel
4179    
4180        / ENGINE SP INFO SP engine_name        / ENGINE SP INFO SP engine_name
# Line 3707  Internet-Draft        LinuxSampler Contr Line 4185  Internet-Draft        LinuxSampler Contr
4185    
4186        / TOTAL_VOICE_COUNT_MAX        / TOTAL_VOICE_COUNT_MAX
4187    
4188          / MIDI_INSTRUMENTS
4189    
4190          / MIDI_INSTRUMENT SP INFO SP midi_bank_msb SP midi_bank_lsb SP
4191          midi_prog
4192    
4193     set_instruction =     set_instruction =
4194    
4195    
4196    
4197    
4198    
4199    Schoenebeck               Expires May 30, 2007                 [Page 75]
4200    
4201    Internet-Draft        LinuxSampler Control Protocol        November 2006
4202    
4203    
4204        AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '='        AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '='
4205        param_val_list        param_val_list
4206    
# Line 3735  Internet-Draft        LinuxSampler Contr Line 4227  Internet-Draft        LinuxSampler Contr
4227    
4228        / MIDI_INPUT_DEVICE SP string        / MIDI_INPUT_DEVICE SP string
4229    
4230       reset_instruction =
4231    
4232          CHANNEL SP sampler_channel
4233    
4234       clear_instruction =
4235    
4236          MIDI_INSTRUMENTS
4237    
4238     destroy_instruction =     destroy_instruction =
4239    
4240        AUDIO_OUTPUT_DEVICE SP number        AUDIO_OUTPUT_DEVICE SP number
# Line 3745  Internet-Draft        LinuxSampler Contr Line 4245  Internet-Draft        LinuxSampler Contr
4245    
4246        INSTRUMENT SP load_instr_args        INSTRUMENT SP load_instr_args
4247    
4248          / ENGINE SP load_engine_args
4249    
4250       set_chan_instruction =
4251    
4252    
 Schoenebeck               Expires May 29, 2007                 [Page 67]  
   
 Internet-Draft        LinuxSampler Control Protocol        November 2006  
4253    
4254    
4255        / ENGINE SP load_engine_args  Schoenebeck               Expires May 30, 2007                 [Page 76]
4256    
4257    Internet-Draft        LinuxSampler Control Protocol        November 2006
4258    
    set_chan_instruction =  
4259    
4260        AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index        AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
4261    
# Line 3800  Internet-Draft        LinuxSampler Contr Line 4300  Internet-Draft        LinuxSampler Contr
4300    
4301        / MIDI_INPUT_DEVICES        / MIDI_INPUT_DEVICES
4302    
4303          / CHANNELS
4304    
4305          / AVAILABLE_ENGINES
4306    
4307    
4308    
4309    
4310    
4311  Schoenebeck               Expires May 29, 2007                 [Page 68]  Schoenebeck               Expires May 30, 2007                 [Page 77]
4312    
4313  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
4314    
4315    
       / CHANNELS  
   
       / AVAILABLE_ENGINES  
   
4316        / AVAILABLE_MIDI_INPUT_DRIVERS        / AVAILABLE_MIDI_INPUT_DRIVERS
4317    
4318        / AVAILABLE_AUDIO_OUTPUT_DRIVERS        / AVAILABLE_AUDIO_OUTPUT_DRIVERS
4319    
4320          / MIDI_INSTRUMENTS
4321    
4322     load_instr_args =     load_instr_args =
4323    
4324        filename SP instrument_index SP sampler_channel        filename SP instrument_index SP sampler_channel
# Line 3827  Internet-Draft        LinuxSampler Contr Line 4329  Internet-Draft        LinuxSampler Contr
4329    
4330        engine_name SP sampler_channel        engine_name SP sampler_channel
4331    
4332       instr_load_mode =
4333    
4334          ON_DEMAND
4335    
4336          / ON_DEMAND_HOLD
4337    
4338          / PERSISTENT
4339    
4340     device_index =     device_index =
4341    
4342        number        number
# Line 3851  Internet-Draft        LinuxSampler Contr Line 4361  Internet-Draft        LinuxSampler Contr
4361    
4362     midi_input_type_name =     midi_input_type_name =
4363    
4364    
4365    
4366    
4367    Schoenebeck               Expires May 30, 2007                 [Page 78]
4368    
4369    Internet-Draft        LinuxSampler Control Protocol        November 2006
4370    
4371    
4372        string        string
4373    
4374     volume_value =     midi_bank_msb =
4375    
4376        dotnum        number
4377    
4378       midi_bank_lsb =
4379    
4380          number
4381    
4382       midi_prog =
4383    
4384  Schoenebeck               Expires May 29, 2007                 [Page 69]        number
   
 Internet-Draft        LinuxSampler Control Protocol        November 2006  
4385    
4386       volume_value =
4387    
4388          dotnum
4389    
4390        / number        / number
4391    
# Line 3883  Internet-Draft        LinuxSampler Contr Line 4405  Internet-Draft        LinuxSampler Contr
4405    
4406        stringval        stringval
4407    
4408       entry_name =
4409    
4410          stringval
4411    
4412     param_val_list =     param_val_list =
4413    
4414        param_val        param_val
# Line 3891  Internet-Draft        LinuxSampler Contr Line 4417  Internet-Draft        LinuxSampler Contr
4417    
4418     param_val =     param_val =
4419    
4420    
4421    
4422    
4423    Schoenebeck               Expires May 30, 2007                 [Page 79]
4424    
4425    Internet-Draft        LinuxSampler Control Protocol        November 2006
4426    
4427    
4428        string        string
4429    
4430        / stringval        / stringval
# Line 3916  Internet-Draft        LinuxSampler Contr Line 4450  Internet-Draft        LinuxSampler Contr
4450    
4451    
4452    
4453  Schoenebeck               Expires May 29, 2007                 [Page 70]  
4454    
4455    
4456    
4457    
4458    
4459    
4460    
4461    
4462    
4463    
4464    
4465    
4466    
4467    
4468    
4469    
4470    
4471    
4472    
4473    
4474    
4475    
4476    
4477    
4478    
4479    Schoenebeck               Expires May 30, 2007                 [Page 80]
4480    
4481  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
4482    
# Line 3972  Internet-Draft        LinuxSampler Contr Line 4532  Internet-Draft        LinuxSampler Contr
4532    
4533    
4534    
4535  Schoenebeck               Expires May 29, 2007                 [Page 71]  Schoenebeck               Expires May 30, 2007                 [Page 81]
4536    
4537  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
4538    
# Line 4028  Internet-Draft        LinuxSampler Contr Line 4588  Internet-Draft        LinuxSampler Contr
4588    
4589    
4590    
4591  Schoenebeck               Expires May 29, 2007                 [Page 72]  Schoenebeck               Expires May 30, 2007                 [Page 82]
4592    
4593  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
4594    
# Line 4084  Internet-Draft        LinuxSampler Contr Line 4644  Internet-Draft        LinuxSampler Contr
4644    
4645    
4646    
4647  Schoenebeck               Expires May 29, 2007                 [Page 73]  Schoenebeck               Expires May 30, 2007                 [Page 83]
4648    
4649  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
4650    
# Line 4140  Internet-Draft        LinuxSampler Contr Line 4700  Internet-Draft        LinuxSampler Contr
4700    
4701    
4702    
4703  Schoenebeck               Expires May 29, 2007                 [Page 74]  Schoenebeck               Expires May 30, 2007                 [Page 84]
4704    
4705  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
4706    
# Line 4196  Internet-Draft        LinuxSampler Contr Line 4756  Internet-Draft        LinuxSampler Contr
4756    
4757    
4758    
4759  Schoenebeck               Expires May 29, 2007                 [Page 75]  Schoenebeck               Expires May 30, 2007                 [Page 85]
4760    
4761  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
4762    
# Line 4252  Author's Address Line 4812  Author's Address
4812    
4813    
4814    
4815  Schoenebeck               Expires May 29, 2007                 [Page 76]  Schoenebeck               Expires May 30, 2007                 [Page 86]
4816    
4817  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
4818    
# Line 4308  Full Copyright Statement Line 4868  Full Copyright Statement
4868    
4869    
4870    
4871  Schoenebeck               Expires May 29, 2007                 [Page 77]  Schoenebeck               Expires May 30, 2007                 [Page 87]
4872    
4873  Internet-Draft        LinuxSampler Control Protocol        November 2006  Internet-Draft        LinuxSampler Control Protocol        November 2006
4874    
# Line 4364  Acknowledgment Line 4924  Acknowledgment
4924    
4925    
4926    
4927  Schoenebeck               Expires May 29, 2007                 [Page 78]  Schoenebeck               Expires May 30, 2007                 [Page 88]
4928    

Legend:
Removed from v.944  
changed lines
  Added in v.945

  ViewVC Help
Powered by ViewVC