/[svn]/linuxsampler/trunk/Documentation/lscp.xml
ViewVC logotype

Diff of /linuxsampler/trunk/Documentation/lscp.xml

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

revision 1136 by iliev, Thu Mar 29 10:01:50 2007 UTC revision 1956 by schoenebeck, Fri Jul 31 07:45:47 2009 UTC
# Line 16  Line 16 
16       to an annoying "missing Normative/Informative References" error message -->       to an annoying "missing Normative/Informative References" error message -->
17  <?rfc strict="no" ?>  <?rfc strict="no" ?>
18    
19  <rfc category="std" ipr="full3978" docName="LSCP 1.2">  <rfc category="std" ipr="full3978" docName="LSCP 1.4">
20      <front>      <front>
21          <title>LinuxSampler Control Protocol</title>          <title>LinuxSampler Control Protocol</title>
22          <author initials='C.S.' surname="Schoenebeck" fullname='C.          <author initials='C.S.' surname="Schoenebeck" fullname='C.
# Line 34  Schoenebeck'> Line 34  Schoenebeck'>
34                  <email>schoenebeck at software minus engineering dot org</email>                  <email>schoenebeck at software minus engineering dot org</email>
35              </address>              </address>
36          </author>          </author>
37          <date month="March" year="2007"/>          <date month="July" year="2009"/>
38          <workgroup>LinuxSampler Developers</workgroup>          <workgroup>LinuxSampler Developers</workgroup>
39          <keyword>LSCP</keyword>          <keyword>LSCP</keyword>
40          <abstract>          <abstract>
# Line 61  Schoenebeck'> Line 61  Schoenebeck'>
61              (front-end) and server (LinuxSampler) respectively. Lines in              (front-end) and server (LinuxSampler) respectively. Lines in
62              examples must be interpreted as every line being CRLF              examples must be interpreted as every line being CRLF
63              terminated (carriage return character followed by line feed              terminated (carriage return character followed by line feed
64              character as defined in the ASCII standard), thus the following              character as defined in the ASCII standard <xref target="RFC20"/>),
65              example:</t>              thus the following example:</t>
66    
67              <t>              <t>
68                  <list>                  <list>
# Line 2061  Schoenebeck'> Line 2061  Schoenebeck'>
2061                      or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref>                      or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref>
2062                      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
2063                      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
2064                      parameter.</t>                      parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
2065                        for specifying no value for parameters allowing a list of values.</t>
2066    
2067                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2068                      <t>                      <t>
# Line 2088  Schoenebeck'> Line 2089  Schoenebeck'>
2089                      <t>Example:</t>                      <t>Example:</t>
2090                      <t>                      <t>
2091                          <list>                          <list>
2092                              <t></t>                              <t>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"</t>
2093                                <t>S: "OK"</t>
2094                            </list>
2095                        </t>
2096                        <t>
2097                            <list>
2098                                <t>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"</t>
2099                                <t>S: "OK"</t>
2100                          </list>                          </list>
2101                      </t>                      </t>
2102                  </section>                  </section>
# Line 2113  Schoenebeck'> Line 2121  Schoenebeck'>
2121                      number of the sampler channel the instrument should be assigned to.                      number of the sampler channel the instrument should be assigned to.
2122                      Each sampler channel can only have one instrument.</t>                      Each sampler channel can only have one instrument.</t>
2123    
2124                        <t>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
2125                        escape characters for special characters (see chapter
2126                        "<xref target="character_set">Character Set and Escape Sequences</xref>"
2127                        for details) and accordingly backslash characters in the filename
2128                        MUST now be escaped as well!</t>
2129    
2130                      <t>The difference between regular and NON_MODAL versions of the command                      <t>The difference between regular and NON_MODAL versions of the command
2131                      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
2132                      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 2148  Schoenebeck'> Line 2162  Schoenebeck'>
2162                              </t>                              </t>
2163                          </list>                          </list>
2164                      </t>                      </t>
2165                      <t>Example:</t>                      <t>Example (Unix):</t>
2166                      <t>                      <t>
2167                          <list>                          <list>
2168                              <t></t>                              <t>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0</t>
2169                                <t>S: OK</t>
2170                            </list>
2171                        </t>
2172                        <t>Example (Windows):</t>
2173                        <t>
2174                            <list>
2175                                <t>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0</t>
2176                                <t>S: OK</t>
2177                          </list>                          </list>
2178                      </t>                      </t>
2179                  </section>                  </section>
# Line 2429  Schoenebeck'> Line 2451  Schoenebeck'>
2451                                  <list>                                  <list>
2452                                      <t>DESCRIPTION -                                      <t>DESCRIPTION -
2453                                          <list>                                          <list>
2454                                              <t>arbitrary description text about the engine</t>                                              <t>arbitrary description text about the engine
2455                                                (note that the character string may contain
2456                                                <xref target="character_set">escape sequences</xref>)</t>
2457                                          </list>                                          </list>
2458                                      </t>                                      </t>
2459                                       <t>VERSION -                                       <t>VERSION -
# Line 2488  Schoenebeck'> Line 2512  Schoenebeck'>
2512                                          <list>                                          <list>
2513                                              <t>numerical ID of the audio output device which is                                              <t>numerical ID of the audio output device which is
2514                                              currently connected to this sampler channel to output                                              currently connected to this sampler channel to output
2515                                              the audio signal, "NONE" if there's no device                                              the audio signal, "-1" if there's no device
2516                                              connected to this sampler channel</t>                                              connected to this sampler channel</t>
2517                                          </list>                                          </list>
2518                                      </t>                                      </t>
# Line 2513  Schoenebeck'> Line 2537  Schoenebeck'>
2537                                          <list>                                          <list>
2538                                              <t>the file name of the loaded instrument, "NONE" if                                              <t>the file name of the loaded instrument, "NONE" if
2539                                              there's no instrument yet loaded for this sampler                                              there's no instrument yet loaded for this sampler
2540                                              channel</t>                                              channel (note: since LSCP 1.2 this path may contain
2541                                                <xref target="character_set">escape sequences</xref>)</t>
2542                                          </list>                                          </list>
2543                                      </t>                                      </t>
2544                                      <t>INSTRUMENT_NR -                                      <t>INSTRUMENT_NR -
2545                                          <list>                                          <list>
2546                                              <t>the instrument index number of the loaded instrument</t>                                              <t>the instrument index number of the loaded instrument,
2547                                                "-1" if there's no instrument loaded for this sampler
2548                                                channel</t>
2549                                          </list>                                          </list>
2550                                      </t>                                      </t>
2551                                      <t>INSTRUMENT_NAME -                                      <t>INSTRUMENT_NAME -
2552                                          <list>                                          <list>
2553                                              <t>the instrument name of the loaded instrument</t>                                              <t>the instrument name of the loaded instrument
2554                                                (note: since LSCP 1.2 this character string may contain
2555                                                <xref target="character_set">escape sequences</xref>)</t>
2556                                          </list>                                          </list>
2557                                      </t>                                      </t>
2558                                      <t>INSTRUMENT_STATUS -                                      <t>INSTRUMENT_STATUS -
2559                                          <list>                                          <list>
2560                                              <t>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative                                              <t>Integer values 0 to 100 indicating loading progress
2561                                              value indicates a loading exception. Value of 100 indicates that the instrument is fully                                              percentage for the instrument. Negative
2562                                                value indicates a loading exception (also returns "-1" in case no
2563                                                instrument was yet to be loaded on the sampler channel).
2564                                                Value of 100 indicates that the instrument is fully
2565                                              loaded.</t>                                              loaded.</t>
2566                                          </list>                                          </list>
2567                                      </t>                                      </t>
# Line 2537  Schoenebeck'> Line 2569  Schoenebeck'>
2569                                          <list>                                          <list>
2570                                              <t>numerical ID of the MIDI input device which is                                              <t>numerical ID of the MIDI input device which is
2571                                              currently connected to this sampler channel to deliver                                              currently connected to this sampler channel to deliver
2572                                              MIDI input commands, "NONE" if there's no device                                              MIDI input commands, "-1" if there's no device
2573                                              connected to this sampler channel</t>                                              connected to this sampler channel</t>
2574                                          </list>                                          </list>
2575                                      </t>                                      </t>
2576                                      <t>MIDI_INPUT_PORT -                                      <t>MIDI_INPUT_PORT -
2577                                          <list>                                          <list>
2578                                              <t>port number of the MIDI input device</t>                                              <t>port number of the MIDI input device (in case a
2579                                                MIDI device was already assigned to the sampler
2580                                                channel)</t>
2581                                          </list>                                          </list>
2582                                      </t>                                      </t>
2583                                      <t>MIDI_INPUT_CHANNEL -                                      <t>MIDI_INPUT_CHANNEL -
# Line 3241  Schoenebeck'> Line 3275  Schoenebeck'>
3275                      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;
3276                      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
3277                      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
3278                      for the effect send entity. The name does not have to be unique.</t>                      for the effect send entity. The name does not have to be unique, but MUST be
3279                        encapsulated into apostrophes and supports escape sequences as described in chapter
3280                        "<xref target="character_set">Character Set and Escape Sequences</xref>".</t>
3281    
3282                      <t>By default, that is as initial routing, the effect send's audio channels                      <t>By default, that is as initial routing, the effect send's audio channels
3283                      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 3431  Schoenebeck'> Line 3467  Schoenebeck'>
3467                                  <list>                                  <list>
3468                                      <t>NAME -                                      <t>NAME -
3469                                          <list>                                          <list>
3470                                              <t>name of the effect send entity</t>                                              <t>name of the effect send entity
3471                                                (note that this character string may contain
3472                                                 <xref target="character_set">escape sequences</xref>)</t>
3473                                          </list>                                          </list>
3474                                      </t>                                      </t>
3475                                      <t>MIDI_CONTROLLER -                                      <t>MIDI_CONTROLLER -
# Line 3494  Schoenebeck'> Line 3532  Schoenebeck'>
3532                      as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>                      as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3533                      or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command and                      or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command and
3534                      &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
3535                      does not have to be unique.</t>                      does not have to be unique (name MUST be encapsulated into apostrophes
3536                        and supports escape sequences as described in chapter
3537                        "<xref target="character_set">Character Set and Escape Sequences</xref>").
3538                        </t>
3539    
3540                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
3541                      <t>                      <t>
# Line 3677  Schoenebeck'> Line 3718  Schoenebeck'>
3718                      </t>                      </t>
3719                  </section>                  </section>
3720    
3721                    <section title="Sending MIDI messages to sampler channel" anchor="SEND CHANNEL MIDI_DATA">
3722                        <t>The front-end can send MIDI events to specific sampler channel
3723                        by sending the following command:</t>
3724                        <t>
3725                            <list>
3726                                <t>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;</t>
3727                            </list>
3728                        </t>
3729                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3730                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3731                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3732                        &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
3733                        specifies the MIDI message type. Currently, the following MIDI messages are supported:</t>
3734                        <t>
3735                            <list>
3736                                <t>"NOTE_ON" -
3737                                    <list>
3738                                        <t>For turning on MIDI notes, where &lt;arg1&gt;
3739                                        specifies the key number and &lt;arg2&gt; the velocity
3740                                        as described in the MIDI specification.</t>
3741                                    </list>
3742                                </t>
3743                                <t>"NOTE_OFF" -
3744                                    <list>
3745                                        <t>For turning a currently playing MIDI note off, where &lt;arg1&gt;
3746                                        specifies the key number and &lt;arg2&gt; the velocity
3747                                        as described in the MIDI specification.</t>
3748                                    </list>
3749                                </t>
3750                            </list>
3751                        </t>
3752                        <t>CAUTION: This command is provided for implementations of virtual MIDI keyboards
3753                        and no realtime guarantee whatsoever will be made!</t>
3754                        <t>Possible Answers:</t>
3755                        <t>
3756                            <list>
3757                                <t>"OK" -
3758                                    <list>
3759                                        <t>on success</t>
3760                                    </list>
3761                                </t>
3762                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3763                                    <list>
3764                                        <t>in case it failed, providing an appropriate error code and error message</t>
3765                                    </list>
3766                                </t>
3767                            </list>
3768                        </t>
3769                        <t>Example:</t>
3770                        <t>
3771                            <list>
3772                                <t>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"</t>
3773                                <t>S: "OK"</t>
3774                            </list>
3775                        </t>
3776                    </section>
3777    
3778                  <section title="Resetting a sampler channel" anchor="RESET CHANNEL">                  <section title="Resetting a sampler channel" anchor="RESET CHANNEL">
3779                      <t>The front-end can reset a particular sampler channel by sending the following command:</t>                      <t>The front-end can reset a particular sampler channel by sending the following command:</t>
3780                      <t>                      <t>
# Line 3898  Schoenebeck'> Line 3996  Schoenebeck'>
3996                      </t>                      </t>
3997                  </section>                  </section>
3998    
3999                    <section title="Current number of active disk streams" anchor="GET TOTAL_STREAM_COUNT">
4000                        <t>The front-end can ask for the current number of active disk streams on
4001                        the sampler by sending the following command:</t>
4002                        <t>
4003                            <list>
4004                                <t>GET TOTAL_STREAM_COUNT</t>
4005                            </list>
4006                        </t>
4007    
4008                        <t>Possible Answers:</t>
4009                        <t>
4010                            <list>
4011                                <t>LinuxSampler will answer by returning the number of all active
4012                                disk streams on the sampler.</t>
4013                            </list>
4014                        </t>
4015                    </section>
4016    
4017                  <section title="Reset sampler" anchor="RESET">                  <section title="Reset sampler" anchor="RESET">
4018                      <t>The front-end can reset the whole sampler by sending the following command:</t>                      <t>The front-end can reset the whole sampler by sending the following command:</t>
4019                      <t>                      <t>
# Line 3945  Schoenebeck'> Line 4061  Schoenebeck'>
4061                                  <list>                                  <list>
4062                                      <t>DESCRIPTION -                                      <t>DESCRIPTION -
4063                                          <list>                                          <list>
4064                                              <t>arbitrary textual description about the sampler</t>                                              <t>arbitrary textual description about the sampler
4065                                                (note that the character string may contain
4066                                                <xref target="character_set">escape sequences</xref>)</t>
4067                                          </list>                                          </list>
4068                                      </t>                                      </t>
4069                                      <t>VERSION -                                      <t>VERSION -
# Line 3959  Schoenebeck'> Line 4077  Schoenebeck'>
4077                                              complies with (see <xref target="LSCP versioning" /> for details)</t>                                              complies with (see <xref target="LSCP versioning" /> for details)</t>
4078                                          </list>                                          </list>
4079                                      </t>                                      </t>
4080                                        <t>INSTRUMENTS_DB_SUPPORT -
4081                                            <list>
4082                                                <t>either yes or no, specifies whether the
4083                                                sampler is build with instruments database support.</t>
4084                                            </list>
4085                                        </t>
4086                                  </list>                                  </list>
4087                              </t>                              </t>
4088                          </list>                          </list>
# Line 4025  Schoenebeck'> Line 4149  Schoenebeck'>
4149                          </list>                          </list>
4150                      </t>                      </t>
4151                  </section>                  </section>
4152    
4153                    <section title="Getting global voice limit" anchor="GET VOICES">
4154                        <t>The client can ask for the current global sampler-wide limit
4155                           for maximum voices by sending the following command:</t>
4156                        <t>
4157                            <list>
4158                                <t>GET VOICES</t>
4159                            </list>
4160                        </t>
4161                        <t>Possible Answers:</t>
4162                        <t>
4163                            <list>
4164                                <t>LinuxSampler will answer by returning the number for
4165                                   the current limit of maximum voices.</t>
4166                            </list>
4167                        </t>
4168    
4169                        <t>The voice limit setting defines how many voices should maximum
4170                           be processed by the sampler at the same time. If the user
4171                           triggers new notes which would exceed that voice limit, the
4172                           sampler engine will react by stealing old voices for those
4173                           newly triggered notes. Note that the amount of voices triggered
4174                           by a new note can be larger than one and is dependent to the
4175                           respective instrument and probably further criterias.</t>
4176                    </section>
4177    
4178                    <section title="Setting global voice limit" anchor="SET VOICES">
4179                        <t>The client can alter the current global sampler-wide limit
4180                        for maximum voices by sending the following command:</t>
4181                        <t>
4182                            <list>
4183                                <t>SET VOICES &lt;max-voices&gt;</t>
4184                            </list>
4185                        </t>
4186                       <t>Where &lt;max-voices&gt; should be replaced by the integer
4187                       value, reflecting the new global amount limit of maximum voices.
4188                       This value has to be larger than 0.</t>
4189    
4190                        <t>Possible Answers:</t>
4191                        <t>
4192                            <list>
4193                                <t>"OK" -
4194                                    <list>
4195                                        <t>on success</t>
4196                                    </list>
4197                                </t>
4198                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4199                                    <list>
4200                                        <t>if the voice limit was set, but there are noteworthy
4201                                        issue(s) related, providing an appropriate warning code and
4202                                        warning message</t>
4203                                    </list>
4204                                </t>
4205                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4206                                    <list>
4207                                        <t>in case it failed, providing an appropriate error code and error message</t>
4208                                    </list>
4209                                </t>
4210                            </list>
4211                        </t>
4212    
4213                        <t>Note: the given value will be passed to all sampler engine instances.
4214                           The total amount of maximum voices on the running system might thus
4215                           be as big as the given value multiplied by the current amount of engine
4216                           instances.</t>
4217    
4218                         <t>Caution: when adjusting the voice limit, you SHOULD also
4219                            adjust the disk stream limit respectively and vice versa.</t>
4220                    </section>
4221    
4222                    <section title="Getting global disk stream limit" anchor="GET STREAMS">
4223                        <t>The client can ask for the current global sampler-wide limit
4224                           for maximum disk streams by sending the following command:</t>
4225                        <t>
4226                            <list>
4227                                <t>GET STREAMS</t>
4228                            </list>
4229                        </t>
4230                        <t>Possible Answers:</t>
4231                        <t>
4232                            <list>
4233                                <t>LinuxSampler will answer by returning the number for
4234                                   the current limit of maximum disk streams.</t>
4235                            </list>
4236                        </t>
4237    
4238                        <t>The disk stream limit setting defines how many disk streams should
4239                           maximum be processed by a sampler engine at the same time. The
4240                           higher this value, the more memory (RAM) will be occupied, since
4241                           every disk streams allocates a certain buffer size for being able
4242                           to perform its streaming operations.</t>
4243                    </section>
4244    
4245                    <section title="Setting global disk stream limit" anchor="SET STREAMS">
4246                        <t>The client can alter the current global sampler-wide limit
4247                        for maximum disk streams by sending the following command:</t>
4248                        <t>
4249                            <list>
4250                                <t>SET STREAMS &lt;max-streams&gt;</t>
4251                            </list>
4252                        </t>
4253                       <t>Where &lt;max-streams&gt; should be replaced by the integer
4254                       value, reflecting the new global amount limit of maximum disk streams.
4255                       This value has to be positive.</t>
4256    
4257                        <t>Possible Answers:</t>
4258                        <t>
4259                            <list>
4260                                <t>"OK" -
4261                                    <list>
4262                                        <t>on success</t>
4263                                    </list>
4264                                </t>
4265                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4266                                    <list>
4267                                        <t>if the disk stream limit was set, but there are noteworthy
4268                                        issue(s) related, providing an appropriate warning code and
4269                                        warning message</t>
4270                                    </list>
4271                                </t>
4272                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4273                                    <list>
4274                                        <t>in case it failed, providing an appropriate error code and error message</t>
4275                                    </list>
4276                                </t>
4277                            </list>
4278                        </t>
4279    
4280                        <t>Note: the given value will be passed to all sampler engine instances.
4281                           The total amount of maximum disk streams on the running system might
4282                           thus be as big as the given value multiplied by the current amount of
4283                           engine instances.</t>
4284    
4285                         <t>Caution: when adjusting the disk stream limit, you SHOULD also
4286                            adjust the voice limit respectively and vice versa.</t>
4287                    </section>
4288    
4289              </section>              </section>
4290    
4291    
# Line 4055  Schoenebeck'> Line 4316  Schoenebeck'>
4316                  cause the sampler to switch to the respective instrument as                  cause the sampler to switch to the respective instrument as
4317                  reflected by the current MIDI instrument map.</t>                  reflected by the current MIDI instrument map.</t>
4318    
4319                  <section title="Create a new MIDI instrument map" anchor="ADD MIDI_INSTRUMENT MAP">                  <section title="Create a new MIDI instrument map" anchor="ADD MIDI_INSTRUMENT_MAP">
4320                      <t>The front-end can add a new MIDI instrument map by sending                      <t>The front-end can add a new MIDI instrument map by sending
4321                      the following command:</t>                      the following command:</t>
4322                      <t>                      <t>
# Line 4065  Schoenebeck'> Line 4326  Schoenebeck'>
4326                      </t>                      </t>
4327                      <t>Where &lt;name&gt; is an optional argument allowing to                      <t>Where &lt;name&gt; is an optional argument allowing to
4328                      assign a custom name to the new map. MIDI instrument Map                      assign a custom name to the new map. MIDI instrument Map
4329                      names do not have to be unique.</t>                      names do not have to be unique, but MUST be encapsulated
4330                        into apostrophes and support escape sequences as described
4331                        in chapter "<xref target="character_set">Character Set and Escape Sequences</xref>".
4332                        </t>
4333    
4334                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
4335                      <t>                      <t>
# Line 4236  Schoenebeck'> Line 4500  Schoenebeck'>
4500                                      <t>NAME -                                      <t>NAME -
4501                                          <list>                                          <list>
4502                                              <t>custom name of the given map,                                              <t>custom name of the given map,
4503                                              which does not have to be unique</t>                                              which does not have to be unique
4504                                                (note that this character string may contain
4505                                                 <xref target="character_set">escape sequences</xref>)</t>
4506                                          </list>                                          </list>
4507                                      </t>                                      </t>
4508                                      <t>DEFAULT -                                      <t>DEFAULT -
# Line 4272  Schoenebeck'> Line 4538  Schoenebeck'>
4538                      </t>                      </t>
4539                      <t>Where &lt;map&gt; is the numerical ID of the map and                      <t>Where &lt;map&gt; is the numerical ID of the map and
4540                      &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
4541                      have to be unique.</t>                      have to be unique (name MUST be encapsulated into apostrophes
4542                        and supports escape sequences as described in chapter
4543                        "<xref target="character_set">Character Set and Escape Sequences</xref>").
4544                        </t>
4545    
4546                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
4547                      <t>                      <t>
# Line 4319  Schoenebeck'> Line 4588  Schoenebeck'>
4588                      index, &lt;engine_name&gt; a sampler engine name as returned by                      index, &lt;engine_name&gt; a sampler engine name as returned by
4589                      the <xref target="LIST AVAILABLE_ENGINES">"LIST AVAILABLE_ENGINES"</xref>                      the <xref target="LIST AVAILABLE_ENGINES">"LIST AVAILABLE_ENGINES"</xref>
4590                      command (not encapsulated into apostrophes), &lt;filename&gt; the name                      command (not encapsulated into apostrophes), &lt;filename&gt; the name
4591                      of the instrument's file to be deployed (encapsulated into apostrophes),                      of the instrument's file to be deployed (encapsulated into apostrophes,
4592                        supporting escape sequences as described in chapter
4593                        "<xref target="character_set">Character Set and Escape Sequences</xref>"),
4594                      &lt;instrument_index&gt; the index (integer value) of the instrument                      &lt;instrument_index&gt; the index (integer value) of the instrument
4595                      within the given file, &lt;volume_value&gt; reflects the master                      within the given file, &lt;volume_value&gt; reflects the master
4596                      volume of the instrument as optionally dotted number (where a                      volume of the instrument as optionally dotted number (where a
# Line 4401  Schoenebeck'> Line 4672  Schoenebeck'>
4672                      load modes of entries, the frontend should retrieve the actual                      load modes of entries, the frontend should retrieve the actual
4673                      mode by i.e. sending                      mode by i.e. sending
4674                      <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>                      <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>
4675                      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
4676                      set a custom name (encapsulated into apostrophes) for the mapping                      (encapsulated into apostrophes, supporting escape sequences as described in chapter
4677                      entry, useful for frontends for displaying an appropriate name for                      "<xref target="character_set">Character Set and Escape Sequences</xref>") for the
4678                        mapping entry, useful for frontends for displaying an appropriate name for
4679                      mapped instruments (using                      mapped instruments (using
4680                      <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>).                      <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>).
4681                      </t>                      </t>
# Line 4627  Schoenebeck'> Line 4899  Schoenebeck'>
4899                                      name for this mapped instrument. It can be set and                                      name for this mapped instrument. It can be set and
4900                                      changed with the                                      changed with the
4901                                      <xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref>                                      <xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref>
4902                                      command and does not have to be unique.</t>                                      command and does not have to be unique.
4903                                        (note that this character string may contain
4904                                        <xref target="character_set">escape sequences</xref>)</t>
4905                                  </list>                                  </list>
4906                              </t>                              </t>
4907                              <t>"ENGINE_NAME" -                              <t>"ENGINE_NAME" -
# Line 4638  Schoenebeck'> Line 4912  Schoenebeck'>
4912                              </t>                              </t>
4913                              <t>"INSTRUMENT_FILE" -                              <t>"INSTRUMENT_FILE" -
4914                                  <list>                                  <list>
4915                                      <t>File name of the instrument.</t>                                      <t>File name of the instrument
4916                                        (note that this path may contain
4917                                        <xref target="character_set">escape sequences</xref>).</t>
4918                                  </list>                                  </list>
4919                              </t>                              </t>
4920                              <t>"INSTRUMENT_NR" -                              <t>"INSTRUMENT_NR" -
# Line 4650  Schoenebeck'> Line 4926  Schoenebeck'>
4926                                  <list>                                  <list>
4927                                      <t>Name of the loaded instrument as reflected by its file.                                      <t>Name of the loaded instrument as reflected by its file.
4928                                      In contrast to the "NAME" field, the "INSTRUMENT_NAME" field                                      In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
4929                                      cannot be changed.</t>                                      cannot be changed (note that this character string may contain
4930                                        <xref target="character_set">escape sequences</xref>).</t>
4931                                  </list>                                  </list>
4932                              </t>                              </t>
4933                              <t>"LOAD_MODE" -                              <t>"LOAD_MODE" -
# Line 4734  Schoenebeck'> Line 5011  Schoenebeck'>
5011                  </section>                  </section>
5012              </section>              </section>
5013    
         </section>  
5014    
5015                <section title="Managing Instruments Database" anchor="Managing Instruments Database">
5016                    <t>The following commands describe how to use and manage
5017                    the instruments database.</t>
5018                    <t>Notice:</t>
5019                        <t>
5020                            <list>
5021                                <t>All command arguments representing a path or
5022                                instrument/directory name support escape sequences as described in chapter
5023                                "<xref target="character_set">Character Set and Escape Sequences</xref>".
5024                                </t>
5025                                <t>All occurrences of a forward slash in instrument and directory
5026                                   names are escaped with its hex (\x2f) or octal (\057) escape sequence.
5027                                </t>
5028                            </list>
5029                        </t>
5030    
5031                    <section title="Creating a new instrument directory" anchor="ADD DB_INSTRUMENT_DIRECTORY">
5032                        <t>The front-end can add a new instrument directory to the
5033                        instruments database by sending the following command:</t>
5034                        <t>
5035                            <list>
5036                                <t>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;</t>
5037                            </list>
5038                        </t>
5039                        <t>Where &lt;dir&gt; is the absolute path name of the directory
5040                        to be created (encapsulated into apostrophes).</t>
5041    
5042                        <t>Possible Answers:</t>
5043                        <t>
5044                            <list>
5045                                <t>"OK" -
5046                                    <list>
5047                                        <t>on success</t>
5048                                    </list>
5049                                </t>
5050                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5051                                    <list>
5052                                        <t>when the directory could not be created, which
5053                                        can happen if the directory already exists or the
5054                                        name contains not allowed symbols</t>
5055                                    </list>
5056                                </t>
5057                            </list>
5058                        </t>
5059    
5060                        <t>Examples:</t>
5061                        <t>
5062                            <list>
5063                                <t>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"</t>
5064                                <t>S: "OK"</t>
5065                            </list>
5066                        </t>
5067                    </section>
5068    
5069                    <section title="Deleting an instrument directory" anchor="REMOVE DB_INSTRUMENT_DIRECTORY">
5070                        <t>The front-end can delete a particular instrument directory
5071                        from the instruments database by sending the following command:</t>
5072                        <t>
5073                            <list>
5074                                <t>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;</t>
5075                            </list>
5076                        </t>
5077                        <t>Where &lt;dir&gt; is the absolute path name of the directory
5078                        to delete. The optional FORCE argument can be used to
5079                        force the deletion of a non-empty directory and all its content.</t>
5080    
5081                        <t>Possible Answers:</t>
5082                        <t>
5083                            <list>
5084                                <t>"OK" -
5085                                    <list>
5086                                        <t>if the directory is deleted successfully</t>
5087                                    </list>
5088                                </t>
5089                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5090                                    <list>
5091                                        <t>if the given directory does not exist, or
5092                                        if trying to delete a non-empty directory,
5093                                        without using the FORCE argument.</t>
5094                                    </list>
5095                                </t>
5096                            </list>
5097                        </t>
5098    
5099                        <t>Examples:</t>
5100                        <t>
5101                            <list>
5102                                <t>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"</t>
5103                                <t>S: "OK"</t>
5104                            </list>
5105                        </t>
5106                    </section>
5107    
5108                    <section title="Getting amount of instrument directories" anchor="GET DB_INSTRUMENT_DIRECTORIES">
5109                        <t>The front-end can retrieve the current amount of
5110                        directories in a specific directory by sending the following command:</t>
5111                        <t>
5112                            <list>
5113                                <t>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;</t>
5114                            </list>
5115                        </t>
5116                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5117                        name of the directory. If RECURSIVE is specified, the number of
5118                        all directories, including those located in subdirectories of the
5119                        specified directory, will be returned.</t>
5120    
5121                        <t>Possible Answers:</t>
5122                        <t>
5123                            <list>
5124                                <t>The current number of instrument directories
5125                                in the specified directory.</t>
5126                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5127                                    <list>
5128                                        <t>if the given directory does not exist.</t>
5129                                    </list>
5130                                </t>
5131                            </list>
5132                        </t>
5133    
5134                        <t>Example:</t>
5135                        <t>
5136                            <list>
5137                                <t>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"</t>
5138                                <t>S: "2"</t>
5139                            </list>
5140                        </t>
5141                    </section>
5142    
5143                    <section title="Listing all directories in specific directory" anchor="LIST DB_INSTRUMENT_DIRECTORIES">
5144                        <t>The front-end can retrieve the current list of directories
5145                        in specific directory by sending the following command:</t>
5146                        <t>
5147                            <list>
5148                                <t>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;</t>
5149                            </list>
5150                        </t>
5151                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5152                        name of the directory. If RECURSIVE is specified, the absolute path names
5153                        of all directories, including those located in subdirectories of the
5154                        specified directory, will be returned.</t>
5155    
5156                        <t>Possible Answers:</t>
5157                        <t>
5158                            <list>
5159                                <t>A comma separated list of all instrument directories
5160                                (encapsulated into apostrophes) in the specified directory.</t>
5161                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5162                                    <list>
5163                                        <t>if the given directory does not exist.</t>
5164                                    </list>
5165                                </t>
5166                            </list>
5167                        </t>
5168                        <t>Example:</t>
5169                        <t>
5170                            <list>
5171                                <t>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"</t>
5172                                <t>S: "'Piano Collection','Percussion Collection'"</t>
5173                            </list>
5174                        </t>
5175                        <t>
5176                            <list>
5177                                <t>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"</t>
5178                                <t>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"</t>
5179                            </list>
5180                        </t>
5181                    </section>
5182    
5183                    <section title="Getting instrument directory information" anchor="GET DB_INSTRUMENT_DIRECTORY INFO">
5184                        <t>The front-end can ask for the current settings of an
5185                        instrument directory by sending the following command:</t>
5186                        <t>
5187                            <list>
5188                                <t>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;</t>
5189                            </list>
5190                        </t>
5191                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5192                        name of the directory the front-end is interested in.</t>
5193    
5194                        <t>Possible Answers:</t>
5195                        <t>
5196                            <list>
5197                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
5198                                Each answer line begins with the settings category name
5199                                followed by a colon and then a space character &lt;SP&gt; and finally
5200                                the info character string to that setting category. At the
5201                                moment the following categories are defined:</t>
5202    
5203                                <t>
5204                                    <list>
5205                                        <t>DESCRIPTION -
5206                                            <list>
5207                                                <t>A brief description of the directory content.
5208                                                Note that the character string may contain
5209                                                <xref target="character_set">escape sequences</xref>.</t>
5210                                            </list>
5211                                        </t>
5212                                        <t>CREATED -
5213                                            <list>
5214                                                <t>The creation date and time of the directory,
5215                                                represented in "YYYY-MM-DD HH:MM:SS" format</t>
5216                                            </list>
5217                                        </t>
5218                                        <t>MODIFIED -
5219                                            <list>
5220                                                <t>The date and time of the last modification of the
5221                                                directory, represented in "YYYY-MM-DD HH:MM:SS" format</t>
5222                                            </list>
5223                                        </t>
5224                                    </list>
5225                                </t>
5226                            </list>
5227                        </t>
5228                        <t>The mentioned fields above don't have to be in particular order.</t>
5229    
5230                        <t>Example:</t>
5231                        <t>
5232                            <list>
5233                                <t>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"</t>
5234                                <t>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."</t>
5235                                <t>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"</t>
5236                                <t>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"</t>
5237                                <t>&nbsp;&nbsp;&nbsp;"."</t>
5238                            </list>
5239                        </t>
5240                    </section>
5241    
5242                    <section title="Renaming an instrument directory" anchor="SET DB_INSTRUMENT_DIRECTORY NAME">
5243                        <t>The front-end can alter the name of a specific
5244                        instrument directory by sending the following command:</t>
5245                        <t>
5246                            <list>
5247                                <t>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;</t>
5248                            </list>
5249                        </t>
5250                        <t>Where &lt;dir&gt; is the absolute path name of the directory and
5251                        &lt;name&gt; is the new name for that directory.</t>
5252    
5253                        <t>Possible Answers:</t>
5254                        <t>
5255                            <list>
5256                                <t>"OK" -
5257                                    <list>
5258                                        <t>on success</t>
5259                                    </list>
5260                                </t>
5261                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5262                                    <list>
5263                                        <t>in case the given directory does not exists,
5264                                        or if a directory with name equal to the new
5265                                        name already exists.</t>
5266                                    </list>
5267                                </t>
5268                            </list>
5269                        </t>
5270    
5271                        <t>Example:</t>
5272                        <t>
5273                            <list>
5274                                <t>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"</t>
5275                                <t>S: "OK"</t>
5276                            </list>
5277                        </t>
5278                    </section>
5279    
5280                    <section title="Moving an instrument directory" anchor="MOVE DB_INSTRUMENT_DIRECTORY">
5281                        <t>The front-end can move a specific
5282                        instrument directory by sending the following command:</t>
5283                        <t>
5284                            <list>
5285                                <t>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;</t>
5286                            </list>
5287                        </t>
5288                        <t>Where &lt;dir&gt; is the absolute path name of the directory
5289                        to move and &lt;dst&gt; is the location where the directory will
5290                        be moved to.</t>
5291    
5292                        <t>Possible Answers:</t>
5293                        <t>
5294                            <list>
5295                                <t>"OK" -
5296                                    <list>
5297                                        <t>on success</t>
5298                                    </list>
5299                                </t>
5300                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5301                                    <list>
5302                                        <t>in case a given directory does not exists,
5303                                        or if a directory with name equal to the name
5304                                        of the specified directory already exists in
5305                                        the destination directory. Error is also thrown
5306                                        when trying to move a directory to a subdirectory
5307                                        of itself.</t>
5308                                    </list>
5309                                </t>
5310                            </list>
5311                        </t>
5312    
5313                        <t>Example:</t>
5314                        <t>
5315                            <list>
5316                                <t>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"</t>
5317                                <t>S: "OK"</t>
5318                            </list>
5319                        </t>
5320                    </section>
5321    
5322                    <section title="Copying instrument directories" anchor="COPY DB_INSTRUMENT_DIRECTORY">
5323                        <t>The front-end can copy a specific
5324                        instrument directory by sending the following command:</t>
5325                        <t>
5326                            <list>
5327                                <t>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;</t>
5328                            </list>
5329                        </t>
5330                        <t>Where &lt;dir&gt; is the absolute path name of the directory
5331                        to copy and &lt;dst&gt; is the location where the directory will
5332                        be copied to.</t>
5333    
5334                        <t>Possible Answers:</t>
5335                        <t>
5336                            <list>
5337                                <t>"OK" -
5338                                    <list>
5339                                        <t>on success</t>
5340                                    </list>
5341                                </t>
5342                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5343                                    <list>
5344                                        <t>in case a given directory does not exists,
5345                                        or if a directory with name equal to the name
5346                                        of the specified directory already exists in
5347                                        the destination directory. Error is also thrown
5348                                        when trying to copy a directory to a subdirectory
5349                                        of itself.</t>
5350                                    </list>
5351                                </t>
5352                            </list>
5353                        </t>
5354    
5355                        <t>Example:</t>
5356                        <t>
5357                            <list>
5358                                <t>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"</t>
5359                                <t>S: "OK"</t>
5360                            </list>
5361                        </t>
5362                    </section>
5363    
5364                    <section title="Changing the description of directory" anchor="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">
5365                        <t>The front-end can alter the description of a specific
5366                        instrument directory by sending the following command:</t>
5367                        <t>
5368                            <list>
5369                                <t>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;</t>
5370                            </list>
5371                        </t>
5372                        <t>Where &lt;dir&gt; is the absolute path name of the directory and
5373                        &lt;desc&gt; is the new description for the directory
5374                        (encapsulated into apostrophes, supporting escape sequences as described in chapter
5375                        "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
5376    
5377                        <t>Possible Answers:</t>
5378                        <t>
5379                            <list>
5380                                <t>"OK" -
5381                                    <list>
5382                                        <t>on success</t>
5383                                    </list>
5384                                </t>
5385                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5386                                    <list>
5387                                        <t>in case the given directory does not exists.</t>
5388                                    </list>
5389                                </t>
5390                            </list>
5391                        </t>
5392    
5393                        <t>Example:</t>
5394                        <t>
5395                            <list>
5396                                <t>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"</t>
5397                                <t>S: "OK"</t>
5398                            </list>
5399                        </t>
5400                    </section>
5401    
5402                    <section title="Finding directories" anchor="FIND DB_INSTRUMENT_DIRECTORIES">
5403                        <t>The front-end can search for directories
5404                        in specific directory by sending the following command:</t>
5405                        <t>
5406                            <list>
5407                                <t>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;</t>
5408                            </list>
5409                        </t>
5410                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5411                        name of the directory to search in. If NON_RECURSIVE is specified, the
5412                        directories located in subdirectories of the specified directory will not
5413                        be searched. &lt;criteria-list&gt; is a list of search criterias
5414                        in form of "key1=val1 key2=val2 ...". The following criterias are
5415                        allowed:</t>
5416                        <t>
5417                          <t>NAME='&lt;search-string&gt;'
5418                              <list>
5419                                  <t>Restricts the search to directories, which names
5420                                  satisfy the supplied search string (encapsulated into apostrophes,
5421                                  supporting escape sequences as described in chapter
5422                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
5423                              </list>
5424                          </t>
5425    
5426                          <t>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
5427                              <list>
5428                                  <t>Restricts the search to directories, which creation
5429                                  date satisfies the specified period, where &lt;date-after&gt;
5430                                  and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
5431                                  If &lt;date-after&gt; is omitted the search is restricted to
5432                                  directories created before &lt;date-before&gt;. If
5433                                  &lt;date-before&gt; is omitted, the search is restricted
5434                                  to directories created after &lt;date-after&gt;.</t>
5435                              </list>
5436                          </t>
5437    
5438                          <t>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
5439                              <list>
5440                                  <t>Restricts the search to directories, which
5441                                  date of last modification satisfies the specified period, where
5442                                  &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
5443                                  format. If &lt;date-after&gt; is omitted the search is restricted to
5444                                  directories, which are last modified before &lt;date-before&gt;. If
5445                                  &lt;date-before&gt; is omitted, the search is restricted to directories,
5446                                  which are last modified after &lt;date-after&gt;.</t>
5447                              </list>
5448                          </t>
5449    
5450                          <t>DESCRIPTION='&lt;search-string&gt;'
5451                              <list>
5452                                  <t>Restricts the search to directories with description
5453                                  that satisfies the supplied search string
5454                                  (encapsulated into apostrophes, supporting escape
5455                                  sequences as described in chapter
5456                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
5457                              </list>
5458                          </t>
5459                        </t>
5460    
5461                        <t>Where &lt;search-string&gt; is either a regular expression, or a
5462                        word list separated with spaces for OR search and with '+' for AND search.</t>
5463    
5464                        <t>Possible Answers:</t>
5465                        <t>
5466                            <list>
5467                                <t>A comma separated list with the absolute path names (encapsulated into
5468                                apostrophes) of all directories in the specified directory that satisfy
5469                                the supplied search criterias.</t>
5470                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5471                                    <list>
5472                                        <t>if the given directory does not exist.</t>
5473                                    </list>
5474                                </t>
5475                            </list>
5476                        </t>
5477                        <t>Example:</t>
5478                        <t>
5479                            <list>
5480                                <t>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"</t>
5481                                <t>S: "'/Piano Collection'"</t>
5482                            </list>
5483                        </t>
5484                        <t>
5485                            <list>
5486                                <t>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"</t>
5487                                <t>S: "'/Piano Collection','/Percussions'"</t>
5488                            </list>
5489                        </t>
5490                    </section>
5491    
5492                    <section title="Adding instruments to the instruments database" anchor="ADD DB_INSTRUMENTS">
5493                        <t>The front-end can add one or more instruments
5494                        to the instruments database by sending the following command:</t>
5495                        <t>
5496                            <list>
5497                                <t>ADD DB_INSTRUMENTS [NON_MODAL] [&lt;mode&gt;[ FILE_AS_DIR]] &lt;db_dir&gt; &lt;file_path&gt; [&lt;instr_index&gt;]</t>
5498                            </list>
5499                        </t>
5500                        <t>Where &lt;db_dir&gt; is the absolute path name of a directory
5501                        (encapsulated into apostrophes) in the instruments database in which
5502                        only the new instruments (that are not already in the database) will
5503                        be added, &lt;file_path&gt; is the absolute path name of a file or
5504                        directory in the file system (encapsulated into apostrophes). In case
5505                        an instrument file is supplied, only the instruments in the specified
5506                        file will be added to the instruments database. If the optional
5507                        &lt;instr_index&gt; (the index of the instrument within the given file)
5508                        is supplied too, then only the specified instrument will be added.
5509                        In case a directory is supplied, the instruments in that directory
5510                        will be added. The OPTIONAL &lt;mode&gt; argument is only applied
5511                        when a directory is provided as &lt;file_path&gt; and specifies how the
5512                        scanning will be done and has exactly the following possibilities:</t>
5513                        <t>
5514                            <list>
5515                                <t>"RECURSIVE" -
5516                                    <list>
5517                                        <t>All instruments will be processed, including those
5518                                        in the subdirectories, and the respective subdirectory
5519                                        tree structure will be recreated in the instruments
5520                                        database</t>
5521                                    </list>
5522                                </t>
5523                                <t>"NON_RECURSIVE" -
5524                                    <list>
5525                                        <t>Only the instruments in the specified directory
5526                                        will be added, the instruments in the subdirectories
5527                                        will not be processed.</t>
5528                                    </list>
5529                                </t>
5530                                <t>"FLAT" -
5531                                    <list>
5532                                        <t>All instruments will be processed, including those
5533                                        in the subdirectories, but the respective subdirectory
5534                                        structure will not be recreated in the instruments
5535                                        database. All instruments will be added directly in
5536                                        the specified database directory.</t>
5537                                    </list>
5538                                </t>
5539                            </list>
5540                        </t>
5541    
5542                     <t> If FILE_AS_DIR argument is supplied, all instruments in an instrument
5543                     file will be added to a separate directory in the instruments database, which
5544                     name will be the name of the instrument file with the file extension stripped off.
5545                     </t>
5546                     <t>The difference between regular and NON_MODAL versions of the command
5547                        is that the regular command returns when the scanning is finished
5548                        while NON_MODAL version returns immediately and a background process is launched.
5549                        The <xref target="GET DB_INSTRUMENTS_JOB INFO">GET DB_INSTRUMENTS_JOB INFO</xref>
5550                        command can be used to monitor the scanning progress.</t>
5551    
5552                        <t>Possible Answers:</t>
5553                        <t>
5554                            <list>
5555                                <t>"OK" -
5556                                    <list>
5557                                        <t>on success when NON_MODAL is not supplied</t>
5558                                    </list>
5559                                </t>
5560                                <t>"OK[&lt;job-id&gt;]" -
5561                                    <list>
5562                                        <t>on success when NON_MODAL is supplied, where &lt;job-id&gt;
5563                                        is a numerical ID used to obtain status information about the job progress.
5564                                        See <xref target="GET DB_INSTRUMENTS_JOB INFO">GET DB_INSTRUMENTS_JOB INFO</xref>
5565                                        </t>
5566                                    </list>
5567                                </t>
5568                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5569                                    <list>
5570                                        <t>if an invalid path is specified.</t>
5571                                    </list>
5572                                </t>
5573                            </list>
5574                        </t>
5575    
5576                        <t>Examples:</t>
5577                        <t>
5578                            <list>
5579                                <t>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"</t>
5580                                <t>S: "OK"</t>
5581                            </list>
5582                        </t>
5583                    </section>
5584    
5585                    <section title="Removing an instrument" anchor="REMOVE DB_INSTRUMENT">
5586                        <t>The front-end can remove a particular instrument
5587                        from the instruments database by sending the following command:</t>
5588                        <t>
5589                            <list>
5590                                <t>REMOVE DB_INSTRUMENT &lt;instr_path&gt;</t>
5591                            </list>
5592                        </t>
5593                        <t>Where &lt;instr_path&gt; is the absolute path name
5594                        (in the instruments database) of the instrument to remove.</t>
5595    
5596                        <t>Possible Answers:</t>
5597                        <t>
5598                            <list>
5599                                <t>"OK" -
5600                                    <list>
5601                                        <t>if the instrument is removed successfully</t>
5602                                    </list>
5603                                </t>
5604                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5605                                    <list>
5606                                        <t>if the given path does not exist or
5607                                        is a directory.</t>
5608                                    </list>
5609                                </t>
5610                            </list>
5611                        </t>
5612    
5613                        <t>Examples:</t>
5614                        <t>
5615                            <list>
5616                                <t>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"</t>
5617                                <t>S: "OK"</t>
5618                            </list>
5619                        </t>
5620                    </section>
5621    
5622                    <section title="Getting amount of instruments" anchor="GET DB_INSTRUMENTS">
5623                        <t>The front-end can retrieve the current amount of
5624                        instruments in a specific directory by sending the following command:</t>
5625                        <t>
5626                            <list>
5627                                <t>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;</t>
5628                            </list>
5629                        </t>
5630                        <t>Where &lt;dir&gt; should be replaced by the absolute path name
5631                        of the directory. If RECURSIVE is specified, the number of all
5632                        instruments, including those located in subdirectories of the
5633                        specified directory, will be returned.</t>
5634    
5635                        <t>Possible Answers:</t>
5636                        <t>
5637                            <list>
5638                                <t>The current number of instruments
5639                                in the specified directory.</t>
5640                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5641                                    <list>
5642                                        <t>if the given directory does not exist.</t>
5643                                    </list>
5644                                </t>
5645                            </list>
5646                        </t>
5647    
5648                        <t>Example:</t>
5649                        <t>
5650                            <list>
5651                                <t>C: "GET DB_INSTRUMENTS '/Piano Collection'"</t>
5652                                <t>S: "2"</t>
5653                            </list>
5654                        </t>
5655                    </section>
5656    
5657                    <section title="Listing all instruments in specific directory" anchor="LIST DB_INSTRUMENTS">
5658                        <t>The front-end can retrieve the current list of instruments
5659                        in specific directory by sending the following command:</t>
5660                        <t>
5661                            <list>
5662                                <t>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;</t>
5663                            </list>
5664                        </t>
5665                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5666                        name of the directory. If RECURSIVE is specified, the absolute path
5667                        names of all instruments, including those located in subdirectories
5668                        of the specified directory, will be returned.</t>
5669    
5670                        <t>Possible Answers:</t>
5671                        <t>
5672                            <list>
5673                                <t>A comma separated list of all instruments
5674                                (encapsulated into apostrophes) in the specified directory.</t>
5675                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5676                                    <list>
5677                                        <t>if the given directory does not exist.</t>
5678                                    </list>
5679                                </t>
5680                            </list>
5681                        </t>
5682                        <t>Example:</t>
5683                        <t>
5684                            <list>
5685                                <t>C: "LIST DB_INSTRUMENTS '/Piano Collection'"</t>
5686                                <t>S: "'Bosendorfer 290','Steinway D'"</t>
5687                            </list>
5688                        </t>
5689                        <t>
5690                            <list>
5691                                <t>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"</t>
5692                                <t>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"</t>
5693                            </list>
5694                        </t>
5695                    </section>
5696    
5697                    <section title="Getting instrument information" anchor="GET DB_INSTRUMENT INFO">
5698                        <t>The front-end can ask for the current settings of an
5699                        instrument by sending the following command:</t>
5700                        <t>
5701                            <list>
5702                                <t>GET DB_INSTRUMENT INFO &lt;instr_path&gt;</t>
5703                            </list>
5704                        </t>
5705                        <t>Where &lt;instr_path&gt; should be replaced by the absolute path
5706                        name of the instrument the front-end is interested in.</t>
5707    
5708                        <t>Possible Answers:</t>
5709                        <t>
5710                            <list>
5711                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
5712                                Each answer line begins with the settings category name
5713                                followed by a colon and then a space character &lt;SP&gt; and finally
5714                                the info character string to that setting category. At the
5715                                moment the following categories are defined:</t>
5716    
5717                                <t>
5718                                    <list>
5719                                        <t>INSTRUMENT_FILE -
5720                                            <list>
5721                                                <t>File name of the instrument.
5722                                                Note that the character string may contain
5723                                                <xref target="character_set">escape sequences</xref>.</t>
5724                                            </list>
5725                                        </t>
5726                                        <t>INSTRUMENT_NR -
5727                                            <list>
5728                                                <t>Index of the instrument within the file.</t>
5729                                            </list>
5730                                        </t>
5731                                        <t>FORMAT_FAMILY -
5732                                            <list>
5733                                                <t>The format family of the instrument.</t>
5734                                            </list>
5735                                        </t>
5736                                        <t>FORMAT_VERSION -
5737                                            <list>
5738                                                <t>The format version of the instrument.</t>
5739                                            </list>
5740                                        </t>
5741                                        <t>SIZE -
5742                                            <list>
5743                                                <t>The size of the instrument in bytes.</t>
5744                                            </list>
5745                                        </t>
5746                                        <t>CREATED -
5747                                            <list>
5748                                                <t>The date and time when the instrument is added
5749                                                in the instruments database, represented in
5750                                               "YYYY-MM-DD HH:MM:SS" format</t>
5751                                            </list>
5752                                        </t>
5753                                        <t>MODIFIED -
5754                                            <list>
5755                                                <t>The date and time of the last modification of the
5756                                                instrument's database settings, represented in
5757                                                "YYYY-MM-DD HH:MM:SS" format</t>
5758                                            </list>
5759                                        </t>
5760                                        <t>DESCRIPTION -
5761                                            <list>
5762                                                <t>A brief description of the instrument.
5763                                                Note that the character string may contain
5764                                                <xref target="character_set">escape sequences</xref>.</t>
5765                                            </list>
5766                                        </t>
5767                                        <t>IS_DRUM -
5768                                            <list>
5769                                                <t>either true or false, determines whether the
5770                                                instrument is a drumkit or a chromatic instrument</t>
5771                                            </list>
5772                                        </t>
5773                                        <t>PRODUCT -
5774                                            <list>
5775                                                <t>The product title of the instrument.
5776                                                Note that the character string may contain
5777                                                <xref target="character_set">escape sequences</xref>.</t>
5778                                            </list>
5779                                        </t>
5780                                        <t>ARTISTS -
5781                                            <list>
5782                                                <t>Lists the artist names.
5783                                                Note that the character string may contain
5784                                                <xref target="character_set">escape sequences</xref>.</t>
5785                                            </list>
5786                                        </t>
5787                                        <t>KEYWORDS -
5788                                            <list>
5789                                                <t>Provides a list of keywords that refer to the instrument.
5790                                                Keywords are separated with semicolon and blank.
5791                                                Note that the character string may contain
5792                                                <xref target="character_set">escape sequences</xref>.</t>
5793                                            </list>
5794                                        </t>
5795                                    </list>
5796                                </t>
5797                            </list>
5798                        </t>
5799                        <t>The mentioned fields above don't have to be in particular order.</t>
5800    
5801                        <t>Example:</t>
5802                        <t>
5803                            <list>
5804                                <t>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"</t>
5805                                <t>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"</t>
5806                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"</t>
5807                                <t>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"</t>
5808                                <t>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"</t>
5809                                <t>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"</t>
5810                                <t>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"</t>
5811                                <t>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"</t>
5812                                <t>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "</t>
5813                                <t>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"</t>
5814                                <t>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"</t>
5815                                <t>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"</t>
5816                                <t>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"</t>
5817                                <t>&nbsp;&nbsp;&nbsp;"."</t>
5818                            </list>
5819                        </t>
5820                    </section>
5821    
5822                    <section title="Renaming an instrument" anchor="SET DB_INSTRUMENT NAME">
5823                        <t>The front-end can alter the name of a specific
5824                        instrument by sending the following command:</t>
5825                        <t>
5826                            <list>
5827                                <t>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;</t>
5828                            </list>
5829                        </t>
5830                        <t>Where &lt;instr&gt; is the absolute path name of the instrument and
5831                        &lt;name&gt; is the new name for that instrument.</t>
5832    
5833                        <t>Possible Answers:</t>
5834                        <t>
5835                            <list>
5836                                <t>"OK" -
5837                                    <list>
5838                                        <t>on success</t>
5839                                    </list>
5840                                </t>
5841                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5842                                    <list>
5843                                        <t>in case the given instrument does not exists,
5844                                        or if an instrument with name equal to the new
5845                                        name already exists.</t>
5846                                    </list>
5847                                </t>
5848                            </list>
5849                        </t>
5850    
5851                        <t>Example:</t>
5852                        <t>
5853                            <list>
5854                                <t>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"</t>
5855                                <t>S: "OK"</t>
5856                            </list>
5857                        </t>
5858                    </section>
5859    
5860                    <section title="Moving an instrument" anchor="MOVE DB_INSTRUMENT">
5861                        <t>The front-end can move a specific instrument to another directory by
5862                        sending the following command:</t>
5863                        <t>
5864                            <list>
5865                                <t>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;</t>
5866                            </list>
5867                        </t>
5868                        <t>Where &lt;instr&gt; is the absolute path name of the instrument
5869                        to move and &lt;dst&gt; is the directory where the instrument will
5870                        be moved to.</t>
5871    
5872                        <t>Possible Answers:</t>
5873                        <t>
5874                            <list>
5875                                <t>"OK" -
5876                                    <list>
5877                                        <t>on success</t>
5878                                    </list>
5879                                </t>
5880                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5881                                    <list>
5882                                        <t>in case the given instrument does not exists,
5883                                        or if an instrument with name equal to the name of the
5884                                        specified instrument already exists in the destination
5885                                        directory.</t>
5886                                    </list>
5887                                </t>
5888                            </list>
5889                        </t>
5890    
5891                        <t>Example:</t>
5892                        <t>
5893                            <list>
5894                                <t>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"</t>
5895                                <t>S: "OK"</t>
5896                            </list>
5897                        </t>
5898                    </section>
5899    
5900                    <section title="Copying instruments" anchor="COPY DB_INSTRUMENT">
5901                        <t>The front-end can copy a specific instrument to another directory by
5902                        sending the following command:</t>
5903                        <t>
5904                            <list>
5905                                <t>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;</t>
5906                            </list>
5907                        </t>
5908                        <t>Where &lt;instr&gt; is the absolute path name of the instrument
5909                        to copy and &lt;dst&gt; is the directory where the instrument will
5910                        be copied to.</t>
5911    
5912                        <t>Possible Answers:</t>
5913                        <t>
5914                            <list>
5915                                <t>"OK" -
5916                                    <list>
5917                                        <t>on success</t>
5918                                    </list>
5919                                </t>
5920                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5921                                    <list>
5922                                        <t>in case the given instrument does not exists,
5923                                        or if an instrument with name equal to the name of the
5924                                        specified instrument already exists in the destination
5925                                        directory.</t>
5926                                    </list>
5927                                </t>
5928                            </list>
5929                        </t>
5930    
5931                        <t>Example:</t>
5932                        <t>
5933                            <list>
5934                                <t>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"</t>
5935                                <t>S: "OK"</t>
5936                            </list>
5937                        </t>
5938                    </section>
5939    
5940                    <section title="Changing the description of instrument" anchor="SET DB_INSTRUMENT DESCRIPTION">
5941                        <t>The front-end can alter the description of a specific
5942                        instrument by sending the following command:</t>
5943                        <t>
5944                            <list>
5945                                <t>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;</t>
5946                            </list>
5947                        </t>
5948                        <t>Where &lt;instr&gt; is the absolute path name of the instrument and
5949                        &lt;desc&gt; is the new description for the instrument
5950                        (encapsulated into apostrophes, supporting escape sequences as described in chapter
5951                        "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
5952    
5953                        <t>Possible Answers:</t>
5954                        <t>
5955                            <list>
5956                                <t>"OK" -
5957                                    <list>
5958                                        <t>on success</t>
5959                                    </list>
5960                                </t>
5961                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5962                                    <list>
5963                                        <t>in case the given instrument does not exists.</t>
5964                                    </list>
5965                                </t>
5966                            </list>
5967                        </t>
5968    
5969                        <t>Example:</t>
5970                        <t>
5971                            <list>
5972                                <t>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"</t>
5973                                <t>S: "OK"</t>
5974                            </list>
5975                        </t>
5976                    </section>
5977    
5978                    <section title="Finding instruments" anchor="FIND DB_INSTRUMENTS">
5979                        <t>The front-end can search for instruments
5980                        in specific directory by sending the following command:</t>
5981                        <t>
5982                            <list>
5983                                <t>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;</t>
5984                            </list>
5985                        </t>
5986                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5987                        name of the directory to search in. If NON_RECURSIVE is specified, the
5988                        directories located in subdirectories of the specified directory will not
5989                        be searched. &lt;criteria-list&gt; is a list of search criterias
5990                        in form of "key1=val1 key2=val2 ...". The following criterias are
5991                        allowed:</t>
5992                        <t>
5993                          <t>NAME='&lt;search-string&gt;'
5994                              <list>
5995                                  <t>Restricts the search to instruments, which names
5996                                  satisfy the supplied search string (encapsulated into apostrophes,
5997                                  supporting escape sequences as described in chapter
5998                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
5999                              </list>
6000                          </t>
6001    
6002                          <t>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
6003                              <list>
6004                                  <t>Restricts the search to instruments, which
6005                                  size is in the specified range. If &lt;min&gt; is omitted,
6006                                  the search results are restricted to instruments with size less then
6007                                  or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
6008                                  search is restricted to instruments with size greater then
6009                                  or equal to &lt;min&gt;.</t>
6010                              </list>
6011                          </t>
6012    
6013                          <t>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
6014                              <list>
6015                                  <t>Restricts the search to instruments, which creation
6016                                  date satisfies the specified period, where &lt;date-after&gt;
6017                                  and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
6018                                  If &lt;date-after&gt; is omitted the search is restricted to
6019                                  instruments created before &lt;date-before&gt;. If
6020                                  &lt;date-before&gt; is omitted, the search is restricted
6021                                  to instruments created after &lt;date-after&gt;.</t>
6022                              </list>
6023                          </t>
6024    
6025                          <t>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
6026                              <list>
6027                                  <t>Restricts the search to instruments, which
6028                                  date of last modification satisfies the specified period, where
6029                                  &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
6030                                  format. If &lt;date-after&gt; is omitted the search is restricted to
6031                                  instruments, which are last modified before &lt;date-before&gt;. If
6032                                  &lt;date-before&gt; is omitted, the search is restricted to instruments,
6033                                  which are last modified after &lt;date-after&gt;.</t>
6034                              </list>
6035                          </t>
6036    
6037                          <t>DESCRIPTION='&lt;search-string&gt;'
6038                              <list>
6039                                  <t>Restricts the search to instruments with description
6040                                  that satisfies the supplied search string (encapsulated into apostrophes,
6041                                  supporting escape sequences as described in chapter
6042                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
6043                              </list>
6044                          </t>
6045    
6046                          <t>PRODUCT='&lt;search-string&gt;'
6047                              <list>
6048                                  <t>Restricts the search to instruments with product info
6049                                  that satisfies the supplied search string (encapsulated into apostrophes,
6050                                  supporting escape sequences as described in chapter
6051                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
6052                              </list>
6053                          </t>
6054    
6055                          <t>ARTISTS='&lt;search-string&gt;'
6056                              <list>
6057                                  <t>Restricts the search to instruments with artists info
6058                                  that satisfies the supplied search string (encapsulated into apostrophes,
6059                                  supporting escape sequences as described in chapter
6060                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
6061                              </list>
6062                          </t>
6063    
6064                          <t>KEYWORDS='&lt;search-string&gt;'
6065                              <list>
6066                                  <t>Restricts the search to instruments with keyword list
6067                                  that satisfies the supplied search string (encapsulated into apostrophes,
6068                                  supporting escape sequences as described in chapter
6069                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
6070                              </list>
6071                          </t>
6072    
6073                          <t>IS_DRUM=true | false
6074                              <list>
6075                                  <t>Either true or false. Restricts the search to
6076                                  drum kits or chromatic instruments.</t>
6077                              </list>
6078                          </t>
6079    
6080                          <t>FORMAT_FAMILIES='&lt;format-list&gt;'
6081                              <list>
6082                                  <t>Restricts the search to instruments of the supplied format families,
6083                                  where &lt;format-list&gt; is a comma separated list of format families.</t>
6084                              </list>
6085                          </t>
6086                        </t>
6087    
6088                        <t>Where &lt;search-string&gt; is either a regular expression, or a
6089                        word list separated with spaces for OR search and with '+' for AND search.</t>
6090    
6091                        <t>Possible Answers:</t>
6092                        <t>
6093                            <list>
6094                                <t>A comma separated list with the absolute path names (encapsulated into
6095                                apostrophes) of all instruments in the specified directory that satisfy
6096                                the supplied search criterias.</t>
6097                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6098                                    <list>
6099                                        <t>if the given directory does not exist.</t>
6100                                    </list>
6101                                </t>
6102                            </list>
6103                        </t>
6104                        <t>Example:</t>
6105                        <t>
6106                            <list>
6107                                <t>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"</t>
6108                                <t>S: "'/Piano Collection/Bosendorfer 290'"</t>
6109                            </list>
6110                        </t>
6111                        <t>
6112                            <list>
6113                                <t>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"</t>
6114                                <t>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"</t>
6115                            </list>
6116                        </t>
6117                    </section>
6118    
6119                    <section title="Getting job status information" anchor="GET DB_INSTRUMENTS_JOB INFO">
6120                        <t>The front-end can ask for the current status of a
6121                        particular database instruments job by sending the following command:</t>
6122                        <t>
6123                            <list>
6124                                <t>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;</t>
6125                            </list>
6126                        </t>
6127                        <t>Where &lt;job-id&gt; should be replaced by the numerical ID
6128                        of the job the front-end is interested in.</t>
6129    
6130                        <t>Possible Answers:</t>
6131                        <t>
6132                            <list>
6133                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6134                                Each answer line begins with the settings category name
6135                                followed by a colon and then a space character &lt;SP&gt; and finally
6136                                the info character string to that setting category. At the
6137                                moment the following categories are defined:</t>
6138    
6139                                <t>
6140                                    <list>
6141                                        <t>FILES_TOTAL -
6142                                            <list>
6143                                                <t>The total number of files scheduled for scanning</t>
6144                                            </list>
6145                                        </t>
6146                                        <t>FILES_SCANNED -
6147                                            <list>
6148                                                <t>The current number of scanned files</t>
6149                                            </list>
6150                                        </t>
6151                                        <t>SCANNING -
6152                                            <list>
6153                                                <t>The absolute path name of the file which is currently
6154                                                being scanned</t>
6155                                            </list>
6156                                        </t>
6157                                        <t>STATUS -
6158                                            <list>
6159                                                <t>An integer value between 0 and 100 indicating the
6160                                                scanning progress percentage of the file which is
6161                                                currently being scanned</t>
6162                                            </list>
6163                                        </t>
6164                                    </list>
6165                                </t>
6166                            </list>
6167                        </t>
6168                        <t>The mentioned fields above don't have to be in particular order.</t>
6169    
6170                        <t>Example:</t>
6171                        <t>
6172                            <list>
6173                                <t>C: "GET DB_INSTRUMENTS_JOB INFO 2"</t>
6174                                <t>S: "FILES_TOTAL: 12"</t>
6175                                <t>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"</t>
6176                                <t>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"</t>
6177                                <t>&nbsp;&nbsp;&nbsp;"STATUS: 42"</t>
6178                                <t>&nbsp;&nbsp;&nbsp;"."</t>
6179                            </list>
6180                        </t>
6181                    </section>
6182    
6183                    <section title="Formatting the instruments database" anchor="FORMAT INSTRUMENTS_DB">
6184                        <t>The front-end can remove all instruments and directories and re-create
6185                        the instruments database structure (e.g., in case of a database corruption)
6186                        by sending the following command:</t>
6187                        <t>
6188                            <list>
6189                                <t>FORMAT INSTRUMENTS_DB</t>
6190                            </list>
6191                        </t>
6192    
6193                        <t>Possible Answers:</t>
6194                        <t>
6195                            <list>
6196                                <t>"OK" -
6197                                    <list>
6198                                        <t>on success</t>
6199                                    </list>
6200                                </t>
6201                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6202                                    <list>
6203                                        <t>If the formatting of the instruments database
6204                                        failed.</t>
6205                                    </list>
6206                                </t>
6207                            </list>
6208                        </t>
6209                    </section>
6210    
6211                    <section title="Checking for lost instrument files" anchor="FIND LOST DB_INSTRUMENT_FILES">
6212                        <t>The front-end can retrieve the list of all instrument files in the instruments database
6213                        that don't exist in the filesystem by sending the following command:</t>
6214                        <t>
6215                            <list>
6216                                <t>FIND LOST DB_INSTRUMENT_FILES</t>
6217                            </list>
6218                        </t>
6219    
6220                        <t>Possible Answers:</t>
6221                        <t>
6222                            <list>
6223                                <t>A comma separated list with the absolute path names
6224                                (encapsulated into apostrophes) of all lost instrument files.</t>
6225                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6226                                    <list>
6227                                        <t>in case it failed, providing an appropriate error code and error message.</t>
6228                                    </list>
6229                                </t>
6230                            </list>
6231                        </t>
6232                        <t>Example:</t>
6233                        <t>
6234                            <list>
6235                                <t>C: "FIND LOST DB_INSTRUMENT_FILES"</t>
6236                                <t>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"</t>
6237                            </list>
6238                        </t>
6239                    </section>
6240    
6241                    <section title="Replacing an instrument file" anchor="SET DB_INSTRUMENT FILE_PATH">
6242                        <t>The front-end can substitute all occurrences of an instrument file
6243                        in the instruments database with a new one by sending the following command:</t>
6244                        <t>
6245                            <list>
6246                                <t>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;</t>
6247                            </list>
6248                        </t>
6249                        <t>Where &lt;old_path&gt; is the absolute path name of the instrument file
6250                        to substitute with &lt;new_path&gt;.</t>
6251    
6252                        <t>Possible Answers:</t>
6253                        <t>
6254                            <list>
6255                                <t>"OK" -
6256                                    <list>
6257                                        <t>on success</t>
6258                                    </list>
6259                                </t>
6260                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6261                                    <list>
6262                                        <t>in case it failed, providing an appropriate error code and error message.</t>
6263                                    </list>
6264                                </t>
6265                            </list>
6266                        </t>
6267    
6268                        <t>Example:</t>
6269                        <t>
6270                            <list>
6271                                <t>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"</t>
6272                                <t>S: "OK"</t>
6273                            </list>
6274                        </t>
6275                    </section>
6276    
6277                </section>
6278    
6279    
6280    
6281                <section title="Editing Instruments" anchor="editing_instruments">
6282                    <t>The sampler allows to edit instruments while playing with the
6283                    sampler by spawning an external (3rd party) instrument editor
6284                    application for a given instrument. The 3rd party instrument
6285                    editor applications have to place a respective plugin DLL file
6286                    into the sampler's plugins directory. The sampler will
6287                    automatically try to load all plugin DLLs in that directory on
6288                    startup and only on startup!</t>
6289                    <t>At the moment there is only one command for this feature set,
6290                    but this will most probably change in future.</t>
6291    
6292                    <section title="Opening an appropriate instrument editor application" anchor="EDIT INSTRUMENT">
6293                        <t>The front-end can request to open an appropriate instrument
6294                        editor application by sending the following command:</t>
6295                        <t>
6296                            <list>
6297                                <t>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;</t>
6298                            </list>
6299                        </t>
6300                        <t>Where &lt;sampler-channel&gt; should be replaced by the
6301                        number of the sampler channel as given by the
6302                        <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
6303                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref>
6304                        command.</t>
6305    
6306                        <t>The sampler will try to ask all registered instrument
6307                        editors (or to be more specific: their sampler plugins)
6308                        whether they are capable to handle the instrument on the
6309                        given sampler channel. The sampler will simply use the first
6310                        instrument editor application which replied with a positive
6311                        answer and spawn that instrument editor application within
6312                        the sampler's process and provide that application access
6313                        to the instrument's data structures, so both applications
6314                        can share and access the same instruments data at the same
6315                        time, thus allowing to immediately hear changes with the
6316                        sampler made by the instrument editor.</t>
6317    
6318                        <t>Note: consequently instrument editors are always spawned
6319                        locally on the same machine where the sampler is running
6320                        on!</t>
6321    
6322                        <t>Possible Answers:</t>
6323                        <t>
6324                            <list>
6325                                <t>"OK" -
6326                                    <list>
6327                                        <t>when an appropriate instrument editor was
6328                                        launched</t>
6329                                    </list>
6330                                </t>
6331                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6332                                    <list>
6333                                        <t>when an appropriate instrument editor was
6334                                        launched, but there are noteworthy issues</t>
6335                                    </list>
6336                                </t>
6337                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6338                                    <list>
6339                                        <t>when an appropriate instrument editor
6340                                        could not be launched</t>
6341                                    </list>
6342                                </t>
6343                            </list>
6344                        </t>
6345    
6346                        <t>Examples:</t>
6347                        <t>
6348                            <list>
6349                                <t>C: "EDIT CHANNEL INSTRUMENT 0"</t>
6350                                <t>S: "OK"</t>
6351                            </list>
6352                        </t>
6353                    </section>
6354                </section>
6355    
6356                <section title="Managing Files" anchor="file_management">
6357                    <t>You can query detailed informations about files located
6358                    at the same system where the sampler instance is running on.
6359                    Using this command set allows to retrieve file informations
6360                    even remotely from another machine.</t>
6361    
6362                    <section title="Retrieving amount of instruments of a file" anchor="GET FILE INSTRUMENTS">
6363                        <t>The front-end can retrieve the amount of instruments
6364                        within a given instrument file by sending the
6365                        following command:</t>
6366                        <t>
6367                            <list>
6368                                <t>GET FILE INSTRUMENTS &lt;filename&gt;</t>
6369                            </list>
6370                        </t>
6371                        <t>Where &lt;filename&gt; is the name of the instrument
6372                        file (encapsulated into apostrophes, supporting escape
6373                        sequences as described in chapter
6374                        "<xref target="character_set">Character Set and Escape
6375                            Sequences</xref>").</t>
6376    
6377                        <t>The sampler will try to ask all sampler engines,
6378                        whether they support the given file and ask the first
6379                        engine with a positive answer for the amount of
6380                        instruments.</t>
6381    
6382                        <t>Possible Answers:</t>
6383                        <t>
6384                            <list>
6385                                <t>On success, the sampler will answer by
6386                                   returning the amount of instruments.
6387                                </t>
6388                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6389                                    <list>
6390                                        <t>if the file could not be handled</t>
6391                                    </list>
6392                                </t>
6393                            </list>
6394                        </t>
6395    
6396                        <t>Examples:</t>
6397                        <t>
6398                            <list>
6399                                <t>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"</t>
6400                                <t>S: "10"</t>
6401                            </list>
6402                        </t>
6403                    </section>
6404    
6405                    <section title="Retrieving all instruments of a file" anchor="LIST FILE INSTRUMENTS">
6406                        <t>The front-end can retrieve a list of all instruments
6407                        within a given instrument file by sending the
6408                        following command:</t>
6409                        <t>
6410                            <list>
6411                                <t>LIST FILE INSTRUMENTS &lt;filename&gt;</t>
6412                            </list>
6413                        </t>
6414                        <t>Where &lt;filename&gt; is the name of the instrument
6415                        file (encapsulated into apostrophes, supporting escape
6416                        sequences as described in chapter
6417                        "<xref target="character_set">Character Set and Escape
6418                            Sequences</xref>").</t>
6419    
6420                        <t>The sampler will try to ask all sampler engines,
6421                        whether they support the given file and ask the first
6422                        engine with a positive answer for a list of IDs for the
6423                        instruments in the given file.</t>
6424    
6425                        <t>Possible Answers:</t>
6426                        <t>
6427                            <list>
6428                                <t>On success, the sampler will answer by
6429                                   returning a comma separated list of
6430                                   instrument IDs.
6431                                </t>
6432                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6433                                    <list>
6434                                        <t>if the file could not be handled</t>
6435                                    </list>
6436                                </t>
6437                            </list>
6438                        </t>
6439    
6440                        <t>Examples:</t>
6441                        <t>
6442                            <list>
6443                                <t>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"</t>
6444                                <t>S: "0,1,2,3,4,5,6,7,8,9"</t>
6445                            </list>
6446                        </t>
6447                    </section>
6448    
6449                    <section title="Retrieving informations about one instrument in a file" anchor="GET FILE INSTRUMENT INFO">
6450                        <t>The front-end can retrieve detailed informations
6451                        about a specific instrument within a given instrument
6452                        file by sending the following command:</t>
6453                        <t>
6454                            <list>
6455                                <t>GET FILE INSTRUMENT INFO &lt;filename&gt;
6456                                &lt;instr-id&gt;</t>
6457                            </list>
6458                        </t>
6459                        <t>Where &lt;filename&gt; is the name of the instrument
6460                        file (encapsulated into apostrophes, supporting escape
6461                        sequences as described in chapter
6462                        "<xref target="character_set">Character Set and Escape
6463                            Sequences</xref>") and &lt;instr-id&gt; is the numeric
6464                        instrument ID as returned by the
6465                        <xref target="LIST FILE INSTRUMENTS">
6466                        "LIST FILE INSTRUMENTS"</xref> command.</t>
6467    
6468                        <t>The sampler will try to ask all sampler engines,
6469                        whether they support the given file and ask the first
6470                        engine with a positive answer for informations about the
6471                        specific instrument in the given file.</t>
6472    
6473                        <t>Possible Answers:</t>
6474                        <t>
6475                            <list>
6476                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6477                                Each answer line begins with the settings category name
6478                                followed by a colon and then a space character &lt;SP&gt; and finally
6479                                the info character string to that setting category. At the
6480                                moment the following categories are defined:</t>
6481    
6482                                <t>
6483                                    <list>
6484                                        <t>NAME -
6485                                            <list>
6486                                                <t>name of the instrument as
6487                                                stored in the instrument file</t>
6488                                            </list>
6489                                        </t>
6490                                        <t>FORMAT_FAMILY -
6491                                            <list>
6492                                                <t>name of the sampler format
6493                                                of the given instrument</t>
6494                                            </list>
6495                                        </t>
6496                                        <t>FORMAT_VERSION -
6497                                            <list>
6498                                                <t>version of the sampler format
6499                                                the instrumen is stored as</t>
6500                                            </list>
6501                                        </t>
6502                                        <t>PRODUCT -
6503                                            <list>
6504                                                <t>official product name of the
6505                                                instrument as stored in the file
6506                                                </t>
6507                                            </list>
6508                                        </t>
6509                                        <t>ARTISTS -
6510                                            <list>
6511                                                <t>artists / sample library
6512                                                vendor of the instrument</t>
6513                                            </list>
6514                                        </t>
6515                                        <t>KEY_BINDINGS -
6516                                            <list>
6517                                                <t>comma separated list of integer values representing
6518                                                   the instrument's key mapping in the range between 0 .. 127,
6519                                                   reflecting the analog meaning of the MIDI specification.</t>
6520                                            </list>
6521                                        </t>
6522                                        <t>KEYSWITCH_BINDINGS -
6523                                            <list>
6524                                                <t>comma separated list of integer values representing
6525                                                   the instrument's keyswitch mapping in the range between 0 .. 127,
6526                                                   reflecting the analog meaning of the MIDI specification.</t>
6527                                            </list>
6528                                        </t>
6529                                    </list>
6530                                </t>
6531                            </list>
6532                        </t>
6533                        <t>The mentioned fields above don't have to be in particular order.</t>
6534    
6535                        <t>Example:</t>
6536                        <t>
6537                            <list>
6538                                <t>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"</t>
6539                                <t>S: "NAME: Lunatic Loops"</t>
6540                                <t>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"</t>
6541                                <t>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"</t>
6542                                <t>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"</t>
6543                                <t>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"</t>
6544                                <t>&nbsp;&nbsp;&nbsp;"."</t>
6545                            </list>
6546                        </t>
6547                    </section>
6548                </section>
6549            </section>
6550    
6551          <section title="Command Syntax" anchor="command_syntax">          <section title="Command Syntax" anchor="command_syntax">
6552              <t>The grammar of the control protocol as descibed in <xref target="control_commands"/>              <t>The grammar of the control protocol as descibed in <xref target="control_commands"/>
# Line 4809  Schoenebeck'> Line 6620  Schoenebeck'>
6620                  </t>                  </t>
6621                  <t>/ UNSUBSCRIBE SP unsubscribe_event                  <t>/ UNSUBSCRIBE SP unsubscribe_event
6622                  </t>                  </t>
                 <t>/ SELECT SP text  
                 </t>  
6623                  <t>/ RESET SP reset_instruction                  <t>/ RESET SP reset_instruction
6624                  </t>                  </t>
6625                  <t>/ CLEAR SP clear_instruction                  <t>/ CLEAR SP clear_instruction
6626                  </t>                  </t>
6627                    <t>/ FIND SP find_instruction
6628                    </t>
6629                    <t>/ MOVE SP move_instruction
6630                    </t>
6631                    <t>/ COPY SP copy_instruction
6632                    </t>
6633                    <t>/ EDIT SP edit_instruction
6634                    </t>
6635                    <t>/ FORMAT SP format_instruction
6636                    </t>
6637                    <t>/ SEND SP send_instruction
6638                    </t>
6639                  <t>/ RESET                  <t>/ RESET
6640                  </t>                  </t>
6641                  <t>/ QUIT                  <t>/ QUIT
# Line 4825  Schoenebeck'> Line 6646  Schoenebeck'>
6646          <list>          <list>
6647                  <t>CHANNEL                  <t>CHANNEL
6648                  </t>                  </t>
6649                    <t>/ DB_INSTRUMENT_DIRECTORY SP db_path
6650                    </t>
6651                    <t>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
6652                    </t>
6653                    <t>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
6654                    </t>
6655                    <t>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
6656                    </t>
6657                    <t>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
6658                    </t>
6659                    <t>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
6660                    </t>
6661                    <t>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
6662                    </t>
6663                    <t>/ DB_INSTRUMENTS SP db_path SP filename
6664                    </t>
6665                    <t>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
6666                    </t>
6667                  <t>/ MIDI_INSTRUMENT_MAP                  <t>/ MIDI_INSTRUMENT_MAP
6668                  </t>                  </t>
6669                  <t>/ MIDI_INSTRUMENT_MAP SP map_name                  <t>/ MIDI_INSTRUMENT_MAP SP map_name
# Line 4843  Schoenebeck'> Line 6682  Schoenebeck'>
6682                  </t>                  </t>
6683                  <t>/ CHANNEL_COUNT                  <t>/ CHANNEL_COUNT
6684                  </t>                  </t>
6685                    <t>/ CHANNEL_MIDI
6686                    </t>
6687                    <t>/ DEVICE_MIDI
6688                    </t>
6689                  <t>/ VOICE_COUNT                  <t>/ VOICE_COUNT
6690                  </t>                  </t>
6691                  <t>/ STREAM_COUNT                  <t>/ STREAM_COUNT
# Line 4863  Schoenebeck'> Line 6706  Schoenebeck'>
6706                  </t>                  </t>
6707                  <t>/ MIDI_INSTRUMENT_INFO                  <t>/ MIDI_INSTRUMENT_INFO
6708                  </t>                  </t>
6709                    <t>/ DB_INSTRUMENT_DIRECTORY_COUNT
6710                    </t>
6711                    <t>/ DB_INSTRUMENT_DIRECTORY_INFO
6712                    </t>
6713                    <t>/ DB_INSTRUMENT_COUNT
6714                    </t>
6715                    <t>/ DB_INSTRUMENT_INFO
6716                    </t>
6717                    <t>/ DB_INSTRUMENTS_JOB_INFO
6718                    </t>
6719                  <t>/ MISCELLANEOUS                  <t>/ MISCELLANEOUS
6720                  </t>                  </t>
6721                    <t>/ TOTAL_STREAM_COUNT
6722                    </t>
6723                  <t>/ TOTAL_VOICE_COUNT                  <t>/ TOTAL_VOICE_COUNT
6724                  </t>                  </t>
6725                  <t>/ GLOBAL_INFO                  <t>/ GLOBAL_INFO
# Line 4883  Schoenebeck'> Line 6738  Schoenebeck'>
6738                  </t>                  </t>
6739                  <t>/ CHANNEL_COUNT                  <t>/ CHANNEL_COUNT
6740                  </t>                  </t>
6741                    <t>/ CHANNEL_MIDI
6742                    </t>
6743                    <t>/ DEVICE_MIDI
6744                    </t>
6745                  <t>/ VOICE_COUNT                  <t>/ VOICE_COUNT
6746                  </t>                  </t>
6747                  <t>/ STREAM_COUNT                  <t>/ STREAM_COUNT
# Line 4903  Schoenebeck'> Line 6762  Schoenebeck'>
6762                  </t>                  </t>
6763                  <t>/ MIDI_INSTRUMENT_INFO                  <t>/ MIDI_INSTRUMENT_INFO
6764                  </t>                  </t>
6765                    <t>/ DB_INSTRUMENT_DIRECTORY_COUNT
6766                    </t>
6767                    <t>/ DB_INSTRUMENT_DIRECTORY_INFO
6768                    </t>
6769                    <t>/ DB_INSTRUMENT_COUNT
6770                    </t>
6771                    <t>/ DB_INSTRUMENT_INFO
6772                    </t>
6773                    <t>/ DB_INSTRUMENTS_JOB_INFO
6774                    </t>
6775                  <t>/ MISCELLANEOUS                  <t>/ MISCELLANEOUS
6776                  </t>                  </t>
6777                    <t>/ TOTAL_STREAM_COUNT
6778                    </t>
6779                  <t>/ TOTAL_VOICE_COUNT                  <t>/ TOTAL_VOICE_COUNT
6780                  </t>                  </t>
6781                  <t>/ GLOBAL_INFO                  <t>/ GLOBAL_INFO
# Line 4937  Schoenebeck'> Line 6808  Schoenebeck'>
6808                  </t>                  </t>
6809                  <t>/ MIDI_INSTRUMENT_MAP SP ALL                  <t>/ MIDI_INSTRUMENT_MAP SP ALL
6810                  </t>                  </t>
6811                    <t>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
6812                    </t>
6813                    <t>/ DB_INSTRUMENT_DIRECTORY SP db_path
6814                    </t>
6815                    <t>/ DB_INSTRUMENT SP db_path
6816                    </t>
6817          </list>          </list>
6818  </t>  </t>
6819  <t>get_instruction =  <t>get_instruction =
# Line 4989  Schoenebeck'> Line 6866  Schoenebeck'>
6866                  </t>                  </t>
6867                  <t>/ SERVER SP INFO                  <t>/ SERVER SP INFO
6868                  </t>                  </t>
6869                    <t>/ TOTAL_STREAM_COUNT
6870                    </t>
6871                  <t>/ TOTAL_VOICE_COUNT                  <t>/ TOTAL_VOICE_COUNT
6872                  </t>                  </t>
6873                  <t>/ TOTAL_VOICE_COUNT_MAX                  <t>/ TOTAL_VOICE_COUNT_MAX
# Line 5007  Schoenebeck'> Line 6886  Schoenebeck'>
6886                  </t>                  </t>
6887                  <t>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id                  <t>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
6888                  </t>                  </t>
6889                    <t>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
6890                    </t>
6891                    <t>/ DB_INSTRUMENT_DIRECTORIES SP db_path
6892                    </t>
6893                    <t>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
6894                    </t>
6895                    <t>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
6896                    </t>
6897                    <t>/ DB_INSTRUMENTS SP db_path
6898                    </t>
6899                    <t>/ DB_INSTRUMENT SP INFO SP db_path
6900                    </t>
6901                    <t>/ DB_INSTRUMENTS_JOB SP INFO SP number
6902                    </t>
6903                  <t>/ VOLUME                  <t>/ VOLUME
6904                  </t>                  </t>
6905                    <t>/ VOICES
6906                    </t>
6907                    <t>/ STREAMS
6908                    </t>
6909                    <t>/ FILE SP INSTRUMENTS SP filename
6910                    </t>
6911                    <t>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
6912                    </t>
6913          </list>          </list>
6914  </t>  </t>
6915  <t>set_instruction =  <t>set_instruction =
# Line 5019  Schoenebeck'> Line 6920  Schoenebeck'>
6920                  </t>                  </t>
6921                  <t>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list                  <t>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
6922                  </t>                  </t>
6923                    <t>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
6924                    </t>
6925                  <t>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list                  <t>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' param_val_list
6926                  </t>                  </t>
6927                  <t>/ CHANNEL SP set_chan_instruction                  <t>/ CHANNEL SP set_chan_instruction
# Line 5033  Schoenebeck'> Line 6936  Schoenebeck'>
6936                  </t>                  </t>
6937                  <t>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value                  <t>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
6938                  </t>                  </t>
6939                    <t>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
6940                    </t>
6941                    <t>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
6942                    </t>
6943                    <t>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
6944                    </t>
6945                    <t>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
6946                    </t>
6947                    <t>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
6948                    </t>
6949                  <t>/ ECHO SP boolean                  <t>/ ECHO SP boolean
6950                  </t>                  </t>
6951                  <t>/ VOLUME SP volume_value                  <t>/ VOLUME SP volume_value
6952                  </t>                  </t>
6953                    <t>/ VOICES SP number
6954                    </t>
6955                    <t>/ STREAMS SP number
6956                    </t>
6957          </list>          </list>
6958  </t>  </t>
6959  <t>create_instruction =  <t>create_instruction =
# Line 5069  Schoenebeck'> Line 6986  Schoenebeck'>
6986                  </t>                  </t>
6987          </list>          </list>
6988  </t>  </t>
6989    <t>find_instruction =
6990            <list>
6991                    <t>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
6992                    </t>
6993                    <t>/ DB_INSTRUMENTS SP db_path SP query_val_list
6994                    </t>
6995                    <t>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
6996                    </t>
6997                    <t>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
6998                    </t>
6999                    <t>/ LOST SP DB_INSTRUMENT_FILES
7000                    </t>
7001            </list>
7002    </t>
7003    <t>move_instruction =
7004            <list>
7005                    <t>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
7006                    </t>
7007                    <t>/ DB_INSTRUMENT SP db_path SP db_path
7008                    </t>
7009            </list>
7010    </t>
7011    <t>copy_instruction =
7012            <list>
7013                    <t>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
7014                    </t>
7015                    <t>/ DB_INSTRUMENT SP db_path SP db_path
7016                    </t>
7017            </list>
7018    </t>
7019  <t>destroy_instruction =  <t>destroy_instruction =
7020          <list>          <list>
7021                  <t>AUDIO_OUTPUT_DEVICE SP number                  <t>AUDIO_OUTPUT_DEVICE SP number
# Line 5119  Schoenebeck'> Line 7066  Schoenebeck'>
7066                  </t>                  </t>
7067          </list>          </list>
7068  </t>  </t>
7069    <t>edit_instruction =
7070            <list>
7071                    <t>CHANNEL SP INSTRUMENT SP sampler_channel
7072                    </t>
7073            </list>
7074    </t>
7075    <t>format_instruction =
7076            <list>
7077                    <t>INSTRUMENTS_DB
7078                    </t>
7079            </list>
7080    </t>
7081  <t>modal_arg =  <t>modal_arg =
7082          <list>          <list>
7083                  <t>/* epsilon (empty argument) */                  <t>/* epsilon (empty argument) */
# Line 5165  Schoenebeck'> Line 7124  Schoenebeck'>
7124                  </t>                  </t>
7125                  <t>/ FX_SENDS SP sampler_channel                  <t>/ FX_SENDS SP sampler_channel
7126                  </t>                  </t>
7127                    <t>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
7128                    </t>
7129                    <t>/ DB_INSTRUMENT_DIRECTORIES SP db_path
7130                    </t>
7131                    <t>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
7132                    </t>
7133                    <t>/ DB_INSTRUMENTS SP db_path
7134                    </t>
7135                    <t>/ FILE SP INSTRUMENTS SP filename
7136                    </t>
7137            </list>
7138    </t>
7139    <t>send_instruction =
7140            <list>
7141                    <t>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
7142                    </t>
7143          </list>          </list>
7144  </t>  </t>
7145  <t>load_instr_args =  <t>load_instr_args =
# Line 5287  Schoenebeck'> Line 7262  Schoenebeck'>
7262  </t>  </t>
7263  <t>filename =  <t>filename =
7264          <list>          <list>
7265                  <t>stringval                  <t>path
7266                    </t>
7267            </list>
7268    </t>
7269    <t>db_path =
7270            <list>
7271                    <t>path
7272                  </t>                  </t>
7273          </list>          </list>
7274  </t>  </t>
7275  <t>map_name =  <t>map_name =
7276          <list>          <list>
7277                  <t>stringval                  <t>stringval_escaped
7278                  </t>                  </t>
7279          </list>          </list>
7280  </t>  </t>
7281  <t>entry_name =  <t>entry_name =
7282          <list>          <list>
7283                  <t>stringval                  <t>stringval_escaped
7284                  </t>                  </t>
7285          </list>          </list>
7286  </t>  </t>
7287  <t>fx_send_name =  <t>fx_send_name =
7288          <list>          <list>
7289                  <t>stringval                  <t>stringval_escaped
7290                  </t>                  </t>
7291          </list>          </list>
7292  </t>  </t>
# Line 5317  Schoenebeck'> Line 7298  Schoenebeck'>
7298                  </t>                  </t>
7299          </list>          </list>
7300  </t>  </t>
7301    
7302  <t>param_val =  <t>param_val =
7303          <list>          <list>
7304                  <t>string                  <t>string
# Line 5329  Schoenebeck'> Line 7311  Schoenebeck'>
7311                  </t>                  </t>
7312          </list>          </list>
7313  </t>  </t>
7314    <t>query_val_list =
7315            <list>
7316                    <t>string '=' query_val
7317                    </t>
7318                    <t>/ query_val_list SP string '=' query_val
7319                    </t>
7320            </list>
7321    </t>
7322    <t>query_val =
7323            <list>
7324                    <t>text_escaped
7325                    </t>
7326                    <t>/ stringval_escaped
7327                    </t>
7328            </list>
7329    </t>
7330    <t>scan_mode =
7331            <list>
7332                    <t>RECURSIVE
7333                    </t>
7334                    <t>/ NON_RECURSIVE
7335                    </t>
7336                    <t>/ FLAT
7337                    </t>
7338            </list>
7339    </t>
7340    
7341              <!-- GRAMMAR_BNF_END - do NOT delete or modify this line !!! -->              <!-- GRAMMAR_BNF_END - do NOT delete or modify this line !!! -->
7342    
7343                <section title="Character Set and Escape Sequences" anchor="character_set">
7344                    <t>Older versions of this protocol up to and including v1.1 only
7345                    supported the standard ASCII character set (ASCII code 0 - 127)
7346                    <xref target="RFC20"/>, all younger versions of this protocol
7347                    however support the Extended ASCII character set (ASCII code
7348                    0 - 255). The same group of younger protocols also support
7349                    escape sequences, but only for certain, explicitly declared
7350                    parts of the protocol. The supported escape sequences are
7351                    defined as follows:</t>
7352                    <texttable>
7353                        <ttcol>ASCII Character Sequence</ttcol>
7354                        <ttcol>Translated into (Name)</ttcol>
7355                        <c>\n</c> <c>new line</c>
7356                        <c>\r</c> <c>carriage return</c>
7357                        <c>\f</c> <c>form feed</c>
7358                        <c>\t</c> <c>horizontal tab</c>
7359                        <c>\v</c> <c>vertical tab</c>
7360                        <c>\'</c> <c>apostrophe</c>
7361                        <c>\"</c> <c>quotation mark</c>
7362                        <c>\\</c> <c>backslash</c>
7363                        <c>\OOO</c> <c>three digit octal ASCII code of the character</c>
7364                        <c>\xHH</c> <c>two digit hex ASCII code of the character</c>
7365                    </texttable>
7366                    <t>Notice: due to the transition of certain parts of the
7367                    protocol which now support escape sequences, a slight backward
7368                    incompatibility to protocols version v1.1 and younger has been
7369                    introduced. The only difference is that in parts of the protocol
7370                    where escape characters are now supported, a backslash characters
7371                    MUST be escaped as well (that is as double backslash), whereas
7372                    in the old versions a single backslash was sufficient.</t>
7373    
7374                    <t>The following LSCP commands support escape sequences as part
7375                    of their filename / path based arguments and / or may contain
7376                    a filename / path with escape sequences in their response:
7377                    <list>
7378                        <t><xref target="LOAD INSTRUMENT">"LOAD INSTRUMENT"</xref></t>
7379                        <t><xref target="GET CHANNEL INFO">"GET CHANNEL INFO"</xref></t>
7380                        <t><xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref></t>
7381                        <t><xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref></t>
7382                        <t><xref target="ADD DB_INSTRUMENT_DIRECTORY">"ADD DB_INSTRUMENT_DIRECTORY"</xref></t>
7383                        <t><xref target="ADD DB_INSTRUMENTS">"ADD DB_INSTRUMENTS"</xref></t>
7384                        <t><xref target="REMOVE DB_INSTRUMENT_DIRECTORY">"REMOVE DB_INSTRUMENT_DIRECTORY"</xref></t>
7385                        <t><xref target="REMOVE DB_INSTRUMENT">"REMOVE DB_INSTRUMENT"</xref></t>
7386                        <t><xref target="GET DB_INSTRUMENT_DIRECTORIES">"GET DB_INSTRUMENT_DIRECTORIES"</xref></t>
7387                        <t><xref target="LIST DB_INSTRUMENT_DIRECTORIES">"LIST DB_INSTRUMENT_DIRECTORIES"</xref></t>
7388                        <t><xref target="GET DB_INSTRUMENT_DIRECTORY INFO">"GET DB_INSTRUMENT_DIRECTORY INFO"</xref></t>
7389                        <t><xref target="GET DB_INSTRUMENTS">"GET DB_INSTRUMENTS"</xref></t>
7390                        <t><xref target="LIST DB_INSTRUMENTS">"LIST DB_INSTRUMENTS"</xref></t>
7391                        <t><xref target="GET DB_INSTRUMENT INFO">"GET DB_INSTRUMENT INFO"</xref></t>
7392                        <t><xref target="SET DB_INSTRUMENT_DIRECTORY NAME">"SET DB_INSTRUMENT_DIRECTORY NAME"</xref></t>
7393                        <t><xref target="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"</xref></t>
7394                        <t><xref target="SET DB_INSTRUMENT NAME">"SET DB_INSTRUMENT NAME"</xref></t>
7395                        <t><xref target="SET DB_INSTRUMENT DESCRIPTION">"SET DB_INSTRUMENT DESCRIPTION"</xref></t>
7396                        <t><xref target="FIND DB_INSTRUMENTS">"FIND DB_INSTRUMENTS"</xref></t>
7397                        <t><xref target="FIND DB_INSTRUMENT_DIRECTORIES">"FIND DB_INSTRUMENT_DIRECTORIES"</xref></t>
7398                        <t><xref target="MOVE DB_INSTRUMENT">"MOVE DB_INSTRUMENT"</xref></t>
7399                        <t><xref target="MOVE DB_INSTRUMENT_DIRECTORY">"MOVE DB_INSTRUMENT_DIRECTORY"</xref></t>
7400                        <t><xref target="COPY DB_INSTRUMENT">"COPY DB_INSTRUMENT"</xref></t>
7401                        <t><xref target="COPY DB_INSTRUMENT_DIRECTORY">"COPY DB_INSTRUMENT_DIRECTORY"</xref></t>
7402                        <t><xref target="FIND LOST DB_INSTRUMENT_FILES">"FIND LOST DB_INSTRUMENT_FILES"</xref></t>
7403                        <t><xref target="SET DB_INSTRUMENT FILE_PATH">"SET DB_INSTRUMENT FILE_PATH"</xref></t>
7404                        <t><xref target="GET FILE INSTRUMENTS">"GET FILE INSTRUMENTS"</xref></t>
7405                        <t><xref target="LIST FILE INSTRUMENTS">"LIST FILE INSTRUMENTS"</xref></t>
7406                        <t><xref target="GET FILE INSTRUMENT INFO">"GET FILE INSTRUMENT INFO"</xref></t>
7407                    </list>
7408                    Note that the forward slash character ('/') has a special meaning in
7409                    filename / path based arguments: it acts as separator of the nodes in
7410                    the path, thus if a directory- or filename includes a forward slash
7411                    (not intended as path node separator), you MUST escape that slash
7412                    either with the respective hex escape sequence ("\x2f") or with the
7413                    respective octal escape sequence ("\057").
7414                    </t>
7415    
7416                    <t>
7417                    Note for Windows: file path arguments in LSCP are expected
7418                    to use forward slashes as directory node separator similar
7419                    to Unix based operating systems. In contrast to Unix however
7420                    a Windows typical drive character is expected to be
7421                    prefixed to the path. That is an original Windows file path
7422                    like "D:\Sounds\My.gig" would become in LSCP:
7423                    "D:/Sounds/My.gig".
7424                    </t>
7425    
7426                    <t>
7427                    The following LSCP commands even support escape sequences as
7428                    part of at least one of their text-based arguments (i.e. entity name,
7429                    description) and / or may contain escape sequences in at least one of
7430                    their text-based fields in their response:
7431                    <list>
7432                        <t><xref target="GET SERVER INFO">"GET SERVER INFO"</xref></t>
7433                        <t><xref target="GET ENGINE INFO">"GET ENGINE INFO"</xref></t>
7434                        <t><xref target="GET CHANNEL INFO">"GET CHANNEL INFO"</xref></t>
7435                        <t><xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref></t>
7436                        <t><xref target="GET FX_SEND INFO">"GET FX_SEND INFO"</xref></t>
7437                        <t><xref target="SET FX_SEND NAME">"SET FX_SEND NAME"</xref></t>
7438                        <t><xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref></t>
7439                        <t><xref target="GET MIDI_INSTRUMENT_MAP INFO">"GET MIDI_INSTRUMENT_MAP INFO"</xref></t>
7440                        <t><xref target="ADD MIDI_INSTRUMENT_MAP">"ADD MIDI_INSTRUMENT_MAP"</xref></t>
7441                        <t><xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref></t>
7442                        <t><xref target="SET MIDI_INSTRUMENT_MAP NAME">"SET MIDI_INSTRUMENT_MAP NAME"</xref></t>
7443                        <t><xref target="GET DB_INSTRUMENT_DIRECTORY INFO">"GET DB_INSTRUMENT_DIRECTORY INFO"</xref></t>
7444                        <t><xref target="SET DB_INSTRUMENT_DIRECTORY NAME">"SET DB_INSTRUMENT_DIRECTORY NAME"</xref></t>
7445                        <t><xref target="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"</xref></t>
7446                        <t><xref target="FIND DB_INSTRUMENT_DIRECTORIES">"FIND DB_INSTRUMENT_DIRECTORIES"</xref></t>
7447                        <t><xref target="GET DB_INSTRUMENT INFO">"GET DB_INSTRUMENT INFO"</xref></t>
7448                        <t><xref target="SET DB_INSTRUMENT NAME">"SET DB_INSTRUMENT NAME"</xref></t>
7449                        <t><xref target="SET DB_INSTRUMENT DESCRIPTION">"SET DB_INSTRUMENT DESCRIPTION"</xref></t>
7450                        <t><xref target="FIND DB_INSTRUMENTS">"FIND DB_INSTRUMENTS"</xref></t>
7451                    </list>
7452                    Please note that these lists are manually maintained. If you
7453                    find a command that also supports escape sequences we forgot to
7454                    mention here, please report it!
7455                    </t>
7456                </section>
7457          </section>          </section>
7458    
7459          <section title="Events" anchor="events">          <section title="Events" anchor="events">
# Line 5434  Schoenebeck'> Line 7557  Schoenebeck'>
7557                  of sampler channels.</t>                  of sampler channels.</t>
7558              </section>              </section>
7559    
7560                <section title="MIDI data on a sampler channel arrived" anchor="SUBSCRIBE CHANNEL_MIDI">
7561                    <t>Client may want to be notified when MIDI data arrive on sampler channels on
7562                    back-end side, by issuing the following command:</t>
7563                    <t>
7564                        <list>
7565                            <t>SUBSCRIBE CHANNEL_MIDI</t>
7566                        </list>
7567                    </t>
7568                    <t>Server will start sending one of the the following notification messages:</t>
7569                    <t>
7570                        <list>
7571                            <t>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON  &lt;note&gt; &lt;velocity&gt;"</t>
7572                            <t>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"</t>
7573                        </list>
7574                    </t>
7575                    <t>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
7576                    data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
7577                    0 .. 127, reflecting the analog meaning of the MIDI specification.
7578                    </t>
7579                    <t>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
7580                    delivered by this mechanism! With other words: events could be lost at any time!
7581                    This restriction was made to keep the RT-safeness of the backend's MIDI and audio
7582                    thread unaffected by this feature.</t>
7583                </section>
7584    
7585                <section title="MIDI data on a MIDI input device arrived" anchor="SUBSCRIBE DEVICE_MIDI">
7586                        <t>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:</t>
7587                        <t>
7588                                <list>
7589                                        <t>SUBSCRIBE DEVICE_MIDI</t>
7590                                </list>
7591                        </t>
7592                        <t>Server will start sending one of the the following notification messages:</t>
7593                        <t>
7594                                <list>
7595                                        <t>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"</t>
7596                                        <t>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"</t>
7597                                </list>
7598                        </t>
7599                        <t>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
7600                           by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
7601                           data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
7602                           0 .. 127, reflecting the analog meaning of the MIDI specification.
7603                        </t>
7604                        <t>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
7605                           delivered by this mechanism! With other words: events could be lost at any time!
7606                           This restriction was made to keep the RT-safeness of the backend's MIDI and audio
7607                           thread unaffected by this feature.</t>
7608                </section>
7609    
7610              <section title="Number of active voices changed" anchor="SUBSCRIBE VOICE_COUNT">              <section title="Number of active voices changed" anchor="SUBSCRIBE VOICE_COUNT">
7611                  <t>Client may want to be notified when the number of voices on the                  <t>Client may want to be notified when the number of voices on the
7612                  back-end changes by issuing the following command:</t>                  back-end changes by issuing the following command:</t>
# Line 5516  Schoenebeck'> Line 7689  Schoenebeck'>
7689              </section>              </section>
7690    
7691              <section title="Number of effect sends changed" anchor="SUBSCRIBE FX_SEND_COUNT">              <section title="Number of effect sends changed" anchor="SUBSCRIBE FX_SEND_COUNT">
7692                  <t>Client may want to be notified when the number of effect sends on                  <t>Client may want to be notified when the number of effect sends on
7693                  a particular sampler channel is changed by issuing the following command:</t>                  a particular sampler channel is changed by issuing the following command:</t>
7694                  <t>                  <t>
7695                      <list>                      <list>
# Line 5571  Schoenebeck'> Line 7744  Schoenebeck'>
7744                  all currently active voices.</t>                  all currently active voices.</t>
7745              </section>              </section>
7746    
7747                <section title="Total number of active disk streams changed" anchor="SUBSCRIBE TOTAL_STREAM_COUNT">
7748                    <t>Client may want to be notified when the total number of disk streams on the
7749                    back-end changes by issuing the following command:</t>
7750                    <t>
7751                        <list>
7752                            <t>SUBSCRIBE TOTAL_STREAM_COUNT</t>
7753                        </list>
7754                    </t>
7755                    <t>Server will start sending the following notification messages:</t>
7756                    <t>
7757                        <list>
7758                            <t>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"</t>
7759                        </list>
7760                    </t>
7761                    <t>where &lt;streams&gt; will be replaced by the new number of
7762                    all currently active disk streams.</t>
7763                </section>
7764    
7765              <section title="Number of MIDI instrument maps changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">              <section title="Number of MIDI instrument maps changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">
7766                  <t>Client may want to be notified when the number of MIDI instrument maps on the                  <t>Client may want to be notified when the number of MIDI instrument maps on the
7767                  back-end changes by issuing the following command:</t>                  back-end changes by issuing the following command:</t>
# Line 5669  Schoenebeck'> Line 7860  Schoenebeck'>
7860                          replaced by the optional dotted floating point value, reflecting the                          replaced by the optional dotted floating point value, reflecting the
7861                          new global volume parameter.</t>                          new global volume parameter.</t>
7862                      </list>                      </list>
7863                        <list>
7864                            <t>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
7865                            golbal limit of the sampler for maximum voices is changed, where
7866                            &lt;max-voices&gt; will be an integer value, reflecting the
7867                            new global voice limit parameter.</t>
7868                        </list>
7869                        <list>
7870                            <t>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
7871                            golbal limit of the sampler for maximum disk streams is changed, where
7872                            &lt;max-streams&gt; will be an integer value, reflecting the
7873                            new global disk streams limit parameter.</t>
7874                        </list>
7875                    </t>
7876                </section>
7877    
7878                <section title="Number of database instrument directories changed" anchor="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">
7879                    <t>Client may want to be notified when the number of instrument
7880                    directories in a particular directory in the instruments database
7881                    is changed by issuing the following command:</t>
7882                    <t>
7883                        <list>
7884                            <t>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT</t>
7885                        </list>
7886                    </t>
7887                    <t>Server will start sending the following notification messages:</t>
7888                    <t>
7889                        <list>
7890                            <t>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"</t>
7891                        </list>
7892                    </t>
7893                    <t>where &lt;dir-path&gt; will be replaced by the absolute path
7894                    name of the directory in the instruments database,
7895                    in which the number of directories is changed.</t>
7896                    <t>Note that when a non-empty directory is removed, this event
7897                    is not sent for the subdirectories in that directory.</t>
7898                </section>
7899    
7900                <section title="Database instrument directory information changed" anchor="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">
7901                    <t>Client may want to be notified when changes were made to directories
7902                    in the instruments database by issuing the following command:</t>
7903                    <t>
7904                        <list>
7905                            <t>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO</t>
7906                        </list>
7907                    </t>
7908                    <t>Server will start sending the following notification messages:</t>
7909                    <t>
7910                        <list>
7911                            <t>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"</t>
7912                        </list>
7913                    </t>
7914                    <t>where &lt;dir-path&gt; will be replaced by the absolute path name
7915                    of the directory, for which information changes occurred. The front-end will have to send
7916                    the respective command to actually get the updated directory info. Because these messages
7917                    will be triggered by LSCP commands issued by other clients rather than real
7918                    time events happening on the server, it is believed that an empty notification
7919                    message is sufficient here.</t>
7920                    <t>
7921                        <list>
7922                            <t>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"</t>
7923                        </list>
7924                    </t>
7925                    <t>where &lt;old-dir-path&gt; is the old absolute path name of the directory
7926                    (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
7927                    the new name of the directory, encapsulated into apostrophes.</t>
7928                </section>
7929    
7930                <section title="Number of database instruments changed" anchor="SUBSCRIBE DB_INSTRUMENT_COUNT">
7931                    <t>Client may want to be notified when the number of instruments
7932                    in a particular directory in the instruments database
7933                    is changed by issuing the following command:</t>
7934                    <t>
7935                        <list>
7936                            <t>SUBSCRIBE DB_INSTRUMENT_COUNT</t>
7937                        </list>
7938                    </t>
7939                    <t>Server will start sending the following notification messages:</t>
7940                    <t>
7941                        <list>
7942                            <t>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"</t>
7943                        </list>
7944                    </t>
7945                    <t>where &lt;dir-path&gt; will be replaced by the absolute path
7946                    name of the directory in the instruments database,
7947                    in which the number of instruments is changed.</t>
7948                    <t>Note that when a non-empty directory is removed, this event
7949                    is not sent for the instruments in that directory.</t>
7950                </section>
7951    
7952                <section title="Database instrument information changed" anchor="SUBSCRIBE DB_INSTRUMENT_INFO">
7953                    <t>Client may want to be notified when changes were made to instruments
7954                    in the instruments database by issuing the following command:</t>
7955                    <t>
7956                        <list>
7957                            <t>SUBSCRIBE DB_INSTRUMENT_INFO</t>
7958                        </list>
7959                    </t>
7960                    <t>Server will start sending the following notification messages:</t>
7961                    <t>
7962                        <list>
7963                            <t>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"</t>
7964                        </list>
7965                    </t>
7966                    <t>where &lt;instr-path&gt; will be replaced by the absolute path name
7967                    of the instrument, which settings are changed. The front-end will have to send
7968                    the respective command to actually get the updated directory info. Because these messages
7969                    will be triggered by LSCP commands issued by other clients rather than real
7970                    time events happening on the server, it is believed that an empty notification
7971                    message is sufficient here.</t>
7972                    <t>
7973                        <list>
7974                            <t>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"</t>
7975                        </list>
7976                  </t>                  </t>
7977                    <t>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
7978                    (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
7979                    the new name of the instrument, encapsulated into apostrophes.</t>
7980                </section>
7981    
7982                <section title="Database job status information changed" anchor="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">
7983                    <t>Client may want to be notified when the status of particular database
7984                    instruments job is changed by issuing the following command:</t>
7985                    <t>
7986                        <list>
7987                            <t>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO</t>
7988                        </list>
7989                    </t>
7990                    <t>Server will start sending the following notification messages:</t>
7991                    <t>
7992                        <list>
7993                            <t>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"</t>
7994                        </list>
7995                    </t>
7996                    <t>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
7997                    which status is changed. The front-end will have to send the respective
7998                    command to actually get the status info. Because these messages
7999                    will be triggered by LSCP commands issued by other clients rather than real
8000                    time events happening on the server, it is believed that an empty notification
8001                    message is sufficient here.</t>
8002              </section>              </section>
8003    
8004              <section title="Miscellaneous and debugging events" anchor="SUBSCRIBE MISCELLANEOUS">              <section title="Miscellaneous and debugging events" anchor="SUBSCRIBE MISCELLANEOUS">
# Line 5750  Schoenebeck'> Line 8079  Schoenebeck'>
8079                  </front>                  </front>
8080                  <seriesInfo name="RFC" value="2234" />                  <seriesInfo name="RFC" value="2234" />
8081              </reference>              </reference>
8082                <reference anchor="RFC20">
8083                    <front>
8084                        <title>ASCII format for Network Interchange</title>
8085                        <author>
8086                            <organization>UCLA</organization>
8087                        </author>
8088                        <date year="1969"></date>
8089                    </front>
8090                    <seriesInfo name="RFC" value="20" />
8091                </reference>
8092           </references>           </references>
8093      </back>      </back>
8094    

Legend:
Removed from v.1136  
changed lines
  Added in v.1956

  ViewVC Help
Powered by ViewVC