/[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 709 by schoenebeck, Thu Jul 21 09:36:52 2005 UTC revision 1956 by schoenebeck, Fri Jul 31 07:45:47 2009 UTC
# Line 11  Line 11 
11  <?rfc symrefs="yes" ?>  <?rfc symrefs="yes" ?>
12  <?rfc sortrefs="yes"?>  <?rfc sortrefs="yes"?>
13  <?rfc iprnotified="no" ?>  <?rfc iprnotified="no" ?>
 <?rfc strict="yes" ?>  
14    
15  <rfc category="std" ipr="full2026" docName="LSCP 1.1">  <!-- FIXME: next attribute should actually be "yes", temporarily disbled due
16         to an annoying "missing Normative/Informative References" error message -->
17    <?rfc strict="no" ?>
18    
19    <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 31  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="July" year="2005"/>          <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 58  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 2058  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 2085  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 2110  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 2145  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 2426  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 2485  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 2510  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 2534  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 2552  Schoenebeck'> Line 2589  Schoenebeck'>
2589                                      <t>VOLUME -                                      <t>VOLUME -
2590                                          <list>                                          <list>
2591                                              <t>optionally dotted number for the channel volume factor                                              <t>optionally dotted number for the channel volume factor
2592                                              (where a value < 1.0 means attenuation and a value >                                              (where a value &lt; 1.0 means attenuation and a value >
2593                                              1.0 means amplification)</t>                                              1.0 means amplification)</t>
2594                                          </list>                                          </list>
2595                                      </t>                                      </t>
# Line 2571  Schoenebeck'> Line 2608  Schoenebeck'>
2608                                              the channel is a solo channel; "false" otherwise</t>                                              the channel is a solo channel; "false" otherwise</t>
2609                                          </list>                                          </list>
2610                                      </t>                                      </t>
2611                                        <t>MIDI_INSTRUMENT_MAP -
2612                                            <list>
2613                                                <t>Determines to which MIDI instrument map this sampler
2614                                                channel is assigned to. Read chapter
2615                                                <xref target="SET CHANNEL MIDI_INSTRUMENT_MAP">"SET CHANNEL MIDI_INSTRUMENT_MAP"</xref>
2616                                                for a list of possible values.</t>
2617                                            </list>
2618                                        </t>
2619                                  </list>                                  </list>
2620                              </t>                              </t>
2621                          </list>                          </list>
# Line 2593  Schoenebeck'> Line 2638  Schoenebeck'>
2638                              <t>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"</t>                              <t>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_DEVICE: 0"</t>
2639                              <t>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"</t>                              <t>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_PORT: 0"</t>
2640                              <t>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"</t>                              <t>&nbsp;&nbsp;&nbsp;"MIDI_INPUT_CHANNEL: 5"</t>
2641                                <t>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"</t>
2642                                <t>&nbsp;&nbsp;&nbsp;"MUTE: false"</t>
2643                                <t>&nbsp;&nbsp;&nbsp;"SOLO: false"</t>
2644                                <t>&nbsp;&nbsp;&nbsp;"MIDI_INSTRUMENT_MAP: NONE"</t>
2645                              <t>&nbsp;&nbsp;&nbsp;"."</t>                              <t>&nbsp;&nbsp;&nbsp;"."</t>
2646                          </list>                          </list>
2647                      </t>                      </t>
# Line 2753  Schoenebeck'> Line 2802  Schoenebeck'>
2802                      </t>                      </t>
2803                  </section>                  </section>
2804    
2805                  <section title="Setting audio output type" anchor="SET CHANNEL AUDIO_OUTPUT_TYP">                  <section title="Setting audio output type" anchor="SET CHANNEL AUDIO_OUTPUT_TYPE">
2806                      <t>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!</t>                      <t>DEPRECATED: THIS COMMAND WILL DISAPPEAR SOON!</t>
2807    
2808                      <t>The front-end can alter the audio output type on a specific sampler                      <t>The front-end can alter the audio output type on a specific sampler
# Line 3144  Schoenebeck'> Line 3193  Schoenebeck'>
3193                      </t>                      </t>
3194                  </section>                  </section>
3195    
3196                    <section title="Assigning a MIDI instrument map to a sampler channel" anchor="SET CHANNEL MIDI_INSTRUMENT_MAP">
3197                        <t>The front-end can assign a MIDI instrument map to a specific sampler channel
3198                        by sending the following command:</t>
3199                        <t>
3200                            <list>
3201                                <t>SET CHANNEL MIDI_INSTRUMENT_MAP &lt;sampler-channel&gt; &lt;map&gt;</t>
3202                            </list>
3203                        </t>
3204                        <t>Where &lt;sampler-channel&gt; is the respective sampler channel
3205                        number as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3206                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command and
3207                        &lt;map&gt; can have the following possibilites:</t>
3208                        <t>
3209                            <list>
3210                                <t>"NONE" -
3211                                    <list>
3212                                        <t>This is the default setting. In this case
3213                                        the sampler channel is not assigned any MIDI
3214                                        instrument map and thus will ignore all MIDI
3215                                        program change messages.</t>
3216                                    </list>
3217                                </t>
3218                                <t>"DEFAULT" -
3219                                    <list>
3220                                        <t>The sampler channel will always use the
3221                                        default MIDI instrument map to handle MIDI
3222                                        program change messages.</t>
3223                                    </list>
3224                                </t>
3225                                <t>numeric ID -
3226                                    <list>
3227                                        <t>You can assign a specific MIDI instrument map
3228                                        by replacing &lt;map&gt; with the respective numeric
3229                                        ID of the MIDI instrument map as returned by the
3230                                        <xref target="LIST MIDI_INSTRUMENT_MAPS">"LIST MIDI_INSTRUMENT_MAPS"</xref>
3231                                        command. Once that map will be deleted, the sampler
3232                                        channel would fall back to "NONE".</t>
3233                                    </list>
3234                                </t>
3235                            </list>
3236                        </t>
3237                        <t>Read chapter <xref target="MIDI Instrument Mapping">"MIDI Instrument Mapping"</xref>
3238                        for details regarding MIDI instrument mapping.</t>
3239    
3240                        <t>Possible Answers:</t>
3241                        <t>
3242                            <list>
3243                                <t>"OK" -
3244                                    <list>
3245                                        <t>on success</t>
3246                                    </list>
3247                                </t>
3248                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3249                                    <list>
3250                                        <t>in case it failed, providing an appropriate error code and error message</t>
3251                                    </list>
3252                                </t>
3253                            </list>
3254                        </t>
3255    
3256                        <t>Examples:</t>
3257                        <t>
3258                            <list>
3259                                <t></t>
3260                            </list>
3261                        </t>
3262                    </section>
3263    
3264                    <section title="Adding an effect send to a sampler channel" anchor="CREATE FX_SEND">
3265                        <t>The front-end can create an additional effect send on a specific sampler channel
3266                        by sending the following command:</t>
3267                        <t>
3268                            <list>
3269                                <t>CREATE FX_SEND &lt;sampler-channel&gt; &lt;midi-ctrl&gt; [&lt;name&gt;]</t>
3270                            </list>
3271                        </t>
3272                        <t>Where &lt;sampler-channel&gt; is the respective sampler channel
3273                        number as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3274                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command, that is the
3275                        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
3277                        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, 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
3283                        are automatically routed to the last audio channels of the sampler channel's
3284                        audio output device, that way you can i.e. first increase the amount of audio
3285                        channels on the audio output device for having dedicated effect send output
3286                        channels and when "CREATE FX_SEND" is called, those channels will automatically
3287                        be picked. You can alter the destination channels however with
3288                        <xref target="SET FX_SEND AUDIO_OUTPUT_CHANNEL">"SET FX_SEND AUDIO_OUTPUT_CHANNEL"</xref>.
3289                        </t>
3290    
3291                        <t>Note: Create effect sends on a sampler channel only when needed, because having effect
3292                        sends on a sampler channel will decrease runtime performance, because for implementing channel
3293                        effect sends, separate (sampler channel local) audio buffers are needed to render and mix
3294                        the voices and route the audio signal afterwards to the master outputs and effect send
3295                        outputs (along with their respective effect send levels). A sampler channel without effect
3296                        sends however can mix its voices directly into the audio output devices's audio buffers
3297                        and is thus faster.
3298                        </t>
3299    
3300                        <t>Possible Answers:</t>
3301                        <t>
3302                            <list>
3303                                <t>"OK[&lt;fx-send-id&gt;]" -
3304                                    <list>
3305                                        <t>in case a new effect send could be added to the
3306                                        sampler channel, where &lt;fx-send-id&gt; reflects the
3307                                        unique ID of the newly created effect send entity</t>
3308                                    </list>
3309                                </t>
3310                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3311                                    <list>
3312                                        <t>when a new effect send could not be added, i.e.
3313                                        due to invalid parameters</t>
3314                                    </list>
3315                                </t>
3316                            </list>
3317                        </t>
3318    
3319                        <t>Examples:</t>
3320                        <t>
3321                            <list>
3322                                <t>C: "CREATE FX_SEND 0 91 'Reverb Send'"</t>
3323                                <t>S: "OK[0]"</t>
3324                            </list>
3325                        </t>
3326                        <t>
3327                            <list>
3328                                <t>C: "CREATE FX_SEND 0 93"</t>
3329                                <t>S: "OK[1]"</t>
3330                            </list>
3331                        </t>
3332                    </section>
3333    
3334                    <section title="Removing an effect send from a sampler channel" anchor="DESTROY FX_SEND">
3335                        <t>The front-end can remove an existing effect send on a specific sampler channel
3336                        by sending the following command:</t>
3337                        <t>
3338                            <list>
3339                                <t>DESTROY FX_SEND &lt;sampler-channel&gt; &lt;fx-send-id&gt;</t>
3340                            </list>
3341                        </t>
3342                        <t>Where &lt;sampler-channel&gt; is the respective sampler channel
3343                        number as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3344                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command, that is the
3345                        sampler channel from which the effect send should be removed from and
3346                        &lt;fx-send-id&gt; is the respective effect send number as returned by the
3347                        <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3348                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command.</t>
3349    
3350                        <t>Possible Answers:</t>
3351                        <t>
3352                            <list>
3353                                <t>"OK" -
3354                                    <list>
3355                                        <t>on success</t>
3356                                    </list>
3357                                </t>
3358                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3359                                    <list>
3360                                        <t>in case it failed, providing an appropriate error code and
3361                                        error message</t>
3362                                    </list>
3363                                </t>
3364                            </list>
3365                        </t>
3366    
3367                        <t>Example:</t>
3368                        <t>
3369                            <list>
3370                                <t>C: "DESTROY FX_SEND 0 0"</t>
3371                                <t>S: "OK"</t>
3372                            </list>
3373                        </t>
3374                    </section>
3375    
3376                    <section title="Getting amount of effect sends on a sampler channel" anchor="GET FX_SENDS">
3377                        <t>The front-end can ask for the amount of effect sends on a specific sampler channel
3378                        by sending the following command:</t>
3379                        <t>
3380                            <list>
3381                                <t>GET FX_SENDS &lt;sampler-channel&gt;</t>
3382                            </list>
3383                        </t>
3384                        <t>Where &lt;sampler-channel&gt; is the respective sampler channel
3385                        number as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3386                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command.</t>
3387    
3388                        <t>Possible Answers:</t>
3389                        <t>
3390                            <list>
3391                                <t>The sampler will answer by returning the number of effect
3392                                sends on the given sampler channel.</t>
3393                            </list>
3394                        </t>
3395    
3396                        <t>Example:</t>
3397                        <t>
3398                            <list>
3399                                <t>C: "GET FX_SENDS 0"</t>
3400                                <t>S: "2"</t>
3401                            </list>
3402                        </t>
3403                    </section>
3404    
3405                    <section title="Listing all effect sends on a sampler channel" anchor="LIST FX_SENDS">
3406                        <t>The front-end can ask for a list of effect sends on a specific sampler channel
3407                        by sending the following command:</t>
3408                        <t>
3409                            <list>
3410                                <t>LIST FX_SENDS &lt;sampler-channel&gt;</t>
3411                            </list>
3412                        </t>
3413                        <t>Where &lt;sampler-channel&gt; is the respective sampler channel
3414                        number as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3415                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command.</t>
3416    
3417                        <t>Possible Answers:</t>
3418                        <t>
3419                            <list>
3420                                <t>The sampler will answer by returning a comma separated list
3421                                with all effect sends' numerical IDs on the given sampler
3422                                channel.</t>
3423                            </list>
3424                        </t>
3425    
3426                        <t>Examples:</t>
3427                        <t>
3428                            <list>
3429                                <t>C: "LIST FX_SENDS 0"</t>
3430                                <t>S: "0,1"</t>
3431                            </list>
3432                        </t>
3433                        <t>
3434                            <list>
3435                                <t>C: "LIST FX_SENDS 1"</t>
3436                                <t>S: ""</t>
3437                            </list>
3438                        </t>
3439                    </section>
3440    
3441                    <section title="Getting effect send information" anchor="GET FX_SEND INFO">
3442                        <t>The front-end can ask for the current settings of an effect send entity
3443                        by sending the following command:</t>
3444                        <t>
3445                            <list>
3446                                <t>GET FX_SEND INFO &lt;sampler-channel&gt; &lt;fx-send-id&gt;</t>
3447                            </list>
3448                        </t>
3449                        <t>Where &lt;sampler-channel&gt; is the sampler channel number
3450                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3451                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command and
3452                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3453                        as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3454                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command.
3455                       </t>
3456    
3457                        <t>Possible Answers:</t>
3458                        <t>
3459                            <list>
3460                                <t>The sampler will answer by sending a &lt;CRLF&gt; separated list.
3461                                Each answer line begins with the settings category name
3462                                followed by a colon and then a space character &lt;SP&gt; and finally
3463                                the info character string to that setting category. At the
3464                                moment the following categories are defined:</t>
3465    
3466                                <t>
3467                                    <list>
3468                                        <t>NAME -
3469                                            <list>
3470                                                <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>
3474                                        </t>
3475                                        <t>MIDI_CONTROLLER -
3476                                            <list>
3477                                                <t>a value between 0 and 127 reflecting the MIDI controller
3478                                                which is able to modify the effect send's send level</t>
3479                                            </list>
3480                                        </t>
3481                                        <t>LEVEL -
3482                                            <list>
3483                                                <t>optionally dotted number reflecting the effect send's
3484                                                current send level (where a value &lt; 1.0 means attenuation
3485                                                and a value > 1.0 means amplification)</t>
3486                                            </list>
3487                                        </t>
3488                                        <t>AUDIO_OUTPUT_ROUTING -
3489                                            <list>
3490                                                <t>comma separated list which reflects to which audio
3491                                                channel of the selected audio output device each
3492                                                effect send output channel is routed to, e.g. "0,3" would
3493                                                mean the effect send's output channel 0 is routed to channel
3494                                                0 of the audio output device and the effect send's output
3495                                                channel 1 is routed to the channel 3 of the audio
3496                                                output device (see
3497                                                <xref target="SET FX_SEND AUDIO_OUTPUT_CHANNEL">"SET FX_SEND AUDIO_OUTPUT_CHANNEL"</xref>
3498                                                for details)</t>
3499                                            </list>
3500                                        </t>
3501                                    </list>
3502                                </t>
3503                            </list>
3504                        </t>
3505                        <t>The mentioned fields above don't have to be in particular order.</t>
3506    
3507                        <t>Example:</t>
3508                        <t>
3509                            <list>
3510                                <t>C: "GET FX_SEND INFO 0 0"</t>
3511                                <t>S: "NAME: Reverb Send"</t>
3512                                <t>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"</t>
3513                                <t>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"</t>
3514                                <t>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"</t>
3515                                <t>&nbsp;&nbsp;&nbsp;"."</t>
3516                            </list>
3517                        </t>
3518                    </section>
3519    
3520                    <section title="Changing effect send's name" anchor="SET FX_SEND NAME">
3521                        <t>The front-end can alter the current name of an effect
3522                        send entity by sending the following command:</t>
3523                        <t>
3524                            <list>
3525                                <t>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;</t>
3526                            </list>
3527                        </t>
3528                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3529                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3530                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3531                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3532                        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
3534                        &lt;name&gt; is the new name of the effect send entity, which
3535                        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>
3541                        <t>
3542                            <list>
3543                                <t>"OK" -
3544                                    <list>
3545                                        <t>on success</t>
3546                                    </list>
3547                                </t>
3548                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3549                                    <list>
3550                                        <t>in case it failed, providing an appropriate error code and error message</t>
3551                                    </list>
3552                                </t>
3553                            </list>
3554                        </t>
3555                        <t>Example:</t>
3556                        <t>
3557                            <list>
3558                                <t>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"</t>
3559                                <t>S: "OK"</t>
3560                            </list>
3561                        </t>
3562                    </section>
3563    
3564                    <section title="Altering effect send's audio routing" anchor="SET FX_SEND AUDIO_OUTPUT_CHANNEL">
3565                        <t>The front-end can alter the destination of an effect send's audio channel on a specific
3566                        sampler channel by sending the following command:</t>
3567                        <t>
3568                            <list>
3569                                <t>SET FX_SEND AUDIO_OUTPUT_CHANNEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;audio-src&gt; &lt;audio-dst&gt;</t>
3570                            </list>
3571                        </t>
3572                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3573                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3574                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3575                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3576                        as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3577                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command,
3578                        &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
3579                        which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
3580                        the audio channel of the selected audio output device where &lt;audio-src&gt;
3581                        should be routed to.</t>
3582    
3583                        <t>Note that effect sends can only route audio to the same audio output
3584                        device as assigned to the effect send's sampler channel. Also note that an
3585                        effect send entity does always have exactly as much audio channels as its
3586                        sampler channel. So if the sampler channel is stereo, the effect send does
3587                        have two audio channels as well. Also keep in mind that the amount of audio
3588                        channels on a sampler channel might be dependant not only to the deployed
3589                        sampler engine on the sampler channel, but also dependant to the instrument
3590                        currently loaded. However you can (effectively) turn an i.e. stereo effect
3591                        send into a mono one by simply altering its audio routing appropriately.</t>
3592    
3593                        <t>Possible Answers:</t>
3594                        <t>
3595                            <list>
3596                                <t>"OK" -
3597                                    <list>
3598                                        <t>on success</t>
3599                                    </list>
3600                                </t>
3601                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3602                                    <list>
3603                                        <t>if audio output channel was set, but there are noteworthy
3604                                        issue(s) related, providing an appropriate warning code and
3605                                        warning message</t>
3606                                    </list>
3607                                </t>
3608                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3609                                    <list>
3610                                        <t>in case it failed, providing an appropriate error code and error message</t>
3611                                    </list>
3612                                </t>
3613                            </list>
3614                        </t>
3615                        <t>Example:</t>
3616                        <t>
3617                            <list>
3618                                <t>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"</t>
3619                                <t>S: "OK"</t>
3620                            </list>
3621                        </t>
3622                    </section>
3623    
3624                    <section title="Altering effect send's MIDI controller" anchor="SET FX_SEND MIDI_CONTROLLER">
3625                        <t>The front-end can alter the MIDI controller of an effect
3626                        send entity by sending the following command:</t>
3627                        <t>
3628                            <list>
3629                                <t>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;</t>
3630                            </list>
3631                        </t>
3632                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3633                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3634                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3635                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3636                        as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3637                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command and
3638                        &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
3639                        able to modify the effect send's send level.</t>
3640    
3641                        <t>Possible Answers:</t>
3642                        <t>
3643                            <list>
3644                                <t>"OK" -
3645                                    <list>
3646                                        <t>on success</t>
3647                                    </list>
3648                                </t>
3649                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3650                                    <list>
3651                                        <t>if MIDI controller was set, but there are noteworthy
3652                                        issue(s) related, providing an appropriate warning code and
3653                                        warning message</t>
3654                                    </list>
3655                                </t>
3656                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3657                                    <list>
3658                                        <t>in case it failed, providing an appropriate error code and error message</t>
3659                                    </list>
3660                                </t>
3661                            </list>
3662                        </t>
3663                        <t>Example:</t>
3664                        <t>
3665                            <list>
3666                                <t>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"</t>
3667                                <t>S: "OK"</t>
3668                            </list>
3669                        </t>
3670                    </section>
3671    
3672                    <section title="Altering effect send's send level" anchor="SET FX_SEND LEVEL">
3673                        <t>The front-end can alter the current send level of an effect
3674                        send entity by sending the following command:</t>
3675                        <t>
3676                            <list>
3677                                <t>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;</t>
3678                            </list>
3679                        </t>
3680                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3681                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3682                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3683                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3684                        as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3685                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command and
3686                        &lt;volume&gt; is an optionally dotted positive number (a value
3687                        smaller than 1.0 means attenuation, whereas a value greater than
3688                        1.0 means amplification) reflecting the new send level.</t>
3689    
3690                        <t>Possible Answers:</t>
3691                        <t>
3692                            <list>
3693                                <t>"OK" -
3694                                    <list>
3695                                        <t>on success</t>
3696                                    </list>
3697                                </t>
3698                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3699                                    <list>
3700                                        <t>if new send level was set, but there are noteworthy
3701                                        issue(s) related, providing an appropriate warning code and
3702                                        warning message</t>
3703                                    </list>
3704                                </t>
3705                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3706                                    <list>
3707                                        <t>in case it failed, providing an appropriate error code and error message</t>
3708                                    </list>
3709                                </t>
3710                            </list>
3711                        </t>
3712                        <t>Example:</t>
3713                        <t>
3714                            <list>
3715                                <t>C: "SET FX_SEND LEVEL 0 0 0.15"</t>
3716                                <t>S: "OK"</t>
3717                            </list>
3718                        </t>
3719                    </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 3329  Schoenebeck'> Line 3960  Schoenebeck'>
3960              <section title="Global commands">              <section title="Global commands">
3961                  <t>The following commands have global impact on the sampler.</t>                  <t>The following commands have global impact on the sampler.</t>
3962    
3963                    <section title="Current number of active voices" anchor="GET TOTAL_VOICE_COUNT">
3964                        <t>The front-end can ask for the current number of active voices on
3965                        the sampler by sending the following command:</t>
3966                        <t>
3967                            <list>
3968                                <t>GET TOTAL_VOICE_COUNT</t>
3969                            </list>
3970                        </t>
3971    
3972                        <t>Possible Answers:</t>
3973                        <t>
3974                            <list>
3975                                <t>LinuxSampler will answer by returning the number of all active
3976                                voices on the sampler.</t>
3977                            </list>
3978                        </t>
3979                    </section>
3980    
3981                    <section title="Maximum amount of active voices" anchor="GET TOTAL_VOICE_COUNT_MAX">
3982                        <t>The front-end can ask for the maximum number of active voices
3983                        by sending the following command:</t>
3984                        <t>
3985                            <list>
3986                                <t>GET TOTAL_VOICE_COUNT_MAX</t>
3987                            </list>
3988                        </t>
3989    
3990                        <t>Possible Answers:</t>
3991                        <t>
3992                            <list>
3993                                <t>LinuxSampler will answer by returning the maximum number
3994                                of active voices.</t>
3995                            </list>
3996                        </t>
3997                    </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 3376  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 3390  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 3397  Schoenebeck'> Line 4090  Schoenebeck'>
4090                      <t>The mentioned fields above don't have to be in particular order.                      <t>The mentioned fields above don't have to be in particular order.
4091                      Other fields might be added in future.</t>                      Other fields might be added in future.</t>
4092                  </section>                  </section>
4093    
4094                    <section title="Getting global volume attenuation" anchor="GET VOLUME">
4095                        <t>The client can ask for the current global sampler-wide volume
4096                        attenuation by sending the following command:</t>
4097                        <t>
4098                            <list>
4099                                <t>GET VOLUME</t>
4100                            </list>
4101                        </t>
4102                        <t>Possible Answers:</t>
4103                        <t>
4104                            <list>
4105                                <t>The sampler will always answer by returning the optional
4106                                dotted floating point coefficient, reflecting the current
4107                                global volume attenuation.
4108                                </t>
4109                            </list>
4110                        </t>
4111                        <t>Note: it is up to the respective sampler engine whether to obey
4112                        that global volume parameter or not, but in general all engines SHOULD
4113                        use this parameter.</t>
4114                    </section>
4115    
4116                    <section title="Setting global volume attenuation" anchor="SET VOLUME">
4117                        <t>The client can alter the current global sampler-wide volume
4118                        attenuation by sending the following command:</t>
4119                        <t>
4120                            <list>
4121                                <t>SET VOLUME &lt;volume&gt;</t>
4122                            </list>
4123                        </t>
4124                       <t>Where &lt;volume&gt; should be replaced by the optional dotted
4125                       floating point value, reflecting the new global volume parameter.
4126                       This value might usually be in the range between 0.0 and 1.0, that
4127                       is for attenuating the overall volume.</t>
4128    
4129                        <t>Possible Answers:</t>
4130                        <t>
4131                            <list>
4132                                <t>"OK" -
4133                                    <list>
4134                                        <t>on success</t>
4135                                    </list>
4136                                </t>
4137                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4138                                    <list>
4139                                        <t>if the global volume was set, but there are noteworthy
4140                                        issue(s) related, providing an appropriate warning code and
4141                                        warning message</t>
4142                                    </list>
4143                                </t>
4144                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4145                                    <list>
4146                                        <t>in case it failed, providing an appropriate error code and error message</t>
4147                                    </list>
4148                                </t>
4149                            </list>
4150                        </t>
4151                    </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>
4290    
4291    
4292                <section title="MIDI Instrument Mapping" anchor="MIDI Instrument Mapping">
4293                    <t>The MIDI protocol provides a way to switch between instruments
4294                    by sending so called MIDI bank select and MIDI program change
4295                    messages which are essentially just numbers. The following commands
4296                    allow to actually map arbitrary MIDI bank select / program change
4297                    numbers with real instruments.</t>
4298                    <t>The sampler allows to manage an arbitrary amount of MIDI
4299                    instrument maps which define which instrument to load on
4300                    which MIDI program change message.</t>
4301                    <t>By default, that is when the sampler is launched, there is no
4302                    map, thus the sampler will simply ignore all program change
4303                    messages. The front-end has to explicitly create at least one
4304                    map, add entries to the map and tell the respective sampler
4305                    channel(s) which MIDI instrument map to use, so the sampler
4306                    knows how to react on a given program change message on the
4307                    respective sampler channel, that is by switching to the
4308                    respectively defined engine type and loading the respective
4309                    instrument. See command
4310                    <xref target="SET CHANNEL MIDI_INSTRUMENT_MAP">"SET CHANNEL MIDI_INSTRUMENT_MAP"</xref>
4311                    for how to assign a MIDI instrument map to a sampler channel.</t>
4312                    <t>Also note per MIDI specification a bank select message does not
4313                    cause to switch to another instrument. Instead when receiving a
4314                    bank select message the bank value will be stored and a subsequent
4315                    program change message (which may occur at any time) will finally
4316                    cause the sampler to switch to the respective instrument as
4317                    reflected by the current MIDI instrument map.</t>
4318    
4319                    <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
4321                        the following command:</t>
4322                        <t>
4323                            <list>
4324                                <t>ADD MIDI_INSTRUMENT_MAP [&lt;name&gt;]</t>
4325                            </list>
4326                        </t>
4327                        <t>Where &lt;name&gt; is an optional argument allowing to
4328                        assign a custom name to the new map. MIDI instrument Map
4329                        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>
4335                        <t>
4336                            <list>
4337                                <t>"OK[&lt;map&gt;]" -
4338                                    <list>
4339                                        <t>in case a new MIDI instrument map could
4340                                        be added, where &lt;map&gt; reflects the
4341                                        unique ID of the newly created MIDI
4342                                        instrument map</t>
4343                                    </list>
4344                                </t>
4345                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4346                                    <list>
4347                                        <t>when a new map could not be created, which
4348                                        might never occur in practice</t>
4349                                    </list>
4350                                </t>
4351                            </list>
4352                        </t>
4353    
4354                        <t>Examples:</t>
4355                        <t>
4356                            <list>
4357                                <t>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Map'"</t>
4358                                <t>S: "OK[0]"</t>
4359                            </list>
4360                        </t>
4361                        <t>
4362                            <list>
4363                                <t>C: "ADD MIDI_INSTRUMENT_MAP 'Standard Drumkit'"</t>
4364                                <t>S: "OK[1]"</t>
4365                            </list>
4366                        </t>
4367                        <t>
4368                            <list>
4369                                <t>C: "ADD MIDI_INSTRUMENT_MAP"</t>
4370                                <t>S: "OK[5]"</t>
4371                            </list>
4372                        </t>
4373                    </section>
4374    
4375                    <section title="Delete one particular or all MIDI instrument maps" anchor="REMOVE MIDI_INSTRUMENT_MAP">
4376                        <t>The front-end can delete a particular MIDI instrument map
4377                        by sending the following command:</t>
4378                        <t>
4379                            <list>
4380                                <t>REMOVE MIDI_INSTRUMENT_MAP &lt;map&gt;</t>
4381                            </list>
4382                        </t>
4383                        <t>Where &lt;map&gt; reflects the unique ID of the map to delete
4384                        as returned by the <xref target="LIST MIDI_INSTRUMENT_MAPS">"LIST MIDI_INSTRUMENT_MAPS"</xref>
4385                        command.</t>
4386                        <t>The front-end can delete all MIDI instrument maps by
4387                        sending the following command:</t>
4388                        <t>
4389                            <list>
4390                                <t>REMOVE MIDI_INSTRUMENT_MAP ALL</t>
4391                            </list>
4392                        </t>
4393    
4394                        <t>Possible Answers:</t>
4395                        <t>
4396                            <list>
4397                                <t>"OK" -
4398                                    <list>
4399                                        <t>in case the map(s) could be deleted</t>
4400                                    </list>
4401                                </t>
4402                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4403                                    <list>
4404                                        <t>when the given map does not exist</t>
4405                                    </list>
4406                                </t>
4407                            </list>
4408                        </t>
4409    
4410                        <t>Examples:</t>
4411                        <t>
4412                            <list>
4413                                <t>C: "REMOVE MIDI_INSTRUMENT_MAP 0"</t>
4414                                <t>S: "OK"</t>
4415                            </list>
4416                        </t>
4417                        <t>
4418                            <list>
4419                                <t>C: "REMOVE MIDI_INSTRUMENT_MAP ALL"</t>
4420                                <t>S: "OK"</t>
4421                            </list>
4422                        </t>
4423                    </section>
4424    
4425                    <section title="Get amount of existing MIDI instrument maps" anchor="GET MIDI_INSTRUMENT_MAPS">
4426                        <t>The front-end can retrieve the current amount of MIDI
4427                        instrument maps by sending the following command:</t>
4428                        <t>
4429                            <list>
4430                                <t>GET MIDI_INSTRUMENT_MAPS</t>
4431                            </list>
4432                        </t>
4433    
4434                        <t>Possible Answers:</t>
4435                        <t>
4436                            <list>
4437                                <t>The sampler will answer by returning the current
4438                                number of MIDI instrument maps.</t>
4439                            </list>
4440                        </t>
4441    
4442                        <t>Example:</t>
4443                        <t>
4444                            <list>
4445                                <t>C: "GET MIDI_INSTRUMENT_MAPS"</t>
4446                                <t>S: "2"</t>
4447                            </list>
4448                        </t>
4449                    </section>
4450    
4451                    <section title="Getting all created MIDI instrument maps" anchor="LIST MIDI_INSTRUMENT_MAPS">
4452                        <t>The number of MIDI instrument maps can change on runtime. To get the
4453                        current list of MIDI instrument maps, the front-end can send the
4454                        following command:</t>
4455                        <t>
4456                            <list>
4457                                <t>LIST MIDI_INSTRUMENT_MAPS</t>
4458                            </list>
4459                        </t>
4460                        <t>Possible Answers:</t>
4461                        <t>
4462                            <list>
4463                                <t>The sampler will answer by returning a comma separated list
4464                                with all MIDI instrument maps' numerical IDs.</t>
4465                            </list>
4466                        </t>
4467                        <t>Example:</t>
4468                        <t>
4469                            <list>
4470                                <t>C: "LIST MIDI_INSTRUMENT_MAPS"</t>
4471                                <t>S: "0,1,5,12"</t>
4472                            </list>
4473                        </t>
4474                    </section>
4475    
4476                    <section title="Getting MIDI instrument map information" anchor="GET MIDI_INSTRUMENT_MAP INFO">
4477                        <t>The front-end can ask for the current settings of a MIDI
4478                        instrument map by sending the following command:</t>
4479                        <t>
4480                            <list>
4481                                <t>GET MIDI_INSTRUMENT_MAP INFO &lt;map&gt;</t>
4482                            </list>
4483                        </t>
4484                        <t>Where &lt;map&gt; is the numerical ID of the map the
4485                        front-end is interested in as returned by the
4486                        <xref target="LIST MIDI_INSTRUMENT_MAPS">"LIST MIDI_INSTRUMENT_MAPS"</xref>
4487                        command.</t>
4488    
4489                        <t>Possible Answers:</t>
4490                        <t>
4491                            <list>
4492                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
4493                                Each answer line begins with the settings category name
4494                                followed by a colon and then a space character &lt;SP&gt; and finally
4495                                the info character string to that setting category. At the
4496                                moment the following categories are defined:</t>
4497    
4498                                <t>
4499                                    <list>
4500                                        <t>NAME -
4501                                            <list>
4502                                                <t>custom name of the given map,
4503                                                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>
4507                                        </t>
4508                                        <t>DEFAULT -
4509                                            <list>
4510                                                <t>either true or false,
4511                                                defines whether this map is the default map</t>
4512                                            </list>
4513                                        </t>
4514                                    </list>
4515                                </t>
4516                            </list>
4517                        </t>
4518                        <t>The mentioned fields above don't have to be in particular order.</t>
4519    
4520                        <t>Example:</t>
4521                        <t>
4522                            <list>
4523                                <t>C: "GET MIDI_INSTRUMENT_MAP INFO 0"</t>
4524                                <t>S: "NAME: Standard Map"</t>
4525                                <t>&nbsp;&nbsp;&nbsp;"DEFAULT: true"</t>
4526                                <t>&nbsp;&nbsp;&nbsp;"."</t>
4527                            </list>
4528                        </t>
4529                    </section>
4530    
4531                    <section title="Renaming a MIDI instrument map" anchor="SET MIDI_INSTRUMENT_MAP NAME">
4532                        <t>The front-end can alter the custom name of a MIDI
4533                        instrument map by sending the following command:</t>
4534                        <t>
4535                            <list>
4536                                <t>SET MIDI_INSTRUMENT_MAP NAME &lt;map&gt; &lt;name&gt;</t>
4537                            </list>
4538                        </t>
4539                        <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
4541                        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>
4547                        <t>
4548                            <list>
4549                                <t>"OK" -
4550                                    <list>
4551                                        <t>on success</t>
4552                                    </list>
4553                                </t>
4554                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4555                                    <list>
4556                                        <t>in case the given map does not exist</t>
4557                                    </list>
4558                                </t>
4559                            </list>
4560                        </t>
4561    
4562                        <t>Example:</t>
4563                        <t>
4564                            <list>
4565                                <t>C: "SET MIDI_INSTRUMENT_MAP NAME 0 'Foo instruments'"</t>
4566                                <t>S: "OK"</t>
4567                            </list>
4568                        </t>
4569                    </section>
4570    
4571                    <section title="Create or replace a MIDI instrument map entry" anchor="MAP MIDI_INSTRUMENT">
4572                        <t>The front-end can create a new or replace an existing entry
4573                        in a sampler's MIDI instrument map by sending the following
4574                        command:</t>
4575                        <t>
4576                            <list>
4577                                <t>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
4578                                &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
4579                                &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
4580                                [&lt;instr_load_mode&gt;] [&lt;name&gt;]</t>
4581                            </list>
4582                        </t>
4583                        <t>Where &lt;map&gt; is the numeric ID of the map to alter,
4584                        &lt;midi_bank&gt; is an integer value between
4585                        0..16383 reflecting the MIDI bank select index,
4586                        &lt;midi_prog&gt; an
4587                        integer value between 0..127 reflecting the MIDI program change
4588                        index, &lt;engine_name&gt; a sampler engine name as returned by
4589                        the <xref target="LIST AVAILABLE_ENGINES">"LIST AVAILABLE_ENGINES"</xref>
4590                        command (not encapsulated into apostrophes), &lt;filename&gt; the name
4591                        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
4595                        within the given file, &lt;volume_value&gt; reflects the master
4596                        volume of the instrument as optionally dotted number (where a
4597                        value &lt; 1.0 means attenuation and a value > 1.0 means
4598                        amplification). This parameter easily allows to adjust the
4599                        volume of all intruments within a custom instrument map
4600                        without having to adjust their instrument files. The
4601                        OPTIONAL &lt;instr_load_mode&gt; argument defines the life
4602                        time of the instrument, that is when the instrument should
4603                        be loaded, when freed and has exactly the following
4604                        possibilities:</t>
4605                        <t>
4606                            <list>
4607                                <t>"ON_DEMAND" -
4608                                    <list>
4609                                        <t>The instrument will be loaded when needed,
4610                                        that is when demanded by at least one sampler
4611                                        channel. It will immediately be freed from memory
4612                                        when not needed by any sampler channel anymore.</t>
4613                                    </list>
4614                                </t>
4615                                <t>"ON_DEMAND_HOLD" -
4616                                    <list>
4617                                        <t>The instrument will be loaded when needed,
4618                                        that is when demanded by at least one sampler
4619                                        channel. It will be kept in memory even when
4620                                        not needed by any sampler channel anymore.
4621                                        Instruments with this mode are only freed
4622                                        when the sampler is reset or all mapping
4623                                        entries with this mode (and respective
4624                                        instrument) are explicitly changed to
4625                                        "ON_DEMAND" and no sampler channel is using
4626                                        the instrument anymore.</t>
4627                                    </list>
4628                                </t>
4629                                <t>"PERSISTENT" -
4630                                    <list>
4631                                        <t>The instrument will immediately be loaded
4632                                        into memory when this mapping
4633                                        command is sent and the instrument is kept all
4634                                        the time. Instruments with this mode are
4635                                        only freed when the sampler is reset or all
4636                                        mapping entries with this mode (and
4637                                        respective instrument) are explicitly
4638                                        changed to "ON_DEMAND" and no sampler
4639                                        channel is using the instrument anymore.</t>
4640                                    </list>
4641                                </t>
4642                                <t>not supplied -
4643                                    <list>
4644                                        <t>In case there is no &lt;instr_load_mode&gt;
4645                                        argument given, it will be up to the
4646                                        InstrumentManager to decide which mode to use.
4647                                        Usually it will use "ON_DEMAND" if an entry
4648                                        for the given instrument does not exist in
4649                                        the InstrumentManager's list yet, otherwise
4650                                        if an entry already exists, it will simply
4651                                        stick with the mode currently reflected by
4652                                        the already existing entry, that is it will
4653                                        not change the mode.</t>
4654                                    </list>
4655                                </t>
4656                            </list>
4657                        </t>
4658                        <t>
4659                        The &lt;instr_load_mode&gt; argument thus allows to define an
4660                        appropriate strategy (low memory consumption vs. fast
4661                        instrument switching) for each instrument individually. Note, the
4662                        following restrictions apply to this argument: "ON_DEMAND_HOLD" and
4663                        "PERSISTENT" have to be supported by the respective sampler engine
4664                        (which is technically the case when the engine provides an
4665                        InstrumentManager for its format). If this is not the case the
4666                        argument will automatically fall back to the default value
4667                        "ON_DEMAND". Also the load mode of one instrument may
4668                        automatically change the laod mode of other instrument(s), i.e.
4669                        because the instruments are part of the same file and the
4670                        engine does not allow a way to manage load modes for them
4671                        individually. Due to this, in case the frontend shows the
4672                        load modes of entries, the frontend should retrieve the actual
4673                        mode by i.e. sending
4674                        <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>
4675                        command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
4676                        (encapsulated into apostrophes, supporting escape sequences as described in chapter
4677                        "<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
4680                        <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>).
4681                        </t>
4682                        <t>
4683                        By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
4684                        completely established in the sampler. The OPTIONAL "NON_MODAL" argument
4685                        however causes the respective "MAP MIDI_INSTRUMENT" command to return
4686                        immediately, that is to let the sampler establish the mapping in the
4687                        background. So this argument might be especially useful for mappings with
4688                        a "PERSISTENT" type, because these have to load the respective instruments
4689                        immediately and might thus block for a very long time. It is recommended
4690                        however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
4691                        because it has the following drawbacks: as "NON_MODAL" instructions return
4692                        immediately, they may not necessarily return an error i.e. when the given
4693                        instrument file turns out to be corrupt, beside that subsequent commands
4694                        in a LSCP instruction sequence might fail, because mandatory mappings are
4695                        not yet completed.
4696                        </t>
4697    
4698                        <t>Possible Answers:</t>
4699                        <t>
4700                            <list>
4701                                <t>"OK" -
4702                                    <list>
4703                                        <t>usually</t>
4704                                    </list>
4705                                </t>
4706                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4707                                    <list>
4708                                        <t>when the given map or engine does not exist or a value
4709                                        is out of range</t>
4710                                    </list>
4711                                </t>
4712                            </list>
4713                        </t>
4714    
4715                        <t>Examples:</t>
4716                        <t>
4717                            <list>
4718                                <t>C: "MAP MIDI_INSTRUMENT 0 3 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"</t>
4719                                <t>S: "OK"</t>
4720                            </list>
4721                        </t>
4722                        <t>
4723                            <list>
4724                                <t>C: "MAP MIDI_INSTRUMENT 0 4 50 gig '/home/john/foostrings.gig' 7 1.0"</t>
4725                                <t>S: "OK"</t>
4726                            </list>
4727                        </t>
4728                        <t>
4729                            <list>
4730                                <t>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"</t>
4731                                <t>S: "OK"</t>
4732                                <t>C: "MAP MIDI_INSTRUMENT 0 1 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"</t>
4733                                <t>S: "OK"</t>
4734                            </list>
4735                        </t>
4736                        <t>
4737                            <list>
4738                                <t>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"</t>
4739                                <t>S: "OK"</t>
4740                            </list>
4741                        </t>
4742                    </section>
4743    
4744                    <section title="Getting ammount of MIDI instrument map entries" anchor="GET MIDI_INSTRUMENTS">
4745                        <t>The front-end can query the amount of currently existing
4746                        entries in a MIDI instrument map by sending the following
4747                        command:</t>
4748                        <t>
4749                            <list>
4750                                <t>GET MIDI_INSTRUMENTS &lt;map&gt;</t>
4751                            </list>
4752                        </t>
4753                        <t>The front-end can query the amount of currently existing
4754                        entries in all MIDI instrument maps by sending the following
4755                        command:</t>
4756                        <t>
4757                            <list>
4758                                <t>GET MIDI_INSTRUMENTS ALL</t>
4759                            </list>
4760                        </t>
4761                        <t>Possible Answers:</t>
4762                        <t>
4763                            <list>
4764                                <t>The sampler will answer by sending the current number of
4765                                entries in the MIDI instrument map(s).</t>
4766                            </list>
4767                        </t>
4768    
4769                        <t>Example:</t>
4770                        <t>
4771                            <list>
4772                                <t>C: "GET MIDI_INSTRUMENTS 0"</t>
4773                                <t>S: "234"</t>
4774                            </list>
4775                        </t>
4776                        <t>
4777                            <list>
4778                                <t>C: "GET MIDI_INSTRUMENTS ALL"</t>
4779                                <t>S: "954"</t>
4780                            </list>
4781                        </t>
4782                    </section>
4783    
4784                    <section title="Getting indeces of all entries of a MIDI instrument map" anchor="LIST MIDI_INSTRUMENTS">
4785                        <t>The front-end can query a list of all currently existing
4786                        entries in a certain MIDI instrument map by sending the following
4787                        command:</t>
4788                        <t>
4789                            <list>
4790                                <t>LIST MIDI_INSTRUMENTS &lt;map&gt;</t>
4791                            </list>
4792                        </t>
4793                        <t>Where &lt;map&gt; is the numeric ID of the MIDI instrument map.</t>
4794                        <t>The front-end can query a list of all currently existing
4795                        entries of all MIDI instrument maps by sending the following
4796                        command:</t>
4797                        <t>
4798                            <list>
4799                                <t>LIST MIDI_INSTRUMENTS ALL</t>
4800                            </list>
4801                        </t>
4802    
4803                        <t>Possible Answers:</t>
4804                        <t>
4805                            <list>
4806                                <t>The sampler will answer by sending a comma separated
4807                                list of map ID - MIDI bank - MIDI program triples, where
4808                                each triple is encapsulated into curly braces. The
4809                                list is returned in one single line. Each triple
4810                                just reflects the key of the respective map entry,
4811                                thus subsequent
4812                                <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>
4813                                command(s) are necessary to retrieve detailed informations
4814                                about each entry.</t>
4815                            </list>
4816                        </t>
4817    
4818                        <t>Example:</t>
4819                        <t>
4820                            <list>
4821                                <t>C: "LIST MIDI_INSTRUMENTS 0"</t>
4822                                <t>S: "{0,0,0},{0,0,1},{0,0,3},{0,1,4},{1,127,127}"</t>
4823                            </list>
4824                        </t>
4825                    </section>
4826    
4827                    <section title="Remove an entry from the MIDI instrument map" anchor="UNMAP MIDI_INSTRUMENT">
4828                        <t>The front-end can delete an entry from a MIDI instrument
4829                        map by sending the following command:</t>
4830                        <t>
4831                            <list>
4832                                <t>UNMAP MIDI_INSTRUMENT &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;</t>
4833                            </list>
4834                        </t>
4835                        <t>
4836                        Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
4837                        &lt;midi_bank&gt; is an integer value between 0..16383
4838                        reflecting the MIDI bank value and
4839                        &lt;midi_prog&gt; an integer value between
4840                        0..127 reflecting the MIDI program value of the map's entrie's key
4841                        index triple.
4842                        </t>
4843    
4844                        <t>Possible Answers:</t>
4845                        <t>
4846                            <list>
4847                                <t>"OK" -
4848                                    <list>
4849                                        <t>usually</t>
4850                                    </list>
4851                                </t>
4852                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4853                                    <list>
4854                                        <t>when index out of bounds</t>
4855                                    </list>
4856                                </t>
4857                            </list>
4858                        </t>
4859    
4860                        <t>Example:</t>
4861                        <t>
4862                            <list>
4863                                <t>C: "UNMAP MIDI_INSTRUMENT 0 2 127"</t>
4864                                <t>S: "OK"</t>
4865                            </list>
4866                        </t>
4867                    </section>
4868    
4869                    <section title="Get current settings of MIDI instrument map entry" anchor="GET MIDI_INSTRUMENT INFO">
4870                        <t>The front-end can retrieve the current settings of a certain
4871                        instrument map entry by sending the following command:</t>
4872                        <t>
4873                            <list>
4874                                <t>GET MIDI_INSTRUMENT INFO &lt;map&gt; &lt;midi_bank&gt; &lt;midi_prog&gt;</t>
4875                            </list>
4876                        </t>
4877                        <t>
4878                        Where &lt;map&gt; is the numeric ID of the MIDI instrument map,
4879                        &lt;midi_bank&gt; is an integer value between 0..16383
4880                        reflecting the MIDI bank value, &lt;midi_bank&gt;
4881                        and &lt;midi_prog&gt; an integer value between
4882                        0..127 reflecting the MIDI program value of the map's entrie's key
4883                        index triple.
4884                        </t>
4885    
4886                        <t>Possible Answers:</t>
4887                        <t>
4888                            <list>
4889                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt;
4890                                separated list. Each answer line begins with the
4891                                information category name followed by a colon and then
4892                                a space character &lt;SP&gt; and finally the info
4893                                character string to that info category. At the moment
4894                                the following categories are defined:</t>
4895                                <t>"NAME" -
4896                                    <list>
4897                                        <t>Name for this MIDI instrument map entry (if defined).
4898                                        This name shall be used by frontends for displaying a
4899                                        name for this mapped instrument. It can be set and
4900                                        changed with the
4901                                        <xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref>
4902                                        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>
4906                                </t>
4907                                <t>"ENGINE_NAME" -
4908                                    <list>
4909                                        <t>Name of the engine to be deployed for this
4910                                        instrument.</t>
4911                                    </list>
4912                                </t>
4913                                <t>"INSTRUMENT_FILE" -
4914                                    <list>
4915                                        <t>File name of the instrument
4916                                        (note that this path may contain
4917                                        <xref target="character_set">escape sequences</xref>).</t>
4918                                    </list>
4919                                </t>
4920                                <t>"INSTRUMENT_NR" -
4921                                    <list>
4922                                        <t>Index of the instrument within the file.</t>
4923                                    </list>
4924                                </t>
4925                                <t>"INSTRUMENT_NAME" -
4926                                    <list>
4927                                        <t>Name of the loaded instrument as reflected by its file.
4928                                        In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
4929                                        cannot be changed (note that this character string may contain
4930                                        <xref target="character_set">escape sequences</xref>).</t>
4931                                    </list>
4932                                </t>
4933                                <t>"LOAD_MODE" -
4934                                    <list>
4935                                        <t>Life time of instrument
4936                                        (see <xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref> for details about this setting).</t>
4937                                    </list>
4938                                </t>
4939                                <t>"VOLUME" -
4940                                    <list>
4941                                        <t>master volume of the instrument as optionally
4942                                        dotted number (where a value &lt; 1.0 means attenuation
4943                                        and a value > 1.0 means amplification)</t>
4944                                    </list>
4945                                </t>
4946                                <t>The mentioned fields above don't have to be in particular order.</t>
4947                            </list>
4948                        </t>
4949    
4950                        <t>Example:</t>
4951                        <t>
4952                            <list>
4953                                <t>C: "GET MIDI_INSTRUMENT INFO 1 45 120"</t>
4954                                <t>S: "NAME: Drums for Foo Song"</t>
4955                                <t>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"</t>
4956                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"</t>
4957                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"</t>
4958                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"</t>
4959                                <t>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"</t>
4960                                <t>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"</t>
4961                                <t>&nbsp;&nbsp;&nbsp;"."</t>
4962                            </list>
4963                        </t>
4964                    </section>
4965    
4966                    <section title="Clear MIDI instrument map" anchor="CLEAR MIDI_INSTRUMENTS">
4967                        <t>The front-end can clear a whole MIDI instrument map, that
4968                        is delete all its entries by sending the following command:</t>
4969                        <t>
4970                            <list>
4971                                <t>CLEAR MIDI_INSTRUMENTS &lt;map&gt;</t>
4972                            </list>
4973                        </t>
4974                        <t>Where &lt;map&gt; is the numeric ID of the map to clear.</t>
4975                        <t>The front-end can clear all MIDI instrument maps, that
4976                        is delete all entries of all maps by sending the following
4977                        command:</t>
4978                        <t>
4979                            <list>
4980                                <t>CLEAR MIDI_INSTRUMENTS ALL</t>
4981                            </list>
4982                        </t>
4983                        <t>The command "CLEAR MIDI_INSTRUMENTS ALL" does not delete the
4984                        maps, only their entries, thus the map's settings like
4985                        custom name will be preservevd.</t>
4986    
4987                       <t>Possible Answers:</t>
4988                        <t>
4989                            <list>
4990                                <t>"OK" -
4991                                    <list>
4992                                        <t>always</t>
4993                                    </list>
4994                                </t>
4995                            </list>
4996                        </t>
4997    
4998                        <t>Examples:</t>
4999                        <t>
5000                           <list>
5001                                <t>C: "CLEAR MIDI_INSTRUMENTS 0"</t>
5002                                <t>S: "OK"</t>
5003                            </list>
5004                        </t>
5005                        <t>
5006                           <list>
5007                                <t>C: "CLEAR MIDI_INSTRUMENTS ALL"</t>
5008                                <t>S: "OK"</t>
5009                            </list>
5010                        </t>
5011                    </section>
5012                </section>
5013    
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>              </section>
6549          </section>          </section>
6550    
# Line 3448  Schoenebeck'> Line 6596  Schoenebeck'>
6596  </t>  </t>
6597  <t>command =  <t>command =
6598          <list>          <list>
6599                  <t>ADD SP CHANNEL                  <t>ADD SP add_instruction
6600                    </t>
6601                    <t>/ MAP SP map_instruction
6602                    </t>
6603                    <t>/ UNMAP SP unmap_instruction
6604                  </t>                  </t>
6605                  <t>/ GET SP get_instruction                  <t>/ GET SP get_instruction
6606                  </t>                  </t>
# Line 3460  Schoenebeck'> Line 6612  Schoenebeck'>
6612                  </t>                  </t>
6613                  <t>/ LOAD SP load_instruction                  <t>/ LOAD SP load_instruction
6614                  </t>                  </t>
6615                  <t>/ REMOVE SP CHANNEL SP sampler_channel                  <t>/ REMOVE SP remove_instruction
6616                  </t>                  </t>
6617                  <t>/ SET SP set_instruction                  <t>/ SET SP set_instruction
6618                  </t>                  </t>
# Line 3468  Schoenebeck'> Line 6620  Schoenebeck'>
6620                  </t>                  </t>
6621                  <t>/ UNSUBSCRIBE SP unsubscribe_event                  <t>/ UNSUBSCRIBE SP unsubscribe_event
6622                  </t>                  </t>
6623                  <t>/ SELECT SP text                  <t>/ RESET SP reset_instruction
6624                    </t>
6625                    <t>/ CLEAR SP clear_instruction
6626                  </t>                  </t>
6627                  <t>/ RESET SP CHANNEL SP sampler_channel                  <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>                  </t>
6639                  <t>/ RESET                  <t>/ RESET
6640                  </t>                  </t>
# Line 3478  Schoenebeck'> Line 6642  Schoenebeck'>
6642                  </t>                  </t>
6643          </list>          </list>
6644  </t>  </t>
6645    <t>add_instruction =
6646            <list>
6647                    <t>CHANNEL
6648                    </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
6668                    </t>
6669                    <t>/ MIDI_INSTRUMENT_MAP SP map_name
6670                    </t>
6671            </list>
6672    </t>
6673  <t>subscribe_event =  <t>subscribe_event =
6674          <list>          <list>
6675                  <t>CHANNEL_COUNT                  <t>AUDIO_OUTPUT_DEVICE_COUNT
6676                    </t>
6677                    <t>/ AUDIO_OUTPUT_DEVICE_INFO
6678                    </t>
6679                    <t>/ MIDI_INPUT_DEVICE_COUNT
6680                    </t>
6681                    <t>/ MIDI_INPUT_DEVICE_INFO
6682                    </t>
6683                    <t>/ CHANNEL_COUNT
6684                    </t>
6685                    <t>/ CHANNEL_MIDI
6686                    </t>
6687                    <t>/ DEVICE_MIDI
6688                  </t>                  </t>
6689                  <t>/ VOICE_COUNT                  <t>/ VOICE_COUNT
6690                  </t>                  </t>
# Line 3490  Schoenebeck'> Line 6694  Schoenebeck'>
6694                  </t>                  </t>
6695                  <t>/ CHANNEL_INFO                  <t>/ CHANNEL_INFO
6696                  </t>                  </t>
6697                    <t>/ FX_SEND_COUNT
6698                    </t>
6699                    <t>/ FX_SEND_INFO
6700                    </t>
6701                    <t>/ MIDI_INSTRUMENT_MAP_COUNT
6702                    </t>
6703                    <t>/ MIDI_INSTRUMENT_MAP_INFO
6704                    </t>
6705                    <t>/ MIDI_INSTRUMENT_COUNT
6706                    </t>
6707                    <t>/ MIDI_INSTRUMENT_INFO
6708                    </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
6724                    </t>
6725                    <t>/ GLOBAL_INFO
6726                    </t>
6727          </list>          </list>
6728  </t>  </t>
6729  <t>unsubscribe_event =  <t>unsubscribe_event =
6730          <list>          <list>
6731                  <t>CHANNEL_COUNT                  <t>AUDIO_OUTPUT_DEVICE_COUNT
6732                    </t>
6733                    <t>/ AUDIO_OUTPUT_DEVICE_INFO
6734                    </t>
6735                    <t>/ MIDI_INPUT_DEVICE_COUNT
6736                    </t>
6737                    <t>/ MIDI_INPUT_DEVICE_INFO
6738                    </t>
6739                    <t>/ CHANNEL_COUNT
6740                    </t>
6741                    <t>/ CHANNEL_MIDI
6742                    </t>
6743                    <t>/ DEVICE_MIDI
6744                  </t>                  </t>
6745                  <t>/ VOICE_COUNT                  <t>/ VOICE_COUNT
6746                  </t>                  </t>
# Line 3506  Schoenebeck'> Line 6750  Schoenebeck'>
6750                  </t>                  </t>
6751                  <t>/ CHANNEL_INFO                  <t>/ CHANNEL_INFO
6752                  </t>                  </t>
6753                    <t>/ FX_SEND_COUNT
6754                    </t>
6755                    <t>/ FX_SEND_INFO
6756                    </t>
6757                    <t>/ MIDI_INSTRUMENT_MAP_COUNT
6758                    </t>
6759                    <t>/ MIDI_INSTRUMENT_MAP_INFO
6760                    </t>
6761                    <t>/ MIDI_INSTRUMENT_COUNT
6762                    </t>
6763                    <t>/ MIDI_INSTRUMENT_INFO
6764                    </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
6780                    </t>
6781                    <t>/ GLOBAL_INFO
6782                    </t>
6783            </list>
6784    </t>
6785    <t>map_instruction =
6786            <list>
6787                    <t>MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value
6788                    </t>
6789                    <t>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode
6790                    </t>
6791                    <t>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP entry_name
6792                    </t>
6793                    <t>/ MIDI_INSTRUMENT SP modal_arg midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode SP entry_name
6794                    </t>
6795            </list>
6796    </t>
6797    <t>unmap_instruction =
6798            <list>
6799                    <t>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog
6800                    </t>
6801            </list>
6802    </t>
6803    <t>remove_instruction =
6804            <list>
6805                    <t>CHANNEL SP sampler_channel
6806                    </t>
6807                    <t>/ MIDI_INSTRUMENT_MAP SP midi_map
6808                    </t>
6809                    <t>/ MIDI_INSTRUMENT_MAP SP ALL
6810                    </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 3560  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
6872                    </t>
6873                    <t>/ TOTAL_VOICE_COUNT_MAX
6874                    </t>
6875                    <t>/ MIDI_INSTRUMENTS SP midi_map
6876                    </t>
6877                    <t>/ MIDI_INSTRUMENTS SP ALL
6878                    </t>
6879                    <t>/ MIDI_INSTRUMENT SP INFO SP midi_map SP midi_bank SP midi_prog
6880                    </t>
6881                    <t>/ MIDI_INSTRUMENT_MAPS
6882                    </t>
6883                    <t>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
6884                    </t>
6885                    <t>/ FX_SENDS SP sampler_channel
6886                    </t>
6887                    <t>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
6888                    </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
6904                    </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 3570  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
6928                  </t>                  </t>
6929                    <t>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
6930                    </t>
6931                    <t>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
6932                    </t>
6933                    <t>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
6934                    </t>
6935                    <t>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
6936                    </t>
6937                    <t>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
6938                    </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
6952                    </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 3588  Schoenebeck'> Line 6966  Schoenebeck'>
6966                  </t>                  </t>
6967                  <t>/ MIDI_INPUT_DEVICE SP string                  <t>/ MIDI_INPUT_DEVICE SP string
6968                  </t>                  </t>
6969                    <t>/ FX_SEND SP sampler_channel SP midi_ctrl
6970                    </t>
6971                    <t>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
6972                    </t>
6973            </list>
6974    </t>
6975    <t>reset_instruction =
6976            <list>
6977                    <t>CHANNEL SP sampler_channel
6978                    </t>
6979            </list>
6980    </t>
6981    <t>clear_instruction =
6982            <list>
6983                    <t>MIDI_INSTRUMENTS SP midi_map
6984                    </t>
6985                    <t>/ MIDI_INSTRUMENTS SP ALL
6986                    </t>
6987            </list>
6988    </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>          </list>
7018  </t>  </t>
7019  <t>destroy_instruction =  <t>destroy_instruction =
# Line 3596  Schoenebeck'> Line 7022  Schoenebeck'>
7022                  </t>                  </t>
7023                  <t>/ MIDI_INPUT_DEVICE SP number                  <t>/ MIDI_INPUT_DEVICE SP number
7024                  </t>                  </t>
7025                    <t>/ FX_SEND SP sampler_channel SP fx_send_id
7026                    </t>
7027          </list>          </list>
7028  </t>  </t>
7029  <t>load_instruction =  <t>load_instruction =
# Line 3630  Schoenebeck'> Line 7058  Schoenebeck'>
7058                  </t>                  </t>
7059                  <t>/ SOLO SP sampler_channel SP boolean                  <t>/ SOLO SP sampler_channel SP boolean
7060                  </t>                  </t>
7061                    <t>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP midi_map
7062                    </t>
7063                    <t>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP NONE
7064                    </t>
7065                    <t>/ MIDI_INSTRUMENT_MAP SP sampler_channel SP DEFAULT
7066                    </t>
7067            </list>
7068    </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 =
7082            <list>
7083                    <t>/* epsilon (empty argument) */
7084                    </t>
7085                    <t>/ NON_MODAL SP
7086                    </t>
7087          </list>          </list>
7088  </t>  </t>
7089  <t>key_val_list =  <t>key_val_list =
# Line 3662  Schoenebeck'> Line 7116  Schoenebeck'>
7116                  </t>                  </t>
7117                  <t>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS                  <t>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
7118                  </t>                  </t>
7119                    <t>/ MIDI_INSTRUMENTS SP midi_map
7120                    </t>
7121                    <t>/ MIDI_INSTRUMENTS SP ALL
7122                    </t>
7123                    <t>/ MIDI_INSTRUMENT_MAPS
7124                    </t>
7125                    <t>/ FX_SENDS SP sampler_channel
7126                    </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 3678  Schoenebeck'> Line 7156  Schoenebeck'>
7156                  </t>                  </t>
7157          </list>          </list>
7158  </t>  </t>
7159    <t>instr_load_mode =
7160            <list>
7161                    <t>ON_DEMAND
7162                    </t>
7163                    <t>/ ON_DEMAND_HOLD
7164                    </t>
7165                    <t>/ PERSISTENT
7166                    </t>
7167            </list>
7168    </t>
7169  <t>device_index =  <t>device_index =
7170          <list>          <list>
7171                  <t>number                  <t>number
# Line 3716  Schoenebeck'> Line 7204  Schoenebeck'>
7204                  </t>                  </t>
7205          </list>          </list>
7206  </t>  </t>
7207    <t>midi_map =
7208            <list>
7209                    <t>number
7210                    </t>
7211            </list>
7212    </t>
7213    <t>midi_bank =
7214            <list>
7215                    <t>number
7216                    </t>
7217            </list>
7218    </t>
7219    <t>midi_prog =
7220            <list>
7221                    <t>number
7222                    </t>
7223            </list>
7224    </t>
7225    <t>midi_ctrl =
7226            <list>
7227                    <t>number
7228                    </t>
7229            </list>
7230    </t>
7231  <t>volume_value =  <t>volume_value =
7232          <list>          <list>
7233                  <t>dotnum                  <t>dotnum
# Line 3736  Schoenebeck'> Line 7248  Schoenebeck'>
7248                  </t>                  </t>
7249          </list>          </list>
7250  </t>  </t>
7251    <t>fx_send_id =
7252            <list>
7253                    <t>number
7254                    </t>
7255            </list>
7256    </t>
7257  <t>engine_name =  <t>engine_name =
7258          <list>          <list>
7259                  <t>string                  <t>string
# Line 3744  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>
7273            </list>
7274    </t>
7275    <t>map_name =
7276            <list>
7277                    <t>stringval_escaped
7278                    </t>
7279            </list>
7280    </t>
7281    <t>entry_name =
7282            <list>
7283                    <t>stringval_escaped
7284                    </t>
7285            </list>
7286    </t>
7287    <t>fx_send_name =
7288            <list>
7289                    <t>stringval_escaped
7290                  </t>                  </t>
7291          </list>          </list>
7292  </t>  </t>
# Line 3756  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
7305                  </t>                  </t>
7306                  <t>/ '\'' string '\''                  <t>/ stringval
                 </t>  
                 <t>/ '\"' string '\"'  
7307                  </t>                  </t>
7308                  <t>/ number                  <t>/ number
7309                  </t>                  </t>
# Line 3770  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">
7460              <t>This chapter will describe all currently defined events supported by LinuxSampler.</t>              <t>This chapter will describe all currently defined events supported by LinuxSampler.</t>
7461    
7462              <section title="Number of sampler channels changed" anchor="SUBSCRIBE CHANNEL">              <section title="Number of audio output devices changed" anchor="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">
7463                    <t>Client may want to be notified when the total number of audio output devices on the
7464                    back-end changes by issuing the following command:</t>
7465                    <t>
7466                        <list>
7467                            <t>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT</t>
7468                        </list>
7469                    </t>
7470                    <t>Server will start sending the following notification messages:</t>
7471                    <t>
7472                        <list>
7473                            <t>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"</t>
7474                        </list>
7475                    </t>
7476                    <t>where &lt;devices&gt; will be replaced by the new number
7477                    of audio output devices.</t>
7478                </section>
7479    
7480                <section title="Audio output device's settings changed" anchor="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">
7481                    <t>Client may want to be notified when changes were made to audio output devices on the
7482                    back-end by issuing the following command:</t>
7483                    <t>
7484                        <list>
7485                            <t>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO</t>
7486                        </list>
7487                    </t>
7488                    <t>Server will start sending the following notification messages:</t>
7489                    <t>
7490                        <list>
7491                            <t>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"</t>
7492                        </list>
7493                    </t>
7494                    <t>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
7495                    which settings has been changed. The front-end will have to send
7496                    the respective command to actually get the audio output device info. Because these messages
7497                    will be triggered by LSCP commands issued by other clients rather than real
7498                    time events happening on the server, it is believed that an empty notification
7499                    message is sufficient here.</t>
7500                </section>
7501    
7502                <section title="Number of MIDI input devices changed" anchor="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">
7503                    <t>Client may want to be notified when the total number of MIDI input devices on the
7504                    back-end changes by issuing the following command:</t>
7505                    <t>
7506                        <list>
7507                            <t>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT</t>
7508                        </list>
7509                    </t>
7510                    <t>Server will start sending the following notification messages:</t>
7511                    <t>
7512                        <list>
7513                            <t>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"</t>
7514                        </list>
7515                    </t>
7516                    <t>where &lt;devices&gt; will be replaced by the new number
7517                    of MIDI input devices.</t>
7518                </section>
7519    
7520                <section title="MIDI input device's settings changed" anchor="SUBSCRIBE MIDI_INPUT_DEVICE_INFO">
7521                    <t>Client may want to be notified when changes were made to MIDI input devices on the
7522                    back-end by issuing the following command:</t>
7523                    <t>
7524                        <list>
7525                            <t>SUBSCRIBE MIDI_INPUT_DEVICE_INFO</t>
7526                        </list>
7527                    </t>
7528                    <t>Server will start sending the following notification messages:</t>
7529                    <t>
7530                        <list>
7531                            <t>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"</t>
7532                        </list>
7533                    </t>
7534                    <t>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
7535                    which settings has been changed. The front-end will have to send
7536                    the respective command to actually get the MIDI input device info. Because these messages
7537                    will be triggered by LSCP commands issued by other clients rather than real
7538                    time events happening on the server, it is believed that an empty notification
7539                    message is sufficient here.</t>
7540                </section>
7541    
7542                <section title="Number of sampler channels changed" anchor="SUBSCRIBE CHANNEL_COUNT">
7543                  <t>Client may want to be notified when the total number of channels on the                  <t>Client may want to be notified when the total number of channels on the
7544                  back-end changes by issuing the following command:</t>                  back-end changes by issuing the following command:</t>
7545                  <t>                  <t>
# Line 3795  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 3806  Schoenebeck'> Line 7618  Schoenebeck'>
7618                  <t>Server will start sending the following notification messages:</t>                  <t>Server will start sending the following notification messages:</t>
7619                  <t>                  <t>
7620                      <list>                      <list>
7621                          <t>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;</t>                          <t>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"</t>
7622                      </list>                      </list>
7623                  </t>                  </t>
7624                  <t>where &lt;sampler-channel&gt; will be replaced by the sampler channel the                  <t>where &lt;sampler-channel&gt; will be replaced by the sampler channel the
# Line 3854  Schoenebeck'> Line 7666  Schoenebeck'>
7666                  "GET CHANNEL BUFFER_FILL PERCENTAGE"</xref> command was issued on this channel.</t>                  "GET CHANNEL BUFFER_FILL PERCENTAGE"</xref> command was issued on this channel.</t>
7667              </section>              </section>
7668    
7669              <section title="Channel information changed" anchor="SUBSCRIBE INFO">              <section title="Channel information changed" anchor="SUBSCRIBE CHANNEL_INFO">
7670                  <t>Client may want to be notified when changes were made to sampler channels on the                  <t>Client may want to be notified when changes were made to sampler channels on the
7671                  back-end by issuing the following command:</t>                  back-end by issuing the following command:</t>
7672                  <t>                  <t>
# Line 3876  Schoenebeck'> Line 7688  Schoenebeck'>
7688                  message is sufficient here.</t>                  message is sufficient here.</t>
7689              </section>              </section>
7690    
7691                <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
7693                    a particular sampler channel is changed by issuing the following command:</t>
7694                    <t>
7695                        <list>
7696                            <t>SUBSCRIBE FX_SEND_COUNT</t>
7697                        </list>
7698                    </t>
7699                    <t>Server will start sending the following notification messages:</t>
7700                    <t>
7701                        <list>
7702                            <t>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"</t>
7703                        </list>
7704                    </t>
7705                    <t>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
7706                    channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
7707                    be replaced by the new number of effect sends on that channel.</t>
7708                </section>
7709    
7710                <section title="Effect send information changed" anchor="SUBSCRIBE FX_SEND_INFO">
7711                    <t>Client may want to be notified when changes were made to effect sends on a
7712                    a particular sampler channel by issuing the following command:</t>
7713                    <t>
7714                        <list>
7715                            <t>SUBSCRIBE FX_SEND_INFO</t>
7716                        </list>
7717                    </t>
7718                    <t>Server will start sending the following notification messages:</t>
7719                    <t>
7720                        <list>
7721                            <t>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"</t>
7722                        </list>
7723                    </t>
7724                    <t>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
7725                    channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
7726                    be replaced by the numerical ID of the changed effect send.</t>
7727                </section>
7728    
7729                <section title="Total number of active voices changed" anchor="SUBSCRIBE TOTAL_VOICE_COUNT">
7730                    <t>Client may want to be notified when the total number of voices on the
7731                    back-end changes by issuing the following command:</t>
7732                    <t>
7733                        <list>
7734                            <t>SUBSCRIBE TOTAL_VOICE_COUNT</t>
7735                        </list>
7736                    </t>
7737                    <t>Server will start sending the following notification messages:</t>
7738                    <t>
7739                        <list>
7740                            <t>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"</t>
7741                        </list>
7742                    </t>
7743                    <t>where &lt;voices&gt; will be replaced by the new number of
7744                    all currently active voices.</t>
7745                </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">
7766                    <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>
7768                    <t>
7769                        <list>
7770                            <t>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT</t>
7771                        </list>
7772                    </t>
7773                    <t>Server will start sending the following notification messages:</t>
7774                    <t>
7775                        <list>
7776                            <t>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"</t>
7777                        </list>
7778                    </t>
7779                    <t>where &lt;maps&gt; will be replaced by the new number
7780                    of MIDI instrument maps.</t>
7781                </section>
7782    
7783                <section title="MIDI instrument map information changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">
7784                    <t>Client may want to be notified when changes were made to MIDI instrument maps on the
7785                    back-end by issuing the following command:</t>
7786                    <t>
7787                        <list>
7788                            <t>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO</t>
7789                        </list>
7790                    </t>
7791                    <t>Server will start sending the following notification messages:</t>
7792                    <t>
7793                        <list>
7794                            <t>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"</t>
7795                        </list>
7796                    </t>
7797                    <t>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
7798                    for which information changes occurred. The front-end will have to send
7799                    the respective command to actually get the MIDI instrument map info. Because these messages
7800                    will be triggered by LSCP commands issued by other clients rather than real
7801                    time events happening on the server, it is believed that an empty notification
7802                    message is sufficient here.</t>
7803                </section>
7804    
7805                <section title="Number of MIDI instruments changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_COUNT">
7806                    <t>Client may want to be notified when the number of MIDI instrument maps on the
7807                    back-end changes by issuing the following command:</t>
7808                    <t>
7809                        <list>
7810                            <t>SUBSCRIBE MIDI_INSTRUMENT_COUNT</t>
7811                        </list>
7812                    </t>
7813                    <t>Server will start sending the following notification messages:</t>
7814                    <t>
7815                        <list>
7816                            <t>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"</t>
7817                        </list>
7818                    </t>
7819                    <t>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
7820                    the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
7821                    the new number of MIDI instruments in the specified map.</t>
7822                </section>
7823    
7824                <section title="MIDI instrument information changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_INFO">
7825                    <t>Client may want to be notified when changes were made to MIDI instruments on the
7826                    back-end by issuing the following command:</t>
7827                    <t>
7828                        <list>
7829                            <t>SUBSCRIBE MIDI_INSTRUMENT_INFO</t>
7830                        </list>
7831                    </t>
7832                    <t>Server will start sending the following notification messages:</t>
7833                    <t>
7834                        <list>
7835                            <t>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"</t>
7836                        </list>
7837                    </t>
7838                    <t>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
7839                    in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
7840                    the location of the changed MIDI instrument in the map. The front-end will have to send
7841                    the respective command to actually get the MIDI instrument info. Because these messages
7842                    will be triggered by LSCP commands issued by other clients rather than real
7843                    time events happening on the server, it is believed that an empty notification
7844                    message is sufficient here.</t>
7845                </section>
7846    
7847                <section title="Global settings changed" anchor="SUBSCRIBE GLOBAL_INFO">
7848                    <t>Client may want to be notified when changes to the global settings
7849                    of the sampler were made by issuing the following command:</t>
7850                    <t>
7851                        <list>
7852                            <t>SUBSCRIBE GLOBAL_INFO</t>
7853                        </list>
7854                    </t>
7855                    <t>Server will start sending the following types of notification messages:</t>
7856                    <t>
7857                        <list>
7858                            <t>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
7859                            golbal volume of the sampler is changed, where &lt;volume&gt; will be
7860                            replaced by the optional dotted floating point value, reflecting the
7861                            new global volume parameter.</t>
7862                        </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>
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>
8003    
8004              <section title="Miscellaneous and debugging events" anchor="SUBSCRIBE MISCELLANEOUS">              <section title="Miscellaneous and debugging events" anchor="SUBSCRIBE MISCELLANEOUS">
8005                  <t>Client may want to be notified of miscellaneous and debugging events occurring at                  <t>Client may want to be notified of miscellaneous and debugging events occurring at
8006                  the server by issuing the following command:</t>                  the server by issuing the following command:</t>
# Line 3954  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.709  
changed lines
  Added in v.1956

  ViewVC Help
Powered by ViewVC