--- web/trunk/www.linuxsampler.org/api/draft-linuxsampler-protocol.txt 2007/01/14 17:33:03 1028 +++ web/trunk/www.linuxsampler.org/api/draft-linuxsampler-protocol.txt 2009/07/31 10:20:16 1960 @@ -4,11 +4,11 @@ LinuxSampler Developers C. Schoenebeck Internet-Draft Interessengemeinschaft Software Intended status: Standards Track Engineering e. V. -Expires: July 18, 2007 January 14, 2007 +Expires: February 1, 2010 July 31, 2009 LinuxSampler Control Protocol - LSCP 1.2 + LSCP 1.4 Status of this Memo @@ -33,11 +33,9 @@ The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. - This Internet-Draft will expire on July 18, 2007. + This Internet-Draft will expire on February 1, 2010. -Copyright Notice - Copyright (C) The Internet Society (2007). @@ -52,9 +50,11 @@ -Schoenebeck Expires July 18, 2007 [Page 1] - -Internet-Draft LinuxSampler Control Protocol January 2007 + + +Schoenebeck Expires February 1, 2010 [Page 1] + +Internet-Draft LinuxSampler Control Protocol July 2009 Abstract @@ -68,161 +68,217 @@ Table of Contents - 1. Requirements notation . . . . . . . . . . . . . . . . . . . . 5 - 2. Versioning of this specification . . . . . . . . . . . . . . 6 - 3. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 7 - 4. Focus of this protocol . . . . . . . . . . . . . . . . . . . 8 - 5. Communication Overview . . . . . . . . . . . . . . . . . . . 9 - 5.1. Request/response communication method . . . . . . . . . . 9 - 5.1.1. Result format . . . . . . . . . . . . . . . . . . . . 10 - 5.2. Subscribe/notify communication method . . . . . . . . . . 12 - 6. Description for control commands . . . . . . . . . . . . . . 14 - 6.1. Ignored lines and comments . . . . . . . . . . . . . . . 14 - 6.2. Configuring audio drivers . . . . . . . . . . . . . . . . 14 - 6.2.1. Getting amount of available audio output drivers . . 15 - 6.2.2. Getting all available audio output drivers . . . . . 15 + 1. Requirements notation . . . . . . . . . . . . . . . . . . . . 6 + 2. Versioning of this specification . . . . . . . . . . . . . . 7 + 3. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8 + 4. Focus of this protocol . . . . . . . . . . . . . . . . . . . 9 + 5. Communication Overview . . . . . . . . . . . . . . . . . . . 10 + 5.1. Request/response communication method . . . . . . . . . . 10 + 5.1.1. Result format . . . . . . . . . . . . . . . . . . . . 11 + 5.2. Subscribe/notify communication method . . . . . . . . . . 13 + 6. Description for control commands . . . . . . . . . . . . . . 15 + 6.1. Ignored lines and comments . . . . . . . . . . . . . . . 15 + 6.2. Configuring audio drivers . . . . . . . . . . . . . . . . 15 + 6.2.1. Getting amount of available audio output drivers . . 16 + 6.2.2. Getting all available audio output drivers . . . . . 16 6.2.3. Getting information about a specific audio output - driver . . . . . . . . . . . . . . . . . . . . . . . 15 + driver . . . . . . . . . . . . . . . . . . . . . . . 16 6.2.4. Getting information about specific audio output - driver parameter . . . . . . . . . . . . . . . . . . 16 - 6.2.5. Creating an audio output device . . . . . . . . . . . 20 - 6.2.6. Destroying an audio output device . . . . . . . . . . 21 - 6.2.7. Getting all created audio output device count . . . . 22 - 6.2.8. Getting all created audio output device list . . . . 22 - 6.2.9. Getting current settings of an audio output device . 22 - 6.2.10. Changing settings of audio output devices . . . . . . 24 - 6.2.11. Getting information about an audio channel . . . . . 25 + driver parameter . . . . . . . . . . . . . . . . . . 17 + 6.2.5. Creating an audio output device . . . . . . . . . . . 21 + 6.2.6. Destroying an audio output device . . . . . . . . . . 22 + 6.2.7. Getting all created audio output device count . . . . 23 + 6.2.8. Getting all created audio output device list . . . . 23 + 6.2.9. Getting current settings of an audio output device . 23 + 6.2.10. Changing settings of audio output devices . . . . . . 25 + 6.2.11. Getting information about an audio channel . . . . . 26 6.2.12. Getting information about specific audio channel - parameter . . . . . . . . . . . . . . . . . . . . . . 26 - 6.2.13. Changing settings of audio output channels . . . . . 28 - 6.3. Configuring MIDI input drivers . . . . . . . . . . . . . 29 - 6.3.1. Getting amount of available MIDI input drivers . . . 30 - 6.3.2. Getting all available MIDI input drivers . . . . . . 30 + parameter . . . . . . . . . . . . . . . . . . . . . . 27 + 6.2.13. Changing settings of audio output channels . . . . . 29 + 6.3. Configuring MIDI input drivers . . . . . . . . . . . . . 30 + 6.3.1. Getting amount of available MIDI input drivers . . . 31 + 6.3.2. Getting all available MIDI input drivers . . . . . . 31 6.3.3. Getting information about a specific MIDI input - driver . . . . . . . . . . . . . . . . . . . . . . . 31 + driver . . . . . . . . . . . . . . . . . . . . . . . 32 6.3.4. Getting information about specific MIDI input - driver parameter . . . . . . . . . . . . . . . . . . 32 - 6.3.5. Creating a MIDI input device . . . . . . . . . . . . 34 - 6.3.6. Destroying a MIDI input device . . . . . . . . . . . 35 - 6.3.7. Getting all created MIDI input device count . . . . . 36 + driver parameter . . . . . . . . . . . . . . . . . . 33 + 6.3.5. Creating a MIDI input device . . . . . . . . . . . . 35 + 6.3.6. Destroying a MIDI input device . . . . . . . . . . . 36 + 6.3.7. Getting all created MIDI input device count . . . . . 37 + +Schoenebeck Expires February 1, 2010 [Page 2] -Schoenebeck Expires July 18, 2007 [Page 2] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Internet-Draft LinuxSampler Control Protocol July 2009 - 6.3.8. Getting all created MIDI input device list . . . . . 36 - 6.3.9. Getting current settings of a MIDI input device . . . 37 - 6.3.10. Changing settings of MIDI input devices . . . . . . . 38 - 6.3.11. Getting information about a MIDI port . . . . . . . . 38 + 6.3.8. Getting all created MIDI input device list . . . . . 37 + 6.3.9. Getting current settings of a MIDI input device . . . 38 + 6.3.10. Changing settings of MIDI input devices . . . . . . . 39 + 6.3.11. Getting information about a MIDI port . . . . . . . . 39 6.3.12. Getting information about specific MIDI port - parameter . . . . . . . . . . . . . . . . . . . . . . 39 - 6.3.13. Changing settings of MIDI input ports . . . . . . . . 41 - 6.4. Configuring sampler channels . . . . . . . . . . . . . . 42 - 6.4.1. Loading an instrument . . . . . . . . . . . . . . . . 42 - 6.4.2. Loading a sampler engine . . . . . . . . . . . . . . 43 - 6.4.3. Getting all created sampler channel count . . . . . . 44 - 6.4.4. Getting all created sampler channel list . . . . . . 44 - 6.4.5. Adding a new sampler channel . . . . . . . . . . . . 44 - 6.4.6. Removing a sampler channel . . . . . . . . . . . . . 45 - 6.4.7. Getting amount of available engines . . . . . . . . . 46 - 6.4.8. Getting all available engines . . . . . . . . . . . . 46 - 6.4.9. Getting information about an engine . . . . . . . . . 47 - 6.4.10. Getting sampler channel information . . . . . . . . . 48 - 6.4.11. Current number of active voices . . . . . . . . . . . 51 - 6.4.12. Current number of active disk streams . . . . . . . . 51 - 6.4.13. Current fill state of disk stream buffers . . . . . . 52 - 6.4.14. Setting audio output device . . . . . . . . . . . . . 53 - 6.4.15. Setting audio output type . . . . . . . . . . . . . . 53 - 6.4.16. Setting audio output channel . . . . . . . . . . . . 54 - 6.4.17. Setting MIDI input device . . . . . . . . . . . . . . 55 - 6.4.18. Setting MIDI input type . . . . . . . . . . . . . . . 56 - 6.4.19. Setting MIDI input port . . . . . . . . . . . . . . . 56 - 6.4.20. Setting MIDI input channel . . . . . . . . . . . . . 57 - 6.4.21. Setting channel volume . . . . . . . . . . . . . . . 58 - 6.4.22. Muting a sampler channel . . . . . . . . . . . . . . 58 - 6.4.23. Soloing a sampler channel . . . . . . . . . . . . . . 59 + parameter . . . . . . . . . . . . . . . . . . . . . . 40 + 6.3.13. Changing settings of MIDI input ports . . . . . . . . 42 + 6.4. Configuring sampler channels . . . . . . . . . . . . . . 43 + 6.4.1. Loading an instrument . . . . . . . . . . . . . . . . 43 + 6.4.2. Loading a sampler engine . . . . . . . . . . . . . . 44 + 6.4.3. Getting all created sampler channel count . . . . . . 45 + 6.4.4. Getting all created sampler channel list . . . . . . 46 + 6.4.5. Adding a new sampler channel . . . . . . . . . . . . 46 + 6.4.6. Removing a sampler channel . . . . . . . . . . . . . 47 + 6.4.7. Getting amount of available engines . . . . . . . . . 48 + 6.4.8. Getting all available engines . . . . . . . . . . . . 48 + 6.4.9. Getting information about an engine . . . . . . . . . 48 + 6.4.10. Getting sampler channel information . . . . . . . . . 49 + 6.4.11. Current number of active voices . . . . . . . . . . . 52 + 6.4.12. Current number of active disk streams . . . . . . . . 53 + 6.4.13. Current fill state of disk stream buffers . . . . . . 53 + 6.4.14. Setting audio output device . . . . . . . . . . . . . 54 + 6.4.15. Setting audio output type . . . . . . . . . . . . . . 55 + 6.4.16. Setting audio output channel . . . . . . . . . . . . 56 + 6.4.17. Setting MIDI input device . . . . . . . . . . . . . . 57 + 6.4.18. Setting MIDI input type . . . . . . . . . . . . . . . 57 + 6.4.19. Setting MIDI input port . . . . . . . . . . . . . . . 58 + 6.4.20. Setting MIDI input channel . . . . . . . . . . . . . 59 + 6.4.21. Setting channel volume . . . . . . . . . . . . . . . 59 + 6.4.22. Muting a sampler channel . . . . . . . . . . . . . . 60 + 6.4.23. Soloing a sampler channel . . . . . . . . . . . . . . 61 6.4.24. Assigning a MIDI instrument map to a sampler - channel . . . . . . . . . . . . . . . . . . . . . . . 60 - 6.4.25. Adding an effect send to a sampler channel . . . . . 61 - 6.4.26. Removing an effect send from a sampler channel . . . 62 - 6.4.27. Getting amount of effect sends on a sampler channel . 63 - 6.4.28. Listing all effect sends on a sampler channel . . . . 63 - 6.4.29. Getting effect send information . . . . . . . . . . . 64 - 6.4.30. Altering effect send's audio routing . . . . . . . . 65 - 6.4.31. Altering effect send's MIDI controller . . . . . . . 66 - 6.4.32. Altering effect send's send level . . . . . . . . . . 67 - 6.4.33. Resetting a sampler channel . . . . . . . . . . . . . 68 - 6.5. Controlling connection . . . . . . . . . . . . . . . . . 68 - 6.5.1. Register front-end for receiving event messages . . . 68 + channel . . . . . . . . . . . . . . . . . . . . . . . 61 + 6.4.25. Adding an effect send to a sampler channel . . . . . 62 + 6.4.26. Removing an effect send from a sampler channel . . . 64 + 6.4.27. Getting amount of effect sends on a sampler channel . 64 + 6.4.28. Listing all effect sends on a sampler channel . . . . 65 + 6.4.29. Getting effect send information . . . . . . . . . . . 65 + 6.4.30. Changing effect send's name . . . . . . . . . . . . . 67 + 6.4.31. Altering effect send's audio routing . . . . . . . . 67 + 6.4.32. Altering effect send's MIDI controller . . . . . . . 68 + 6.4.33. Altering effect send's send level . . . . . . . . . . 69 + 6.4.34. Sending MIDI messages to sampler channel . . . . . . 70 + 6.4.35. Resetting a sampler channel . . . . . . . . . . . . . 71 + 6.5. Controlling connection . . . . . . . . . . . . . . . . . 72 + 6.5.1. Register front-end for receiving event messages . . . 72 6.5.2. Unregister front-end for not receiving event - messages . . . . . . . . . . . . . . . . . . . . . . 69 - 6.5.3. Enable or disable echo of commands . . . . . . . . . 70 - 6.5.4. Close client connection . . . . . . . . . . . . . . . 70 + messages . . . . . . . . . . . . . . . . . . . . . . 73 -Schoenebeck Expires July 18, 2007 [Page 3] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - - 6.6. Global commands . . . . . . . . . . . . . . . . . . . . . 71 - 6.6.1. Current number of active voices . . . . . . . . . . . 71 - 6.6.2. Maximum amount of active voices . . . . . . . . . . . 71 - 6.6.3. Reset sampler . . . . . . . . . . . . . . . . . . . . 71 - 6.6.4. General sampler informations . . . . . . . . . . . . 72 - 6.6.5. Getting global volume attenuation . . . . . . . . . . 72 - 6.6.6. Setting global volume attenuation . . . . . . . . . . 73 - 6.7. MIDI Instrument Mapping . . . . . . . . . . . . . . . . . 73 - 6.7.1. Create a new MIDI instrument map . . . . . . . . . . 74 - 6.7.2. Delete one particular or all MIDI instrument maps . . 75 - 6.7.3. Get amount of existing MIDI instrument maps . . . . . 75 - 6.7.4. Getting all created MIDI instrument maps . . . . . . 76 - 6.7.5. Getting MIDI instrument map information . . . . . . . 76 - 6.7.6. Renaming a MIDI instrument map . . . . . . . . . . . 77 - 6.7.7. Create or replace a MIDI instrument map entry . . . . 77 - 6.7.8. Getting ammount of MIDI instrument map entries . . . 80 - 6.7.9. Getting indeces of all entries of a MIDI - instrument map . . . . . . . . . . . . . . . . . . . 81 - 6.7.10. Remove an entry from the MIDI instrument map . . . . 81 - 6.7.11. Get current settings of MIDI instrument map entry . . 82 - 6.7.12. Clear MIDI instrument map . . . . . . . . . . . . . . 84 - 7. Command Syntax . . . . . . . . . . . . . . . . . . . . . . . 85 - 8. Events . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 - 8.1. Number of audio output devices changed . . . . . . . . . 96 - 8.2. Audio output device's settings changed . . . . . . . . . 96 - 8.3. Number of MIDI input devices changed . . . . . . . . . . 96 - 8.4. MIDI input device's settings changed . . . . . . . . . . 97 - 8.5. Number of sampler channels changed . . . . . . . . . . . 97 - 8.6. Number of active voices changed . . . . . . . . . . . . . 97 - 8.7. Number of active disk streams changed . . . . . . . . . . 98 - 8.8. Disk stream buffer fill state changed . . . . . . . . . . 98 - 8.9. Channel information changed . . . . . . . . . . . . . . . 98 - 8.10. Total number of active voices changed . . . . . . . . . . 99 - 8.11. Number of MIDI instrument maps changed . . . . . . . . . 99 - 8.12. MIDI instrument map information changed . . . . . . . . . 99 - 8.13. Number of MIDI instruments changed . . . . . . . . . . . 100 - 8.14. MIDI instrument information changed . . . . . . . . . . . 100 - 8.15. Miscellaneous and debugging events . . . . . . . . . . . 101 - 9. Security Considerations . . . . . . . . . . . . . . . . . . . 102 - 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 103 - 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 104 - Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 105 - Intellectual Property and Copyright Statements . . . . . . . . . 106 +Schoenebeck Expires February 1, 2010 [Page 3] +Internet-Draft LinuxSampler Control Protocol July 2009 + 6.5.3. Enable or disable echo of commands . . . . . . . . . 73 + 6.5.4. Close client connection . . . . . . . . . . . . . . . 74 + 6.6. Global commands . . . . . . . . . . . . . . . . . . . . . 74 + 6.6.1. Current number of active voices . . . . . . . . . . . 74 + 6.6.2. Maximum amount of active voices . . . . . . . . . . . 74 + 6.6.3. Current number of active disk streams . . . . . . . . 75 + 6.6.4. Reset sampler . . . . . . . . . . . . . . . . . . . . 75 + 6.6.5. General sampler informations . . . . . . . . . . . . 75 + 6.6.6. Getting global volume attenuation . . . . . . . . . . 76 + 6.6.7. Setting global volume attenuation . . . . . . . . . . 76 + 6.6.8. Getting global voice limit . . . . . . . . . . . . . 77 + 6.6.9. Setting global voice limit . . . . . . . . . . . . . 77 + 6.6.10. Getting global disk stream limit . . . . . . . . . . 78 + 6.6.11. Setting global disk stream limit . . . . . . . . . . 79 + 6.7. MIDI Instrument Mapping . . . . . . . . . . . . . . . . . 79 + 6.7.1. Create a new MIDI instrument map . . . . . . . . . . 80 + 6.7.2. Delete one particular or all MIDI instrument maps . . 81 + 6.7.3. Get amount of existing MIDI instrument maps . . . . . 82 + 6.7.4. Getting all created MIDI instrument maps . . . . . . 82 + 6.7.5. Getting MIDI instrument map information . . . . . . . 82 + 6.7.6. Renaming a MIDI instrument map . . . . . . . . . . . 83 + 6.7.7. Create or replace a MIDI instrument map entry . . . . 84 + 6.7.8. Getting ammount of MIDI instrument map entries . . . 87 + 6.7.9. Getting indeces of all entries of a MIDI + instrument map . . . . . . . . . . . . . . . . . . . 87 + 6.7.10. Remove an entry from the MIDI instrument map . . . . 88 + 6.7.11. Get current settings of MIDI instrument map entry . . 89 + 6.7.12. Clear MIDI instrument map . . . . . . . . . . . . . . 90 + 6.8. Managing Instruments Database . . . . . . . . . . . . . . 91 + 6.8.1. Creating a new instrument directory . . . . . . . . . 91 + 6.8.2. Deleting an instrument directory . . . . . . . . . . 92 + 6.8.3. Getting amount of instrument directories . . . . . . 93 + 6.8.4. Listing all directories in specific directory . . . . 93 + 6.8.5. Getting instrument directory information . . . . . . 94 + 6.8.6. Renaming an instrument directory . . . . . . . . . . 95 + 6.8.7. Moving an instrument directory . . . . . . . . . . . 95 + 6.8.8. Copying instrument directories . . . . . . . . . . . 96 + 6.8.9. Changing the description of directory . . . . . . . . 97 + 6.8.10. Finding directories . . . . . . . . . . . . . . . . . 97 + 6.8.11. Adding instruments to the instruments database . . . 99 + 6.8.12. Removing an instrument . . . . . . . . . . . . . . . 100 + 6.8.13. Getting amount of instruments . . . . . . . . . . . . 101 + 6.8.14. Listing all instruments in specific directory . . . . 102 + 6.8.15. Getting instrument information . . . . . . . . . . . 102 + 6.8.16. Renaming an instrument . . . . . . . . . . . . . . . 105 + 6.8.17. Moving an instrument . . . . . . . . . . . . . . . . 105 + 6.8.18. Copying instruments . . . . . . . . . . . . . . . . . 106 + 6.8.19. Changing the description of instrument . . . . . . . 106 + + + +Schoenebeck Expires February 1, 2010 [Page 4] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + 6.8.20. Finding instruments . . . . . . . . . . . . . . . . . 107 + 6.8.21. Getting job status information . . . . . . . . . . . 109 + 6.8.22. Formatting the instruments database . . . . . . . . . 111 + 6.8.23. Checking for lost instrument files . . . . . . . . . 111 + 6.8.24. Replacing an instrument file . . . . . . . . . . . . 112 + 6.9. Editing Instruments . . . . . . . . . . . . . . . . . . . 112 + 6.9.1. Opening an appropriate instrument editor + application . . . . . . . . . . . . . . . . . . . . . 112 + 6.10. Managing Files . . . . . . . . . . . . . . . . . . . . . 113 + 6.10.1. Retrieving amount of instruments of a file . . . . . 114 + 6.10.2. Retrieving all instruments of a file . . . . . . . . 114 + 6.10.3. Retrieving informations about one instrument in a + file . . . . . . . . . . . . . . . . . . . . . . . . 115 + 7. Command Syntax . . . . . . . . . . . . . . . . . . . . . . . 117 + 7.1. Character Set and Escape Sequences . . . . . . . . . . . 131 + 8. Events . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 + 8.1. Number of audio output devices changed . . . . . . . . . 136 + 8.2. Audio output device's settings changed . . . . . . . . . 136 + 8.3. Number of MIDI input devices changed . . . . . . . . . . 136 + 8.4. MIDI input device's settings changed . . . . . . . . . . 137 + 8.5. Number of sampler channels changed . . . . . . . . . . . 137 + 8.6. MIDI data on a sampler channel arrived . . . . . . . . . 137 + 8.7. MIDI data on a MIDI input device arrived . . . . . . . . 138 + 8.8. Number of active voices changed . . . . . . . . . . . . . 138 + 8.9. Number of active disk streams changed . . . . . . . . . . 139 + 8.10. Disk stream buffer fill state changed . . . . . . . . . . 139 + 8.11. Channel information changed . . . . . . . . . . . . . . . 139 + 8.12. Number of effect sends changed . . . . . . . . . . . . . 140 + 8.13. Effect send information changed . . . . . . . . . . . . . 140 + 8.14. Total number of active voices changed . . . . . . . . . . 141 + 8.15. Total number of active disk streams changed . . . . . . . 141 + 8.16. Number of MIDI instrument maps changed . . . . . . . . . 141 + 8.17. MIDI instrument map information changed . . . . . . . . . 141 + 8.18. Number of MIDI instruments changed . . . . . . . . . . . 142 + 8.19. MIDI instrument information changed . . . . . . . . . . . 142 + 8.20. Global settings changed . . . . . . . . . . . . . . . . . 143 + 8.21. Number of database instrument directories changed . . . . 143 + 8.22. Database instrument directory information changed . . . . 143 + 8.23. Number of database instruments changed . . . . . . . . . 144 + 8.24. Database instrument information changed . . . . . . . . . 144 + 8.25. Database job status information changed . . . . . . . . . 145 + 8.26. Miscellaneous and debugging events . . . . . . . . . . . 145 + 9. Security Considerations . . . . . . . . . . . . . . . . . . . 147 + 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 148 + 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 149 + Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 150 + Intellectual Property and Copyright Statements . . . . . . . . . 151 +Schoenebeck Expires February 1, 2010 [Page 5] -Schoenebeck Expires July 18, 2007 [Page 4] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Internet-Draft LinuxSampler Control Protocol July 2009 1. Requirements notation @@ -238,7 +294,7 @@ end) and server (LinuxSampler) respectively. Lines in examples must be interpreted as every line being CRLF terminated (carriage return character followed by line feed character as defined in the ASCII - standard), thus the following example: + standard [RFC20]), thus the following example: C: "some line" @@ -276,9 +332,9 @@ -Schoenebeck Expires July 18, 2007 [Page 5] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 6] + +Internet-Draft LinuxSampler Control Protocol July 2009 2. Versioning of this specification @@ -307,7 +363,7 @@ sampler's LSCP minor version. Compatibility can only be claimed if both rules are true. The - frontend can use the "GET SERVER INFO" (Section 6.6.4) command to get + frontend can use the "GET SERVER INFO" (Section 6.6.5) command to get the version of the LSCP specification the sampler complies with. @@ -332,9 +388,9 @@ -Schoenebeck Expires July 18, 2007 [Page 6] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 7] + +Internet-Draft LinuxSampler Control Protocol July 2009 3. Introduction @@ -388,9 +444,9 @@ -Schoenebeck Expires July 18, 2007 [Page 7] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 8] + +Internet-Draft LinuxSampler Control Protocol July 2009 4. Focus of this protocol @@ -444,9 +500,9 @@ -Schoenebeck Expires July 18, 2007 [Page 8] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 9] + +Internet-Draft LinuxSampler Control Protocol July 2009 5. Communication Overview @@ -500,9 +556,9 @@ -Schoenebeck Expires July 18, 2007 [Page 9] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 10] + +Internet-Draft LinuxSampler Control Protocol July 2009 5.1.1. Result format @@ -556,9 +612,9 @@ -Schoenebeck Expires July 18, 2007 [Page 10] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 11] + +Internet-Draft LinuxSampler Control Protocol July 2009 set has the following format: @@ -612,9 +668,9 @@ -Schoenebeck Expires July 18, 2007 [Page 11] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 12] + +Internet-Draft LinuxSampler Control Protocol July 2009 Each line of the result set MUST end with . @@ -668,9 +724,9 @@ -Schoenebeck Expires July 18, 2007 [Page 12] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 13] + +Internet-Draft LinuxSampler Control Protocol July 2009 inserted in the middle of the event message as well as any other @@ -724,9 +780,9 @@ -Schoenebeck Expires July 18, 2007 [Page 13] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 14] + +Internet-Draft LinuxSampler Control Protocol July 2009 6. Description for control commands @@ -780,9 +836,9 @@ -Schoenebeck Expires July 18, 2007 [Page 14] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 15] + +Internet-Draft LinuxSampler Control Protocol July 2009 6.2.1. Getting amount of available audio output drivers @@ -836,9 +892,9 @@ -Schoenebeck Expires July 18, 2007 [Page 15] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 16] + +Internet-Draft LinuxSampler Control Protocol July 2009 LinuxSampler will answer by sending a separated list. Each @@ -892,9 +948,9 @@ -Schoenebeck Expires July 18, 2007 [Page 16] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 17] + +Internet-Draft LinuxSampler Control Protocol July 2009 obtained (as returned by the "GET AUDIO_OUTPUT_DRIVER INFO" @@ -948,9 +1004,9 @@ -Schoenebeck Expires July 18, 2007 [Page 17] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 18] + +Internet-Draft LinuxSampler Control Protocol July 2009 MULTIPLICITY - @@ -1004,9 +1060,9 @@ -Schoenebeck Expires July 18, 2007 [Page 18] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 19] + +Internet-Draft LinuxSampler Control Protocol July 2009 returned, dependent to driver parameter) @@ -1060,9 +1116,9 @@ -Schoenebeck Expires July 18, 2007 [Page 19] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 20] + +Internet-Draft LinuxSampler Control Protocol July 2009 "TYPE: INT" @@ -1116,9 +1172,9 @@ -Schoenebeck Expires July 18, 2007 [Page 20] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 21] + +Internet-Draft LinuxSampler Control Protocol July 2009 providing an appropriate warning code and warning message @@ -1172,9 +1228,9 @@ -Schoenebeck Expires July 18, 2007 [Page 21] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 22] + +Internet-Draft LinuxSampler Control Protocol July 2009 C: "DESTROY AUDIO_OUTPUT_DEVICE 0" @@ -1228,9 +1284,9 @@ -Schoenebeck Expires July 18, 2007 [Page 22] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 23] + +Internet-Draft LinuxSampler Control Protocol July 2009 Possible Answers: @@ -1284,9 +1340,9 @@ -Schoenebeck Expires July 18, 2007 [Page 23] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 24] + +Internet-Draft LinuxSampler Control Protocol July 2009 "FRAGMENTS: 2" @@ -1340,9 +1396,9 @@ -Schoenebeck Expires July 18, 2007 [Page 24] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 25] + +Internet-Draft LinuxSampler Control Protocol July 2009 6.2.11. Getting information about an audio channel @@ -1396,9 +1452,9 @@ -Schoenebeck Expires July 18, 2007 [Page 25] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 26] + +Internet-Draft LinuxSampler Control Protocol July 2009 Examples: @@ -1452,9 +1508,9 @@ -Schoenebeck Expires July 18, 2007 [Page 26] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 27] + +Internet-Draft LinuxSampler Control Protocol July 2009 channel number and a specific channel parameter name for @@ -1508,9 +1564,9 @@ -Schoenebeck Expires July 18, 2007 [Page 27] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 28] + +Internet-Draft LinuxSampler Control Protocol July 2009 RANGE_MAX - @@ -1564,9 +1620,9 @@ -Schoenebeck Expires July 18, 2007 [Page 28] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 29] + +Internet-Draft LinuxSampler Control Protocol July 2009 "OK" - @@ -1620,9 +1676,9 @@ -Schoenebeck Expires July 18, 2007 [Page 29] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 30] + +Internet-Draft LinuxSampler Control Protocol July 2009 Note: examples in this chapter showing particular parameters of @@ -1676,9 +1732,9 @@ -Schoenebeck Expires July 18, 2007 [Page 30] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 31] + +Internet-Draft LinuxSampler Control Protocol July 2009 6.3.3. Getting information about a specific MIDI input driver @@ -1732,9 +1788,9 @@ -Schoenebeck Expires July 18, 2007 [Page 31] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 32] + +Internet-Draft LinuxSampler Control Protocol July 2009 6.3.4. Getting information about specific MIDI input driver parameter @@ -1788,9 +1844,9 @@ -Schoenebeck Expires July 18, 2007 [Page 32] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 33] + +Internet-Draft LinuxSampler Control Protocol July 2009 FIX - @@ -1844,9 +1900,9 @@ -Schoenebeck Expires July 18, 2007 [Page 33] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 34] + +Internet-Draft LinuxSampler Control Protocol July 2009 may also appear without (optionally returned, dependent to @@ -1900,9 +1956,9 @@ -Schoenebeck Expires July 18, 2007 [Page 34] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 35] + +Internet-Draft LinuxSampler Control Protocol July 2009 "OK[]" - @@ -1956,9 +2012,9 @@ -Schoenebeck Expires July 18, 2007 [Page 35] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 36] + +Internet-Draft LinuxSampler Control Protocol July 2009 in case it failed, providing an appropriate error code and @@ -2012,9 +2068,9 @@ -Schoenebeck Expires July 18, 2007 [Page 36] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 37] + +Internet-Draft LinuxSampler Control Protocol July 2009 6.3.9. Getting current settings of a MIDI input device @@ -2068,9 +2124,9 @@ -Schoenebeck Expires July 18, 2007 [Page 37] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 38] + +Internet-Draft LinuxSampler Control Protocol July 2009 "ACTIVE: true" @@ -2124,9 +2180,9 @@ -Schoenebeck Expires July 18, 2007 [Page 38] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 39] + +Internet-Draft LinuxSampler Control Protocol July 2009 MIDI_INPUT_DEVICES" (Section 6.3.8) command and the MIDI @@ -2180,9 +2236,9 @@ -Schoenebeck Expires July 18, 2007 [Page 39] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 40] + +Internet-Draft LinuxSampler Control Protocol July 2009 character string to that info category. There is information @@ -2236,9 +2292,9 @@ -Schoenebeck Expires July 18, 2007 [Page 40] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 41] + +Internet-Draft LinuxSampler Control Protocol July 2009 returned, dependent to device and port parameter) @@ -2272,7 +2328,9 @@ device as returned by the "CREATE MIDI_INPUT_DEVICE" (Section 6.3.5) or "LIST MIDI_INPUT_DEVICES" (Section 6.3.8) command, by the MIDI port number, by the name of the parameter to change and - by the new value for this parameter. + by the new value for this parameter (encapsulated into + apostrophes) or NONE (not encapsulated into apostrophes) for + specifying no value for parameters allowing a list of values. Possible Answers: @@ -2286,23 +2344,29 @@ noteworthy issue(s) related, providing an appropriate warning code and warning message - "ERR::" - +Schoenebeck Expires February 1, 2010 [Page 42] -Schoenebeck Expires July 18, 2007 [Page 41] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Internet-Draft LinuxSampler Control Protocol July 2009 + "ERR::" - + in case it failed, providing an appropriate error code and error message Example: + C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'" + + S: "OK" + C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE" + + S: "OK" 6.4. Configuring sampler channels @@ -2324,6 +2388,11 @@ of the sampler channel the instrument should be assigned to. Each sampler channel can only have one instrument. + Notice: since LSCP 1.2 the argument supports escape + characters for special characters (see chapter "Character Set and + Escape Sequences (Section 7.1)" for details) and accordingly + backslash characters in the filename MUST now be escaped as well! + The difference between regular and NON_MODAL versions of the command is that the regular command returns OK only after the instrument has been fully loaded and the channel is ready to be used while NON_MODAL @@ -2332,6 +2401,14 @@ (Section 6.4.10) command can be used to obtain loading progress from INSTRUMENT_STATUS field. LOAD command will perform sanity checks such as making sure that the file could be read and it is of a proper + + + +Schoenebeck Expires February 1, 2010 [Page 43] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + format and SHOULD return ERR and SHOULD not launch the background process should any errors be detected at that point. @@ -2345,14 +2422,6 @@ in case the instrument was loaded successfully, but there are noteworthy issue(s) related (e.g. Engine doesn't support one - - - -Schoenebeck Expires July 18, 2007 [Page 42] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - or more patch parameters provided by the loaded instrument file), providing an appropriate warning code and warning message @@ -2362,9 +2431,17 @@ in case it failed, providing an appropriate error code and error message - Example: + Example (Unix): + C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0 + S: OK + + Example (Windows): + + C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0 + + S: OK 6.4.2. Loading a sampler engine @@ -2380,6 +2457,14 @@ be assigned to. This command should be issued after adding a new sampler channel and before any other control commands on the new sampler channel. It can also be used to change the engine type of a + + + +Schoenebeck Expires February 1, 2010 [Page 44] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + sampler channel. This command has (currently) no way to define or force if a new engine instance should be created and assigned to the given sampler channel or if an already existing instance of that @@ -2402,13 +2487,6 @@ in case it failed, providing an appropriate error code and error message - - -Schoenebeck Expires July 18, 2007 [Page 43] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - Example: @@ -2432,6 +2510,17 @@ S: "12" + + + + + + +Schoenebeck Expires February 1, 2010 [Page 45] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + 6.4.4. Getting all created sampler channel list The number of sampler channels can change on runtime. To get the @@ -2456,15 +2545,6 @@ A new sampler channel can be added to the end of the sampler channel list by sending the following command: - - - - -Schoenebeck Expires July 18, 2007 [Page 44] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - ADD CHANNEL This will increment the sampler channel count by one and the new @@ -2488,6 +2568,15 @@ "WRN::" - + + + + +Schoenebeck Expires February 1, 2010 [Page 46] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + in case a new channel was added successfully, but there are noteworthy issue(s) related, providing an appropriate warning code and warning message @@ -2514,13 +2603,6 @@ Possible Answers: - - -Schoenebeck Expires July 18, 2007 [Page 45] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - "OK" - in case the given sampler channel could be removed @@ -2540,6 +2622,17 @@ + + + + + + +Schoenebeck Expires February 1, 2010 [Page 47] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + 6.4.7. Getting amount of available engines The front-end can ask for the number of available engines by sending @@ -2567,16 +2660,6 @@ Possible Answers: - - - - - -Schoenebeck Expires July 18, 2007 [Page 46] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - LinuxSampler will answer by sending a comma separated list of the engines' names encapsulated into apostrophes ('). Engine names can consist of lower and upper cases, digits and underlines ("_" @@ -2598,6 +2681,14 @@ Where is an engine name as obtained by the "LIST AVAILABLE_ENGINES" (Section 6.4.8) command. + + + +Schoenebeck Expires February 1, 2010 [Page 48] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + Possible Answers: LinuxSampler will answer by sending a separated list. Each @@ -2610,7 +2701,8 @@ DESCRIPTION - - arbitrary description text about the engine + arbitrary description text about the engine (note that the + character string may contain escape sequences (Section 7.1)) VERSION - @@ -2624,15 +2716,6 @@ S: "DESCRIPTION: this is Joe's custom sampler engine" - - - - -Schoenebeck Expires July 18, 2007 [Page 47] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - "VERSION: testing-1.0" "." @@ -2654,6 +2737,14 @@ answer line begins with the settings category name followed by a colon and then a space character and finally the info character string to that setting category. At the moment the + + + +Schoenebeck Expires February 1, 2010 [Page 49] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + following categories are defined: @@ -2668,8 +2759,8 @@ 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 - sampler channel + signal, "-1" if there's no device connected to this sampler + channel AUDIO_OUTPUT_CHANNELS - @@ -2681,14 +2772,6 @@ comma separated list which reflects to which audio channel of the selected audio output device each sampler output channel is routed to, e.g. "0,3" would mean the engine's - - - -Schoenebeck Expires July 18, 2007 [Page 48] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - output channel 0 is routed to channel 0 of the audio output device and the engine's output channel 1 is routed to the channel 3 of the audio output device @@ -2696,33 +2779,47 @@ INSTRUMENT_FILE - the file name of the loaded instrument, "NONE" if there's no - instrument yet loaded for this sampler channel + instrument yet loaded for this sampler channel (note: since + LSCP 1.2 this path may contain escape sequences + (Section 7.1)) INSTRUMENT_NR - - the instrument index number of the loaded instrument + the instrument index number of the loaded instrument, "-1" + if there's no instrument loaded for this sampler channel INSTRUMENT_NAME - - the instrument name of the loaded instrument + the instrument name of the loaded instrument (note: since + LSCP 1.2 this character string may contain escape sequences + (Section 7.1)) + + + +Schoenebeck Expires February 1, 2010 [Page 50] + +Internet-Draft LinuxSampler Control Protocol July 2009 + INSTRUMENT_STATUS - - integer values 0 to 100 indicating loading progress + Integer values 0 to 100 indicating loading progress percentage for the instrument. Negative value indicates a - loading exception. Value of 100 indicates that the - instrument is fully loaded. + loading exception (also returns "-1" in case no instrument + was yet to be loaded on the sampler channel). Value of 100 + indicates that the instrument is fully loaded. MIDI_INPUT_DEVICE - numerical ID of the MIDI input device which is currently connected to this sampler channel to deliver MIDI input - commands, "NONE" if there's no device connected to this + commands, "-1" if there's no device connected to this sampler channel MIDI_INPUT_PORT - - port number of the MIDI input device + port number of the MIDI input device (in case a MIDI device + was already assigned to the sampler channel) MIDI_INPUT_CHANNEL - @@ -2735,16 +2832,6 @@ (where a value < 1.0 means attenuation and a value > 1.0 means amplification) - - - - - -Schoenebeck Expires July 18, 2007 [Page 49] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - MUTE - Determines whether the channel is muted, "true" if the @@ -2762,6 +2849,14 @@ Determines to which MIDI instrument map this sampler channel is assigned to. Read chapter "SET CHANNEL + + + +Schoenebeck Expires February 1, 2010 [Page 51] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + MIDI_INSTRUMENT_MAP" (Section 6.4.24) for a list of possible values. @@ -2793,14 +2888,6 @@ "MIDI_INPUT_PORT: 0" - - - -Schoenebeck Expires July 18, 2007 [Page 50] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - "MIDI_INPUT_CHANNEL: 5" "VOLUME: 1.0" @@ -2818,6 +2905,14 @@ The front-end can ask for the current number of active voices on a sampler channel by sending the following command: + + + +Schoenebeck Expires February 1, 2010 [Page 52] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + GET CHANNEL VOICE_COUNT Where is the sampler channel number the front-end @@ -2849,14 +2944,6 @@ LinuxSampler will answer by returning the number of active disk streams on that channel in case the engine supports disk streaming, if the engine doesn't support disk streaming it will - - - -Schoenebeck Expires July 18, 2007 [Page 51] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - return "NA" for not available. Example: @@ -2872,6 +2959,16 @@ to get the fill state in bytes or + + + + + +Schoenebeck Expires February 1, 2010 [Page 53] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + GET CHANNEL BUFFER_FILL PERCENTAGE to get the fill state in percent, where is the @@ -2904,15 +3001,6 @@ C: "GET CHANNEL BUFFER_FILL PERCENTAGE 4" - - - - -Schoenebeck Expires July 18, 2007 [Page 52] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - S: "" 6.4.14. Setting audio output device @@ -2930,6 +3018,13 @@ (Section 6.2.5) or "LIST AUDIO_OUTPUT_DEVICES" (Section 6.2.8) command. + + +Schoenebeck Expires February 1, 2010 [Page 54] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + Possible Answers: "OK" - @@ -2961,14 +3056,6 @@ SET CHANNEL AUDIO_OUTPUT_TYPE - - - -Schoenebeck Expires July 18, 2007 [Page 53] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - Where is currently either "ALSA" or "JACK" and is the respective sampler channel number. @@ -2984,6 +3071,16 @@ related, providing an appropriate warning code and warning message + + + + + +Schoenebeck Expires February 1, 2010 [Page 55] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + "ERR::" - in case it failed, providing an appropriate error code and @@ -3016,15 +3113,6 @@ "WRN::" - - - - - -Schoenebeck Expires July 18, 2007 [Page 54] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - if audio output channel was set, but there are noteworthy issue(s) related, providing an appropriate warning code and warning message @@ -3038,6 +3126,17 @@ + + + + + + +Schoenebeck Expires February 1, 2010 [Page 56] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + 6.4.17. Setting MIDI input device The front-end can set the MIDI input device on a specific sampler @@ -3072,15 +3171,6 @@ - - - - -Schoenebeck Expires July 18, 2007 [Page 55] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - 6.4.18. Setting MIDI input type DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON! @@ -3095,6 +3185,14 @@ Possible Answers: + + + +Schoenebeck Expires February 1, 2010 [Page 57] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + "OK" - on success @@ -3128,15 +3226,6 @@ "OK" - - - - - -Schoenebeck Expires July 18, 2007 [Page 56] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - on success "WRN::" - @@ -3154,6 +3243,14 @@ + +Schoenebeck Expires February 1, 2010 [Page 58] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + + 6.4.20. Setting MIDI input channel The front-end can alter the MIDI channel a sampler channel should @@ -3186,15 +3283,6 @@ - - -Schoenebeck Expires July 18, 2007 [Page 57] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - - - 6.4.21. Setting channel volume The front-end can alter the volume of a sampler channel by sending @@ -3209,6 +3297,14 @@ Possible Answers: + + + +Schoenebeck Expires February 1, 2010 [Page 59] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + "OK" - on success @@ -3242,13 +3338,6 @@ Possible Answers: - - -Schoenebeck Expires July 18, 2007 [Page 58] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - "OK" - on success @@ -3264,6 +3353,14 @@ in case it failed, providing an appropriate error code and error message + + + +Schoenebeck Expires February 1, 2010 [Page 60] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + Examples: @@ -3297,14 +3394,6 @@ in case it failed, providing an appropriate error code and error message - - - -Schoenebeck Expires July 18, 2007 [Page 59] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - Examples: @@ -3321,6 +3410,13 @@ (Section 6.4.4) command and can have the following possibilites: + + +Schoenebeck Expires February 1, 2010 [Page 61] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + "NONE" - This is the default setting. In this case the sampler channel @@ -3354,13 +3450,6 @@ in case it failed, providing an appropriate error code and error message - - -Schoenebeck Expires July 18, 2007 [Page 60] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - Examples: @@ -3376,9 +3465,20 @@ returned by the "ADD CHANNEL" (Section 6.4.5) or "LIST CHANNELS" (Section 6.4.4) command, that is the sampler channel on which the effect send should be created on, is a number between + + + +Schoenebeck Expires February 1, 2010 [Page 62] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + 0..127 defining the MIDI controller which can alter the effect send level and is an optional argument defining a name for the - effect send entity. The name does not have to be unique. + effect send entity. The name does not have to be unique, but MUST be + encapsulated into apostrophes and supports escape sequences as + described in chapter "Character Set and Escape Sequences + (Section 7.1)". By default, that is as initial routing, the effect send's audio channels are automatically routed to the last audio channels of the @@ -3387,7 +3487,7 @@ having dedicated effect send output channels and when "CREATE FX_SEND" is called, those channels will automatically be picked. You can alter the destination channels however with "SET FX_SEND - AUDIO_OUTPUT_CHANNEL" (Section 6.4.30). + AUDIO_OUTPUT_CHANNEL" (Section 6.4.31). Note: Create effect sends on a sampler channel only when needed, because having effect sends on a sampler channel will decrease @@ -3407,16 +3507,6 @@ channel, where reflects the unique ID of the newly created effect send entity - - - - - -Schoenebeck Expires July 18, 2007 [Page 61] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - "ERR::" - when a new effect send could not be added, i.e. due to invalid @@ -3430,6 +3520,15 @@ C: "CREATE FX_SEND 0 93" + + + + +Schoenebeck Expires February 1, 2010 [Page 63] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + S: "OK[1]" 6.4.26. Removing an effect send from a sampler channel @@ -3463,16 +3562,6 @@ S: "OK" - - - - - -Schoenebeck Expires July 18, 2007 [Page 62] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - 6.4.27. Getting amount of effect sends on a sampler channel The front-end can ask for the amount of effect sends on a specific @@ -3486,6 +3575,16 @@ Possible Answers: + + + + + +Schoenebeck Expires February 1, 2010 [Page 64] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + The sampler will answer by returning the number of effect sends on the given sampler channel. @@ -3521,14 +3620,6 @@ S: "" - - - -Schoenebeck Expires July 18, 2007 [Page 63] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - 6.4.29. Getting effect send information The front-end can ask for the current settings of an effect send @@ -3542,6 +3633,14 @@ entity as returned by the "CREATE FX_SEND" (Section 6.4.25) or "LIST FX_SENDS" (Section 6.4.28) command. + + + +Schoenebeck Expires February 1, 2010 [Page 65] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + Possible Answers: The sampler will answer by sending a separated list. Each @@ -3554,7 +3653,8 @@ NAME - - name of the effect send entity + name of the effect send entity (note that this character + string may contain escape sequences (Section 7.1)) MIDI_CONTROLLER - @@ -3575,15 +3675,7 @@ send's output channel 0 is routed to channel 0 of the audio output device and the effect send's output channel 1 is routed to the channel 3 of the audio output device (see "SET - FX_SEND AUDIO_OUTPUT_CHANNEL" (Section 6.4.30) for details) - - - - -Schoenebeck Expires July 18, 2007 [Page 64] - -Internet-Draft LinuxSampler Control Protocol January 2007 - + FX_SEND AUDIO_OUTPUT_CHANNEL" (Section 6.4.31) for details) The mentioned fields above don't have to be in particular order. @@ -3597,11 +3689,53 @@ "LEVEL: 0.3" + + + +Schoenebeck Expires February 1, 2010 [Page 66] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + "AUDIO_OUTPUT_ROUTING: 2,3" "." -6.4.30. Altering effect send's audio routing +6.4.30. Changing effect send's name + + The front-end can alter the current name of an effect send entity by + sending the following command: + + SET FX_SEND NAME + + Where is the sampler channel number as returned by the + "ADD CHANNEL" (Section 6.4.5) or "LIST CHANNELS" (Section 6.4.4) + command, reflects the numerical ID of the effect send + entity as returned by the "CREATE FX_SEND" (Section 6.4.25) or "LIST + FX_SENDS" (Section 6.4.28) command and is the new name of the + effect send entity, which does not have to be unique (name MUST be + encapsulated into apostrophes and supports escape sequences as + described in chapter "Character Set and Escape Sequences + (Section 7.1)"). + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + in case it failed, providing an appropriate error code and + error message + + Example: + + C: "SET FX_SEND NAME 0 0 'Fx Send 1'" + + S: "OK" + +6.4.31. Altering effect send's audio routing The front-end can alter the destination of an effect send's audio channel on a specific sampler channel by sending the following @@ -3611,6 +3745,14 @@ Where is the sampler channel number as returned by the + + + +Schoenebeck Expires February 1, 2010 [Page 67] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + "ADD CHANNEL" (Section 6.4.5) or "LIST CHANNELS" (Section 6.4.4) command, reflects the numerical ID of the effect send entity as returned by the "CREATE FX_SEND" (Section 6.4.25) or "LIST @@ -3633,14 +3775,6 @@ Possible Answers: - - - -Schoenebeck Expires July 18, 2007 [Page 65] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - "OK" - on success @@ -3662,11 +3796,19 @@ S: "OK" -6.4.31. Altering effect send's MIDI controller +6.4.32. Altering effect send's MIDI controller The front-end can alter the MIDI controller of an effect send entity by sending the following command: + + + +Schoenebeck Expires February 1, 2010 [Page 68] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + SET FX_SEND MIDI_CONTROLLER @@ -3690,13 +3832,6 @@ related, providing an appropriate warning code and warning message - - -Schoenebeck Expires July 18, 2007 [Page 66] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - "ERR::" - in case it failed, providing an appropriate error code and @@ -3708,7 +3843,7 @@ S: "OK" -6.4.32. Altering effect send's send level +6.4.33. Altering effect send's send level The front-end can alter the current send level of an effect send entity by sending the following command: @@ -3722,6 +3857,14 @@ FX_SENDS" (Section 6.4.28) command and is an optionally dotted positive number (a value smaller than 1.0 means attenuation, whereas a value greater than 1.0 means amplification) reflecting the + + + +Schoenebeck Expires February 1, 2010 [Page 69] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + new send level. Possible Answers: @@ -3743,21 +3886,64 @@ Example: + C: "SET FX_SEND LEVEL 0 0 0.15" + S: "OK" +6.4.34. Sending MIDI messages to sampler channel + The front-end can send MIDI events to specific sampler channel by + sending the following command: + SEND CHANNEL MIDI_DATA -Schoenebeck Expires July 18, 2007 [Page 67] - -Internet-Draft LinuxSampler Control Protocol January 2007 + Where is the sampler channel number as returned by the + "ADD CHANNEL" (Section 6.4.5) or "LIST CHANNELS" (Section 6.4.4) + command, and arguments depend on the + argument, which specifies the MIDI message type. Currently, the + following MIDI messages are supported: + "NOTE_ON" - - C: "SET FX_SEND LEVEL 0 0 0.15" + For turning on MIDI notes, where specifies the key + number and the velocity as described in the MIDI + specification. + + "NOTE_OFF" - + + For turning a currently playing MIDI note off, where + specifies the key number and the velocity as described + + + +Schoenebeck Expires February 1, 2010 [Page 70] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + in the MIDI specification. + + CAUTION: This command is provided for implementations of virtual MIDI + keyboards and no realtime guarantee whatsoever will be made! + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + in case it failed, providing an appropriate error code and + error message + + Example: + + C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112" S: "OK" -6.4.33. Resetting a sampler channel +6.4.35. Resetting a sampler channel The front-end can reset a particular sampler channel by sending the following command: @@ -3781,6 +3967,16 @@ related, providing an appropriate warning code and warning message + + + + + +Schoenebeck Expires February 1, 2010 [Page 71] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + "ERR::" - in case it failed, providing an appropriate error code and @@ -3800,15 +3996,6 @@ The front-end can register itself to the LinuxSampler application to be informed about noteworthy events by sending this command: - - - - -Schoenebeck Expires July 18, 2007 [Page 68] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - SUBSCRIBE where will be replaced by the respective event that client @@ -3835,6 +4022,17 @@ + + + + + + +Schoenebeck Expires February 1, 2010 [Page 72] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + 6.5.2. Unregister front-end for not receiving event messages The front-end can unregister itself if it doesn't want to receive @@ -3857,14 +4055,6 @@ related, providing an appropriate warning code and warning message - - - -Schoenebeck Expires July 18, 2007 [Page 69] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - "ERR::" - in case it failed, providing an appropriate error code and @@ -3890,6 +4080,15 @@ Possible Answers: + + + + +Schoenebeck Expires February 1, 2010 [Page 73] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + "OK" - usually @@ -3912,15 +4111,6 @@ This is probably more interesting for manual telnet connections to LinuxSampler than really useful for a front-end implementation. - - - - -Schoenebeck Expires July 18, 2007 [Page 70] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - 6.6. Global commands The following commands have global impact on the sampler. @@ -3946,10 +4136,31 @@ Possible Answers: + + + + +Schoenebeck Expires February 1, 2010 [Page 74] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + LinuxSampler will answer by returning the maximum number of active voices. -6.6.3. Reset sampler +6.6.3. Current number of active disk streams + + The front-end can ask for the current number of active disk streams + on the sampler by sending the following command: + + GET TOTAL_STREAM_COUNT + + Possible Answers: + + LinuxSampler will answer by returning the number of all active + disk streams on the sampler. + +6.6.4. Reset sampler The front-end can reset the whole sampler by sending the following command: @@ -3966,18 +4177,7 @@ - - - - - - -Schoenebeck Expires July 18, 2007 [Page 71] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - -6.6.4. General sampler informations +6.6.5. General sampler informations The client can ask for general informations about the LinuxSampler instance by sending the following command: @@ -3994,9 +4194,20 @@ + + +Schoenebeck Expires February 1, 2010 [Page 75] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + + DESCRIPTION - - arbitrary textual description about the sampler + arbitrary textual description about the sampler (note that + the character string may contain escape sequences + (Section 7.1)) VERSION - @@ -4007,10 +4218,15 @@ version of the LSCP specification the sampler complies with (see Section 2 for details) + INSTRUMENTS_DB_SUPPORT - + + either yes or no, specifies whether the sampler is build + with instruments database support. + The mentioned fields above don't have to be in particular order. Other fields might be added in future. -6.6.5. Getting global volume attenuation +6.6.6. Getting global volume attenuation The client can ask for the current global sampler-wide volume attenuation by sending the following command: @@ -4025,20 +4241,21 @@ Note: it is up to the respective sampler engine whether to obey that global volume parameter or not, but in general all engines SHOULD use + this parameter. +6.6.7. Setting global volume attenuation + The client can alter the current global sampler-wide volume + attenuation by sending the following command: -Schoenebeck Expires July 18, 2007 [Page 72] - -Internet-Draft LinuxSampler Control Protocol January 2007 - this parameter. -6.6.6. Setting global volume attenuation - The client can alter the current global sampler-wide volume - attenuation by sending the following command: +Schoenebeck Expires February 1, 2010 [Page 76] + +Internet-Draft LinuxSampler Control Protocol July 2009 + SET VOLUME @@ -4064,6 +4281,130 @@ in case it failed, providing an appropriate error code and error message +6.6.8. Getting global voice limit + + The client can ask for the current global sampler-wide limit for + maximum voices by sending the following command: + + GET VOICES + + Possible Answers: + + LinuxSampler will answer by returning the number for the current + limit of maximum voices. + + The voice limit setting defines how many voices should maximum be + processed by the sampler at the same time. If the user triggers new + notes which would exceed that voice limit, the sampler engine will + react by stealing old voices for those newly triggered notes. Note + that the amount of voices triggered by a new note can be larger than + one and is dependent to the respective instrument and probably + further criterias. + +6.6.9. Setting global voice limit + + The client can alter the current global sampler-wide limit for + maximum voices by sending the following command: + + + +Schoenebeck Expires February 1, 2010 [Page 77] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + SET VOICES + + Where should be replaced by the integer value, + reflecting the new global amount limit of maximum voices. This value + has to be larger than 0. + + Possible Answers: + + "OK" - + + on success + + "WRN::" - + + if the voice limit was set, but there are noteworthy issue(s) + related, providing an appropriate warning code and warning + message + + "ERR::" - + + in case it failed, providing an appropriate error code and + error message + + Note: the given value will be passed to all sampler engine instances. + The total amount of maximum voices on the running system might thus + be as big as the given value multiplied by the current amount of + engine instances. + + Caution: when adjusting the voice limit, you SHOULD also adjust the + disk stream limit respectively and vice versa. + +6.6.10. Getting global disk stream limit + + The client can ask for the current global sampler-wide limit for + maximum disk streams by sending the following command: + + GET STREAMS + + Possible Answers: + + LinuxSampler will answer by returning the number for the current + limit of maximum disk streams. + + The disk stream limit setting defines how many disk streams should + maximum be processed by a sampler engine at the same time. The + higher this value, the more memory (RAM) will be occupied, since + every disk streams allocates a certain buffer size for being able to + perform its streaming operations. + + + +Schoenebeck Expires February 1, 2010 [Page 78] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + +6.6.11. Setting global disk stream limit + + The client can alter the current global sampler-wide limit for + maximum disk streams by sending the following command: + + SET STREAMS + + Where should be replaced by the integer value, + reflecting the new global amount limit of maximum disk streams. This + value has to be positive. + + Possible Answers: + + "OK" - + + on success + + "WRN::" - + + if the disk stream limit was set, but there are noteworthy + issue(s) related, providing an appropriate warning code and + warning message + + "ERR::" - + + in case it failed, providing an appropriate error code and + error message + + Note: the given value will be passed to all sampler engine instances. + The total amount of maximum disk streams on the running system might + thus be as big as the given value multiplied by the current amount of + engine instances. + + Caution: when adjusting the disk stream limit, you SHOULD also adjust + the voice limit respectively and vice versa. + 6.7. MIDI Instrument Mapping The MIDI protocol provides a way to switch between instruments by @@ -4076,19 +4417,19 @@ maps which define which instrument to load on which MIDI program change message. - By default, that is when the sampler is launched, there is no map, - thus the sampler will simply ignore all program change messages. The - front-end has to explicitly create at least one map, add entries to - the map and tell the respective sampler channel(s) which MIDI - instrument map to use, so the sampler knows how to react on a given -Schoenebeck Expires July 18, 2007 [Page 73] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 79] + +Internet-Draft LinuxSampler Control Protocol July 2009 + By default, that is when the sampler is launched, there is no map, + thus the sampler will simply ignore all program change messages. The + front-end has to explicitly create at least one map, add entries to + the map and tell the respective sampler channel(s) which MIDI + instrument map to use, so the sampler knows how to react on a given program change message on the respective sampler channel, that is by switching to the respectively defined engine type and loading the respective instrument. See command "SET CHANNEL MIDI_INSTRUMENT_MAP" @@ -4110,7 +4451,10 @@ ADD MIDI_INSTRUMENT_MAP [] Where is an optional argument allowing to assign a custom name - to the new map. MIDI instrument Map names do not have to be unique. + to the new map. MIDI instrument Map names do not have to be unique, + but MUST be encapsulated into apostrophes and support escape + sequences as described in chapter "Character Set and Escape Sequences + (Section 7.1)". Possible Answers: @@ -4128,22 +4472,22 @@ C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'" - S: "OK[0]" - C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'" - S: "OK[1]" - C: "ADD MIDI_INSTRUMENT_MAP" +Schoenebeck Expires February 1, 2010 [Page 80] +Internet-Draft LinuxSampler Control Protocol July 2009 + S: "OK[0]" + + C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'" -Schoenebeck Expires July 18, 2007 [Page 74] - -Internet-Draft LinuxSampler Control Protocol January 2007 + S: "OK[1]" + C: "ADD MIDI_INSTRUMENT_MAP" S: "OK[5]" @@ -4182,24 +4526,25 @@ S: "OK" -6.7.3. Get amount of existing MIDI instrument maps - The front-end can retrieve the current amount of MIDI instrument maps - by sending the following command: - GET MIDI_INSTRUMENT_MAPS - Possible Answers: +Schoenebeck Expires February 1, 2010 [Page 81] +Internet-Draft LinuxSampler Control Protocol July 2009 + + +6.7.3. Get amount of existing MIDI instrument maps + The front-end can retrieve the current amount of MIDI instrument maps + by sending the following command: -Schoenebeck Expires July 18, 2007 [Page 75] - -Internet-Draft LinuxSampler Control Protocol January 2007 + GET MIDI_INSTRUMENT_MAPS + Possible Answers: The sampler will answer by returning the current number of MIDI instrument maps. @@ -4240,29 +4585,34 @@ interested in as returned by the "LIST MIDI_INSTRUMENT_MAPS" (Section 6.7.4) command. - Possible Answers: - LinuxSampler will answer by sending a separated list. Each - answer line begins with the settings category name followed by a - colon and then a space character and finally the info - character string to that setting category. At the moment the - following categories are defined: +Schoenebeck Expires February 1, 2010 [Page 82] +Internet-Draft LinuxSampler Control Protocol July 2009 -Schoenebeck Expires July 18, 2007 [Page 76] - -Internet-Draft LinuxSampler Control Protocol January 2007 + Possible Answers: + LinuxSampler will answer by sending a separated list. Each + answer line begins with the settings category name followed by a + colon and then a space character and finally the info + character string to that setting category. At the moment the + following categories are defined: NAME - custom name of the given map, which does not have to be - unique + unique (note that this character string may contain escape + sequences (Section 7.1)) + + DEFAULT - + + either true or false, defines whether this map is the + default map The mentioned fields above don't have to be in particular order. @@ -4272,6 +4622,8 @@ S: "NAME: Standard Map" + "DEFAULT: true" + "." 6.7.6. Renaming a MIDI instrument map @@ -4282,10 +4634,21 @@ SET MIDI_INSTRUMENT_MAP NAME Where is the numerical ID of the map and the new custom - name of the map, which does not have to be unique. + name of the map, which does not have to be unique (name MUST be + encapsulated into apostrophes and supports escape sequences as + described in chapter "Character Set and Escape Sequences + (Section 7.1)"). Possible Answers: + + + +Schoenebeck Expires February 1, 2010 [Page 83] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + "OK" - on success @@ -4305,17 +4668,9 @@ The front-end can create a new or replace an existing entry in a sampler's MIDI instrument map by sending the following command: - - - -Schoenebeck Expires July 18, 2007 [Page 77] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - - MAP MIDI_INSTRUMENT - [] - [] + MAP MIDI_INSTRUMENT [NON_MODAL] + + [] [] Where is the numeric ID of the map to alter, is an integer value between 0..16383 reflecting the MIDI bank select index, @@ -4323,16 +4678,18 @@ program change index, a sampler engine name as returned by the "LIST AVAILABLE_ENGINES" (Section 6.4.8) command (not encapsulated into apostrophes), the name of the - instrument's file to be deployed (encapsulated into apostrophes), - the index (integer value) of the instrument within - the given file, reflects the master volume of the - instrument as optionally dotted number (where a value < 1.0 means - attenuation and a value > 1.0 means amplification). This parameter - easily allows to adjust the volume of all intruments within a custom - instrument map without having to adjust their instrument files. The - OPTIONAL argument defines the life time of the - instrument, that is when the instrument should be loaded, when freed - and has exactly the following possibilities: + instrument's file to be deployed (encapsulated into apostrophes, + supporting escape sequences as described in chapter "Character Set + and Escape Sequences (Section 7.1)"), the index + (integer value) of the instrument within the given file, + reflects the master volume of the instrument as + optionally dotted number (where a value < 1.0 means attenuation and a + value > 1.0 means amplification). This parameter easily allows to + adjust the volume of all intruments within a custom instrument map + without having to adjust their instrument files. The OPTIONAL + argument defines the life time of the instrument, + that is when the instrument should be loaded, when freed and has + exactly the following possibilities: "ON_DEMAND" - @@ -4341,6 +4698,13 @@ be freed from memory when not needed by any sampler channel anymore. + + +Schoenebeck Expires February 1, 2010 [Page 84] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + "ON_DEMAND_HOLD" - The instrument will be loaded when needed, that is when @@ -4353,21 +4717,12 @@ "PERSISTENT" - - The instrument will immediately be loaded into memory in the - background when this mapping command is sent and the instrument - is kept all the time. Instruments with this mode are only - freed when the sampler is reset or all mapping entries with - this mode (and respective instrument) are explicitly changed to - "ON_DEMAND" and no sampler channel is using the instrument - anymore. - - - - -Schoenebeck Expires July 18, 2007 [Page 78] - -Internet-Draft LinuxSampler Control Protocol January 2007 - + The instrument will immediately be loaded into memory when this + mapping command is sent and the instrument is kept all the + time. Instruments with this mode are only freed when the + sampler is reset or all mapping entries with this mode (and + respective instrument) are explicitly changed to "ON_DEMAND" + and no sampler channel is using the instrument anymore. not supplied - @@ -4394,16 +4749,34 @@ frontend should retrieve the actual mode by i.e. sending "GET MIDI_INSTRUMENT INFO" (Section 6.7.11) command(s). Finally the OPTIONAL argument allows to set a custom name (encapsulated - into apostrophes) for the mapping entry, useful for frontends for - displaying an appropriate name for mapped instruments (using "GET - MIDI_INSTRUMENT INFO" (Section 6.7.11)). - - The "MAP MIDI_INSTRUMENT" command will immediately return, thus it - will not block when an instrument is to be loaded due to a - "PERSISTENT" type entry as instruments are loaded in the background. - As a consequence this command may not necessarily return an error - i.e. when the given instrument file does not exist or may turn out to - be corrupt. + into apostrophes, supporting escape sequences as described in chapter + "Character Set and Escape Sequences (Section 7.1)") for the mapping + entry, useful for frontends for displaying an appropriate name for + mapped instruments (using "GET MIDI_INSTRUMENT INFO" + + + +Schoenebeck Expires February 1, 2010 [Page 85] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + (Section 6.7.11)). + + By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is + completely established in the sampler. The OPTIONAL "NON_MODAL" + argument however causes the respective "MAP MIDI_INSTRUMENT" command + to return immediately, that is to let the sampler establish the + mapping in the background. So this argument might be especially + useful for mappings with a "PERSISTENT" type, because these have to + load the respective instruments immediately and might thus block for + a very long time. It is recommended however to use the OPTIONAL + "NON_MODAL" argument only if really necessary, because it has the + following drawbacks: as "NON_MODAL" instructions return immediately, + they may not necessarily return an error i.e. when the given + instrument file turns out to be corrupt, beside that subsequent + commands in a LSCP instruction sequence might fail, because mandatory + mappings are not yet completed. Possible Answers: @@ -4418,13 +4791,6 @@ Examples: - - -Schoenebeck Expires July 18, 2007 [Page 79] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT" @@ -4443,10 +4809,18 @@ C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'" + + + +Schoenebeck Expires February 1, 2010 [Page 86] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + S: "OK" - C: "MAP MIDI_INSTRUMENT 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 - PERSISTENT 'Foo Drumkit'" + C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/ + foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'" S: "OK" @@ -4473,14 +4847,6 @@ S: "234" - - - -Schoenebeck Expires July 18, 2007 [Page 80] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - C: "GET MIDI_INSTRUMENTS ALL" S: "954" @@ -4497,6 +4863,16 @@ The front-end can query a list of all currently existing entries of all MIDI instrument maps by sending the following command: + + + + + +Schoenebeck Expires February 1, 2010 [Page 87] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + LIST MIDI_INSTRUMENTS ALL Possible Answers: @@ -4529,14 +4905,6 @@ Possible Answers: - - - -Schoenebeck Expires July 18, 2007 [Page 81] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - "OK" - usually @@ -4551,6 +4919,16 @@ S: "OK" + + + + + +Schoenebeck Expires February 1, 2010 [Page 88] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + 6.7.11. Get current settings of MIDI instrument map entry The front-end can retrieve the current settings of a certain @@ -4578,24 +4956,17 @@ name shall be used by frontends for displaying a name for this mapped instrument. It can be set and changed with the "MAP MIDI_INSTRUMENT" (Section 6.7.7) command and does not have to - be unique. + be unique. (note that this character string may contain escape + sequences (Section 7.1)) "ENGINE_NAME" - Name of the engine to be deployed for this instrument. - - - - -Schoenebeck Expires July 18, 2007 [Page 82] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - "INSTRUMENT_FILE" - - File name of the instrument. + File name of the instrument (note that this path may contain + escape sequences (Section 7.1)). "INSTRUMENT_NR" - @@ -4605,7 +4976,16 @@ Name of the loaded instrument as reflected by its file. In contrast to the "NAME" field, the "INSTRUMENT_NAME" field - cannot be changed. + cannot be changed (note that this character string may contain + + + +Schoenebeck Expires February 1, 2010 [Page 89] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + escape sequences (Section 7.1)). "LOAD_MODE" - @@ -4640,15 +5020,6 @@ "." - - - - -Schoenebeck Expires July 18, 2007 [Page 83] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - 6.7.12. Clear MIDI instrument map The front-end can clear a whole MIDI instrument map, that is delete @@ -4661,6 +5032,15 @@ The front-end can clear all MIDI instrument maps, that is delete all entries of all maps by sending the following command: + + + + +Schoenebeck Expires February 1, 2010 [Page 90] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + CLEAR MIDI_INSTRUMENTS ALL The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the maps, @@ -4683,26 +5063,1438 @@ S: "OK" +6.8. Managing Instruments Database + + The following commands describe how to use and manage the instruments + database. + + Notice: + + All command arguments representing a path or instrument/directory + name support escape sequences as described in chapter "Character + Set and Escape Sequences (Section 7.1)". + + All occurrences of a forward slash in instrument and directory + names are escaped with its hex (\x2f) or octal (\057) escape + sequence. + +6.8.1. Creating a new instrument directory + + The front-end can add a new instrument directory to the instruments + database by sending the following command: + + ADD DB_INSTRUMENT_DIRECTORY + + Where is the absolute path name of the directory to be created + (encapsulated into apostrophes). + + Possible Answers: + + + +Schoenebeck Expires February 1, 2010 [Page 91] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + "OK" - + + on success + + "ERR::" - + + when the directory could not be created, which can happen if + the directory already exists or the name contains not allowed + symbols + + Examples: + + C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'" + + S: "OK" + +6.8.2. Deleting an instrument directory + + The front-end can delete a particular instrument directory from the + instruments database by sending the following command: + + REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] + + Where is the absolute path name of the directory to delete. + The optional FORCE argument can be used to force the deletion of a + non-empty directory and all its content. + + Possible Answers: + + "OK" - + + if the directory is deleted successfully + + "ERR::" - + + if the given directory does not exist, or if trying to delete a + non-empty directory, without using the FORCE argument. + + Examples: + + C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'" + + S: "OK" + + + + + + + + +Schoenebeck Expires February 1, 2010 [Page 92] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + +6.8.3. Getting amount of instrument directories + + The front-end can retrieve the current amount of directories in a + specific directory by sending the following command: + + GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] + + Where should be replaced by the absolute path name of the + directory. If RECURSIVE is specified, the number of all directories, + including those located in subdirectories of the specified directory, + will be returned. + + Possible Answers: + + The current number of instrument directories in the specified + directory. + + "ERR::" - + + if the given directory does not exist. + + Example: + + C: "GET DB_INSTRUMENT_DIRECTORIES '/'" + + S: "2" + +6.8.4. Listing all directories in specific directory + + The front-end can retrieve the current list of directories in + specific directory by sending the following command: + + LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] + + Where should be replaced by the absolute path name of the + directory. If RECURSIVE is specified, the absolute path names of all + directories, including those located in subdirectories of the + specified directory, will be returned. + + Possible Answers: + + A comma separated list of all instrument directories (encapsulated + into apostrophes) in the specified directory. + + "ERR::" - + + if the given directory does not exist. + + + + +Schoenebeck Expires February 1, 2010 [Page 93] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + Example: + + C: "LIST DB_INSTRUMENT_DIRECTORIES '/'" + + S: "'Piano Collection','Percussion Collection'" + + C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'" + + S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano + Collection/Acoustic/New','/Percussion Collection'" + +6.8.5. Getting instrument directory information + + The front-end can ask for the current settings of an instrument + directory by sending the following command: + + GET DB_INSTRUMENT_DIRECTORY INFO + + Where should be replaced by the absolute path name of the + directory the front-end is interested in. + + Possible Answers: + + LinuxSampler will answer by sending a separated list. Each + answer line begins with the settings category name followed by a + colon and then a space character and finally the info + character string to that setting category. At the moment the + following categories are defined: + + + + DESCRIPTION - + + A brief description of the directory content. Note that the + character string may contain escape sequences (Section 7.1). + + CREATED - + + The creation date and time of the directory, represented in + "YYYY-MM-DD HH:MM:SS" format + + MODIFIED - + + The date and time of the last modification of the directory, + represented in "YYYY-MM-DD HH:MM:SS" format + + The mentioned fields above don't have to be in particular order. + + + + +Schoenebeck Expires February 1, 2010 [Page 94] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + Example: + + C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'" + + S: "DESCRIPTION: Piano collection of instruments in GigaSampler + format." + + "CREATED: 2007-02-05 10:23:12" + + "MODIFIED: 2007-04-07 12:50:21" + + "." + +6.8.6. Renaming an instrument directory + + The front-end can alter the name of a specific instrument directory + by sending the following command: + + SET DB_INSTRUMENT_DIRECTORY NAME + + Where is the absolute path name of the directory and is + the new name for that directory. + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + in case the given directory does not exists, or if a directory + with name equal to the new name already exists. + + Example: + + C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' + 'Acoustic'" + + S: "OK" + +6.8.7. Moving an instrument directory + + The front-end can move a specific instrument directory by sending the + following command: + + + + + + +Schoenebeck Expires February 1, 2010 [Page 95] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + MOVE DB_INSTRUMENT_DIRECTORY + + Where is the absolute path name of the directory to move and + is the location where the directory will be moved to. + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + in case a given directory does not exists, or if a directory + with name equal to the name of the specified directory already + exists in the destination directory. Error is also thrown when + trying to move a directory to a subdirectory of itself. + + Example: + + C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/ + Acoustic'" + + S: "OK" + +6.8.8. Copying instrument directories + + The front-end can copy a specific instrument directory by sending the + following command: + + COPY DB_INSTRUMENT_DIRECTORY + + Where is the absolute path name of the directory to copy and + is the location where the directory will be copied to. + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + in case a given directory does not exists, or if a directory + with name equal to the name of the specified directory already + exists in the destination directory. Error is also thrown when + trying to copy a directory to a subdirectory of itself. + + + + +Schoenebeck Expires February 1, 2010 [Page 96] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + Example: + + C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' + '/Acoustic/Pianos'" + + S: "OK" + +6.8.9. Changing the description of directory + + The front-end can alter the description of a specific instrument + directory by sending the following command: + + SET DB_INSTRUMENT_DIRECTORY DESCRIPTION + + Where is the absolute path name of the directory and is + the new description for the directory (encapsulated into apostrophes, + supporting escape sequences as described in chapter "Character Set + and Escape Sequences (Section 7.1)"). + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + in case the given directory does not exists. + + Example: + + C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A + collection of piano instruments in various format.'" + + S: "OK" + +6.8.10. Finding directories + + The front-end can search for directories in specific directory by + sending the following command: + + FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] + + Where should be replaced by the absolute path name of the + directory to search in. If NON_RECURSIVE is specified, the + directories located in subdirectories of the specified directory will + not be searched. is a list of search criterias in + + + +Schoenebeck Expires February 1, 2010 [Page 97] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + form of "key1=val1 key2=val2 ...". The following criterias are + allowed: + + NAME='' + + Restricts the search to directories, which names satisfy the + supplied search string (encapsulated into apostrophes, supporting + escape sequences as described in chapter "Character Set and Escape + Sequences (Section 7.1)"). + + CREATED='[]..[]' + + Restricts the search to directories, which creation date satisfies + the specified period, where and are in + "YYYY-MM-DD HH:MM:SS" format. If is omitted the + search is restricted to directories created before . + If is omitted, the search is restricted to + directories created after . + + MODIFIED='[]..[]' + + Restricts the search to directories, which date of last + modification satisfies the specified period, where + and are in "YYYY-MM-DD HH:MM:SS" format. If is omitted the search is restricted to directories, which + are last modified before . If is + omitted, the search is restricted to directories, which are last + modified after . + + DESCRIPTION='' + + Restricts the search to directories with description that + satisfies the supplied search string (encapsulated into + apostrophes, supporting escape sequences as described in chapter + "Character Set and Escape Sequences (Section 7.1)"). + + Where is either a regular expression, or a word list + separated with spaces for OR search and with '+' for AND search. + + Possible Answers: + + A comma separated list with the absolute path names (encapsulated + into apostrophes) of all directories in the specified directory + that satisfy the supplied search criterias. + + "ERR::" - + + + + + +Schoenebeck Expires February 1, 2010 [Page 98] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + if the given directory does not exist. + + Example: + + C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'" + + S: "'/Piano Collection'" + + C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09: + 30:13'" + + S: "'/Piano Collection','/Percussions'" + +6.8.11. Adding instruments to the instruments database + + The front-end can add one or more instruments to the instruments + database by sending the following command: + + ADD DB_INSTRUMENTS [NON_MODAL] [[ FILE_AS_DIR]] + [] + + Where is the absolute path name of a directory (encapsulated + into apostrophes) in the instruments database in which only the new + instruments (that are not already in the database) will be added, + is the absolute path name of a file or directory in the + file system (encapsulated into apostrophes). In case an instrument + file is supplied, only the instruments in the specified file will be + added to the instruments database. If the optional + (the index of the instrument within the given file) is supplied too, + then only the specified instrument will be added. In case a + directory is supplied, the instruments in that directory will be + added. The OPTIONAL argument is only applied when a directory + is provided as and specifies how the scanning will be + done and has exactly the following possibilities: + + "RECURSIVE" - + + All instruments will be processed, including those in the + subdirectories, and the respective subdirectory tree structure + will be recreated in the instruments database + + "NON_RECURSIVE" - + + Only the instruments in the specified directory will be added, + the instruments in the subdirectories will not be processed. + + + + + + +Schoenebeck Expires February 1, 2010 [Page 99] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + "FLAT" - + + All instruments will be processed, including those in the + subdirectories, but the respective subdirectory structure will + not be recreated in the instruments database. All instruments + will be added directly in the specified database directory. + + If FILE_AS_DIR argument is supplied, all instruments in an instrument + file will be added to a separate directory in the instruments + database, which name will be the name of the instrument file with the + file extension stripped off. + + The difference between regular and NON_MODAL versions of the command + is that the regular command returns when the scanning is finished + while NON_MODAL version returns immediately and a background process + is launched. The GET DB_INSTRUMENTS_JOB INFO (Section 6.8.21) + command can be used to monitor the scanning progress. + + Possible Answers: + + "OK" - + + on success when NON_MODAL is not supplied + + "OK[]" - + + on success when NON_MODAL is supplied, where is a + numerical ID used to obtain status information about the job + progress. See GET DB_INSTRUMENTS_JOB INFO (Section 6.8.21) + + "ERR::" - + + if an invalid path is specified. + + Examples: + + C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI + Bosendorfer 290.gig' 0" + + S: "OK" + +6.8.12. Removing an instrument + + The front-end can remove a particular instrument from the instruments + database by sending the following command: + + + + + + +Schoenebeck Expires February 1, 2010 [Page 100] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + REMOVE DB_INSTRUMENT + + Where is the absolute path name (in the instruments + database) of the instrument to remove. + + Possible Answers: + + "OK" - + + if the instrument is removed successfully + + "ERR::" - + + if the given path does not exist or is a directory. + + Examples: + + C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'" + + S: "OK" + +6.8.13. Getting amount of instruments + + The front-end can retrieve the current amount of instruments in a + specific directory by sending the following command: + + GET DB_INSTRUMENTS [RECURSIVE] + + Where should be replaced by the absolute path name of the + directory. If RECURSIVE is specified, the number of all instruments, + including those located in subdirectories of the specified directory, + will be returned. + + Possible Answers: + + The current number of instruments in the specified directory. + + "ERR::" - + + if the given directory does not exist. + + Example: + + C: "GET DB_INSTRUMENTS '/Piano Collection'" + + S: "2" + + + + + +Schoenebeck Expires February 1, 2010 [Page 101] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + +6.8.14. Listing all instruments in specific directory + + The front-end can retrieve the current list of instruments in + specific directory by sending the following command: + + LIST DB_INSTRUMENTS [RECURSIVE] + + Where should be replaced by the absolute path name of the + directory. If RECURSIVE is specified, the absolute path names of all + instruments, including those located in subdirectories of the + specified directory, will be returned. + + Possible Answers: + + A comma separated list of all instruments (encapsulated into + apostrophes) in the specified directory. + + "ERR::" - + + if the given directory does not exist. + + Example: + + C: "LIST DB_INSTRUMENTS '/Piano Collection'" + + S: "'Bosendorfer 290','Steinway D'" + + C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'" + + S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/ + Steinway D','/Piano Collection/Lite/Free Piano'" + +6.8.15. Getting instrument information + + The front-end can ask for the current settings of an instrument by + sending the following command: + + GET DB_INSTRUMENT INFO + + Where should be replaced by the absolute path name of + the instrument the front-end is interested in. + + Possible Answers: + + LinuxSampler will answer by sending a separated list. Each + answer line begins with the settings category name followed by a + colon and then a space character and finally the info + character string to that setting category. At the moment the + + + +Schoenebeck Expires February 1, 2010 [Page 102] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + following categories are defined: + + + + INSTRUMENT_FILE - + + File name of the instrument. Note that the character string + may contain escape sequences (Section 7.1). + + INSTRUMENT_NR - + + Index of the instrument within the file. + + FORMAT_FAMILY - + + The format family of the instrument. + + FORMAT_VERSION - + + The format version of the instrument. + + SIZE - + + The size of the instrument in bytes. + + CREATED - + + The date and time when the instrument is added in the + instruments database, represented in "YYYY-MM-DD HH:MM:SS" + format + + MODIFIED - + + The date and time of the last modification of the + instrument's database settings, represented in "YYYY-MM-DD + HH:MM:SS" format + + DESCRIPTION - + + A brief description of the instrument. Note that the + character string may contain escape sequences (Section 7.1). + + IS_DRUM - + + either true or false, determines whether the instrument is a + drumkit or a chromatic instrument + + + + + +Schoenebeck Expires February 1, 2010 [Page 103] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + PRODUCT - + + The product title of the instrument. Note that the + character string may contain escape sequences (Section 7.1). + + ARTISTS - + + Lists the artist names. Note that the character string may + contain escape sequences (Section 7.1). + + KEYWORDS - + + Provides a list of keywords that refer to the instrument. + Keywords are separated with semicolon and blank. Note that + the character string may contain escape sequences + (Section 7.1). + + The mentioned fields above don't have to be in particular order. + + Example: + + C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'" + + S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig" + + "INSTRUMENT_NR: 0" + + "FORMAT_FAMILY: GIG" + + "FORMAT_VERSION: 2" + + "SIZE: 2050871870" + + "CREATED: 2007-02-05 10:23:12" + + "MODIFIED: 2007-04-07 12:50:21" + + "DESCRIPTION: " + + "IS_DRUM: false" + + "PRODUCT: GRANDIOSO Bosendorfer 290" + + "ARTISTS: Post Musical Instruments" + + "KEYWORDS: Bosendorfer" + + + + + +Schoenebeck Expires February 1, 2010 [Page 104] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + "." + +6.8.16. Renaming an instrument + + The front-end can alter the name of a specific instrument by sending + the following command: + + SET DB_INSTRUMENT NAME + + Where is the absolute path name of the instrument and + is the new name for that instrument. + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + in case the given instrument does not exists, or if an + instrument with name equal to the new name already exists. + + Example: + + C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' + 'Bosendorfer 290'" + + S: "OK" + +6.8.17. Moving an instrument + + The front-end can move a specific instrument to another directory by + sending the following command: + + MOVE DB_INSTRUMENT + + Where is the absolute path name of the instrument to move and + is the directory where the instrument will be moved to. + + Possible Answers: + + "OK" - + + on success + + + + + + +Schoenebeck Expires February 1, 2010 [Page 105] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + "ERR::" - + + in case the given instrument does not exists, or if an + instrument with name equal to the name of the specified + instrument already exists in the destination directory. + + Example: + + C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano + Collection/Acoustic'" + + S: "OK" + +6.8.18. Copying instruments + + The front-end can copy a specific instrument to another directory by + sending the following command: + + COPY DB_INSTRUMENT + + Where is the absolute path name of the instrument to copy and + is the directory where the instrument will be copied to. + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + in case the given instrument does not exists, or if an + instrument with name equal to the name of the specified + instrument already exists in the destination directory. + + Example: + + C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' + '/Acoustic/Pianos/'" + + S: "OK" + +6.8.19. Changing the description of instrument + + The front-end can alter the description of a specific instrument by + sending the following command: + + + + + +Schoenebeck Expires February 1, 2010 [Page 106] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + SET DB_INSTRUMENT DESCRIPTION + + Where is the absolute path name of the instrument and + is the new description for the instrument (encapsulated into + apostrophes, supporting escape sequences as described in chapter + "Character Set and Escape Sequences (Section 7.1)"). + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + in case the given instrument does not exists. + + Example: + + C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/ + Bosendorfer 290' 'No comment :)'" + + S: "OK" + +6.8.20. Finding instruments + + The front-end can search for instruments in specific directory by + sending the following command: + + FIND DB_INSTRUMENTS [NON_RECURSIVE] + + Where should be replaced by the absolute path name of the + directory to search in. If NON_RECURSIVE is specified, the + directories located in subdirectories of the specified directory will + not be searched. is a list of search criterias in + form of "key1=val1 key2=val2 ...". The following criterias are + allowed: + + NAME='' + + Restricts the search to instruments, which names satisfy the + supplied search string (encapsulated into apostrophes, supporting + escape sequences as described in chapter "Character Set and Escape + Sequences (Section 7.1)"). + + SIZE=[]..[] + + + + + +Schoenebeck Expires February 1, 2010 [Page 107] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + Restricts the search to instruments, which size is in the + specified range. If is omitted, the search results are + restricted to instruments with size less then or equal to . + If is omitted, the search is restricted to instruments with + size greater then or equal to . + + CREATED='[]..[]' + + Restricts the search to instruments, which creation date satisfies + the specified period, where and are in + "YYYY-MM-DD HH:MM:SS" format. If is omitted the + search is restricted to instruments created before . + If is omitted, the search is restricted to + instruments created after . + + MODIFIED='[]..[]' + + Restricts the search to instruments, which date of last + modification satisfies the specified period, where + and are in "YYYY-MM-DD HH:MM:SS" format. If is omitted the search is restricted to instruments, which + are last modified before . If is + omitted, the search is restricted to instruments, which are last + modified after . + + DESCRIPTION='' + + Restricts the search to instruments with description that + satisfies the supplied search string (encapsulated into + apostrophes, supporting escape sequences as described in chapter + "Character Set and Escape Sequences (Section 7.1)"). + + PRODUCT='' + + Restricts the search to instruments with product info that + satisfies the supplied search string (encapsulated into + apostrophes, supporting escape sequences as described in chapter + "Character Set and Escape Sequences (Section 7.1)"). + + ARTISTS='' + + Restricts the search to instruments with artists info that + satisfies the supplied search string (encapsulated into + apostrophes, supporting escape sequences as described in chapter + "Character Set and Escape Sequences (Section 7.1)"). + + KEYWORDS='' + + + + +Schoenebeck Expires February 1, 2010 [Page 108] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + Restricts the search to instruments with keyword list that + satisfies the supplied search string (encapsulated into + apostrophes, supporting escape sequences as described in chapter + "Character Set and Escape Sequences (Section 7.1)"). + + IS_DRUM=true | false + + Either true or false. Restricts the search to drum kits or + chromatic instruments. + + FORMAT_FAMILIES='' + + Restricts the search to instruments of the supplied format + families, where is a comma separated list of format + families. + + Where is either a regular expression, or a word list + separated with spaces for OR search and with '+' for AND search. + + Possible Answers: + + A comma separated list with the absolute path names (encapsulated + into apostrophes) of all instruments in the specified directory + that satisfy the supplied search criterias. + + "ERR::" - + + if the given directory does not exist. + + Example: + + C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+ + 290'" + + S: "'/Piano Collection/Bosendorfer 290'" + + C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 + 09:30:13..'" + + S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/ + Steinway D'" + +6.8.21. Getting job status information + + The front-end can ask for the current status of a particular database + instruments job by sending the following command: + + + + + +Schoenebeck Expires February 1, 2010 [Page 109] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + GET DB_INSTRUMENTS_JOB INFO + + Where should be replaced by the numerical ID of the job the + front-end is interested in. + + Possible Answers: + + LinuxSampler will answer by sending a separated list. Each + answer line begins with the settings category name followed by a + colon and then a space character and finally the info + character string to that setting category. At the moment the + following categories are defined: + + + + FILES_TOTAL - + + The total number of files scheduled for scanning + + FILES_SCANNED - + + The current number of scanned files + + SCANNING - + + The absolute path name of the file which is currently being + scanned + + STATUS - + + An integer value between 0 and 100 indicating the scanning + progress percentage of the file which is currently being + scanned + + The mentioned fields above don't have to be in particular order. + + Example: + + C: "GET DB_INSTRUMENTS_JOB INFO 2" + + S: "FILES_TOTAL: 12" + + "FILES_SCANNED: 7" + + "SCANNING: /home/me/gigs/Bosendorfer 290.gig" + + "STATUS: 42" + + + + +Schoenebeck Expires February 1, 2010 [Page 110] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + "." + +6.8.22. Formatting the instruments database + + The front-end can remove all instruments and directories and re- + create the instruments database structure (e.g., in case of a + database corruption) by sending the following command: + + FORMAT INSTRUMENTS_DB + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + If the formatting of the instruments database failed. + +6.8.23. Checking for lost instrument files + + The front-end can retrieve the list of all instrument files in the + instruments database that don't exist in the filesystem by sending + the following command: + + FIND LOST DB_INSTRUMENT_FILES + + Possible Answers: + + A comma separated list with the absolute path names (encapsulated + into apostrophes) of all lost instrument files. + + "ERR::" - + + in case it failed, providing an appropriate error code and + error message. + + Example: + + C: "FIND LOST DB_INSTRUMENT_FILES" + + S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free + Piano.gig'" + + + + + + + +Schoenebeck Expires February 1, 2010 [Page 111] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + +6.8.24. Replacing an instrument file + + The front-end can substitute all occurrences of an instrument file in + the instruments database with a new one by sending the following + command: + + SET DB_INSTRUMENT FILE_PATH + + Where is the absolute path name of the instrument file to + substitute with . + + Possible Answers: + + "OK" - + + on success + + "ERR::" - + + in case it failed, providing an appropriate error code and + error message. + + Example: + + C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' + '/gigs/pianos/Bosendorfer 290.gig'" + + S: "OK" + +6.9. Editing Instruments + + The sampler allows to edit instruments while playing with the sampler + by spawning an external (3rd party) instrument editor application for + a given instrument. The 3rd party instrument editor applications + have to place a respective plugin DLL file into the sampler's plugins + directory. The sampler will automatically try to load all plugin + DLLs in that directory on startup and only on startup! + + At the moment there is only one command for this feature set, but + this will most probably change in future. + +6.9.1. Opening an appropriate instrument editor application + + The front-end can request to open an appropriate instrument editor + application by sending the following command: + + + + + + +Schoenebeck Expires February 1, 2010 [Page 112] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + EDIT CHANNEL INSTRUMENT + + Where should be replaced by the number of the + sampler channel as given by the "ADD CHANNEL" (Section 6.4.5) or + "LIST CHANNELS" (Section 6.4.4) command. + + The sampler will try to ask all registered instrument editors (or to + be more specific: their sampler plugins) whether they are capable to + handle the instrument on the given sampler channel. The sampler will + simply use the first instrument editor application which replied with + a positive answer and spawn that instrument editor application within + the sampler's process and provide that application access to the + instrument's data structures, so both applications can share and + access the same instruments data at the same time, thus allowing to + immediately hear changes with the sampler made by the instrument + editor. + + Note: consequently instrument editors are always spawned locally on + the same machine where the sampler is running on! + + Possible Answers: + + "OK" - + + when an appropriate instrument editor was launched + + "WRN::" - + + when an appropriate instrument editor was launched, but there + are noteworthy issues + + "ERR::" - + + when an appropriate instrument editor could not be launched + + Examples: + + C: "EDIT CHANNEL INSTRUMENT 0" + + S: "OK" + +6.10. Managing Files + + You can query detailed informations about files located at the same + system where the sampler instance is running on. Using this command + set allows to retrieve file informations even remotely from another + machine. + + + + +Schoenebeck Expires February 1, 2010 [Page 113] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + +6.10.1. Retrieving amount of instruments of a file + + The front-end can retrieve the amount of instruments within a given + instrument file by sending the following command: + + GET FILE INSTRUMENTS + + Where is the name of the instrument file (encapsulated + into apostrophes, supporting escape sequences as described in chapter + "Character Set and Escape Sequences (Section 7.1)"). + + The sampler will try to ask all sampler engines, whether they support + the given file and ask the first engine with a positive answer for + the amount of instruments. + + Possible Answers: + + On success, the sampler will answer by returning the amount of + instruments. + + "ERR::" - + + if the file could not be handled + + Examples: + + C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'" + + S: "10" + +6.10.2. Retrieving all instruments of a file + + The front-end can retrieve a list of all instruments within a given + instrument file by sending the following command: + + LIST FILE INSTRUMENTS + + Where is the name of the instrument file (encapsulated + into apostrophes, supporting escape sequences as described in chapter + "Character Set and Escape Sequences (Section 7.1)"). + + The sampler will try to ask all sampler engines, whether they support + the given file and ask the first engine with a positive answer for a + list of IDs for the instruments in the given file. + + Possible Answers: + + + + + +Schoenebeck Expires February 1, 2010 [Page 114] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + On success, the sampler will answer by returning a comma separated + list of instrument IDs. + + "ERR::" - + + if the file could not be handled + + Examples: + + C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'" + + S: "0,1,2,3,4,5,6,7,8,9" + +6.10.3. Retrieving informations about one instrument in a file + + The front-end can retrieve detailed informations about a specific + instrument within a given instrument file by sending the following + command: + + GET FILE INSTRUMENT INFO + + Where is the name of the instrument file (encapsulated + into apostrophes, supporting escape sequences as described in chapter + "Character Set and Escape Sequences (Section 7.1)") and is + the numeric instrument ID as returned by the "LIST FILE INSTRUMENTS" + (Section 6.10.2) command. + + The sampler will try to ask all sampler engines, whether they support + the given file and ask the first engine with a positive answer for + informations about the specific instrument in the given file. + + Possible Answers: + + LinuxSampler will answer by sending a separated list. Each + answer line begins with the settings category name followed by a + colon and then a space character and finally the info + character string to that setting category. At the moment the + following categories are defined: + + + + NAME - + + name of the instrument as stored in the instrument file + + FORMAT_FAMILY - + + + + + +Schoenebeck Expires February 1, 2010 [Page 115] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + name of the sampler format of the given instrument + + FORMAT_VERSION - + + version of the sampler format the instrumen is stored as + + PRODUCT - + + official product name of the instrument as stored in the + file + + ARTISTS - + + artists / sample library vendor of the instrument + KEY_BINDINGS - + comma separated list of integer values representing the + instrument's key mapping in the range between 0 .. 127, + reflecting the analog meaning of the MIDI specification. + KEYSWITCH_BINDINGS - + comma separated list of integer values representing the + instrument's keyswitch mapping in the range between 0 .. + 127, reflecting the analog meaning of the MIDI + specification. + The mentioned fields above don't have to be in particular order. + + Example: + + C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0" + S: "NAME: Lunatic Loops" + "FORMAT_FAMILY: GIG" + "FORMAT_VERSION: 3" + "PRODUCT: The Backbone Bongo Beats" + "ARTISTS: Jimmy the Fish" + + "." +Schoenebeck Expires February 1, 2010 [Page 116] -Schoenebeck Expires July 18, 2007 [Page 84] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Internet-Draft LinuxSampler Control Protocol July 2009 7. Command Syntax @@ -4756,9 +6548,9 @@ -Schoenebeck Expires July 18, 2007 [Page 85] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 117] + +Internet-Draft LinuxSampler Control Protocol July 2009 / LIST SP list_instruction @@ -4773,12 +6565,22 @@ / UNSUBSCRIBE SP unsubscribe_event - / SELECT SP text - / RESET SP reset_instruction / CLEAR SP clear_instruction + / FIND SP find_instruction + + / MOVE SP move_instruction + + / COPY SP copy_instruction + + / EDIT SP edit_instruction + + / FORMAT SP format_instruction + + / SEND SP send_instruction + / RESET / QUIT @@ -4787,6 +6589,35 @@ CHANNEL + / DB_INSTRUMENT_DIRECTORY SP db_path + + / DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename + + / DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP + db_path SP filename + + / DB_INSTRUMENTS SP scan_mode SP db_path SP filename + + / DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP + filename + + + + +Schoenebeck Expires February 1, 2010 [Page 118] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + / DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename + + / DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP + instrument_index + + / DB_INSTRUMENTS SP db_path SP filename + + / DB_INSTRUMENTS SP db_path SP filename SP instrument_index + / MIDI_INSTRUMENT_MAP / MIDI_INSTRUMENT_MAP SP map_name @@ -4803,21 +6634,21 @@ / CHANNEL_COUNT + / CHANNEL_MIDI + + / DEVICE_MIDI + / VOICE_COUNT / STREAM_COUNT / BUFFER_FILL + / CHANNEL_INFO + / FX_SEND_COUNT - -Schoenebeck Expires July 18, 2007 [Page 86] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - - / CHANNEL_INFO + / FX_SEND_INFO / MIDI_INSTRUMENT_MAP_COUNT @@ -4825,12 +6656,35 @@ / MIDI_INSTRUMENT_COUNT + + + + +Schoenebeck Expires February 1, 2010 [Page 119] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + / MIDI_INSTRUMENT_INFO + / DB_INSTRUMENT_DIRECTORY_COUNT + + / DB_INSTRUMENT_DIRECTORY_INFO + + / DB_INSTRUMENT_COUNT + + / DB_INSTRUMENT_INFO + + / DB_INSTRUMENTS_JOB_INFO + / MISCELLANEOUS + / TOTAL_STREAM_COUNT + / TOTAL_VOICE_COUNT + / GLOBAL_INFO + unsubscribe_event = AUDIO_OUTPUT_DEVICE_COUNT @@ -4843,6 +6697,10 @@ / CHANNEL_COUNT + / CHANNEL_MIDI + + / DEVICE_MIDI + / VOICE_COUNT / STREAM_COUNT @@ -4851,6 +6709,18 @@ / CHANNEL_INFO + / FX_SEND_COUNT + + / FX_SEND_INFO + + + + +Schoenebeck Expires February 1, 2010 [Page 120] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + / MIDI_INSTRUMENT_MAP_COUNT / MIDI_INSTRUMENT_MAP_INFO @@ -4859,33 +6729,39 @@ / MIDI_INSTRUMENT_INFO - / MISCELLANEOUS + / DB_INSTRUMENT_DIRECTORY_COUNT - / TOTAL_VOICE_COUNT + / DB_INSTRUMENT_DIRECTORY_INFO - map_instruction = + / DB_INSTRUMENT_COUNT + + / DB_INSTRUMENT_INFO + / DB_INSTRUMENTS_JOB_INFO + + / MISCELLANEOUS + / TOTAL_STREAM_COUNT + / TOTAL_VOICE_COUNT -Schoenebeck Expires July 18, 2007 [Page 87] - -Internet-Draft LinuxSampler Control Protocol January 2007 + / GLOBAL_INFO + map_instruction = - MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP + MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value - / MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP - engine_name SP filename SP instrument_index SP volume_value SP + / MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog + SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode - / MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP - engine_name SP filename SP instrument_index SP volume_value SP + / MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog + SP engine_name SP filename SP instrument_index SP volume_value SP entry_name - / MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP - engine_name SP filename SP instrument_index SP volume_value SP + / MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog + SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode SP entry_name unmap_instruction = @@ -4894,12 +6770,25 @@ remove_instruction = + + +Schoenebeck Expires February 1, 2010 [Page 121] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + CHANNEL SP sampler_channel / MIDI_INSTRUMENT_MAP SP midi_map / MIDI_INSTRUMENT_MAP SP ALL + / DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path + + / DB_INSTRUMENT_DIRECTORY SP db_path + + / DB_INSTRUMENT SP db_path + get_instruction = AVAILABLE_ENGINES @@ -4922,13 +6811,6 @@ / AUDIO_OUTPUT_DRIVER_PARAMETER SP INFO SP string SP string SP key_val_list - - -Schoenebeck Expires July 18, 2007 [Page 88] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - / AUDIO_OUTPUT_DEVICES / MIDI_INPUT_DEVICES @@ -4943,6 +6825,14 @@ / AUDIO_OUTPUT_CHANNEL SP INFO SP number SP number + + + +Schoenebeck Expires February 1, 2010 [Page 122] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + / AUDIO_OUTPUT_CHANNEL_PARAMETER SP INFO SP number SP number SP string @@ -4960,6 +6850,8 @@ / SERVER SP INFO + / TOTAL_STREAM_COUNT + / TOTAL_VOICE_COUNT / TOTAL_VOICE_COUNT_MAX @@ -4976,19 +6868,41 @@ / FX_SENDS SP sampler_channel + / FX_SEND SP INFO SP sampler_channel SP fx_send_id + / DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path + / DB_INSTRUMENT_DIRECTORIES SP db_path + + / DB_INSTRUMENT_DIRECTORY SP INFO SP db_path + + / DB_INSTRUMENTS SP RECURSIVE SP db_path + + / DB_INSTRUMENTS SP db_path -Schoenebeck Expires July 18, 2007 [Page 89] - -Internet-Draft LinuxSampler Control Protocol January 2007 - / FX_SEND SP INFO SP sampler_channel SP fx_send_id + +Schoenebeck Expires February 1, 2010 [Page 123] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + / DB_INSTRUMENT SP INFO SP db_path + + / DB_INSTRUMENTS_JOB SP INFO SP number / VOLUME + / VOICES + + / STREAMS + + / FILE SP INSTRUMENTS SP filename + + / FILE SP INSTRUMENT SP INFO SP filename SP instrument_index + set_instruction = AUDIO_OUTPUT_DEVICE_PARAMETER SP number SP string '=' @@ -5000,6 +6914,8 @@ / MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list + / MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE + / MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list @@ -5007,6 +6923,8 @@ / MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name + / FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name + / FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index @@ -5016,10 +6934,34 @@ / FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value + / DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped + + + + + +Schoenebeck Expires February 1, 2010 [Page 124] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + / DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP + stringval_escaped + + / DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped + + / DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped + + / DB_INSTRUMENT SP FILE_PATH SP filename SP filename + / ECHO SP boolean / VOLUME SP volume_value + / VOICES SP number + + / STREAMS SP number + create_instruction = AUDIO_OUTPUT_DEVICE SP string SP key_val_list @@ -5032,15 +6974,6 @@ / FX_SEND SP sampler_channel SP midi_ctrl - - - - -Schoenebeck Expires July 18, 2007 [Page 90] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - / FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name reset_instruction = @@ -5053,6 +6986,40 @@ / MIDI_INSTRUMENTS SP ALL + find_instruction = + + DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list + + / DB_INSTRUMENTS SP db_path SP query_val_list + + + + + +Schoenebeck Expires February 1, 2010 [Page 125] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + / DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP + query_val_list + + / DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list + + / LOST SP DB_INSTRUMENT_FILES + + move_instruction = + + DB_INSTRUMENT_DIRECTORY SP db_path SP db_path + + / DB_INSTRUMENT SP db_path SP db_path + + copy_instruction = + + DB_INSTRUMENT_DIRECTORY SP db_path SP db_path + + / DB_INSTRUMENT SP db_path SP db_path + destroy_instruction = AUDIO_OUTPUT_DEVICE SP number @@ -5081,21 +7048,21 @@ / MIDI_INPUT_DEVICE SP sampler_channel SP device_index - / MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index - / MIDI_INPUT_CHANNEL SP sampler_channel SP - midi_input_channel_index - / MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name +Schoenebeck Expires February 1, 2010 [Page 126] +Internet-Draft LinuxSampler Control Protocol July 2009 -Schoenebeck Expires July 18, 2007 [Page 91] - -Internet-Draft LinuxSampler Control Protocol January 2007 + / MIDI_INPUT_PORT SP sampler_channel SP midi_input_port_index + / MIDI_INPUT_CHANNEL SP sampler_channel SP + midi_input_channel_index + + / MIDI_INPUT_TYPE SP sampler_channel SP midi_input_type_name / VOLUME SP sampler_channel SP volume_value @@ -5109,6 +7076,20 @@ / MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT + edit_instruction = + + CHANNEL SP INSTRUMENT SP sampler_channel + + format_instruction = + + INSTRUMENTS_DB + + modal_arg = + + /* epsilon (empty argument) */ + + / NON_MODAL SP + key_val_list = string '=' param_val_list @@ -5123,6 +7104,15 @@ list_instruction = + + + + +Schoenebeck Expires February 1, 2010 [Page 127] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + AUDIO_OUTPUT_DEVICES / MIDI_INPUT_DEVICES @@ -5143,15 +7133,22 @@ / FX_SENDS SP sampler_channel - load_instr_args = + / DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path + + / DB_INSTRUMENT_DIRECTORIES SP db_path + / DB_INSTRUMENTS SP RECURSIVE SP db_path + / DB_INSTRUMENTS SP db_path + / FILE SP INSTRUMENTS SP filename -Schoenebeck Expires July 18, 2007 [Page 92] - -Internet-Draft LinuxSampler Control Protocol January 2007 + send_instruction = + CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP + number + + load_instr_args = filename SP instrument_index SP sampler_channel @@ -5163,6 +7160,15 @@ instr_load_mode = + + + + +Schoenebeck Expires February 1, 2010 [Page 128] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + ON_DEMAND / ON_DEMAND_HOLD @@ -5201,14 +7207,6 @@ midi_bank = - - - -Schoenebeck Expires July 18, 2007 [Page 93] - -Internet-Draft LinuxSampler Control Protocol January 2007 - - number midi_prog = @@ -5219,6 +7217,14 @@ number + + + +Schoenebeck Expires February 1, 2010 [Page 129] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + volume_value = dotnum @@ -5243,33 +7249,37 @@ filename = - stringval + path + + db_path = + + path map_name = - stringval + stringval_escaped entry_name = - stringval + stringval_escaped fx_send_name = - stringval + stringval_escaped + param_val_list = + param_val + / param_val_list','param_val -Schoenebeck Expires July 18, 2007 [Page 94] - -Internet-Draft LinuxSampler Control Protocol January 2007 - param_val_list = - param_val +Schoenebeck Expires February 1, 2010 [Page 130] + +Internet-Draft LinuxSampler Control Protocol July 2009 - / param_val_list','param_val param_val = @@ -5281,44 +7291,274 @@ / dotnum + query_val_list = + + string '=' query_val + + / query_val_list SP string '=' query_val + + query_val = + + text_escaped + + / stringval_escaped + + scan_mode = + + RECURSIVE + + / NON_RECURSIVE + + / FLAT + +7.1. Character Set and Escape Sequences + + Older versions of this protocol up to and including v1.1 only + supported the standard ASCII character set (ASCII code 0 - 127) + [RFC20], all younger versions of this protocol however support the + Extended ASCII character set (ASCII code 0 - 255). The same group of + younger protocols also support escape sequences, but only for + certain, explicitly declared parts of the protocol. The supported + escape sequences are defined as follows: + + + + + + +Schoenebeck Expires February 1, 2010 [Page 131] +Internet-Draft LinuxSampler Control Protocol July 2009 + +------------------------+------------------------------------------+ + | ASCII Character | Translated into (Name) | + | Sequence | | + +------------------------+------------------------------------------+ + | \n | new line | + | | | + | \r | carriage return | + | | | + | \f | form feed | + | | | + | \t | horizontal tab | + | | | + | \v | vertical tab | + | | | + | \' | apostrophe | + | | | + | \" | quotation mark | + | | | + | \\ | backslash | + | | | + | \OOO | three digit octal ASCII code of the | + | | character | + | | | + | \xHH | two digit hex ASCII code of the | + | | character | + +------------------------+------------------------------------------+ + Notice: due to the transition of certain parts of the protocol which + now support escape sequences, a slight backward incompatibility to + protocols version v1.1 and younger has been introduced. The only + difference is that in parts of the protocol where escape characters + are now supported, a backslash characters MUST be escaped as well + (that is as double backslash), whereas in the old versions a single + backslash was sufficient. + The following LSCP commands support escape sequences as part of their + filename / path based arguments and / or may contain a filename / + path with escape sequences in their response: + "LOAD INSTRUMENT" (Section 6.4.1) + "GET CHANNEL INFO" (Section 6.4.10) + "MAP MIDI_INSTRUMENT" (Section 6.7.7) + "GET MIDI_INSTRUMENT INFO" (Section 6.7.11) +Schoenebeck Expires February 1, 2010 [Page 132] +Internet-Draft LinuxSampler Control Protocol July 2009 + "ADD DB_INSTRUMENT_DIRECTORY" (Section 6.8.1) + "ADD DB_INSTRUMENTS" (Section 6.8.11) + "REMOVE DB_INSTRUMENT_DIRECTORY" (Section 6.8.2) + "REMOVE DB_INSTRUMENT" (Section 6.8.12) + "GET DB_INSTRUMENT_DIRECTORIES" (Section 6.8.3) + "LIST DB_INSTRUMENT_DIRECTORIES" (Section 6.8.4) + "GET DB_INSTRUMENT_DIRECTORY INFO" (Section 6.8.5) + "GET DB_INSTRUMENTS" (Section 6.8.13) + "LIST DB_INSTRUMENTS" (Section 6.8.14) + "GET DB_INSTRUMENT INFO" (Section 6.8.15) + "SET DB_INSTRUMENT_DIRECTORY NAME" (Section 6.8.6) + "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION" (Section 6.8.9) -Schoenebeck Expires July 18, 2007 [Page 95] - -Internet-Draft LinuxSampler Control Protocol January 2007 + "SET DB_INSTRUMENT NAME" (Section 6.8.16) + + "SET DB_INSTRUMENT DESCRIPTION" (Section 6.8.19) + + "FIND DB_INSTRUMENTS" (Section 6.8.20) + + "FIND DB_INSTRUMENT_DIRECTORIES" (Section 6.8.10) + + "MOVE DB_INSTRUMENT" (Section 6.8.17) + + "MOVE DB_INSTRUMENT_DIRECTORY" (Section 6.8.7) + + "COPY DB_INSTRUMENT" (Section 6.8.18) + + "COPY DB_INSTRUMENT_DIRECTORY" (Section 6.8.8) + + "FIND LOST DB_INSTRUMENT_FILES" (Section 6.8.23) + + "SET DB_INSTRUMENT FILE_PATH" (Section 6.8.24) + + "GET FILE INSTRUMENTS" (Section 6.10.1) + + "LIST FILE INSTRUMENTS" (Section 6.10.2) + + + + +Schoenebeck Expires February 1, 2010 [Page 133] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + "GET FILE INSTRUMENT INFO" (Section 6.10.3) + + Note that the forward slash character ('/') has a special meaning in + filename / path based arguments: it acts as separator of the nodes in + the path, thus if a directory- or filename includes a forward slash + (not intended as path node separator), you MUST escape that slash + either with the respective hex escape sequence ("\x2f") or with the + respective octal escape sequence ("\057"). + + Note for Windows: file path arguments in LSCP are expected to use + forward slashes as directory node separator similar to Unix based + operating systems. In contrast to Unix however a Windows typical + drive character is expected to be prefixed to the path. That is an + original Windows file path like "D:\Sounds\My.gig" would become in + LSCP: "D:/Sounds/My.gig". + + The following LSCP commands even support escape sequences as part of + at least one of their text-based arguments (i.e. entity name, + description) and / or may contain escape sequences in at least one of + their text-based fields in their response: + + "GET SERVER INFO" (Section 6.6.5) + + "GET ENGINE INFO" (Section 6.4.9) + + "GET CHANNEL INFO" (Section 6.4.10) + + "CREATE FX_SEND" (Section 6.4.25) + + "GET FX_SEND INFO" (Section 6.4.29) + + "SET FX_SEND NAME" (Section 6.4.30) + + "GET MIDI_INSTRUMENT INFO" (Section 6.7.11) + + "GET MIDI_INSTRUMENT_MAP INFO" (Section 6.7.5) + + "ADD MIDI_INSTRUMENT_MAP" (Section 6.7.1) + + "MAP MIDI_INSTRUMENT" (Section 6.7.7) + + "SET MIDI_INSTRUMENT_MAP NAME" (Section 6.7.6) + + "GET DB_INSTRUMENT_DIRECTORY INFO" (Section 6.8.5) + + "SET DB_INSTRUMENT_DIRECTORY NAME" (Section 6.8.6) + + + + + +Schoenebeck Expires February 1, 2010 [Page 134] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION" (Section 6.8.9) + + "FIND DB_INSTRUMENT_DIRECTORIES" (Section 6.8.10) + + "GET DB_INSTRUMENT INFO" (Section 6.8.15) + + "SET DB_INSTRUMENT NAME" (Section 6.8.16) + + "SET DB_INSTRUMENT DESCRIPTION" (Section 6.8.19) + + "FIND DB_INSTRUMENTS" (Section 6.8.20) + + Please note that these lists are manually maintained. If you find a + command that also supports escape sequences we forgot to mention + here, please report it! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenebeck Expires February 1, 2010 [Page 135] + +Internet-Draft LinuxSampler Control Protocol July 2009 8. Events @@ -5372,9 +7612,9 @@ -Schoenebeck Expires July 18, 2007 [Page 96] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 136] + +Internet-Draft LinuxSampler Control Protocol July 2009 "NOTIFY:MIDI_INPUT_DEVICE_COUNT:" @@ -5415,31 +7655,91 @@ where will be replaced by the new number of sampler channels. -8.6. Number of active voices changed +8.6. MIDI data on a sampler channel arrived + + Client may want to be notified when MIDI data arrive on sampler + channels on back-end side, by issuing the following command: + + SUBSCRIBE CHANNEL_MIDI + + Server will start sending one of the the following notification + messages: + + + + +Schoenebeck Expires February 1, 2010 [Page 137] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + "NOTIFY:CHANNEL_MIDI: NOTE_ON " + + "NOTIFY:CHANNEL_MIDI: NOTE_OFF " + + where will be replaced by the ID of the sampler channel + where the MIDI data arrived. and are integer values + in the range between 0 .. 127, reflecting the analog meaning of the + MIDI specification. + + CAUTION: no guarantee whatsoever will be made that MIDI events are + actually all delivered by this mechanism! With other words: events + could be lost at any time! This restriction was made to keep the RT- + safeness of the backend's MIDI and audio thread unaffected by this + feature. + +8.7. MIDI data on a MIDI input device arrived + + Client may want to be notified when MIDI data arrive on MIDI input + devices by issuing the following command: + + SUBSCRIBE DEVICE_MIDI + + Server will start sending one of the the following notification + messages: + + "NOTIFY:DEVICE_MIDI: NOTE_ON + " + + "NOTIFY:DEVICE_MIDI: NOTE_OFF + " + + where will be replaced by the IDs of the + respective MIDI input device and the device's MIDI port where the + MIDI data arrived. and are integer values in the + range between 0 .. 127, reflecting the analog meaning of the MIDI + specification. + + CAUTION: no guarantee whatsoever will be made that MIDI events are + actually all delivered by this mechanism! With other words: events + could be lost at any time! This restriction was made to keep the RT- + safeness of the backend's MIDI and audio thread unaffected by this + feature. + +8.8. Number of active voices changed Client may want to be notified when the number of voices on the back- end changes by issuing the following command: - SUBSCRIBE VOICE_COUNT - Server will start sending the following notification messages: +Schoenebeck Expires February 1, 2010 [Page 138] +Internet-Draft LinuxSampler Control Protocol July 2009 -Schoenebeck Expires July 18, 2007 [Page 97] - -Internet-Draft LinuxSampler Control Protocol January 2007 + SUBSCRIBE VOICE_COUNT + Server will start sending the following notification messages: - "NOTIFY:VOICE_COUNT: + "NOTIFY:VOICE_COUNT: " where will be replaced by the sampler channel the voice count change occurred and by the new number of active voices on that channel. -8.7. Number of active disk streams changed +8.9. Number of active disk streams changed Client may want to be notified when the number of streams on the back-end changes by issuing the following command: SUBSCRIBE @@ -5455,7 +7755,7 @@ stream count change occurred and by the new number of active disk streams on that channel. -8.8. Disk stream buffer fill state changed +8.10. Disk stream buffer fill state changed Client may want to be notified when the buffer fill state of a disk stream on the back-end changes by issuing the following command: @@ -5472,22 +7772,22 @@ Section 6.4.13 as if the "GET CHANNEL BUFFER_FILL PERCENTAGE" (Section 6.4.13) command was issued on this channel. -8.9. Channel information changed +8.11. Channel information changed Client may want to be notified when changes were made to sampler channels on the back-end by issuing the following command: - SUBSCRIBE CHANNEL_INFO - Server will start sending the following notification messages: +Schoenebeck Expires February 1, 2010 [Page 139] +Internet-Draft LinuxSampler Control Protocol July 2009 -Schoenebeck Expires July 18, 2007 [Page 98] - -Internet-Draft LinuxSampler Control Protocol January 2007 + SUBSCRIBE CHANNEL_INFO + + Server will start sending the following notification messages: "NOTIFY:CHANNEL_INFO:" @@ -5498,7 +7798,50 @@ rather than real time events happening on the server, it is believed that an empty notification message is sufficient here. -8.10. Total number of active voices changed +8.12. Number of effect sends changed + + Client may want to be notified when the number of effect sends on a + particular sampler channel is changed by issuing the following + command: + + SUBSCRIBE FX_SEND_COUNT + + Server will start sending the following notification messages: + + "NOTIFY:FX_SEND_COUNT: " + + where will be replaced by the numerical ID of the + sampler channel, on which the effect sends number is changed and will be replaced by the new number of effect sends on that + channel. + +8.13. Effect send information changed + + Client may want to be notified when changes were made to effect sends + on a a particular sampler channel by issuing the following command: + + SUBSCRIBE FX_SEND_INFO + + Server will start sending the following notification messages: + + "NOTIFY:FX_SEND_INFO: " + + where will be replaced by the numerical ID of the + sampler channel, on which an effect send entity is changed and will be replaced by the numerical ID of the changed effect + send. + + + + + + +Schoenebeck Expires February 1, 2010 [Page 140] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + +8.14. Total number of active voices changed Client may want to be notified when the total number of voices on the back-end changes by issuing the following command: @@ -5507,12 +7850,26 @@ Server will start sending the following notification messages: - "NOTIFY:TOTAL_VOICE_COUNT: + "NOTIFY:TOTAL_VOICE_COUNT:" where will be replaced by the new number of all currently active voices. -8.11. Number of MIDI instrument maps changed +8.15. Total number of active disk streams changed + + Client may want to be notified when the total number of disk streams + on the back-end changes by issuing the following command: + + SUBSCRIBE TOTAL_STREAM_COUNT + + Server will start sending the following notification messages: + + "NOTIFY:TOTAL_STREAM_COUNT:" + + where will be replaced by the new number of all currently + active disk streams. + +8.16. Number of MIDI instrument maps changed Client may want to be notified when the number of MIDI instrument maps on the back-end changes by issuing the following command: @@ -5526,24 +7883,23 @@ where will be replaced by the new number of MIDI instrument maps. -8.12. MIDI instrument map information changed +8.17. MIDI instrument map information changed Client may want to be notified when changes were made to MIDI instrument maps on the back-end by issuing the following command: - SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO - Server will start sending the following notification messages: +Schoenebeck Expires February 1, 2010 [Page 141] +Internet-Draft LinuxSampler Control Protocol July 2009 -Schoenebeck Expires July 18, 2007 [Page 99] - -Internet-Draft LinuxSampler Control Protocol January 2007 + SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO + Server will start sending the following notification messages: "NOTIFY:MIDI_INSTRUMENT_MAP_INFO:" @@ -5555,7 +7911,7 @@ happening on the server, it is believed that an empty notification message is sufficient here. -8.13. Number of MIDI instruments changed +8.18. Number of MIDI instruments changed Client may want to be notified when the number of MIDI instrument maps on the back-end changes by issuing the following command: @@ -5570,7 +7926,7 @@ which the nuber of instruments has changed and will be replaced by the new number of MIDI instruments in the specified map. -8.14. MIDI instrument information changed +8.19. MIDI instrument information changed Client may want to be notified when changes were made to MIDI instruments on the back-end by issuing the following command: @@ -5592,16 +7948,159 @@ +Schoenebeck Expires February 1, 2010 [Page 142] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + +8.20. Global settings changed + + Client may want to be notified when changes to the global settings of + the sampler were made by issuing the following command: + + SUBSCRIBE GLOBAL_INFO + + Server will start sending the following types of notification + messages: + + "NOTIFY:GLOBAL_INFO:VOLUME " - Notifies that the golbal + volume of the sampler is changed, where will be replaced + by the optional dotted floating point value, reflecting the new + global volume parameter. + + "NOTIFY:GLOBAL_INFO:VOICES " - Notifies that the + golbal limit of the sampler for maximum voices is changed, where + will be an integer value, reflecting the new global + voice limit parameter. + + "NOTIFY:GLOBAL_INFO:STREAMS " - Notifies that the + golbal limit of the sampler for maximum disk streams is changed, + where will be an integer value, reflecting the new + global disk streams limit parameter. + +8.21. Number of database instrument directories changed + + Client may want to be notified when the number of instrument + directories in a particular directory in the instruments database is + changed by issuing the following command: + + SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT + + Server will start sending the following notification messages: + + "NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:" + + where will be replaced by the absolute path name of the + directory in the instruments database, in which the number of + directories is changed. + + Note that when a non-empty directory is removed, this event is not + sent for the subdirectories in that directory. + +8.22. Database instrument directory information changed + + Client may want to be notified when changes were made to directories + in the instruments database by issuing the following command: + + + +Schoenebeck Expires February 1, 2010 [Page 143] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + + SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO + + Server will start sending the following notification messages: + + "NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:" + + where will be replaced by the absolute path name of the + directory, for which information changes occurred. The front-end + will have to send the respective command to actually get the updated + directory info. Because these messages will be triggered by LSCP + commands issued by other clients rather than real time events + happening on the server, it is believed that an empty notification + message is sufficient here. + + "NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME " + + where is the old absolute path name of the directory + (encapsulated into apostrophes), which name is changes and + is the new name of the directory, encapsulated into apostrophes. + +8.23. Number of database instruments changed + + Client may want to be notified when the number of instruments in a + particular directory in the instruments database is changed by + issuing the following command: + + SUBSCRIBE DB_INSTRUMENT_COUNT + + Server will start sending the following notification messages: + + "NOTIFY:DB_INSTRUMENT_COUNT:" + + where will be replaced by the absolute path name of the + directory in the instruments database, in which the number of + instruments is changed. + + Note that when a non-empty directory is removed, this event is not + sent for the instruments in that directory. + +8.24. Database instrument information changed + + Client may want to be notified when changes were made to instruments + in the instruments database by issuing the following command: + + SUBSCRIBE DB_INSTRUMENT_INFO + + Server will start sending the following notification messages: +Schoenebeck Expires February 1, 2010 [Page 144] -Schoenebeck Expires July 18, 2007 [Page 100] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Internet-Draft LinuxSampler Control Protocol July 2009 -8.15. Miscellaneous and debugging events + "NOTIFY:DB_INSTRUMENT_INFO:" + + where will be replaced by the absolute path name of the + instrument, which settings are changed. The front-end will have to + send the respective command to actually get the updated directory + info. Because these messages will be triggered by LSCP commands + issued by other clients rather than real time events happening on the + server, it is believed that an empty notification message is + sufficient here. + + "NOTIFY:DB_INSTRUMENT_INFO:NAME " + + where is the old absolute path name of the + instrument (encapsulated into apostrophes), which name is changes and + is the new name of the instrument, encapsulated into + apostrophes. + +8.25. Database job status information changed + + Client may want to be notified when the status of particular database + instruments job is changed by issuing the following command: + + SUBSCRIBE DB_INSTRUMENTS_JOB_INFO + + Server will start sending the following notification messages: + + "NOTIFY:DB_INSTRUMENTS_JOB_INFO:" + + where will be replaced by the numerical ID of the job, which + status is changed. The front-end will have to send the respective + command to actually get the status info. Because these messages will + be triggered by LSCP commands issued by other clients rather than + real time events happening on the server, it is believed that an + empty notification message is sufficient here. + +8.26. Miscellaneous and debugging events Client may want to be notified of miscellaneous and debugging events occurring at the server by issuing the following command: @@ -5614,6 +8113,14 @@ where will be replaced by whatever data server wants to send to the client. Client MAY display this data to the user AS IS to + + + +Schoenebeck Expires February 1, 2010 [Page 145] + +Internet-Draft LinuxSampler Control Protocol July 2009 + + facilitate debugging. @@ -5652,9 +8159,22 @@ -Schoenebeck Expires July 18, 2007 [Page 101] - -Internet-Draft LinuxSampler Control Protocol January 2007 + + + + + + + + + + + + + +Schoenebeck Expires February 1, 2010 [Page 146] + +Internet-Draft LinuxSampler Control Protocol July 2009 9. Security Considerations @@ -5708,9 +8228,9 @@ -Schoenebeck Expires July 18, 2007 [Page 102] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 147] + +Internet-Draft LinuxSampler Control Protocol July 2009 10. Acknowledgments @@ -5764,13 +8284,16 @@ -Schoenebeck Expires July 18, 2007 [Page 103] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 148] + +Internet-Draft LinuxSampler Control Protocol July 2009 11. References + [RFC20] UCLA, "ASCII format for Network Interchange", RFC 20, + 1969. + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, 1997. @@ -5817,12 +8340,9 @@ +Schoenebeck Expires February 1, 2010 [Page 149] - - -Schoenebeck Expires July 18, 2007 [Page 104] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Internet-Draft LinuxSampler Control Protocol July 2009 Author's Address @@ -5876,14 +8396,14 @@ -Schoenebeck Expires July 18, 2007 [Page 105] - -Internet-Draft LinuxSampler Control Protocol January 2007 +Schoenebeck Expires February 1, 2010 [Page 150] + +Internet-Draft LinuxSampler Control Protocol July 2009 Full Copyright Statement - Copyright (C) The Internet Society (2007). + Copyright (C) The IETF Trust (2009). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors @@ -5891,10 +8411,10 @@ This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS - OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET - ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, - INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE - INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND + THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF + THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. @@ -5923,14 +8443,15 @@ ietf-ipr@ietf.org. -Acknowledgment - Funding for the RFC Editor function is provided by the IETF - Administrative Support Activity (IASA). -Schoenebeck Expires July 18, 2007 [Page 106] - + + + +Schoenebeck Expires February 1, 2010 [Page 151] + +