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

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

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

revision 1137 by iliev, Thu Mar 29 10:06:37 2007 UTC revision 1400 by schoenebeck, Thu Oct 11 18:59:34 2007 UTC
# Line 1  Line 1 
1  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2  <html lang="en"><head><title>LinuxSampler Control Protocol</title>  <html lang="en"><head><title>LinuxSampler Control Protocol (draft)</title>
3  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4  <meta name="description" content="LinuxSampler Control Protocol">  <meta name="description" content="LinuxSampler Control Protocol (draft)">
5  <meta name="keywords" content="LSCP">  <meta name="keywords" content="LSCP">
6  <meta name="generator" content="xml2rfc v1.32 (http://xml.resource.org/)">  <meta name="generator" content="xml2rfc v1.32 (http://xml.resource.org/)">
7  <style type='text/css'><!--  <style type='text/css'><!--
# Line 145  Line 145 
145  <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>  <tr><td class="header">LinuxSampler Developers</td><td class="header">C. Schoenebeck</td></tr>
146  <tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr>  <tr><td class="header">Internet-Draft</td><td class="header">Interessengemeinschaft Software</td></tr>
147  <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>  <tr><td class="header">Intended status: Standards Track</td><td class="header">Engineering e. V.</td></tr>
148  <tr><td class="header">Expires: September 30, 2007</td><td class="header">March 29, 2007</td></tr>  <tr><td class="header">Expires: April 13, 2008</td><td class="header">October 11, 2007</td></tr>
149  </table></td></tr></table>  </table></td></tr></table>
150  <h1><br />LinuxSampler Control Protocol<br />LSCP 1.2</h1>  <h1><br />LinuxSampler Control Protocol (draft)<br />LSCP 1.2cvs</h1>
151    
152  <h3>Status of this Memo</h3>  <h3>Status of this Memo</h3>
153  <p>  <p>
# Line 173  The list of current Internet-Drafts can Line 173  The list of current Internet-Drafts can
173  The list of Internet-Draft Shadow Directories can be accessed at  The list of Internet-Draft Shadow Directories can be accessed at
174  <a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>  <a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>
175  <p>  <p>
176  This Internet-Draft will expire on September 30, 2007.</p>  This Internet-Draft will expire on April 13, 2008.</p>
177    
178  <h3>Copyright Notice</h3>  <h3>Copyright Notice</h3>
179  <p>  <p>
# Line 364  Getting global volume attenuation<br /> Line 364  Getting global volume attenuation<br />
364  Setting global volume attenuation<br />  Setting global volume attenuation<br />
365  &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;<a href="#MIDI Instrument Mapping">6.7.</a>&nbsp;
366  MIDI Instrument Mapping<br />  MIDI Instrument Mapping<br />
367  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT MAP">6.7.1.</a>&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD MIDI_INSTRUMENT_MAP">6.7.1.</a>&nbsp;
368  Create a new MIDI instrument map<br />  Create a new MIDI instrument map<br />
369  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE MIDI_INSTRUMENT_MAP">6.7.2.</a>&nbsp;
370  Delete one particular or all MIDI instrument maps<br />  Delete one particular or all MIDI instrument maps<br />
# Line 388  Remove an entry from the MIDI instrument Line 388  Remove an entry from the MIDI instrument
388  Get current settings of MIDI instrument map entry<br />  Get current settings of MIDI instrument map entry<br />
389  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CLEAR MIDI_INSTRUMENTS">6.7.12.</a>&nbsp;
390  Clear MIDI instrument map<br />  Clear MIDI instrument map<br />
391    &nbsp;&nbsp;&nbsp;&nbsp;<a href="#Managing Instruments Database">6.8.</a>&nbsp;
392    Managing Instruments Database<br />
393    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENT_DIRECTORY">6.8.1.</a>&nbsp;
394    Creating a new instrument directory<br />
395    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT_DIRECTORY">6.8.2.</a>&nbsp;
396    Deleting an instrument directory<br />
397    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORIES">6.8.3.</a>&nbsp;
398    Getting amount of instrument directories<br />
399    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENT_DIRECTORIES">6.8.4.</a>&nbsp;
400    Listing all directories in specific directory<br />
401    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT_DIRECTORY INFO">6.8.5.</a>&nbsp;
402    Getting instrument directory information<br />
403    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY NAME">6.8.6.</a>&nbsp;
404    Renaming an instrument directory<br />
405    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT_DIRECTORY">6.8.7.</a>&nbsp;
406    Moving an instrument directory<br />
407    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT_DIRECTORY">6.8.8.</a>&nbsp;
408    Copying instrument directories<br />
409    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">6.8.9.</a>&nbsp;
410    Changing the description of directory<br />
411    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENT_DIRECTORIES">6.8.10.</a>&nbsp;
412    Finding directories<br />
413    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ADD DB_INSTRUMENTS">6.8.11.</a>&nbsp;
414    Adding instruments to the instruments database<br />
415    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#REMOVE DB_INSTRUMENT">6.8.12.</a>&nbsp;
416    Removing an instrument<br />
417    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS">6.8.13.</a>&nbsp;
418    Getting amount of instruments<br />
419    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#LIST DB_INSTRUMENTS">6.8.14.</a>&nbsp;
420    Listing all instruments in specific directory<br />
421    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENT INFO">6.8.15.</a>&nbsp;
422    Getting instrument information<br />
423    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT NAME">6.8.16.</a>&nbsp;
424    Renaming an instrument<br />
425    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MOVE DB_INSTRUMENT">6.8.17.</a>&nbsp;
426    Moving an instrument<br />
427    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#COPY DB_INSTRUMENT">6.8.18.</a>&nbsp;
428    Copying instruments<br />
429    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#SET DB_INSTRUMENT DESCRIPTION">6.8.19.</a>&nbsp;
430    Changing the description of instrument<br />
431    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FIND DB_INSTRUMENTS">6.8.20.</a>&nbsp;
432    Finding instruments<br />
433    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#GET DB_INSTRUMENTS_JOB INFO">6.8.21.</a>&nbsp;
434    Getting job status information<br />
435    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#FORMAT INSTRUMENTS_DB">6.8.22.</a>&nbsp;
436    Formatting the instruments database<br />
437    &nbsp;&nbsp;&nbsp;&nbsp;<a href="#editing_instruments">6.9.</a>&nbsp;
438    Editing Instruments<br />
439    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#EDIT INSTRUMENT">6.9.1.</a>&nbsp;
440    Opening an appropriate instrument editor application<br />
441  <a href="#command_syntax">7.</a>&nbsp;  <a href="#command_syntax">7.</a>&nbsp;
442  Command Syntax<br />  Command Syntax<br />
443    &nbsp;&nbsp;&nbsp;&nbsp;<a href="#character_set">7.1.</a>&nbsp;
444    Character Set and Escape Sequences<br />
445  <a href="#events">8.</a>&nbsp;  <a href="#events">8.</a>&nbsp;
446  Events<br />  Events<br />
447  &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">8.1.</a>&nbsp;
# Line 426  Number of MIDI instruments changed<br /> Line 478  Number of MIDI instruments changed<br />
478  MIDI instrument information changed<br />  MIDI instrument information changed<br />
479  &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.17.</a>&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE GLOBAL_INFO">8.17.</a>&nbsp;
480  Global settings changed<br />  Global settings changed<br />
481  &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.18.</a>&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">8.18.</a>&nbsp;
482    Number of database instrument directories changed<br />
483    &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">8.19.</a>&nbsp;
484    Database instrument directory information changed<br />
485    &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_COUNT">8.20.</a>&nbsp;
486    Number of database instruments changed<br />
487    &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENT_INFO">8.21.</a>&nbsp;
488    Database instrument information changed<br />
489    &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">8.22.</a>&nbsp;
490    Database job status information changed<br />
491    &nbsp;&nbsp;&nbsp;&nbsp;<a href="#SUBSCRIBE MISCELLANEOUS">8.23.</a>&nbsp;
492  Miscellaneous and debugging events<br />  Miscellaneous and debugging events<br />
493  <a href="#anchor14">9.</a>&nbsp;  <a href="#anchor14">9.</a>&nbsp;
494  Security Considerations<br />  Security Considerations<br />
# Line 458  Requirements notation</h3> Line 520  Requirements notation</h3>
520              (front-end) and server (LinuxSampler) respectively. Lines in              (front-end) and server (LinuxSampler) respectively. Lines in
521              examples must be interpreted as every line being CRLF              examples must be interpreted as every line being CRLF
522              terminated (carriage return character followed by line feed              terminated (carriage return character followed by line feed
523              character as defined in the ASCII standard), thus the following              character as defined in the ASCII standard <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>),
524              example:              thus the following example:
525  </p>  </p>
526  <p>  <p>
527                  </p>                  </p>
# Line 3245  Changing settings of MIDI input ports</h Line 3307  Changing settings of MIDI input ports</h
3307                      or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>                      or <a class='info' href='#LIST MIDI_INPUT_DEVICES'>"LIST MIDI_INPUT_DEVICES"<span> (</span><span class='info'>Getting all created MIDI input device list</span><span>)</span></a>
3308                      command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of                      command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
3309                      the parameter to change and &lt;value&gt; by the new value for this                      the parameter to change and &lt;value&gt; by the new value for this
3310                      parameter.                      parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
3311                        for specifying no value for parameters allowing a list of values.
3312  </p>  </p>
3313  <p>Possible Answers:  <p>Possible Answers:
3314  </p>  </p>
# Line 3286  Changing settings of MIDI input ports</h Line 3349  Changing settings of MIDI input ports</h
3349  <p>  <p>
3350                          </p>                          </p>
3351  <blockquote class="text">  <blockquote class="text">
3352    <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"
3353    </p>
3354    <p>S: "OK"
3355    </p>
3356    </blockquote><p>
3357                        
3358    </p>
3359  <p>  <p>
3360                            </p>
3361    <blockquote class="text">
3362    <p>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"
3363    </p>
3364    <p>S: "OK"
3365  </p>  </p>
3366  </blockquote><p>  </blockquote><p>
3367                                            
# Line 3321  Loading an instrument</h3> Line 3396  Loading an instrument</h3>
3396                      number of the sampler channel the instrument should be assigned to.                      number of the sampler channel the instrument should be assigned to.
3397                      Each sampler channel can only have one instrument.                      Each sampler channel can only have one instrument.
3398  </p>  </p>
3399    <p>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
3400                        escape characters for special characters (see chapter
3401                        "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"
3402                        for details) and accordingly backslash characters in the filename
3403                        MUST now be escaped as well!
3404    </p>
3405  <p>The difference between regular and NON_MODAL versions of the command  <p>The difference between regular and NON_MODAL versions of the command
3406                      is that the regular command returns OK only after the instrument has been                      is that the regular command returns OK only after the instrument has been
3407                      fully loaded and the channel is ready to be used while NON_MODAL version                      fully loaded and the channel is ready to be used while NON_MODAL version
# Line 3788  Getting information about an engine</h3> Line 3869  Getting information about an engine</h3>
3869                                          </p>                                          </p>
3870  <blockquote class="text">  <blockquote class="text">
3871  <p>arbitrary description text about the engine  <p>arbitrary description text about the engine
3872                                                (note that the character string may contain
3873                                                <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3874  </p>  </p>
3875  </blockquote>  </blockquote>
3876                                                                            
# Line 3907  Getting sampler channel information</h3> Line 3990  Getting sampler channel information</h3>
3990  <blockquote class="text">  <blockquote class="text">
3991  <p>the file name of the loaded instrument, "NONE" if  <p>the file name of the loaded instrument, "NONE" if
3992                                              there's no instrument yet loaded for this sampler                                              there's no instrument yet loaded for this sampler
3993                                              channel                                              channel (note: since LSCP 1.2 this path may contain
3994                                                <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
3995  </p>  </p>
3996  </blockquote>  </blockquote>
3997                                                                            
# Line 3924  Getting sampler channel information</h3> Line 4008  Getting sampler channel information</h3>
4008                                          </p>                                          </p>
4009  <blockquote class="text">  <blockquote class="text">
4010  <p>the instrument name of the loaded instrument  <p>the instrument name of the loaded instrument
4011                                                (note: since LSCP 1.2 this character string may contain
4012                                                <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
4013  </p>  </p>
4014  </blockquote>  </blockquote>
4015                                                                            
# Line 4999  Adding an effect send to a sampler chann Line 5085  Adding an effect send to a sampler chann
5085                      sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;                      sampler channel on which the effect send should be created on, &lt;midi-ctrl&gt;
5086                      is a number between 0..127 defining the MIDI controller which can alter the                      is a number between 0..127 defining the MIDI controller which can alter the
5087                      effect send level and &lt;name&gt; is an optional argument defining a name                      effect send level and &lt;name&gt; is an optional argument defining a name
5088                      for the effect send entity. The name does not have to be unique.                      for the effect send entity. The name does not have to be unique, but MUST be
5089                        encapsulated into apostrophes and supports escape sequences as described in chapter
5090                        "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
5091  </p>  </p>
5092  <p>By default, that is as initial routing, the effect send's audio channels  <p>By default, that is as initial routing, the effect send's audio channels
5093                      are automatically routed to the last audio channels of the sampler channel's                      are automatically routed to the last audio channels of the sampler channel's
# Line 5268  Getting effect send information</h3> Line 5356  Getting effect send information</h3>
5356                                          </p>                                          </p>
5357  <blockquote class="text">  <blockquote class="text">
5358  <p>name of the effect send entity  <p>name of the effect send entity
5359                                                (note that this character string may contain
5360                                                 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
5361  </p>  </p>
5362  </blockquote>  </blockquote>
5363                                                                            
# Line 5358  Changing effect send's name</h3> Line 5448  Changing effect send's name</h3>
5448                      as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>                      as returned by the <a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
5449                      or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command and                      or <a class='info' href='#LIST FX_SENDS'>"LIST FX_SENDS"<span> (</span><span class='info'>Listing all effect sends on a sampler channel</span><span>)</span></a> command and
5450                      &lt;name&gt; is the new name of the effect send entity, which                      &lt;name&gt; is the new name of the effect send entity, which
5451                      does not have to be unique.                      does not have to be unique (name MUST be encapsulated into apostrophes
5452                        and supports escape sequences as described in chapter
5453                        "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
5454                        
5455  </p>  </p>
5456  <p>Possible Answers:  <p>Possible Answers:
5457  </p>  </p>
# Line 6035  General sampler informations</h3> Line 6128  General sampler informations</h3>
6128                                          </p>                                          </p>
6129  <blockquote class="text">  <blockquote class="text">
6130  <p>arbitrary textual description about the sampler  <p>arbitrary textual description about the sampler
6131                                                (note that the character string may contain
6132                                                <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6133  </p>  </p>
6134  </blockquote>  </blockquote>
6135                                                                            
# Line 6056  General sampler informations</h3> Line 6151  General sampler informations</h3>
6151  </blockquote>  </blockquote>
6152                                                                            
6153    
6154    <p>INSTRUMENTS_DB_SUPPORT -
6155                                            </p>
6156    <blockquote class="text">
6157    <p>either yes or no, specifies whether the
6158                                                sampler is build with instruments database support.
6159    </p>
6160    </blockquote>
6161                                        
6162    
6163  </blockquote>  </blockquote>
6164                                                            
6165    
# Line 6187  MIDI Instrument Mapping</h3> Line 6291  MIDI Instrument Mapping</h3>
6291                  cause the sampler to switch to the respective instrument as                  cause the sampler to switch to the respective instrument as
6292                  reflected by the current MIDI instrument map.                  reflected by the current MIDI instrument map.
6293  </p>  </p>
6294  <a name="ADD MIDI_INSTRUMENT MAP"></a><br /><hr />  <a name="ADD MIDI_INSTRUMENT_MAP"></a><br /><hr />
6295  <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>  <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
6296  <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;  <a name="rfc.section.6.7.1"></a><h3>6.7.1.&nbsp;
6297  Create a new MIDI instrument map</h3>  Create a new MIDI instrument map</h3>
# Line 6205  Create a new MIDI instrument map</h3> Line 6309  Create a new MIDI instrument map</h3>
6309  </p>  </p>
6310  <p>Where &lt;name&gt; is an optional argument allowing to  <p>Where &lt;name&gt; is an optional argument allowing to
6311                      assign a custom name to the new map. MIDI instrument Map                      assign a custom name to the new map. MIDI instrument Map
6312                      names do not have to be unique.                      names do not have to be unique, but MUST be encapsulated
6313                        into apostrophes and support escape sequences as described
6314                        in chapter "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
6315                        
6316  </p>  </p>
6317  <p>Possible Answers:  <p>Possible Answers:
6318  </p>  </p>
# Line 6463  Getting MIDI instrument map information< Line 6570  Getting MIDI instrument map information<
6570  <blockquote class="text">  <blockquote class="text">
6571  <p>custom name of the given map,  <p>custom name of the given map,
6572                                              which does not have to be unique                                              which does not have to be unique
6573                                                (note that this character string may contain
6574                                                 <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
6575  </p>  </p>
6576  </blockquote>  </blockquote>
6577                                                                            
# Line 6518  Renaming a MIDI instrument map</h3> Line 6627  Renaming a MIDI instrument map</h3>
6627  </p>  </p>
6628  <p>Where &lt;map&gt; is the numerical ID of the map and  <p>Where &lt;map&gt; is the numerical ID of the map and
6629                      &lt;name&gt; the new custom name of the map, which does not                      &lt;name&gt; the new custom name of the map, which does not
6630                      have to be unique.                      have to be unique (name MUST be encapsulated into apostrophes
6631                        and supports escape sequences as described in chapter
6632                        "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
6633                        
6634  </p>  </p>
6635  <p>Possible Answers:  <p>Possible Answers:
6636  </p>  </p>
# Line 6584  Create or replace a MIDI instrument map Line 6696  Create or replace a MIDI instrument map
6696                      index, &lt;engine_name&gt; a sampler engine name as returned by                      index, &lt;engine_name&gt; a sampler engine name as returned by
6697                      the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>                      the <a class='info' href='#LIST AVAILABLE_ENGINES'>"LIST AVAILABLE_ENGINES"<span> (</span><span class='info'>Getting all available engines</span><span>)</span></a>
6698                      command (not encapsulated into apostrophes), &lt;filename&gt; the name                      command (not encapsulated into apostrophes), &lt;filename&gt; the name
6699                      of the instrument's file to be deployed (encapsulated into apostrophes),                      of the instrument's file to be deployed (encapsulated into apostrophes,
6700                        supporting escape sequences as described in chapter
6701                        "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>"),
6702                      &lt;instrument_index&gt; the index (integer value) of the instrument                      &lt;instrument_index&gt; the index (integer value) of the instrument
6703                      within the given file, &lt;volume_value&gt; reflects the master                      within the given file, &lt;volume_value&gt; reflects the master
6704                      volume of the instrument as optionally dotted number (where a                      volume of the instrument as optionally dotted number (where a
# Line 6681  Create or replace a MIDI instrument map Line 6795  Create or replace a MIDI instrument map
6795                      load modes of entries, the frontend should retrieve the actual                      load modes of entries, the frontend should retrieve the actual
6796                      mode by i.e. sending                      mode by i.e. sending
6797                      <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>                      <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
6798                      command(s). Finally the OPTIONAL &lt;name&gt; argument allows to                      command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
6799                      set a custom name (encapsulated into apostrophes) for the mapping                      (encapsulated into apostrophes, supporting escape sequences as described in chapter
6800                      entry, useful for frontends for displaying an appropriate name for                      "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>") for the
6801                        mapping entry, useful for frontends for displaying an appropriate name for
6802                      mapped instruments (using                      mapped instruments (using
6803                      <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>).                      <a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>).
6804                                            
# Line 7005  Get current settings of MIDI instrument Line 7120  Get current settings of MIDI instrument
7120                                      changed with the                                      changed with the
7121                                      <a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>                                      <a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
7122                                      command and does not have to be unique.                                      command and does not have to be unique.
7123                                        (note that this character string may contain
7124                                        <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>)
7125  </p>  </p>
7126  </blockquote>  </blockquote>
7127                                                            
# Line 7021  Get current settings of MIDI instrument Line 7138  Get current settings of MIDI instrument
7138  <p>"INSTRUMENT_FILE" -  <p>"INSTRUMENT_FILE" -
7139                                  </p>                                  </p>
7140  <blockquote class="text">  <blockquote class="text">
7141  <p>File name of the instrument.  <p>File name of the instrument
7142                                        (note that this path may contain
7143                                        <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7144  </p>  </p>
7145  </blockquote>  </blockquote>
7146                                                            
# Line 7039  Get current settings of MIDI instrument Line 7158  Get current settings of MIDI instrument
7158  <blockquote class="text">  <blockquote class="text">
7159  <p>Name of the loaded instrument as reflected by its file.  <p>Name of the loaded instrument as reflected by its file.
7160                                      In contrast to the "NAME" field, the "INSTRUMENT_NAME" field                                      In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
7161                                      cannot be changed.                                      cannot be changed (note that this character string may contain
7162                                        <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>).
7163  </p>  </p>
7164  </blockquote>  </blockquote>
7165                                                            
# Line 7166  Clear MIDI instrument map</h3> Line 7286  Clear MIDI instrument map</h3>
7286  </blockquote><p>  </blockquote><p>
7287                                            
7288  </p>  </p>
7289    <a name="Managing Instruments Database"></a><br /><hr />
7290    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7291    <a name="rfc.section.6.8"></a><h3>6.8.&nbsp;
7292    Managing Instruments Database</h3>
7293    
7294    <p>The following commands describe how to use and manage
7295                    the instruments database.
7296    </p>
7297    <p>Notice:
7298    </p>
7299    <p>
7300                            </p>
7301    <blockquote class="text">
7302    <p>All command arguments representing a path or
7303                                instrument/directory name support escape sequences as described in chapter
7304                                "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>".
7305                                
7306    </p>
7307    <p>All occurrences of a forward slash in instrument and directory
7308                                   names are escaped with its hex (\x2f) or octal (\057) escape sequence.
7309                                
7310    </p>
7311    </blockquote><p>
7312                        
7313    </p>
7314    <a name="ADD DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7315    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7316    <a name="rfc.section.6.8.1"></a><h3>6.8.1.&nbsp;
7317    Creating a new instrument directory</h3>
7318    
7319    <p>The front-end can add a new instrument directory to the
7320                        instruments database by sending the following command:
7321    </p>
7322    <p>
7323                            </p>
7324    <blockquote class="text">
7325    <p>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;
7326    </p>
7327    </blockquote><p>
7328                        
7329    </p>
7330    <p>Where &lt;dir&gt; is the absolute path name of the directory
7331                        to be created (encapsulated into apostrophes).
7332    </p>
7333    <p>Possible Answers:
7334    </p>
7335    <p>
7336                            </p>
7337    <blockquote class="text">
7338    <p>"OK" -
7339                                    </p>
7340    <blockquote class="text">
7341    <p>on success
7342    </p>
7343    </blockquote>
7344                                
7345    
7346    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7347                                    </p>
7348    <blockquote class="text">
7349    <p>when the directory could not be created, which
7350                                        can happen if the directory already exists or the
7351                                        name contains not allowed symbols
7352    </p>
7353    </blockquote>
7354                                
7355    
7356    </blockquote><p>
7357                        
7358    </p>
7359    <p>Examples:
7360    </p>
7361    <p>
7362                            </p>
7363    <blockquote class="text">
7364    <p>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"
7365    </p>
7366    <p>S: "OK"
7367    </p>
7368    </blockquote><p>
7369                        
7370    </p>
7371    <a name="REMOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7372    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7373    <a name="rfc.section.6.8.2"></a><h3>6.8.2.&nbsp;
7374    Deleting an instrument directory</h3>
7375    
7376    <p>The front-end can delete a particular instrument directory
7377                        from the instruments database by sending the following command:
7378    </p>
7379    <p>
7380                            </p>
7381    <blockquote class="text">
7382    <p>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;
7383    </p>
7384    </blockquote><p>
7385                        
7386    </p>
7387    <p>Where &lt;dir&gt; is the absolute path name of the directory
7388                        to delete. The optional FORCE argument can be used to
7389                        force the deletion of a non-empty directory and all its content.
7390    </p>
7391    <p>Possible Answers:
7392    </p>
7393    <p>
7394                            </p>
7395    <blockquote class="text">
7396    <p>"OK" -
7397                                    </p>
7398    <blockquote class="text">
7399    <p>if the directory is deleted successfully
7400    </p>
7401    </blockquote>
7402                                
7403    
7404    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7405                                    </p>
7406    <blockquote class="text">
7407    <p>if the given directory does not exist, or
7408                                        if trying to delete a non-empty directory,
7409                                        without using the FORCE argument.
7410    </p>
7411    </blockquote>
7412                                
7413    
7414    </blockquote><p>
7415                        
7416    </p>
7417    <p>Examples:
7418    </p>
7419    <p>
7420                            </p>
7421    <blockquote class="text">
7422    <p>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"
7423    </p>
7424    <p>S: "OK"
7425    </p>
7426    </blockquote><p>
7427                        
7428    </p>
7429    <a name="GET DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7430    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7431    <a name="rfc.section.6.8.3"></a><h3>6.8.3.&nbsp;
7432    Getting amount of instrument directories</h3>
7433    
7434    <p>The front-end can retrieve the current amount of
7435                        directories in a specific directory by sending the following command:
7436    </p>
7437    <p>
7438                            </p>
7439    <blockquote class="text">
7440    <p>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7441    </p>
7442    </blockquote><p>
7443                        
7444    </p>
7445    <p>Where &lt;dir&gt; should be replaced by the absolute path
7446                        name of the directory. If RECURSIVE is specified, the number of
7447                        all directories, including those located in subdirectories of the
7448                        specified directory, will be returned.
7449    </p>
7450    <p>Possible Answers:
7451    </p>
7452    <p>
7453                            </p>
7454    <blockquote class="text">
7455    <p>The current number of instrument directories
7456                                in the specified directory.
7457    </p>
7458    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7459                                    </p>
7460    <blockquote class="text">
7461    <p>if the given directory does not exist.
7462    </p>
7463    </blockquote>
7464                                
7465    
7466    </blockquote><p>
7467                        
7468    </p>
7469    <p>Example:
7470    </p>
7471    <p>
7472                            </p>
7473    <blockquote class="text">
7474    <p>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"
7475    </p>
7476    <p>S: "2"
7477    </p>
7478    </blockquote><p>
7479                        
7480    </p>
7481    <a name="LIST DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7482    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7483    <a name="rfc.section.6.8.4"></a><h3>6.8.4.&nbsp;
7484    Listing all directories in specific directory</h3>
7485    
7486    <p>The front-end can retrieve the current list of directories
7487                        in specific directory by sending the following command:
7488    </p>
7489    <p>
7490                            </p>
7491    <blockquote class="text">
7492    <p>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;
7493    </p>
7494    </blockquote><p>
7495                        
7496    </p>
7497    <p>Where &lt;dir&gt; should be replaced by the absolute path
7498                        name of the directory. If RECURSIVE is specified, the absolute path names
7499                        of all directories, including those located in subdirectories of the
7500                        specified directory, will be returned.
7501    </p>
7502    <p>Possible Answers:
7503    </p>
7504    <p>
7505                            </p>
7506    <blockquote class="text">
7507    <p>A comma separated list of all instrument directories
7508                                (encapsulated into apostrophes) in the specified directory.
7509    </p>
7510    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7511                                    </p>
7512    <blockquote class="text">
7513    <p>if the given directory does not exist.
7514    </p>
7515    </blockquote>
7516                                
7517    
7518    </blockquote><p>
7519                        
7520    </p>
7521    <p>Example:
7522    </p>
7523    <p>
7524                            </p>
7525    <blockquote class="text">
7526    <p>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"
7527    </p>
7528    <p>S: "'Piano Collection','Percussion Collection'"
7529    </p>
7530    </blockquote><p>
7531                        
7532    </p>
7533    <p>
7534                            </p>
7535    <blockquote class="text">
7536    <p>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"
7537    </p>
7538    <p>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"
7539    </p>
7540    </blockquote><p>
7541                        
7542    </p>
7543    <a name="GET DB_INSTRUMENT_DIRECTORY INFO"></a><br /><hr />
7544    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7545    <a name="rfc.section.6.8.5"></a><h3>6.8.5.&nbsp;
7546    Getting instrument directory information</h3>
7547    
7548    <p>The front-end can ask for the current settings of an
7549                        instrument directory by sending the following command:
7550    </p>
7551    <p>
7552                            </p>
7553    <blockquote class="text">
7554    <p>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;
7555    </p>
7556    </blockquote><p>
7557                        
7558    </p>
7559    <p>Where &lt;dir&gt; should be replaced by the absolute path
7560                        name of the directory the front-end is interested in.
7561    </p>
7562    <p>Possible Answers:
7563    </p>
7564    <p>
7565                            </p>
7566    <blockquote class="text">
7567    <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7568                                Each answer line begins with the settings category name
7569                                followed by a colon and then a space character &lt;SP&gt; and finally
7570                                the info character string to that setting category. At the
7571                                moment the following categories are defined:
7572    </p>
7573    <p>
7574                                    </p>
7575    <blockquote class="text">
7576    <p>DESCRIPTION -
7577                                            </p>
7578    <blockquote class="text">
7579    <p>A brief description of the directory content.
7580                                                Note that the character string may contain
7581                                                <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
7582    </p>
7583    </blockquote>
7584                                        
7585    
7586    <p>CREATED -
7587                                            </p>
7588    <blockquote class="text">
7589    <p>The creation date and time of the directory,
7590                                                represented in "YYYY-MM-DD HH:MM:SS" format
7591    </p>
7592    </blockquote>
7593                                        
7594    
7595    <p>MODIFIED -
7596                                            </p>
7597    <blockquote class="text">
7598    <p>The date and time of the last modification of the
7599                                                directory, represented in "YYYY-MM-DD HH:MM:SS" format
7600    </p>
7601    </blockquote>
7602                                        
7603    
7604    </blockquote>
7605                                
7606    
7607    </blockquote><p>
7608                        
7609    </p>
7610    <p>The mentioned fields above don't have to be in particular order.
7611    </p>
7612    <p>Example:
7613    </p>
7614    <p>
7615                            </p>
7616    <blockquote class="text">
7617    <p>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"
7618    </p>
7619    <p>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."
7620    </p>
7621    <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
7622    </p>
7623    <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
7624    </p>
7625    <p>&nbsp;&nbsp;&nbsp;"."
7626    </p>
7627    </blockquote><p>
7628                        
7629    </p>
7630    <a name="SET DB_INSTRUMENT_DIRECTORY NAME"></a><br /><hr />
7631    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7632    <a name="rfc.section.6.8.6"></a><h3>6.8.6.&nbsp;
7633    Renaming an instrument directory</h3>
7634    
7635    <p>The front-end can alter the name of a specific
7636                        instrument directory by sending the following command:
7637    </p>
7638    <p>
7639                            </p>
7640    <blockquote class="text">
7641    <p>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;
7642    </p>
7643    </blockquote><p>
7644                        
7645    </p>
7646    <p>Where &lt;dir&gt; is the absolute path name of the directory and
7647                        &lt;name&gt; is the new name for that directory.
7648    </p>
7649    <p>Possible Answers:
7650    </p>
7651    <p>
7652                            </p>
7653    <blockquote class="text">
7654    <p>"OK" -
7655                                    </p>
7656    <blockquote class="text">
7657    <p>on success
7658    </p>
7659    </blockquote>
7660                                
7661    
7662    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7663                                    </p>
7664    <blockquote class="text">
7665    <p>in case the given directory does not exists,
7666                                        or if a directory with name equal to the new
7667                                        name already exists.
7668    </p>
7669    </blockquote>
7670                                
7671    
7672    </blockquote><p>
7673                        
7674    </p>
7675    <p>Example:
7676    </p>
7677    <p>
7678                            </p>
7679    <blockquote class="text">
7680    <p>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"
7681    </p>
7682    <p>S: "OK"
7683    </p>
7684    </blockquote><p>
7685                        
7686    </p>
7687    <a name="MOVE DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7688    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7689    <a name="rfc.section.6.8.7"></a><h3>6.8.7.&nbsp;
7690    Moving an instrument directory</h3>
7691    
7692    <p>The front-end can move a specific
7693                        instrument directory by sending the following command:
7694    </p>
7695    <p>
7696                            </p>
7697    <blockquote class="text">
7698    <p>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7699    </p>
7700    </blockquote><p>
7701                        
7702    </p>
7703    <p>Where &lt;dir&gt; is the absolute path name of the directory
7704                        to move and &lt;dst&gt; is the location where the directory will
7705                        be moved to.
7706    </p>
7707    <p>Possible Answers:
7708    </p>
7709    <p>
7710                            </p>
7711    <blockquote class="text">
7712    <p>"OK" -
7713                                    </p>
7714    <blockquote class="text">
7715    <p>on success
7716    </p>
7717    </blockquote>
7718                                
7719    
7720    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7721                                    </p>
7722    <blockquote class="text">
7723    <p>in case a given directory does not exists,
7724                                        or if a directory with name equal to the name
7725                                        of the specified directory already exists in
7726                                        the destination directory. Error is also thrown
7727                                        when trying to move a directory to a subdirectory
7728                                        of itself.
7729    </p>
7730    </blockquote>
7731                                
7732    
7733    </blockquote><p>
7734                        
7735    </p>
7736    <p>Example:
7737    </p>
7738    <p>
7739                            </p>
7740    <blockquote class="text">
7741    <p>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"
7742    </p>
7743    <p>S: "OK"
7744    </p>
7745    </blockquote><p>
7746                        
7747    </p>
7748    <a name="COPY DB_INSTRUMENT_DIRECTORY"></a><br /><hr />
7749    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7750    <a name="rfc.section.6.8.8"></a><h3>6.8.8.&nbsp;
7751    Copying instrument directories</h3>
7752    
7753    <p>The front-end can copy a specific
7754                        instrument directory by sending the following command:
7755    </p>
7756    <p>
7757                            </p>
7758    <blockquote class="text">
7759    <p>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;
7760    </p>
7761    </blockquote><p>
7762                        
7763    </p>
7764    <p>Where &lt;dir&gt; is the absolute path name of the directory
7765                        to copy and &lt;dst&gt; is the location where the directory will
7766                        be copied to.
7767    </p>
7768    <p>Possible Answers:
7769    </p>
7770    <p>
7771                            </p>
7772    <blockquote class="text">
7773    <p>"OK" -
7774                                    </p>
7775    <blockquote class="text">
7776    <p>on success
7777    </p>
7778    </blockquote>
7779                                
7780    
7781    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7782                                    </p>
7783    <blockquote class="text">
7784    <p>in case a given directory does not exists,
7785                                        or if a directory with name equal to the name
7786                                        of the specified directory already exists in
7787                                        the destination directory. Error is also thrown
7788                                        when trying to copy a directory to a subdirectory
7789                                        of itself.
7790    </p>
7791    </blockquote>
7792                                
7793    
7794    </blockquote><p>
7795                        
7796    </p>
7797    <p>Example:
7798    </p>
7799    <p>
7800                            </p>
7801    <blockquote class="text">
7802    <p>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"
7803    </p>
7804    <p>S: "OK"
7805    </p>
7806    </blockquote><p>
7807                        
7808    </p>
7809    <a name="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"></a><br /><hr />
7810    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7811    <a name="rfc.section.6.8.9"></a><h3>6.8.9.&nbsp;
7812    Changing the description of directory</h3>
7813    
7814    <p>The front-end can alter the description of a specific
7815                        instrument directory by sending the following command:
7816    </p>
7817    <p>
7818                            </p>
7819    <blockquote class="text">
7820    <p>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;
7821    </p>
7822    </blockquote><p>
7823                        
7824    </p>
7825    <p>Where &lt;dir&gt; is the absolute path name of the directory and
7826                        &lt;desc&gt; is the new description for the directory
7827                        (encapsulated into apostrophes, supporting escape sequences as described in chapter
7828                        "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7829    </p>
7830    <p>Possible Answers:
7831    </p>
7832    <p>
7833                            </p>
7834    <blockquote class="text">
7835    <p>"OK" -
7836                                    </p>
7837    <blockquote class="text">
7838    <p>on success
7839    </p>
7840    </blockquote>
7841                                
7842    
7843    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7844                                    </p>
7845    <blockquote class="text">
7846    <p>in case the given directory does not exists.
7847    </p>
7848    </blockquote>
7849                                
7850    
7851    </blockquote><p>
7852                        
7853    </p>
7854    <p>Example:
7855    </p>
7856    <p>
7857                            </p>
7858    <blockquote class="text">
7859    <p>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"
7860    </p>
7861    <p>S: "OK"
7862    </p>
7863    </blockquote><p>
7864                        
7865    </p>
7866    <a name="FIND DB_INSTRUMENT_DIRECTORIES"></a><br /><hr />
7867    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7868    <a name="rfc.section.6.8.10"></a><h3>6.8.10.&nbsp;
7869    Finding directories</h3>
7870    
7871    <p>The front-end can search for directories
7872                        in specific directory by sending the following command:
7873    </p>
7874    <p>
7875                            </p>
7876    <blockquote class="text">
7877    <p>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
7878    </p>
7879    </blockquote><p>
7880                        
7881    </p>
7882    <p>Where &lt;dir&gt; should be replaced by the absolute path
7883                        name of the directory to search in. If NON_RECURSIVE is specified, the
7884                        directories located in subdirectories of the specified directory will not
7885                        be searched. &lt;criteria-list&gt; is a list of search criterias
7886                        in form of "key1=val1 key2=val2 ...". The following criterias are
7887                        allowed:
7888    </p>
7889    <p>
7890                          
7891    <p>NAME='&lt;search-string&gt;'
7892                              </p>
7893    <blockquote class="text">
7894    <p>Restricts the search to directories, which names
7895                                  satisfy the supplied search string (encapsulated into apostrophes,
7896                                  supporting escape sequences as described in chapter
7897                                  "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7898    </p>
7899    </blockquote><p>
7900                          
7901    </p>
7902    
7903                          
7904    <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7905                              </p>
7906    <blockquote class="text">
7907    <p>Restricts the search to directories, which creation
7908                                  date satisfies the specified period, where &lt;date-after&gt;
7909                                  and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
7910                                  If &lt;date-after&gt; is omitted the search is restricted to
7911                                  directories created before &lt;date-before&gt;. If
7912                                  &lt;date-before&gt; is omitted, the search is restricted
7913                                  to directories created after &lt;date-after&gt;.
7914    </p>
7915    </blockquote><p>
7916                          
7917    </p>
7918    
7919                          
7920    <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
7921                              </p>
7922    <blockquote class="text">
7923    <p>Restricts the search to directories, which
7924                                  date of last modification satisfies the specified period, where
7925                                  &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
7926                                  format. If &lt;date-after&gt; is omitted the search is restricted to
7927                                  directories, which are last modified before &lt;date-before&gt;. If
7928                                  &lt;date-before&gt; is omitted, the search is restricted to directories,
7929                                  which are last modified after &lt;date-after&gt;.
7930    </p>
7931    </blockquote><p>
7932                          
7933    </p>
7934    
7935                          
7936    <p>DESCRIPTION='&lt;search-string&gt;'
7937                              </p>
7938    <blockquote class="text">
7939    <p>Restricts the search to directories with description
7940                                  that satisfies the supplied search string
7941                                  (encapsulated into apostrophes, supporting escape
7942                                  sequences as described in chapter
7943                                  "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
7944    </p>
7945    </blockquote><p>
7946                          
7947    </p>
7948                        
7949    
7950    <p>Where &lt;search-string&gt; is either a regular expression, or a
7951                        word list separated with spaces for OR search and with '+' for AND search.
7952    </p>
7953    <p>Possible Answers:
7954    </p>
7955    <p>
7956                            </p>
7957    <blockquote class="text">
7958    <p>A comma separated list with the absolute path names (encapsulated into
7959                                apostrophes) of all directories in the specified directory that satisfy
7960                                the supplied search criterias.
7961    </p>
7962    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7963                                    </p>
7964    <blockquote class="text">
7965    <p>if the given directory does not exist.
7966    </p>
7967    </blockquote>
7968                                
7969    
7970    </blockquote><p>
7971                        
7972    </p>
7973    <p>Example:
7974    </p>
7975    <p>
7976                            </p>
7977    <blockquote class="text">
7978    <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"
7979    </p>
7980    <p>S: "'/Piano Collection'"
7981    </p>
7982    </blockquote><p>
7983                        
7984    </p>
7985    <p>
7986                            </p>
7987    <blockquote class="text">
7988    <p>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"
7989    </p>
7990    <p>S: "'/Piano Collection','/Percussions'"
7991    </p>
7992    </blockquote><p>
7993                        
7994    </p>
7995    <a name="ADD DB_INSTRUMENTS"></a><br /><hr />
7996    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
7997    <a name="rfc.section.6.8.11"></a><h3>6.8.11.&nbsp;
7998    Adding instruments to the instruments database</h3>
7999    
8000    <p>The front-end can add one or more instruments
8001                        to the instruments database by sending the following command:
8002    </p>
8003    <p>
8004                            </p>
8005    <blockquote class="text">
8006    <p>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]
8007    </p>
8008    </blockquote><p>
8009                        
8010    </p>
8011    <p>Where &lt;db_dir&gt; is the absolute path name of a directory
8012                        (encapsulated into apostrophes) in the instruments database in which
8013                        only the new instruments (that are not already in the database) will
8014                        be added, &lt;file_path&gt; is the absolute path name of a file or
8015                        directory in the file system (encapsulated into apostrophes). In case
8016                        an instrument file is supplied, only the instruments in the specified
8017                        file will be added to the instruments database. If the optional
8018                        &lt;instr_index&gt; (the index of the instrument within the given file)
8019                        is supplied too, then only the specified instrument will be added.
8020                        In case a directory is supplied, the instruments in that directory
8021                        will be added. The OPTIONAL &lt;mode&gt; argument is only applied
8022                        when a directory is provided as &lt;file_path&gt; and specifies how the
8023                        scanning will be done and has exactly the following possibilities:
8024    </p>
8025    <p>
8026                            </p>
8027    <blockquote class="text">
8028    <p>"RECURSIVE" -
8029                                    </p>
8030    <blockquote class="text">
8031    <p>All instruments will be processed, including those
8032                                        in the subdirectories, and the respective subdirectory
8033                                        tree structure will be recreated in the instruments
8034                                        database
8035    </p>
8036    </blockquote>
8037                                
8038    
8039    <p>"NON_RECURSIVE" -
8040                                    </p>
8041    <blockquote class="text">
8042    <p>Only the instruments in the specified directory
8043                                        will be added, the instruments in the subdirectories
8044                                        will not be processed.
8045    </p>
8046    </blockquote>
8047                                
8048    
8049    <p>"FLAT" -
8050                                    </p>
8051    <blockquote class="text">
8052    <p>All instruments will be processed, including those
8053                                        in the subdirectories, but the respective subdirectory
8054                                        structure will not be recreated in the instruments
8055                                        database. All instruments will be added directly in
8056                                        the specified database directory.
8057    </p>
8058    </blockquote>
8059                                
8060    
8061    </blockquote><p>
8062                        
8063    </p>
8064    <p>The difference between regular and NON_MODAL versions of the command
8065                        is that the regular command returns when the scanning is finished
8066                        while NON_MODAL version returns immediately and a background process is launched.
8067                        The <a class='info' href='#GET DB_INSTRUMENTS_JOB INFO'>GET DB_INSTRUMENTS_JOB INFO<span> (</span><span class='info'>Getting job status information</span><span>)</span></a>
8068                        command can be used to monitor the scanning progress.
8069    </p>
8070    <p>Possible Answers:
8071    </p>
8072    <p>
8073                            </p>
8074    <blockquote class="text">
8075    <p>"OK" -
8076                                    </p>
8077    <blockquote class="text">
8078    <p>on success when NON_MODAL is not supplied
8079    </p>
8080    </blockquote>
8081                                
8082    
8083    <p>"OK[&lt;job-id&gt;]" -
8084                                    </p>
8085    <blockquote class="text">
8086    <p>on success when NON_MODAL is supplied, where &lt;job-id&gt;
8087                                        is a numerical ID used to obtain status information about the job progress.
8088                                        See <a class='info' href='#GET DB_INSTRUMENTS_JOB INFO'>GET DB_INSTRUMENTS_JOB INFO<span> (</span><span class='info'>Getting job status information</span><span>)</span></a>
8089                                        
8090    </p>
8091    </blockquote>
8092                                
8093    
8094    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8095                                    </p>
8096    <blockquote class="text">
8097    <p>if an invalid path is specified.
8098    </p>
8099    </blockquote>
8100                                
8101    
8102    </blockquote><p>
8103                        
8104    </p>
8105    <p>Examples:
8106    </p>
8107    <p>
8108                            </p>
8109    <blockquote class="text">
8110    <p>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"
8111    </p>
8112    <p>S: "OK"
8113    </p>
8114    </blockquote><p>
8115                        
8116    </p>
8117    <a name="REMOVE DB_INSTRUMENT"></a><br /><hr />
8118    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8119    <a name="rfc.section.6.8.12"></a><h3>6.8.12.&nbsp;
8120    Removing an instrument</h3>
8121    
8122    <p>The front-end can remove a particular instrument
8123                        from the instruments database by sending the following command:
8124    </p>
8125    <p>
8126                            </p>
8127    <blockquote class="text">
8128    <p>REMOVE DB_INSTRUMENT &lt;instr_path&gt;
8129    </p>
8130    </blockquote><p>
8131                        
8132    </p>
8133    <p>Where &lt;instr_path&gt; is the absolute path name
8134                        (in the instruments database) of the instrument to remove.
8135    </p>
8136    <p>Possible Answers:
8137    </p>
8138    <p>
8139                            </p>
8140    <blockquote class="text">
8141    <p>"OK" -
8142                                    </p>
8143    <blockquote class="text">
8144    <p>if the instrument is removed successfully
8145    </p>
8146    </blockquote>
8147                                
8148    
8149    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8150                                    </p>
8151    <blockquote class="text">
8152    <p>if the given path does not exist or
8153                                        is a directory.
8154    </p>
8155    </blockquote>
8156                                
8157    
8158    </blockquote><p>
8159                        
8160    </p>
8161    <p>Examples:
8162    </p>
8163    <p>
8164                            </p>
8165    <blockquote class="text">
8166    <p>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"
8167    </p>
8168    <p>S: "OK"
8169    </p>
8170    </blockquote><p>
8171                        
8172    </p>
8173    <a name="GET DB_INSTRUMENTS"></a><br /><hr />
8174    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8175    <a name="rfc.section.6.8.13"></a><h3>6.8.13.&nbsp;
8176    Getting amount of instruments</h3>
8177    
8178    <p>The front-end can retrieve the current amount of
8179                        instruments in a specific directory by sending the following command:
8180    </p>
8181    <p>
8182                            </p>
8183    <blockquote class="text">
8184    <p>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8185    </p>
8186    </blockquote><p>
8187                        
8188    </p>
8189    <p>Where &lt;dir&gt; should be replaced by the absolute path name
8190                        of the directory. If RECURSIVE is specified, the number of all
8191                        instruments, including those located in subdirectories of the
8192                        specified directory, will be returned.
8193    </p>
8194    <p>Possible Answers:
8195    </p>
8196    <p>
8197                            </p>
8198    <blockquote class="text">
8199    <p>The current number of instruments
8200                                in the specified directory.
8201    </p>
8202    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8203                                    </p>
8204    <blockquote class="text">
8205    <p>if the given directory does not exist.
8206    </p>
8207    </blockquote>
8208                                
8209    
8210    </blockquote><p>
8211                        
8212    </p>
8213    <p>Example:
8214    </p>
8215    <p>
8216                            </p>
8217    <blockquote class="text">
8218    <p>C: "GET DB_INSTRUMENTS '/Piano Collection'"
8219    </p>
8220    <p>S: "2"
8221    </p>
8222    </blockquote><p>
8223                        
8224    </p>
8225    <a name="LIST DB_INSTRUMENTS"></a><br /><hr />
8226    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8227    <a name="rfc.section.6.8.14"></a><h3>6.8.14.&nbsp;
8228    Listing all instruments in specific directory</h3>
8229    
8230    <p>The front-end can retrieve the current list of instruments
8231                        in specific directory by sending the following command:
8232    </p>
8233    <p>
8234                            </p>
8235    <blockquote class="text">
8236    <p>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;
8237    </p>
8238    </blockquote><p>
8239                        
8240    </p>
8241    <p>Where &lt;dir&gt; should be replaced by the absolute path
8242                        name of the directory. If RECURSIVE is specified, the absolute path
8243                        names of all instruments, including those located in subdirectories
8244                        of the specified directory, will be returned.
8245    </p>
8246    <p>Possible Answers:
8247    </p>
8248    <p>
8249                            </p>
8250    <blockquote class="text">
8251    <p>A comma separated list of all instruments
8252                                (encapsulated into apostrophes) in the specified directory.
8253    </p>
8254    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8255                                    </p>
8256    <blockquote class="text">
8257    <p>if the given directory does not exist.
8258    </p>
8259    </blockquote>
8260                                
8261    
8262    </blockquote><p>
8263                        
8264    </p>
8265    <p>Example:
8266    </p>
8267    <p>
8268                            </p>
8269    <blockquote class="text">
8270    <p>C: "LIST DB_INSTRUMENTS '/Piano Collection'"
8271    </p>
8272    <p>S: "'Bosendorfer 290','Steinway D'"
8273    </p>
8274    </blockquote><p>
8275                        
8276    </p>
8277    <p>
8278                            </p>
8279    <blockquote class="text">
8280    <p>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"
8281    </p>
8282    <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"
8283    </p>
8284    </blockquote><p>
8285                        
8286    </p>
8287    <a name="GET DB_INSTRUMENT INFO"></a><br /><hr />
8288    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8289    <a name="rfc.section.6.8.15"></a><h3>6.8.15.&nbsp;
8290    Getting instrument information</h3>
8291    
8292    <p>The front-end can ask for the current settings of an
8293                        instrument by sending the following command:
8294    </p>
8295    <p>
8296                            </p>
8297    <blockquote class="text">
8298    <p>GET DB_INSTRUMENT INFO &lt;instr_path&gt;
8299    </p>
8300    </blockquote><p>
8301                        
8302    </p>
8303    <p>Where &lt;instr_path&gt; should be replaced by the absolute path
8304                        name of the instrument the front-end is interested in.
8305    </p>
8306    <p>Possible Answers:
8307    </p>
8308    <p>
8309                            </p>
8310    <blockquote class="text">
8311    <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8312                                Each answer line begins with the settings category name
8313                                followed by a colon and then a space character &lt;SP&gt; and finally
8314                                the info character string to that setting category. At the
8315                                moment the following categories are defined:
8316    </p>
8317    <p>
8318                                    </p>
8319    <blockquote class="text">
8320    <p>INSTRUMENT_FILE -
8321                                            </p>
8322    <blockquote class="text">
8323    <p>File name of the instrument.
8324                                                Note that the character string may contain
8325                                                <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8326    </p>
8327    </blockquote>
8328                                        
8329    
8330    <p>INSTRUMENT_NR -
8331                                            </p>
8332    <blockquote class="text">
8333    <p>Index of the instrument within the file.
8334    </p>
8335    </blockquote>
8336                                        
8337    
8338    <p>FORMAT_FAMILY -
8339                                            </p>
8340    <blockquote class="text">
8341    <p>The format family of the instrument.
8342    </p>
8343    </blockquote>
8344                                        
8345    
8346    <p>FORMAT_VERSION -
8347                                            </p>
8348    <blockquote class="text">
8349    <p>The format version of the instrument.
8350    </p>
8351    </blockquote>
8352                                        
8353    
8354    <p>SIZE -
8355                                            </p>
8356    <blockquote class="text">
8357    <p>The size of the instrument in bytes.
8358    </p>
8359    </blockquote>
8360                                        
8361    
8362    <p>CREATED -
8363                                            </p>
8364    <blockquote class="text">
8365    <p>The date and time when the instrument is added
8366                                                in the instruments database, represented in
8367                                               "YYYY-MM-DD HH:MM:SS" format
8368    </p>
8369    </blockquote>
8370                                        
8371    
8372    <p>MODIFIED -
8373                                            </p>
8374    <blockquote class="text">
8375    <p>The date and time of the last modification of the
8376                                                instrument's database settings, represented in
8377                                                "YYYY-MM-DD HH:MM:SS" format
8378    </p>
8379    </blockquote>
8380                                        
8381    
8382    <p>DESCRIPTION -
8383                                            </p>
8384    <blockquote class="text">
8385    <p>A brief description of the instrument.
8386                                                Note that the character string may contain
8387                                                <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8388    </p>
8389    </blockquote>
8390                                        
8391    
8392    <p>IS_DRUM -
8393                                            </p>
8394    <blockquote class="text">
8395    <p>either true or false, determines whether the
8396                                                instrument is a drumkit or a chromatic instrument
8397    </p>
8398    </blockquote>
8399                                        
8400    
8401    <p>PRODUCT -
8402                                            </p>
8403    <blockquote class="text">
8404    <p>The product title of the instrument.
8405                                                Note that the character string may contain
8406                                                <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8407    </p>
8408    </blockquote>
8409                                        
8410    
8411    <p>ARTISTS -
8412                                            </p>
8413    <blockquote class="text">
8414    <p>Lists the artist names.
8415                                                Note that the character string may contain
8416                                                <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8417    </p>
8418    </blockquote>
8419                                        
8420    
8421    <p>KEYWORDS -
8422                                            </p>
8423    <blockquote class="text">
8424    <p>Provides a list of keywords that refer to the instrument.
8425                                                Keywords are separated with semicolon and blank.
8426                                                Note that the character string may contain
8427                                                <a class='info' href='#character_set'>escape sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>.
8428    </p>
8429    </blockquote>
8430                                        
8431    
8432    </blockquote>
8433                                
8434    
8435    </blockquote><p>
8436                        
8437    </p>
8438    <p>The mentioned fields above don't have to be in particular order.
8439    </p>
8440    <p>Example:
8441    </p>
8442    <p>
8443                            </p>
8444    <blockquote class="text">
8445    <p>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"
8446    </p>
8447    <p>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"
8448    </p>
8449    <p>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"
8450    </p>
8451    <p>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"
8452    </p>
8453    <p>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"
8454    </p>
8455    <p>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"
8456    </p>
8457    <p>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"
8458    </p>
8459    <p>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"
8460    </p>
8461    <p>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "
8462    </p>
8463    <p>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"
8464    </p>
8465    <p>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"
8466    </p>
8467    <p>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"
8468    </p>
8469    <p>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"
8470    </p>
8471    <p>&nbsp;&nbsp;&nbsp;"."
8472    </p>
8473    </blockquote><p>
8474                        
8475    </p>
8476    <a name="SET DB_INSTRUMENT NAME"></a><br /><hr />
8477    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8478    <a name="rfc.section.6.8.16"></a><h3>6.8.16.&nbsp;
8479    Renaming an instrument</h3>
8480    
8481    <p>The front-end can alter the name of a specific
8482                        instrument by sending the following command:
8483    </p>
8484    <p>
8485                            </p>
8486    <blockquote class="text">
8487    <p>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;
8488    </p>
8489    </blockquote><p>
8490                        
8491    </p>
8492    <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8493                        &lt;name&gt; is the new name for that instrument.
8494    </p>
8495    <p>Possible Answers:
8496    </p>
8497    <p>
8498                            </p>
8499    <blockquote class="text">
8500    <p>"OK" -
8501                                    </p>
8502    <blockquote class="text">
8503    <p>on success
8504    </p>
8505    </blockquote>
8506                                
8507    
8508    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8509                                    </p>
8510    <blockquote class="text">
8511    <p>in case the given instrument does not exists,
8512                                        or if an instrument with name equal to the new
8513                                        name already exists.
8514    </p>
8515    </blockquote>
8516                                
8517    
8518    </blockquote><p>
8519                        
8520    </p>
8521    <p>Example:
8522    </p>
8523    <p>
8524                            </p>
8525    <blockquote class="text">
8526    <p>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"
8527    </p>
8528    <p>S: "OK"
8529    </p>
8530    </blockquote><p>
8531                        
8532    </p>
8533    <a name="MOVE DB_INSTRUMENT"></a><br /><hr />
8534    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8535    <a name="rfc.section.6.8.17"></a><h3>6.8.17.&nbsp;
8536    Moving an instrument</h3>
8537    
8538    <p>The front-end can move a specific instrument to another directory by
8539                        sending the following command:
8540    </p>
8541    <p>
8542                            </p>
8543    <blockquote class="text">
8544    <p>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8545    </p>
8546    </blockquote><p>
8547                        
8548    </p>
8549    <p>Where &lt;instr&gt; is the absolute path name of the instrument
8550                        to move and &lt;dst&gt; is the directory where the instrument will
8551                        be moved to.
8552    </p>
8553    <p>Possible Answers:
8554    </p>
8555    <p>
8556                            </p>
8557    <blockquote class="text">
8558    <p>"OK" -
8559                                    </p>
8560    <blockquote class="text">
8561    <p>on success
8562    </p>
8563    </blockquote>
8564                                
8565    
8566    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8567                                    </p>
8568    <blockquote class="text">
8569    <p>in case the given instrument does not exists,
8570                                        or if an instrument with name equal to the name of the
8571                                        specified instrument already exists in the destination
8572                                        directory.
8573    </p>
8574    </blockquote>
8575                                
8576    
8577    </blockquote><p>
8578                        
8579    </p>
8580    <p>Example:
8581    </p>
8582    <p>
8583                            </p>
8584    <blockquote class="text">
8585    <p>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"
8586    </p>
8587    <p>S: "OK"
8588    </p>
8589    </blockquote><p>
8590                        
8591    </p>
8592    <a name="COPY DB_INSTRUMENT"></a><br /><hr />
8593    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8594    <a name="rfc.section.6.8.18"></a><h3>6.8.18.&nbsp;
8595    Copying instruments</h3>
8596    
8597    <p>The front-end can copy a specific instrument to another directory by
8598                        sending the following command:
8599    </p>
8600    <p>
8601                            </p>
8602    <blockquote class="text">
8603    <p>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;
8604    </p>
8605    </blockquote><p>
8606                        
8607    </p>
8608    <p>Where &lt;instr&gt; is the absolute path name of the instrument
8609                        to copy and &lt;dst&gt; is the directory where the instrument will
8610                        be copied to.
8611    </p>
8612    <p>Possible Answers:
8613    </p>
8614    <p>
8615                            </p>
8616    <blockquote class="text">
8617    <p>"OK" -
8618                                    </p>
8619    <blockquote class="text">
8620    <p>on success
8621    </p>
8622    </blockquote>
8623                                
8624    
8625    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8626                                    </p>
8627    <blockquote class="text">
8628    <p>in case the given instrument does not exists,
8629                                        or if an instrument with name equal to the name of the
8630                                        specified instrument already exists in the destination
8631                                        directory.
8632    </p>
8633    </blockquote>
8634                                
8635    
8636    </blockquote><p>
8637                        
8638    </p>
8639    <p>Example:
8640    </p>
8641    <p>
8642                            </p>
8643    <blockquote class="text">
8644    <p>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"
8645    </p>
8646    <p>S: "OK"
8647    </p>
8648    </blockquote><p>
8649                        
8650    </p>
8651    <a name="SET DB_INSTRUMENT DESCRIPTION"></a><br /><hr />
8652    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8653    <a name="rfc.section.6.8.19"></a><h3>6.8.19.&nbsp;
8654    Changing the description of instrument</h3>
8655    
8656    <p>The front-end can alter the description of a specific
8657                        instrument by sending the following command:
8658    </p>
8659    <p>
8660                            </p>
8661    <blockquote class="text">
8662    <p>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;
8663    </p>
8664    </blockquote><p>
8665                        
8666    </p>
8667    <p>Where &lt;instr&gt; is the absolute path name of the instrument and
8668                        &lt;desc&gt; is the new description for the instrument
8669                        (encapsulated into apostrophes, supporting escape sequences as described in chapter
8670                        "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8671    </p>
8672    <p>Possible Answers:
8673    </p>
8674    <p>
8675                            </p>
8676    <blockquote class="text">
8677    <p>"OK" -
8678                                    </p>
8679    <blockquote class="text">
8680    <p>on success
8681    </p>
8682    </blockquote>
8683                                
8684    
8685    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8686                                    </p>
8687    <blockquote class="text">
8688    <p>in case the given instrument does not exists.
8689    </p>
8690    </blockquote>
8691                                
8692    
8693    </blockquote><p>
8694                        
8695    </p>
8696    <p>Example:
8697    </p>
8698    <p>
8699                            </p>
8700    <blockquote class="text">
8701    <p>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"
8702    </p>
8703    <p>S: "OK"
8704    </p>
8705    </blockquote><p>
8706                        
8707    </p>
8708    <a name="FIND DB_INSTRUMENTS"></a><br /><hr />
8709    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8710    <a name="rfc.section.6.8.20"></a><h3>6.8.20.&nbsp;
8711    Finding instruments</h3>
8712    
8713    <p>The front-end can search for instruments
8714                        in specific directory by sending the following command:
8715    </p>
8716    <p>
8717                            </p>
8718    <blockquote class="text">
8719    <p>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;
8720    </p>
8721    </blockquote><p>
8722                        
8723    </p>
8724    <p>Where &lt;dir&gt; should be replaced by the absolute path
8725                        name of the directory to search in. If NON_RECURSIVE is specified, the
8726                        directories located in subdirectories of the specified directory will not
8727                        be searched. &lt;criteria-list&gt; is a list of search criterias
8728                        in form of "key1=val1 key2=val2 ...". The following criterias are
8729                        allowed:
8730    </p>
8731    <p>
8732                          
8733    <p>NAME='&lt;search-string&gt;'
8734                              </p>
8735    <blockquote class="text">
8736    <p>Restricts the search to instruments, which names
8737                                  satisfy the supplied search string (encapsulated into apostrophes,
8738                                  supporting escape sequences as described in chapter
8739                                  "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8740    </p>
8741    </blockquote><p>
8742                          
8743    </p>
8744    
8745                          
8746    <p>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
8747                              </p>
8748    <blockquote class="text">
8749    <p>Restricts the search to instruments, which
8750                                  size is in the specified range. If &lt;min&gt; is omitted,
8751                                  the search results are restricted to instruments with size less then
8752                                  or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
8753                                  search is restricted to instruments with size greater then
8754                                  or equal to &lt;min&gt;.
8755    </p>
8756    </blockquote><p>
8757                          
8758    </p>
8759    
8760                          
8761    <p>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8762                              </p>
8763    <blockquote class="text">
8764    <p>Restricts the search to instruments, which creation
8765                                  date satisfies the specified period, where &lt;date-after&gt;
8766                                  and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
8767                                  If &lt;date-after&gt; is omitted the search is restricted to
8768                                  instruments created before &lt;date-before&gt;. If
8769                                  &lt;date-before&gt; is omitted, the search is restricted
8770                                  to instruments created after &lt;date-after&gt;.
8771    </p>
8772    </blockquote><p>
8773                          
8774    </p>
8775    
8776                          
8777    <p>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
8778                              </p>
8779    <blockquote class="text">
8780    <p>Restricts the search to instruments, which
8781                                  date of last modification satisfies the specified period, where
8782                                  &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
8783                                  format. If &lt;date-after&gt; is omitted the search is restricted to
8784                                  instruments, which are last modified before &lt;date-before&gt;. If
8785                                  &lt;date-before&gt; is omitted, the search is restricted to instruments,
8786                                  which are last modified after &lt;date-after&gt;.
8787    </p>
8788    </blockquote><p>
8789                          
8790    </p>
8791    
8792                          
8793    <p>DESCRIPTION='&lt;search-string&gt;'
8794                              </p>
8795    <blockquote class="text">
8796    <p>Restricts the search to instruments with description
8797                                  that satisfies the supplied search string (encapsulated into apostrophes,
8798                                  supporting escape sequences as described in chapter
8799                                  "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8800    </p>
8801    </blockquote><p>
8802                          
8803    </p>
8804    
8805                          
8806    <p>PRODUCT='&lt;search-string&gt;'
8807                              </p>
8808    <blockquote class="text">
8809    <p>Restricts the search to instruments with product info
8810                                  that satisfies the supplied search string (encapsulated into apostrophes,
8811                                  supporting escape sequences as described in chapter
8812                                  "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8813    </p>
8814    </blockquote><p>
8815                          
8816    </p>
8817    
8818                          
8819    <p>ARTISTS='&lt;search-string&gt;'
8820                              </p>
8821    <blockquote class="text">
8822    <p>Restricts the search to instruments with artists info
8823                                  that satisfies the supplied search string (encapsulated into apostrophes,
8824                                  supporting escape sequences as described in chapter
8825                                  "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8826    </p>
8827    </blockquote><p>
8828                          
8829    </p>
8830    
8831                          
8832    <p>KEYWORDS='&lt;search-string&gt;'
8833                              </p>
8834    <blockquote class="text">
8835    <p>Restricts the search to instruments with keyword list
8836                                  that satisfies the supplied search string (encapsulated into apostrophes,
8837                                  supporting escape sequences as described in chapter
8838                                  "<a class='info' href='#character_set'>Character Set and Escape Sequences<span> (</span><span class='info'>Character Set and Escape Sequences</span><span>)</span></a>").
8839    </p>
8840    </blockquote><p>
8841                          
8842    </p>
8843    
8844                          
8845    <p>IS_DRUM=true | false
8846                              </p>
8847    <blockquote class="text">
8848    <p>Either true or false. Restricts the search to
8849                                  drum kits or chromatic instruments.
8850    </p>
8851    </blockquote><p>
8852                          
8853    </p>
8854    
8855                          
8856    <p>FORMAT_FAMILIES='&lt;format-list&gt;'
8857                              </p>
8858    <blockquote class="text">
8859    <p>Restricts the search to instruments of the supplied format families,
8860                                  where &lt;format-list&gt; is a comma separated list of format families.
8861    </p>
8862    </blockquote><p>
8863                          
8864    </p>
8865                        
8866    
8867    <p>Where &lt;search-string&gt; is either a regular expression, or a
8868                        word list separated with spaces for OR search and with '+' for AND search.
8869    </p>
8870    <p>Possible Answers:
8871    </p>
8872    <p>
8873                            </p>
8874    <blockquote class="text">
8875    <p>A comma separated list with the absolute path names (encapsulated into
8876                                apostrophes) of all instruments in the specified directory that satisfy
8877                                the supplied search criterias.
8878    </p>
8879    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
8880                                    </p>
8881    <blockquote class="text">
8882    <p>if the given directory does not exist.
8883    </p>
8884    </blockquote>
8885                                
8886    
8887    </blockquote><p>
8888                        
8889    </p>
8890    <p>Example:
8891    </p>
8892    <p>
8893                            </p>
8894    <blockquote class="text">
8895    <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"
8896    </p>
8897    <p>S: "'/Piano Collection/Bosendorfer 290'"
8898    </p>
8899    </blockquote><p>
8900                        
8901    </p>
8902    <p>
8903                            </p>
8904    <blockquote class="text">
8905    <p>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"
8906    </p>
8907    <p>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"
8908    </p>
8909    </blockquote><p>
8910                        
8911    </p>
8912    <a name="GET DB_INSTRUMENTS_JOB INFO"></a><br /><hr />
8913    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
8914    <a name="rfc.section.6.8.21"></a><h3>6.8.21.&nbsp;
8915    Getting job status information</h3>
8916    
8917    <p>The front-end can ask for the current status of a
8918                        particular database instruments job by sending the following command:
8919    </p>
8920    <p>
8921                            </p>
8922    <blockquote class="text">
8923    <p>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;
8924    </p>
8925    </blockquote><p>
8926                        
8927    </p>
8928    <p>Where &lt;job-id&gt; should be replaced by the numerical ID
8929                        of the job the front-end is interested in.
8930    </p>
8931    <p>Possible Answers:
8932    </p>
8933    <p>
8934                            </p>
8935    <blockquote class="text">
8936    <p>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
8937                                Each answer line begins with the settings category name
8938                                followed by a colon and then a space character &lt;SP&gt; and finally
8939                                the info character string to that setting category. At the
8940                                moment the following categories are defined:
8941    </p>
8942    <p>
8943                                    </p>
8944    <blockquote class="text">
8945    <p>FILES_TOTAL -
8946                                            </p>
8947    <blockquote class="text">
8948    <p>The total number of files scheduled for scanning
8949    </p>
8950    </blockquote>
8951                                        
8952    
8953    <p>FILES_SCANNED -
8954                                            </p>
8955    <blockquote class="text">
8956    <p>The current number of scanned files
8957    </p>
8958    </blockquote>
8959                                        
8960    
8961    <p>SCANNING -
8962                                            </p>
8963    <blockquote class="text">
8964    <p>The absolute path name of the file which is currently
8965                                                being scanned
8966    </p>
8967    </blockquote>
8968                                        
8969    
8970    <p>STATUS -
8971                                            </p>
8972    <blockquote class="text">
8973    <p>An integer value between 0 and 100 indicating the
8974                                                scanning progress percentage of the file which is
8975                                                currently being scanned
8976    </p>
8977    </blockquote>
8978                                        
8979    
8980    </blockquote>
8981                                
8982    
8983    </blockquote><p>
8984                        
8985    </p>
8986    <p>The mentioned fields above don't have to be in particular order.
8987    </p>
8988    <p>Example:
8989    </p>
8990    <p>
8991                            </p>
8992    <blockquote class="text">
8993    <p>C: "GET DB_INSTRUMENTS_JOB INFO 2"
8994    </p>
8995    <p>S: "FILES_TOTAL: 12"
8996    </p>
8997    <p>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"
8998    </p>
8999    <p>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"
9000    </p>
9001    <p>&nbsp;&nbsp;&nbsp;"STATUS: 42"
9002    </p>
9003    <p>&nbsp;&nbsp;&nbsp;"."
9004    </p>
9005    </blockquote><p>
9006                        
9007    </p>
9008    <a name="FORMAT INSTRUMENTS_DB"></a><br /><hr />
9009    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9010    <a name="rfc.section.6.8.22"></a><h3>6.8.22.&nbsp;
9011    Formatting the instruments database</h3>
9012    
9013    <p>The front-end can remove all instruments and directories and re-create
9014                        the instruments database structure (e.g., in case of a database corruption)
9015                        by sending the following command:
9016    </p>
9017    <p>
9018                            </p>
9019    <blockquote class="text">
9020    <p>FORMAT INSTRUMENTS_DB
9021    </p>
9022    </blockquote><p>
9023                        
9024    </p>
9025    <p>Possible Answers:
9026    </p>
9027    <p>
9028                            </p>
9029    <blockquote class="text">
9030    <p>"OK" -
9031                                    </p>
9032    <blockquote class="text">
9033    <p>on success
9034    </p>
9035    </blockquote>
9036                                
9037    
9038    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9039                                    </p>
9040    <blockquote class="text">
9041    <p>If the formatting of the instruments database
9042                                        failed.
9043    </p>
9044    </blockquote>
9045                                
9046    
9047    </blockquote><p>
9048                        
9049    </p>
9050    <a name="editing_instruments"></a><br /><hr />
9051    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9052    <a name="rfc.section.6.9"></a><h3>6.9.&nbsp;
9053    Editing Instruments</h3>
9054    
9055    <p>The sampler allows to edit instruments while playing with the
9056                    sampler by spawning an external (3rd party) instrument editor
9057                    application for a given instrument. The 3rd party instrument
9058                    editor applications have to place a respective plugin DLL file
9059                    into the sampler's plugins directory. The sampler will
9060                    automatically try to load all plugin DLLs in that directory on
9061                    startup and only on startup!
9062    </p>
9063    <p>At the moment there is only one command for this feature set,
9064                    but this will most probably change in future.
9065    </p>
9066    <a name="EDIT INSTRUMENT"></a><br /><hr />
9067    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9068    <a name="rfc.section.6.9.1"></a><h3>6.9.1.&nbsp;
9069    Opening an appropriate instrument editor application</h3>
9070    
9071    <p>The front-end can request to open an appropriate instrument
9072                        editor application by sending the following command:
9073    </p>
9074    <p>
9075                            </p>
9076    <blockquote class="text">
9077    <p>EDIT INSTRUMENT &lt;sampler-channel&gt;
9078    </p>
9079    </blockquote><p>
9080                        
9081    </p>
9082    <p>Where &lt;sampler-channel&gt; should be replaced by the
9083                        number of the sampler channel as given by the
9084                        <a class='info' href='#ADD CHANNEL'>"ADD CHANNEL"<span> (</span><span class='info'>Adding a new sampler channel</span><span>)</span></a>
9085                        or <a class='info' href='#LIST CHANNELS'>"LIST CHANNELS"<span> (</span><span class='info'>Getting all created sampler channel list</span><span>)</span></a>
9086                        command.
9087    </p>
9088    <p>The sampler will try to ask all registered instrument
9089                        editors (or to be more specific: their sampler plugins)
9090                        whether they are capable to handle the instrument on the
9091                        given sampler channel. The sampler will simply use the first
9092                        instrument editor application which replied with a positive
9093                        answer and spawn that instrument editor application within
9094                        the sampler's process and provide that application access
9095                        to the instrument's data structures, so both applications
9096                        can share and access the same instruments data at the same
9097                        time, thus allowing to immediately hear changes with the
9098                        sampler made by the instrument editor.
9099    </p>
9100    <p>Note: consequently instrument editors are always spawned
9101                        locally on the same machine where the sampler is running
9102                        on!
9103    </p>
9104    <p>Possible Answers:
9105    </p>
9106    <p>
9107                            </p>
9108    <blockquote class="text">
9109    <p>"OK" -
9110                                    </p>
9111    <blockquote class="text">
9112    <p>when an appropriate instrument editor was
9113                                        launched
9114    </p>
9115    </blockquote>
9116                                
9117    
9118    <p>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
9119                                    </p>
9120    <blockquote class="text">
9121    <p>when an appropriate instrument editor was
9122                                        launched, but there are noteworthy issues
9123    </p>
9124    </blockquote>
9125                                
9126    
9127    <p>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
9128                                    </p>
9129    <blockquote class="text">
9130    <p>when an appropriate instrument editor
9131                                        could not be launched
9132    </p>
9133    </blockquote>
9134                                
9135    
9136    </blockquote><p>
9137                        
9138    </p>
9139    <p>Examples:
9140    </p>
9141    <p>
9142                            </p>
9143    <blockquote class="text">
9144    <p>C: "EDIT INSTRUMENT 0"
9145    </p>
9146    <p>S: "OK"
9147    </p>
9148    </blockquote><p>
9149                        
9150    </p>
9151  <a name="command_syntax"></a><br /><hr />  <a name="command_syntax"></a><br /><hr />
9152  <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>  <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
9153  <a name="rfc.section.7"></a><h3>7.&nbsp;  <a name="rfc.section.7"></a><h3>7.&nbsp;
# Line 7266  Command Syntax</h3> Line 9248  Command Syntax</h3>
9248  <p>/ UNSUBSCRIBE SP unsubscribe_event  <p>/ UNSUBSCRIBE SP unsubscribe_event
9249                                    
9250  </p>  </p>
 <p>/ SELECT SP text  
                   
 </p>  
9251  <p>/ RESET SP reset_instruction  <p>/ RESET SP reset_instruction
9252                                    
9253  </p>  </p>
9254  <p>/ CLEAR SP clear_instruction  <p>/ CLEAR SP clear_instruction
9255                                    
9256  </p>  </p>
9257    <p>/ FIND SP find_instruction
9258                    
9259    </p>
9260    <p>/ MOVE SP move_instruction
9261                    
9262    </p>
9263    <p>/ COPY SP copy_instruction
9264                    
9265    </p>
9266    <p>/ EDIT SP edit_instruction
9267                    
9268    </p>
9269    <p>/ FORMAT SP format_instruction
9270                    
9271    </p>
9272  <p>/ RESET  <p>/ RESET
9273                                    
9274  </p>  </p>
# Line 7290  Command Syntax</h3> Line 9284  Command Syntax</h3>
9284  <p>CHANNEL  <p>CHANNEL
9285                                    
9286  </p>  </p>
9287    <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9288                    
9289    </p>
9290    <p>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
9291                    
9292    </p>
9293    <p>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
9294                    
9295    </p>
9296    <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
9297                    
9298    </p>
9299    <p>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
9300                    
9301    </p>
9302    <p>/ DB_INSTRUMENTS SP db_path SP filename
9303                    
9304    </p>
9305    <p>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
9306                    
9307    </p>
9308  <p>/ MIDI_INSTRUMENT_MAP  <p>/ MIDI_INSTRUMENT_MAP
9309                                    
9310  </p>  </p>
# Line 7347  Command Syntax</h3> Line 9362  Command Syntax</h3>
9362  <p>/ MIDI_INSTRUMENT_INFO  <p>/ MIDI_INSTRUMENT_INFO
9363                                    
9364  </p>  </p>
9365    <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9366                    
9367    </p>
9368    <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9369                    
9370    </p>
9371    <p>/ DB_INSTRUMENT_COUNT
9372                    
9373    </p>
9374    <p>/ DB_INSTRUMENT_INFO
9375                    
9376    </p>
9377    <p>/ DB_INSTRUMENTS_JOB_INFO
9378                    
9379    </p>
9380  <p>/ MISCELLANEOUS  <p>/ MISCELLANEOUS
9381                                    
9382  </p>  </p>
# Line 7407  Command Syntax</h3> Line 9437  Command Syntax</h3>
9437  <p>/ MIDI_INSTRUMENT_INFO  <p>/ MIDI_INSTRUMENT_INFO
9438                                    
9439  </p>  </p>
9440    <p>/ DB_INSTRUMENT_DIRECTORY_COUNT
9441                    
9442    </p>
9443    <p>/ DB_INSTRUMENT_DIRECTORY_INFO
9444                    
9445    </p>
9446    <p>/ DB_INSTRUMENT_COUNT
9447                    
9448    </p>
9449    <p>/ DB_INSTRUMENT_INFO
9450                    
9451    </p>
9452    <p>/ DB_INSTRUMENTS_JOB_INFO
9453                    
9454    </p>
9455  <p>/ MISCELLANEOUS  <p>/ MISCELLANEOUS
9456                                    
9457  </p>  </p>
# Line 7458  Command Syntax</h3> Line 9503  Command Syntax</h3>
9503  <p>/ MIDI_INSTRUMENT_MAP SP ALL  <p>/ MIDI_INSTRUMENT_MAP SP ALL
9504                                    
9505  </p>  </p>
9506    <p>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
9507                    
9508    </p>
9509    <p>/ DB_INSTRUMENT_DIRECTORY SP db_path
9510                    
9511    </p>
9512    <p>/ DB_INSTRUMENT SP db_path
9513                    
9514    </p>
9515  </blockquote><p>  </blockquote><p>
9516    
9517  </p>  </p>
# Line 7563  Command Syntax</h3> Line 9617  Command Syntax</h3>
9617  <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id  <p>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
9618                                    
9619  </p>  </p>
9620    <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
9621                    
9622    </p>
9623    <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
9624                    
9625    </p>
9626    <p>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
9627                    
9628    </p>
9629    <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
9630                    
9631    </p>
9632    <p>/ DB_INSTRUMENTS SP db_path
9633                    
9634    </p>
9635    <p>/ DB_INSTRUMENT SP INFO SP db_path
9636                    
9637    </p>
9638    <p>/ DB_INSTRUMENTS_JOB SP INFO SP number
9639                    
9640    </p>
9641  <p>/ VOLUME  <p>/ VOLUME
9642                                    
9643  </p>  </p>
# Line 7581  Command Syntax</h3> Line 9656  Command Syntax</h3>
9656  <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list  <p>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
9657                                    
9658  </p>  </p>
9659    <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
9660                    
9661    </p>
9662  <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list  <p>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
9663                                    
9664  </p>  </p>
# Line 7602  Command Syntax</h3> Line 9680  Command Syntax</h3>
9680  <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value  <p>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
9681                                    
9682  </p>  </p>
9683    <p>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
9684                    
9685    </p>
9686    <p>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
9687                    
9688    </p>
9689    <p>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
9690                    
9691    </p>
9692    <p>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
9693                    
9694    </p>
9695  <p>/ ECHO SP boolean  <p>/ ECHO SP boolean
9696                                    
9697  </p>  </p>
# Line 7656  Command Syntax</h3> Line 9746  Command Syntax</h3>
9746  </blockquote><p>  </blockquote><p>
9747    
9748  </p>  </p>
9749    <p>find_instruction =
9750            </p>
9751    <blockquote class="text">
9752    <p>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
9753                    
9754    </p>
9755    <p>/ DB_INSTRUMENTS SP db_path SP query_val_list
9756                    
9757    </p>
9758    <p>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
9759                    
9760    </p>
9761    <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
9762                    
9763    </p>
9764    </blockquote><p>
9765    
9766    </p>
9767    <p>move_instruction =
9768            </p>
9769    <blockquote class="text">
9770    <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
9771                    
9772    </p>
9773    <p>/ DB_INSTRUMENT SP db_path SP db_path
9774                    
9775    </p>
9776    </blockquote><p>
9777    
9778    </p>
9779    <p>copy_instruction =
9780            </p>
9781    <blockquote class="text">
9782    <p>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
9783                    
9784    </p>
9785    <p>/ DB_INSTRUMENT SP db_path SP db_path
9786                    
9787    </p>
9788    </blockquote><p>
9789    
9790    </p>
9791  <p>destroy_instruction =  <p>destroy_instruction =
9792          </p>          </p>
9793  <blockquote class="text">  <blockquote class="text">
# Line 7731  Command Syntax</h3> Line 9863  Command Syntax</h3>
9863  </blockquote><p>  </blockquote><p>
9864    
9865  </p>  </p>
9866    <p>edit_instruction =
9867            </p>
9868    <blockquote class="text">
9869    <p>INSTRUMENT SP sampler_channel
9870                    
9871    </p>
9872    </blockquote><p>
9873    
9874    </p>
9875    <p>format_instruction =
9876            </p>
9877    <blockquote class="text">
9878    <p>INSTRUMENTS_DB
9879                    
9880    </p>
9881    </blockquote><p>
9882    
9883    </p>
9884  <p>modal_arg =  <p>modal_arg =
9885          </p>          </p>
9886  <blockquote class="text">  <blockquote class="text">
# Line 7800  Command Syntax</h3> Line 9950  Command Syntax</h3>
9950  <p>/ FX_SENDS SP sampler_channel  <p>/ FX_SENDS SP sampler_channel
9951                                    
9952  </p>  </p>
9953    <p>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
9954                    
9955    </p>
9956    <p>/ DB_INSTRUMENT_DIRECTORIES SP db_path
9957                    
9958    </p>
9959    <p>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
9960                    
9961    </p>
9962    <p>/ DB_INSTRUMENTS SP db_path
9963                    
9964    </p>
9965  </blockquote><p>  </blockquote><p>
9966    
9967  </p>  </p>
# Line 7983  Command Syntax</h3> Line 10145  Command Syntax</h3>
10145  <p>filename =  <p>filename =
10146          </p>          </p>
10147  <blockquote class="text">  <blockquote class="text">
10148  <p>stringval  <p>path
10149                    
10150    </p>
10151    </blockquote><p>
10152    
10153    </p>
10154    <p>db_path =
10155            </p>
10156    <blockquote class="text">
10157    <p>path
10158                                    
10159  </p>  </p>
10160  </blockquote><p>  </blockquote><p>
# Line 7992  Command Syntax</h3> Line 10163  Command Syntax</h3>
10163  <p>map_name =  <p>map_name =
10164          </p>          </p>
10165  <blockquote class="text">  <blockquote class="text">
10166  <p>stringval  <p>stringval_escaped
10167                                    
10168  </p>  </p>
10169  </blockquote><p>  </blockquote><p>
# Line 8001  Command Syntax</h3> Line 10172  Command Syntax</h3>
10172  <p>entry_name =  <p>entry_name =
10173          </p>          </p>
10174  <blockquote class="text">  <blockquote class="text">
10175  <p>stringval  <p>stringval_escaped
10176                                    
10177  </p>  </p>
10178  </blockquote><p>  </blockquote><p>
# Line 8010  Command Syntax</h3> Line 10181  Command Syntax</h3>
10181  <p>fx_send_name =  <p>fx_send_name =
10182          </p>          </p>
10183  <blockquote class="text">  <blockquote class="text">
10184  <p>stringval  <p>stringval_escaped
10185                                    
10186  </p>  </p>
10187  </blockquote><p>  </blockquote><p>
# Line 8046  Command Syntax</h3> Line 10217  Command Syntax</h3>
10217  </blockquote><p>  </blockquote><p>
10218    
10219  </p>  </p>
10220    <p>query_val_list =
10221            </p>
10222    <blockquote class="text">
10223    <p>string '=' query_val
10224                    
10225    </p>
10226    <p>/ query_val_list SP string '=' query_val
10227                    
10228    </p>
10229    </blockquote><p>
10230    
10231    </p>
10232    <p>query_val =
10233            </p>
10234    <blockquote class="text">
10235    <p>text_escaped
10236                    
10237    </p>
10238    <p>/ stringval_escaped
10239                    
10240    </p>
10241    </blockquote><p>
10242    
10243    </p>
10244    <p>scan_mode =
10245            </p>
10246    <blockquote class="text">
10247    <p>RECURSIVE
10248                    
10249    </p>
10250    <p>/ NON_RECURSIVE
10251                    
10252    </p>
10253    <p>/ FLAT
10254                    
10255    </p>
10256    </blockquote><p>
10257    
10258    </p>
10259    <a name="character_set"></a><br /><hr />
10260    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10261    <a name="rfc.section.7.1"></a><h3>7.1.&nbsp;
10262    Character Set and Escape Sequences</h3>
10263    
10264    <p>Older versions of this protocol up to and including v1.1 only
10265                    supported the standard ASCII character set (ASCII code 0 - 127)
10266                    <a class='info' href='#RFC20'>[RFC20]<span> (</span><span class='info'>UCLA, &ldquo;ASCII format for Network Interchange,&rdquo; 1969.</span><span>)</span></a>, all younger versions of this protocol
10267                    however support the Extended ASCII character set (ASCII code
10268                    0 - 255). The same group of younger protocols also support
10269                    escape sequences, but only for certain, explicitly declared
10270                    parts of the protocol. The supported escape sequences are
10271                    defined as follows:
10272    </p><table class="full" align="center" border="0" cellpadding="2" cellspacing="2">
10273    <col align="left"><col align="left">
10274    <tr><th align="left">ASCII Character Sequence</th><th align="left">Translated into (Name)</th></tr>
10275    <tr>
10276    <td align="left">\n</td>
10277    <td align="left">new line</td>
10278    </tr>
10279    <tr>
10280    <td align="left">\r</td>
10281    <td align="left">carriage return</td>
10282    </tr>
10283    <tr>
10284    <td align="left">\f</td>
10285    <td align="left">form feed</td>
10286    </tr>
10287    <tr>
10288    <td align="left">\t</td>
10289    <td align="left">horizontal tab</td>
10290    </tr>
10291    <tr>
10292    <td align="left">\v</td>
10293    <td align="left">vertical tab</td>
10294    </tr>
10295    <tr>
10296    <td align="left">\'</td>
10297    <td align="left">apostrophe</td>
10298    </tr>
10299    <tr>
10300    <td align="left">\"</td>
10301    <td align="left">quotation mark</td>
10302    </tr>
10303    <tr>
10304    <td align="left">\\</td>
10305    <td align="left">backslash</td>
10306    </tr>
10307    <tr>
10308    <td align="left">\OOO</td>
10309    <td align="left">three digit octal ASCII code of the character</td>
10310    </tr>
10311    <tr>
10312    <td align="left">\xHH</td>
10313    <td align="left">two digit hex ASCII code of the character</td>
10314    </tr>
10315    </table>
10316    
10317    <p>Notice: due to the transition of certain parts of the
10318                    protocol which now support escape sequences, a slight backward
10319                    incompatibility to protocols version v1.1 and younger has been
10320                    introduced. The only difference is that in parts of the protocol
10321                    where escape characters are now supported, a backslash characters
10322                    MUST be escaped as well (that is as double backslash), whereas
10323                    in the old versions a single backslash was sufficient.
10324    </p>
10325    <p>The following LSCP commands support escape sequences as part
10326                    of their filename / path based arguments and / or may contain
10327                    a filename / path with escape sequences in their response:
10328                    </p>
10329    <blockquote class="text">
10330    <p><a class='info' href='#LOAD INSTRUMENT'>"LOAD INSTRUMENT"<span> (</span><span class='info'>Loading an instrument</span><span>)</span></a>
10331    </p>
10332    <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10333    </p>
10334    <p><a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
10335    </p>
10336    <p><a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
10337    </p>
10338    <p><a class='info' href='#ADD DB_INSTRUMENT_DIRECTORY'>"ADD DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Creating a new instrument directory</span><span>)</span></a>
10339    </p>
10340    <p><a class='info' href='#ADD DB_INSTRUMENTS'>"ADD DB_INSTRUMENTS"<span> (</span><span class='info'>Adding instruments to the instruments database</span><span>)</span></a>
10341    </p>
10342    <p><a class='info' href='#REMOVE DB_INSTRUMENT_DIRECTORY'>"REMOVE DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Deleting an instrument directory</span><span>)</span></a>
10343    </p>
10344    <p><a class='info' href='#REMOVE DB_INSTRUMENT'>"REMOVE DB_INSTRUMENT"<span> (</span><span class='info'>Removing an instrument</span><span>)</span></a>
10345    </p>
10346    <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORIES'>"GET DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Getting amount of instrument directories</span><span>)</span></a>
10347    </p>
10348    <p><a class='info' href='#LIST DB_INSTRUMENT_DIRECTORIES'>"LIST DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Listing all directories in specific directory</span><span>)</span></a>
10349    </p>
10350    <p><a class='info' href='#GET DB_INSTRUMENT_DIRECTORY INFO'>"GET DB_INSTRUMENT_DIRECTORY INFO"<span> (</span><span class='info'>Getting instrument directory information</span><span>)</span></a>
10351    </p>
10352    <p><a class='info' href='#GET DB_INSTRUMENTS'>"GET DB_INSTRUMENTS"<span> (</span><span class='info'>Getting amount of instruments</span><span>)</span></a>
10353    </p>
10354    <p><a class='info' href='#LIST DB_INSTRUMENTS'>"LIST DB_INSTRUMENTS"<span> (</span><span class='info'>Listing all instruments in specific directory</span><span>)</span></a>
10355    </p>
10356    <p><a class='info' href='#GET DB_INSTRUMENT INFO'>"GET DB_INSTRUMENT INFO"<span> (</span><span class='info'>Getting instrument information</span><span>)</span></a>
10357    </p>
10358    <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY NAME'>"SET DB_INSTRUMENT_DIRECTORY NAME"<span> (</span><span class='info'>Renaming an instrument directory</span><span>)</span></a>
10359    </p>
10360    <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION'>"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"<span> (</span><span class='info'>Changing the description of directory</span><span>)</span></a>
10361    </p>
10362    <p><a class='info' href='#SET DB_INSTRUMENT NAME'>"SET DB_INSTRUMENT NAME"<span> (</span><span class='info'>Renaming an instrument</span><span>)</span></a>
10363    </p>
10364    <p><a class='info' href='#SET DB_INSTRUMENT DESCRIPTION'>"SET DB_INSTRUMENT DESCRIPTION"<span> (</span><span class='info'>Changing the description of instrument</span><span>)</span></a>
10365    </p>
10366    <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10367    </p>
10368    <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10369    </p>
10370    <p><a class='info' href='#MOVE DB_INSTRUMENT'>"MOVE DB_INSTRUMENT"<span> (</span><span class='info'>Moving an instrument</span><span>)</span></a>
10371    </p>
10372    <p><a class='info' href='#MOVE DB_INSTRUMENT_DIRECTORY'>"MOVE DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Moving an instrument directory</span><span>)</span></a>
10373    </p>
10374    <p><a class='info' href='#COPY DB_INSTRUMENT'>"COPY DB_INSTRUMENT"<span> (</span><span class='info'>Copying instruments</span><span>)</span></a>
10375    </p>
10376    <p><a class='info' href='#COPY DB_INSTRUMENT_DIRECTORY'>"COPY DB_INSTRUMENT_DIRECTORY"<span> (</span><span class='info'>Copying instrument directories</span><span>)</span></a>
10377    </p>
10378    </blockquote><p>
10379                    Note that the forward slash character ('/') has a special meaning in
10380                    filename / path based arguments: it acts as separator of the nodes in
10381                    the path, thus if a directory- or filename includes a forward slash
10382                    (not intended as path node separator), you MUST escape that slash
10383                    either with the respective hex escape sequence ("\x2f") or with the
10384                    respective octal escape sequence ("\057").
10385                    
10386    </p>
10387    <p>
10388                    The following LSCP commands even support escape sequences as
10389                    part of at least one of their text-based arguments (i.e. entity name,
10390                    description) and / or may contain escape sequences in at least one of
10391                    their text-based fields in their response:
10392                    </p>
10393    <blockquote class="text">
10394    <p><a class='info' href='#GET SERVER INFO'>"GET SERVER INFO"<span> (</span><span class='info'>General sampler informations</span><span>)</span></a>
10395    </p>
10396    <p><a class='info' href='#GET ENGINE INFO'>"GET ENGINE INFO"<span> (</span><span class='info'>Getting information about an engine</span><span>)</span></a>
10397    </p>
10398    <p><a class='info' href='#GET CHANNEL INFO'>"GET CHANNEL INFO"<span> (</span><span class='info'>Getting sampler channel information</span><span>)</span></a>
10399    </p>
10400    <p><a class='info' href='#CREATE FX_SEND'>"CREATE FX_SEND"<span> (</span><span class='info'>Adding an effect send to a sampler channel</span><span>)</span></a>
10401    </p>
10402    <p><a class='info' href='#GET FX_SEND INFO'>"GET FX_SEND INFO"<span> (</span><span class='info'>Getting effect send information</span><span>)</span></a>
10403    </p>
10404    <p><a class='info' href='#SET FX_SEND NAME'>"SET FX_SEND NAME"<span> (</span><span class='info'>Changing effect send's name</span><span>)</span></a>
10405    </p>
10406    <p><a class='info' href='#GET MIDI_INSTRUMENT INFO'>"GET MIDI_INSTRUMENT INFO"<span> (</span><span class='info'>Get current settings of MIDI instrument map entry</span><span>)</span></a>
10407    </p>
10408    <p><a class='info' href='#GET MIDI_INSTRUMENT_MAP INFO'>"GET MIDI_INSTRUMENT_MAP INFO"<span> (</span><span class='info'>Getting MIDI instrument map information</span><span>)</span></a>
10409    </p>
10410    <p><a class='info' href='#ADD MIDI_INSTRUMENT_MAP'>"ADD MIDI_INSTRUMENT_MAP"<span> (</span><span class='info'>Create a new MIDI instrument map</span><span>)</span></a>
10411    </p>
10412    <p><a class='info' href='#MAP MIDI_INSTRUMENT'>"MAP MIDI_INSTRUMENT"<span> (</span><span class='info'>Create or replace a MIDI instrument map entry</span><span>)</span></a>
10413    </p>
10414    <p><a class='info' href='#SET MIDI_INSTRUMENT_MAP NAME'>"SET MIDI_INSTRUMENT_MAP NAME"<span> (</span><span class='info'>Renaming a MIDI instrument map</span><span>)</span></a>
10415    </p>
10416    <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY NAME'>"SET DB_INSTRUMENT_DIRECTORY NAME"<span> (</span><span class='info'>Renaming an instrument directory</span><span>)</span></a>
10417    </p>
10418    <p><a class='info' href='#SET DB_INSTRUMENT_DIRECTORY DESCRIPTION'>"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"<span> (</span><span class='info'>Changing the description of directory</span><span>)</span></a>
10419    </p>
10420    <p><a class='info' href='#FIND DB_INSTRUMENT_DIRECTORIES'>"FIND DB_INSTRUMENT_DIRECTORIES"<span> (</span><span class='info'>Finding directories</span><span>)</span></a>
10421    </p>
10422    <p><a class='info' href='#SET DB_INSTRUMENT NAME'>"SET DB_INSTRUMENT NAME"<span> (</span><span class='info'>Renaming an instrument</span><span>)</span></a>
10423    </p>
10424    <p><a class='info' href='#SET DB_INSTRUMENT DESCRIPTION'>"SET DB_INSTRUMENT DESCRIPTION"<span> (</span><span class='info'>Changing the description of instrument</span><span>)</span></a>
10425    </p>
10426    <p><a class='info' href='#FIND DB_INSTRUMENTS'>"FIND DB_INSTRUMENTS"<span> (</span><span class='info'>Finding instruments</span><span>)</span></a>
10427    </p>
10428    </blockquote><p>
10429                    Please note that these lists are manually maintained. If you
10430                    find a command that also supports escape sequences we forgot to
10431                    mention here, please report it!
10432                    
10433    </p>
10434  <a name="events"></a><br /><hr />  <a name="events"></a><br /><hr />
10435  <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>  <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10436  <a name="rfc.section.8"></a><h3>8.&nbsp;  <a name="rfc.section.8"></a><h3>8.&nbsp;
# Line 8335  Channel information changed</h3> Line 10720  Channel information changed</h3>
10720  <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;  <a name="rfc.section.8.10"></a><h3>8.10.&nbsp;
10721  Number of effect sends changed</h3>  Number of effect sends changed</h3>
10722    
10723  <p>Client may want to be notified when the number of effect sends on  <p>Client may want to be notified when the number of effect sends on
10724                  a particular sampler channel is changed by issuing the following command:                  a particular sampler channel is changed by issuing the following command:
10725  </p>  </p>
10726  <p>  <p>
# Line 8574  Global settings changed</h3> Line 10959  Global settings changed</h3>
10959  </blockquote><p>  </blockquote><p>
10960                                    
10961  </p>  </p>
10962  <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />  <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT"></a><br /><hr />
10963  <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>  <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10964  <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;  <a name="rfc.section.8.18"></a><h3>8.18.&nbsp;
10965    Number of database instrument directories changed</h3>
10966    
10967    <p>Client may want to be notified when the number of instrument
10968                    directories in a particular directory in the instruments database
10969                    is changed by issuing the following command:
10970    </p>
10971    <p>
10972                        </p>
10973    <blockquote class="text">
10974    <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT
10975    </p>
10976    </blockquote><p>
10977                    
10978    </p>
10979    <p>Server will start sending the following notification messages:
10980    </p>
10981    <p>
10982                        </p>
10983    <blockquote class="text">
10984    <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"
10985    </p>
10986    </blockquote><p>
10987                    
10988    </p>
10989    <p>where &lt;dir-path&gt; will be replaced by the absolute path
10990                    name of the directory in the instruments database,
10991                    in which the number of directories is changed.
10992    </p>
10993    <p>Note that when a non-empty directory is removed, this event
10994                    is not sent for the subdirectories in that directory.
10995    </p>
10996    <a name="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO"></a><br /><hr />
10997    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
10998    <a name="rfc.section.8.19"></a><h3>8.19.&nbsp;
10999    Database instrument directory information changed</h3>
11000    
11001    <p>Client may want to be notified when changes were made to directories
11002                    in the instruments database by issuing the following command:
11003    </p>
11004    <p>
11005                        </p>
11006    <blockquote class="text">
11007    <p>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO
11008    </p>
11009    </blockquote><p>
11010                    
11011    </p>
11012    <p>Server will start sending the following notification messages:
11013    </p>
11014    <p>
11015                        </p>
11016    <blockquote class="text">
11017    <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"
11018    </p>
11019    </blockquote><p>
11020                    
11021    </p>
11022    <p>where &lt;dir-path&gt; will be replaced by the absolute path name
11023                    of the directory, for which information changes occurred. The front-end will have to send
11024                    the respective command to actually get the updated directory info. Because these messages
11025                    will be triggered by LSCP commands issued by other clients rather than real
11026                    time events happening on the server, it is believed that an empty notification
11027                    message is sufficient here.
11028    </p>
11029    <p>
11030                        </p>
11031    <blockquote class="text">
11032    <p>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"
11033    </p>
11034    </blockquote><p>
11035                    
11036    </p>
11037    <p>where &lt;old-dir-path&gt; is the old absolute path name of the directory
11038                    (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11039                    the new name of the directory, encapsulated into apostrophes.
11040    </p>
11041    <a name="SUBSCRIBE DB_INSTRUMENT_COUNT"></a><br /><hr />
11042    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11043    <a name="rfc.section.8.20"></a><h3>8.20.&nbsp;
11044    Number of database instruments changed</h3>
11045    
11046    <p>Client may want to be notified when the number of instruments
11047                    in a particular directory in the instruments database
11048                    is changed by issuing the following command:
11049    </p>
11050    <p>
11051                        </p>
11052    <blockquote class="text">
11053    <p>SUBSCRIBE DB_INSTRUMENT_COUNT
11054    </p>
11055    </blockquote><p>
11056                    
11057    </p>
11058    <p>Server will start sending the following notification messages:
11059    </p>
11060    <p>
11061                        </p>
11062    <blockquote class="text">
11063    <p>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"
11064    </p>
11065    </blockquote><p>
11066                    
11067    </p>
11068    <p>where &lt;dir-path&gt; will be replaced by the absolute path
11069                    name of the directory in the instruments database,
11070                    in which the number of instruments is changed.
11071    </p>
11072    <p>Note that when a non-empty directory is removed, this event
11073                    is not sent for the instruments in that directory.
11074    </p>
11075    <a name="SUBSCRIBE DB_INSTRUMENT_INFO"></a><br /><hr />
11076    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11077    <a name="rfc.section.8.21"></a><h3>8.21.&nbsp;
11078    Database instrument information changed</h3>
11079    
11080    <p>Client may want to be notified when changes were made to instruments
11081                    in the instruments database by issuing the following command:
11082    </p>
11083    <p>
11084                        </p>
11085    <blockquote class="text">
11086    <p>SUBSCRIBE DB_INSTRUMENT_INFO
11087    </p>
11088    </blockquote><p>
11089                    
11090    </p>
11091    <p>Server will start sending the following notification messages:
11092    </p>
11093    <p>
11094                        </p>
11095    <blockquote class="text">
11096    <p>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"
11097    </p>
11098    </blockquote><p>
11099                    
11100    </p>
11101    <p>where &lt;instr-path&gt; will be replaced by the absolute path name
11102                    of the instrument, which settings are changed. The front-end will have to send
11103                    the respective command to actually get the updated directory info. Because these messages
11104                    will be triggered by LSCP commands issued by other clients rather than real
11105                    time events happening on the server, it is believed that an empty notification
11106                    message is sufficient here.
11107    </p>
11108    <p>
11109                        </p>
11110    <blockquote class="text">
11111    <p>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"
11112    </p>
11113    </blockquote><p>
11114                    
11115    </p>
11116    <p>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
11117                    (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
11118                    the new name of the instrument, encapsulated into apostrophes.
11119    </p>
11120    <a name="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO"></a><br /><hr />
11121    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11122    <a name="rfc.section.8.22"></a><h3>8.22.&nbsp;
11123    Database job status information changed</h3>
11124    
11125    <p>Client may want to be notified when the status of particular database
11126                    instruments job is changed by issuing the following command:
11127    </p>
11128    <p>
11129                        </p>
11130    <blockquote class="text">
11131    <p>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO
11132    </p>
11133    </blockquote><p>
11134                    
11135    </p>
11136    <p>Server will start sending the following notification messages:
11137    </p>
11138    <p>
11139                        </p>
11140    <blockquote class="text">
11141    <p>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"
11142    </p>
11143    </blockquote><p>
11144                    
11145    </p>
11146    <p>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
11147                    which status is changed. The front-end will have to send the respective
11148                    command to actually get the status info. Because these messages
11149                    will be triggered by LSCP commands issued by other clients rather than real
11150                    time events happening on the server, it is believed that an empty notification
11151                    message is sufficient here.
11152    </p>
11153    <a name="SUBSCRIBE MISCELLANEOUS"></a><br /><hr />
11154    <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11155    <a name="rfc.section.8.23"></a><h3>8.23.&nbsp;
11156  Miscellaneous and debugging events</h3>  Miscellaneous and debugging events</h3>
11157    
11158  <p>Client may want to be notified of miscellaneous and debugging events occurring at  <p>Client may want to be notified of miscellaneous and debugging events occurring at
# Line 8641  Acknowledgments</h3> Line 11217  Acknowledgments</h3>
11217  <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>  <table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></table>
11218  <h3>11.&nbsp;References</h3>  <h3>11.&nbsp;References</h3>
11219  <table width="99%" border="0">  <table width="99%" border="0">
11220    <tr><td class="author-text" valign="top"><a name="RFC20">[RFC20]</a></td>
11221    <td class="author-text">UCLA, &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc20.txt">ASCII format for Network Interchange</a>,&rdquo; RFC&nbsp;20, 1969.</td></tr>
11222  <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>  <tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
11223  <td class="author-text">Bradner, S., &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2119.txt">Key words for use in RFCs to Indicate Requirement Levels</a>,&rdquo; RFC&nbsp;2119, 1997.</td></tr>  <td class="author-text">Bradner, S., &ldquo;<a href="ftp://ftp.isi.edu/in-notes/rfc2119.txt">Key words for use in RFCs to Indicate Requirement Levels</a>,&rdquo; RFC&nbsp;2119, 1997.</td></tr>
11224  <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>  <tr><td class="author-text" valign="top"><a name="RFC2234">[RFC2234]</a></td>
# Line 8718  Please address the information to the IE Line 11296  Please address the information to the IE
11296  Funding for the RFC Editor function is provided by  Funding for the RFC Editor function is provided by
11297  the IETF Administrative Support Activity (IASA).</p>  the IETF Administrative Support Activity (IASA).</p>
11298  </body></html>  </body></html>
11299    

Legend:
Removed from v.1137  
changed lines
  Added in v.1400

  ViewVC Help
Powered by ViewVC