/[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 973 by schoenebeck, Fri Dec 15 21:40:27 2006 UTC revision 2138 by schoenebeck, Mon Oct 4 22:11:53 2010 UTC
# Line 16  Line 16 
16       to an annoying "missing Normative/Informative References" error message -->       to an annoying "missing Normative/Informative References" error message -->
17  <?rfc strict="no" ?>  <?rfc strict="no" ?>
18    
19  <rfc category="std" ipr="full3978" docName="LSCP 1.2">  <rfc category="std" ipr="full3978" docName="LSCP 1.5">
20      <front>      <front>
21          <title>LinuxSampler Control Protocol</title>          <title>LinuxSampler Control Protocol</title>
22          <author initials='C.S.' surname="Schoenebeck" fullname='C.          <author initials='C.S.' surname="Schoenebeck" fullname='C.
# Line 34  Schoenebeck'> Line 34  Schoenebeck'>
34                  <email>schoenebeck at software minus engineering dot org</email>                  <email>schoenebeck at software minus engineering dot org</email>
35              </address>              </address>
36          </author>          </author>
37          <date month="December" year="2006"/>          <date month="October" year="2010"/>
38          <workgroup>LinuxSampler Developers</workgroup>          <workgroup>LinuxSampler Developers</workgroup>
39          <keyword>LSCP</keyword>          <keyword>LSCP</keyword>
40          <abstract>          <abstract>
# Line 61  Schoenebeck'> Line 61  Schoenebeck'>
61              (front-end) and server (LinuxSampler) respectively. Lines in              (front-end) and server (LinuxSampler) respectively. Lines in
62              examples must be interpreted as every line being CRLF              examples must be interpreted as every line being CRLF
63              terminated (carriage return character followed by line feed              terminated (carriage return character followed by line feed
64              character as defined in the ASCII standard), thus the following              character as defined in the ASCII standard <xref target="RFC20"/>),
65              example:</t>              thus the following example:</t>
66    
67              <t>              <t>
68                  <list>                  <list>
# Line 2061  Schoenebeck'> Line 2061  Schoenebeck'>
2061                      or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref>                      or <xref target="LIST MIDI_INPUT_DEVICES">"LIST MIDI_INPUT_DEVICES"</xref>
2062                      command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of                      command, &lt;port&gt; by the MIDI port number, &lt;key&gt; by the name of
2063                      the parameter to change and &lt;value&gt; by the new value for this                      the parameter to change and &lt;value&gt; by the new value for this
2064                      parameter.</t>                      parameter (encapsulated into apostrophes) or NONE (not encapsulated into apostrophes)
2065                        for specifying no value for parameters allowing a list of values.</t>
2066    
2067                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
2068                      <t>                      <t>
# Line 2088  Schoenebeck'> Line 2089  Schoenebeck'>
2089                      <t>Example:</t>                      <t>Example:</t>
2090                      <t>                      <t>
2091                          <list>                          <list>
2092                              <t></t>                              <t>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='20:0'"</t>
2093                                <t>S: "OK"</t>
2094                            </list>
2095                        </t>
2096                        <t>
2097                            <list>
2098                                <t>C: "SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE"</t>
2099                                <t>S: "OK"</t>
2100                          </list>                          </list>
2101                      </t>                      </t>
2102                  </section>                  </section>
# Line 2113  Schoenebeck'> Line 2121  Schoenebeck'>
2121                      number of the sampler channel the instrument should be assigned to.                      number of the sampler channel the instrument should be assigned to.
2122                      Each sampler channel can only have one instrument.</t>                      Each sampler channel can only have one instrument.</t>
2123    
2124                        <t>Notice: since LSCP 1.2 the &lt;filename&gt; argument supports
2125                        escape characters for special characters (see chapter
2126                        "<xref target="character_set">Character Set and Escape Sequences</xref>"
2127                        for details) and accordingly backslash characters in the filename
2128                        MUST now be escaped as well!</t>
2129    
2130                      <t>The difference between regular and NON_MODAL versions of the command                      <t>The difference between regular and NON_MODAL versions of the command
2131                      is that the regular command returns OK only after the instrument has been                      is that the regular command returns OK only after the instrument has been
2132                      fully loaded and the channel is ready to be used while NON_MODAL version                      fully loaded and the channel is ready to be used while NON_MODAL version
# Line 2148  Schoenebeck'> Line 2162  Schoenebeck'>
2162                              </t>                              </t>
2163                          </list>                          </list>
2164                      </t>                      </t>
2165                      <t>Example:</t>                      <t>Example (Unix):</t>
2166                      <t>                      <t>
2167                          <list>                          <list>
2168                              <t></t>                              <t>C: LOAD INSTRUMENT '/home/joe/gigs/cello.gig' 0 0</t>
2169                                <t>S: OK</t>
2170                            </list>
2171                        </t>
2172                        <t>Example (Windows):</t>
2173                        <t>
2174                            <list>
2175                                <t>C: LOAD INSTRUMENT 'D:/MySounds/cello.gig' 0 0</t>
2176                                <t>S: OK</t>
2177                          </list>                          </list>
2178                      </t>                      </t>
2179                  </section>                  </section>
# Line 2429  Schoenebeck'> Line 2451  Schoenebeck'>
2451                                  <list>                                  <list>
2452                                      <t>DESCRIPTION -                                      <t>DESCRIPTION -
2453                                          <list>                                          <list>
2454                                              <t>arbitrary description text about the engine</t>                                              <t>arbitrary description text about the engine
2455                                                (note that the character string may contain
2456                                                <xref target="character_set">escape sequences</xref>)</t>
2457                                          </list>                                          </list>
2458                                      </t>                                      </t>
2459                                       <t>VERSION -                                       <t>VERSION -
# Line 2488  Schoenebeck'> Line 2512  Schoenebeck'>
2512                                          <list>                                          <list>
2513                                              <t>numerical ID of the audio output device which is                                              <t>numerical ID of the audio output device which is
2514                                              currently connected to this sampler channel to output                                              currently connected to this sampler channel to output
2515                                              the audio signal, "NONE" if there's no device                                              the audio signal, "-1" if there's no device
2516                                              connected to this sampler channel</t>                                              connected to this sampler channel</t>
2517                                          </list>                                          </list>
2518                                      </t>                                      </t>
# Line 2513  Schoenebeck'> Line 2537  Schoenebeck'>
2537                                          <list>                                          <list>
2538                                              <t>the file name of the loaded instrument, "NONE" if                                              <t>the file name of the loaded instrument, "NONE" if
2539                                              there's no instrument yet loaded for this sampler                                              there's no instrument yet loaded for this sampler
2540                                              channel</t>                                              channel (note: since LSCP 1.2 this path may contain
2541                                                <xref target="character_set">escape sequences</xref>)</t>
2542                                          </list>                                          </list>
2543                                      </t>                                      </t>
2544                                      <t>INSTRUMENT_NR -                                      <t>INSTRUMENT_NR -
2545                                          <list>                                          <list>
2546                                              <t>the instrument index number of the loaded instrument</t>                                              <t>the instrument index number of the loaded instrument,
2547                                                "-1" if there's no instrument loaded for this sampler
2548                                                channel</t>
2549                                          </list>                                          </list>
2550                                      </t>                                      </t>
2551                                      <t>INSTRUMENT_NAME -                                      <t>INSTRUMENT_NAME -
2552                                          <list>                                          <list>
2553                                              <t>the instrument name of the loaded instrument</t>                                              <t>the instrument name of the loaded instrument
2554                                                (note: since LSCP 1.2 this character string may contain
2555                                                <xref target="character_set">escape sequences</xref>)</t>
2556                                          </list>                                          </list>
2557                                      </t>                                      </t>
2558                                      <t>INSTRUMENT_STATUS -                                      <t>INSTRUMENT_STATUS -
2559                                          <list>                                          <list>
2560                                              <t>integer values 0 to 100 indicating loading progress percentage for the instrument. Negative                                              <t>Integer values 0 to 100 indicating loading progress
2561                                              value indicates a loading exception. Value of 100 indicates that the instrument is fully                                              percentage for the instrument. Negative
2562                                                value indicates a loading exception (also returns "-1" in case no
2563                                                instrument was yet to be loaded on the sampler channel).
2564                                                Value of 100 indicates that the instrument is fully
2565                                              loaded.</t>                                              loaded.</t>
2566                                          </list>                                          </list>
2567                                      </t>                                      </t>
# Line 2537  Schoenebeck'> Line 2569  Schoenebeck'>
2569                                          <list>                                          <list>
2570                                              <t>numerical ID of the MIDI input device which is                                              <t>numerical ID of the MIDI input device which is
2571                                              currently connected to this sampler channel to deliver                                              currently connected to this sampler channel to deliver
2572                                              MIDI input commands, "NONE" if there's no device                                              MIDI input commands, "-1" if there's no device
2573                                              connected to this sampler channel</t>                                              connected to this sampler channel</t>
2574                                          </list>                                          </list>
2575                                      </t>                                      </t>
2576                                      <t>MIDI_INPUT_PORT -                                      <t>MIDI_INPUT_PORT -
2577                                          <list>                                          <list>
2578                                              <t>port number of the MIDI input device</t>                                              <t>port number of the MIDI input device (in case a
2579                                                MIDI device was already assigned to the sampler
2580                                                channel)</t>
2581                                          </list>                                          </list>
2582                                      </t>                                      </t>
2583                                      <t>MIDI_INPUT_CHANNEL -                                      <t>MIDI_INPUT_CHANNEL -
# Line 2555  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 3227  Schoenebeck'> Line 3261  Schoenebeck'>
3261                      </t>                      </t>
3262                  </section>                  </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), if an internal send
3499                                                effect is assigned to the effect
3500                                                send, then this setting defines the
3501                                                audio channel routing to that
3502                                                effect instance respectively</t>
3503                                            </list>
3504                                        </t>
3505                                        <t>SEND_EFFECT -
3506                                            <list>
3507                                                <t>destination send effect chain ID
3508                                                and destination effect chain
3509                                                position, separated by comma in the
3510                                                form "&lt;effect-chain&gt;,&lt;chain-pos&gt;"
3511                                                or "NONE" if there is no send effect
3512                                                assigned to the effect send</t>
3513                                            </list>
3514                                        </t>
3515                                    </list>
3516                                </t>
3517                            </list>
3518                        </t>
3519                        <t>The mentioned fields above don't have to be in particular order.</t>
3520    
3521                        <t>Example:</t>
3522                        <t>
3523                            <list>
3524                                <t>C: "GET FX_SEND INFO 0 0"</t>
3525                                <t>S: "NAME: Reverb Send"</t>
3526                                <t>&nbsp;&nbsp;&nbsp;"MIDI_CONTROLLER: 91"</t>
3527                                <t>&nbsp;&nbsp;&nbsp;"LEVEL: 0.3"</t>
3528                                <t>&nbsp;&nbsp;&nbsp;"AUDIO_OUTPUT_ROUTING: 2,3"</t>
3529                                <t>&nbsp;&nbsp;&nbsp;"."</t>
3530                            </list>
3531                        </t>
3532                    </section>
3533    
3534                    <section title="Changing effect send's name" anchor="SET FX_SEND NAME">
3535                        <t>The front-end can alter the current name of an effect
3536                        send entity by sending the following command:</t>
3537                        <t>
3538                            <list>
3539                                <t>SET FX_SEND NAME &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;name&gt;</t>
3540                            </list>
3541                        </t>
3542                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3543                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3544                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3545                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3546                        as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3547                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command and
3548                        &lt;name&gt; is the new name of the effect send entity, which
3549                        does not have to be unique (name MUST be encapsulated into apostrophes
3550                        and supports escape sequences as described in chapter
3551                        "<xref target="character_set">Character Set and Escape Sequences</xref>").
3552                        </t>
3553    
3554                        <t>Possible Answers:</t>
3555                        <t>
3556                            <list>
3557                                <t>"OK" -
3558                                    <list>
3559                                        <t>on success</t>
3560                                    </list>
3561                                </t>
3562                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3563                                    <list>
3564                                        <t>in case it failed, providing an appropriate error code and error message</t>
3565                                    </list>
3566                                </t>
3567                            </list>
3568                        </t>
3569                        <t>Example:</t>
3570                        <t>
3571                            <list>
3572                                <t>C: "SET FX_SEND NAME 0 0 'Fx Send 1'"</t>
3573                                <t>S: "OK"</t>
3574                            </list>
3575                        </t>
3576                    </section>
3577    
3578                    <section title="Altering effect send's audio routing" anchor="SET FX_SEND AUDIO_OUTPUT_CHANNEL">
3579                        <t>The front-end can alter the destination of an effect send's audio channel on a specific
3580                        sampler channel by sending the following command:</t>
3581                        <t>
3582                            <list>
3583                                <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>
3584                            </list>
3585                        </t>
3586                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3587                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3588                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3589                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3590                        as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3591                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command,
3592                        &lt;audio-src&gt; is the numerical ID of the effect send's audio channel
3593                        which should be rerouted and &lt;audio-dst&gt; is the numerical ID of
3594                        the audio channel of the selected audio output device where &lt;audio-src&gt;
3595                        should be routed to. If an internal send effect is assigned
3596                        to the effect send, then this setting defines the audio
3597                        channel routing to that effect instance respectively.</t>
3598    
3599                        <t>Note that effect sends can only route audio to the same audio output
3600                        device as assigned to the effect send's sampler channel. Also note that an
3601                        effect send entity does always have exactly as much audio channels as its
3602                        sampler channel. So if the sampler channel is stereo, the effect send does
3603                        have two audio channels as well. Also keep in mind that the amount of audio
3604                        channels on a sampler channel might be dependant not only to the deployed
3605                        sampler engine on the sampler channel, but also dependant to the instrument
3606                        currently loaded. However you can (effectively) turn an i.e. stereo effect
3607                        send into a mono one by simply altering its audio routing appropriately.</t>
3608    
3609                        <t>Possible Answers:</t>
3610                        <t>
3611                            <list>
3612                                <t>"OK" -
3613                                    <list>
3614                                        <t>on success</t>
3615                                    </list>
3616                                </t>
3617                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3618                                    <list>
3619                                        <t>if audio output channel was set, but there are noteworthy
3620                                        issue(s) related, providing an appropriate warning code and
3621                                        warning message</t>
3622                                    </list>
3623                                </t>
3624                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3625                                    <list>
3626                                        <t>in case it failed, providing an appropriate error code and error message</t>
3627                                    </list>
3628                                </t>
3629                            </list>
3630                        </t>
3631                        <t>Example:</t>
3632                        <t>
3633                            <list>
3634                                <t>C: "SET FX_SEND AUDIO_OUTPUT_CHANNEL 0 0 0 2"</t>
3635                                <t>S: "OK"</t>
3636                            </list>
3637                        </t>
3638                    </section>
3639    
3640                    <section title="Assigning destination effect to an effect send" anchor="SET FX_SEND SEND_EFFECT">
3641                        <t>The front-end can (re-)assign a destination effect to an
3642                        effect send by sending the following command:</t>
3643                        <t>
3644                            <list>
3645                                <t>SET FX_SEND SEND_EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;</t>
3646                            </list>
3647                        </t>
3648                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3649                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3650                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3651                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3652                        as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3653                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command,
3654                        &lt;effect-chain&gt; by the numerical ID of the destination
3655                        effect chain as returned by the
3656                        <xref target="ADD SEND_EFFECT_CHAIN">"ADD SEND_EFFECT_CHAIN"</xref>
3657                        or
3658                        <xref target="LIST SEND_EFFECT_CHAINS">"LIST SEND_EFFECT_CHAINS"</xref>
3659                        command and &lt;chain-pos&gt; reflects the exact effect
3660                        chain position in the effect chain which hosts the actual
3661                        destination effect.</t>
3662    
3663                        <t>Possible Answers:</t>
3664                        <t>
3665                            <list>
3666                                <t>"OK" -
3667                                    <list>
3668                                        <t>on success</t>
3669                                    </list>
3670                                </t>
3671                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3672                                    <list>
3673                                        <t>in case it failed, providing an appropriate error code and error message</t>
3674                                    </list>
3675                                </t>
3676                            </list>
3677                        </t>
3678                        <t>Example:</t>
3679                        <t>
3680                            <list>
3681                                <t>C: "SET FX_SEND SEND_EFFECT 0 0 2 5"</t>
3682                                <t>S: "OK"</t>
3683                            </list>
3684                        </t>
3685                    </section>
3686    
3687                    <section title="Removing destination effect from an effect send" anchor="REMOVE FX_SEND SEND_EFFECT">
3688                        <t>The front-end can (re-)assign a destination effect to an
3689                        effect send by sending the following command:</t>
3690                        <t>
3691                            <list>
3692                                <t>REMOVE FX_SEND SEND_EFFECT &lt;sampler-chan&gt; &lt;fx-send-id&gt;</t>
3693                            </list>
3694                        </t>
3695                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3696                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3697                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3698                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3699                        as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3700                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command.</t>
3701    
3702                        <t>After the destination effect has been removed from the
3703                        effect send, the audio signal of the effect send will be
3704                        routed directly to the audio output device, according to the
3705                        audio channel routing setting of the effect send.
3706                        </t>
3707    
3708                        <t>Possible Answers:</t>
3709                        <t>
3710                            <list>
3711                                <t>"OK" -
3712                                    <list>
3713                                        <t>on success</t>
3714                                    </list>
3715                                </t>
3716                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3717                                    <list>
3718                                        <t>in case it failed, providing an appropriate error code and error message</t>
3719                                    </list>
3720                                </t>
3721                            </list>
3722                        </t>
3723                        <t>Example:</t>
3724                        <t>
3725                            <list>
3726                                <t>C: "REMOVE FX_SEND SEND_EFFECT 0 0"</t>
3727                                <t>S: "OK"</t>
3728                            </list>
3729                        </t>
3730                    </section>
3731    
3732                    <section title="Altering effect send's MIDI controller" anchor="SET FX_SEND MIDI_CONTROLLER">
3733                        <t>The front-end can alter the MIDI controller of an effect
3734                        send entity by sending the following command:</t>
3735                        <t>
3736                            <list>
3737                                <t>SET FX_SEND MIDI_CONTROLLER &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;midi-ctrl&gt;</t>
3738                            </list>
3739                        </t>
3740                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3741                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3742                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3743                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3744                        as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3745                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command and
3746                        &lt;midi-ctrl&gt; reflects the MIDI controller which shall be
3747                        able to modify the effect send's send level.</t>
3748    
3749                        <t>Possible Answers:</t>
3750                        <t>
3751                            <list>
3752                                <t>"OK" -
3753                                    <list>
3754                                        <t>on success</t>
3755                                    </list>
3756                                </t>
3757                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3758                                    <list>
3759                                        <t>if MIDI controller was set, but there are noteworthy
3760                                        issue(s) related, providing an appropriate warning code and
3761                                        warning message</t>
3762                                    </list>
3763                                </t>
3764                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3765                                    <list>
3766                                        <t>in case it failed, providing an appropriate error code and error message</t>
3767                                    </list>
3768                                </t>
3769                            </list>
3770                        </t>
3771                        <t>Example:</t>
3772                        <t>
3773                            <list>
3774                                <t>C: "SET FX_SEND MIDI_CONTROLLER 0 0 91"</t>
3775                                <t>S: "OK"</t>
3776                            </list>
3777                        </t>
3778                    </section>
3779    
3780                    <section title="Altering effect send's send level" anchor="SET FX_SEND LEVEL">
3781                        <t>The front-end can alter the current send level of an effect
3782                        send entity by sending the following command:</t>
3783                        <t>
3784                            <list>
3785                                <t>SET FX_SEND LEVEL &lt;sampler-chan&gt; &lt;fx-send-id&gt; &lt;volume&gt;</t>
3786                            </list>
3787                        </t>
3788                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3789                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3790                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3791                        &lt;fx-send-id&gt; reflects the numerical ID of the effect send entity
3792                        as returned by the <xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref>
3793                        or <xref target="LIST FX_SENDS">"LIST FX_SENDS"</xref> command and
3794                        &lt;volume&gt; is an optionally dotted positive number (a value
3795                        smaller than 1.0 means attenuation, whereas a value greater than
3796                        1.0 means amplification) reflecting the new send level.</t>
3797    
3798                        <t>Possible Answers:</t>
3799                        <t>
3800                            <list>
3801                                <t>"OK" -
3802                                    <list>
3803                                        <t>on success</t>
3804                                    </list>
3805                                </t>
3806                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
3807                                    <list>
3808                                        <t>if new send level was set, but there are noteworthy
3809                                        issue(s) related, providing an appropriate warning code and
3810                                        warning message</t>
3811                                    </list>
3812                                </t>
3813                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3814                                    <list>
3815                                        <t>in case it failed, providing an appropriate error code and error message</t>
3816                                    </list>
3817                                </t>
3818                            </list>
3819                        </t>
3820                        <t>Example:</t>
3821                        <t>
3822                            <list>
3823                                <t>C: "SET FX_SEND LEVEL 0 0 0.15"</t>
3824                                <t>S: "OK"</t>
3825                            </list>
3826                        </t>
3827                    </section>
3828    
3829                    <section title="Sending MIDI messages to sampler channel" anchor="SEND CHANNEL MIDI_DATA">
3830                        <t>The front-end can send MIDI events to a specific sampler channel
3831                        by sending the following command:</t>
3832                        <t>
3833                            <list>
3834                                <t>SEND CHANNEL MIDI_DATA &lt;midi-msg&gt; &lt;sampler-chan&gt; &lt;arg1&gt; &lt;arg2&gt;</t>
3835                            </list>
3836                        </t>
3837                        <t>Where &lt;sampler-chan&gt; is the sampler channel number
3838                        as returned by the <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
3839                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref> command,
3840                        &lt;arg1&gt; and &lt;arg2&gt; arguments depend on the &lt;midi-msg&gt; argument, which
3841                        specifies the MIDI message type. Currently, the following MIDI messages are supported:</t>
3842                        <t>
3843                            <list>
3844                                <t>"NOTE_ON" -
3845                                    <list>
3846                                        <t>For turning on MIDI notes, where &lt;arg1&gt;
3847                                        specifies the key number and &lt;arg2&gt; the velocity
3848                                        as described in the MIDI specification.</t>
3849                                    </list>
3850                                </t>
3851                                <t>"NOTE_OFF" -
3852                                    <list>
3853                                        <t>For turning a currently playing MIDI note off, where &lt;arg1&gt;
3854                                        specifies the key number and &lt;arg2&gt; the velocity
3855                                        as described in the MIDI specification.</t>
3856                                    </list>
3857                                </t>
3858                                <t>"CC" -
3859                                    <list>
3860                                        <t>For changing a MIDI controller, where &lt;arg1&gt;
3861                                        specifies the controller number and &lt;arg2&gt; the
3862                                        new value of the controller as described in the Control
3863                                        Change section of the MIDI specification.</t>
3864                                    </list>
3865                                </t>
3866                            </list>
3867                        </t>
3868                        <t>CAUTION: This command is provided for implementations of virtual MIDI keyboards
3869                        and no realtime guarantee whatsoever will be made!</t>
3870                        <t>Possible Answers:</t>
3871                        <t>
3872                            <list>
3873                                <t>"OK" -
3874                                    <list>
3875                                        <t>on success</t>
3876                                    </list>
3877                                </t>
3878                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3879                                    <list>
3880                                        <t>in case it failed, providing an appropriate error code and error message</t>
3881                                    </list>
3882                                </t>
3883                            </list>
3884                        </t>
3885                        <t>Example:</t>
3886                        <t>
3887                            <list>
3888                                <t>C: "SEND CHANNEL MIDI_DATA NOTE_ON 0 56 112"</t>
3889                                <t>S: "OK"</t>
3890                            </list>
3891                        </t>
3892                    </section>
3893    
3894                  <section title="Resetting a sampler channel" anchor="RESET CHANNEL">                  <section title="Resetting a sampler channel" anchor="RESET CHANNEL">
3895                      <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>
3896                      <t>                      <t>
# Line 3448  Schoenebeck'> Line 4112  Schoenebeck'>
4112                      </t>                      </t>
4113                  </section>                  </section>
4114    
4115                    <section title="Current number of active disk streams" anchor="GET TOTAL_STREAM_COUNT">
4116                        <t>The front-end can ask for the current number of active disk streams on
4117                        the sampler by sending the following command:</t>
4118                        <t>
4119                            <list>
4120                                <t>GET TOTAL_STREAM_COUNT</t>
4121                            </list>
4122                        </t>
4123    
4124                        <t>Possible Answers:</t>
4125                        <t>
4126                            <list>
4127                                <t>LinuxSampler will answer by returning the number of all active
4128                                disk streams on the sampler.</t>
4129                            </list>
4130                        </t>
4131                    </section>
4132    
4133                  <section title="Reset sampler" anchor="RESET">                  <section title="Reset sampler" anchor="RESET">
4134                      <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>
4135                      <t>                      <t>
# Line 3495  Schoenebeck'> Line 4177  Schoenebeck'>
4177                                  <list>                                  <list>
4178                                      <t>DESCRIPTION -                                      <t>DESCRIPTION -
4179                                          <list>                                          <list>
4180                                              <t>arbitrary textual description about the sampler</t>                                              <t>arbitrary textual description about the sampler
4181                                                (note that the character string may contain
4182                                                <xref target="character_set">escape sequences</xref>)</t>
4183                                          </list>                                          </list>
4184                                      </t>                                      </t>
4185                                      <t>VERSION -                                      <t>VERSION -
# Line 3509  Schoenebeck'> Line 4193  Schoenebeck'>
4193                                              complies with (see <xref target="LSCP versioning" /> for details)</t>                                              complies with (see <xref target="LSCP versioning" /> for details)</t>
4194                                          </list>                                          </list>
4195                                      </t>                                      </t>
4196                                        <t>INSTRUMENTS_DB_SUPPORT -
4197                                            <list>
4198                                                <t>either yes or no, specifies whether the
4199                                                sampler is build with instruments database support.</t>
4200                                            </list>
4201                                        </t>
4202                                  </list>                                  </list>
4203                              </t>                              </t>
4204                          </list>                          </list>
# Line 3516  Schoenebeck'> Line 4206  Schoenebeck'>
4206                      <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.
4207                      Other fields might be added in future.</t>                      Other fields might be added in future.</t>
4208                  </section>                  </section>
4209    
4210                    <section title="Getting global volume attenuation" anchor="GET VOLUME">
4211                        <t>The client can ask for the current global sampler-wide volume
4212                        attenuation by sending the following command:</t>
4213                        <t>
4214                            <list>
4215                                <t>GET VOLUME</t>
4216                            </list>
4217                        </t>
4218                        <t>Possible Answers:</t>
4219                        <t>
4220                            <list>
4221                                <t>The sampler will always answer by returning the optional
4222                                dotted floating point coefficient, reflecting the current
4223                                global volume attenuation.
4224                                </t>
4225                            </list>
4226                        </t>
4227                        <t>Note: it is up to the respective sampler engine whether to obey
4228                        that global volume parameter or not, but in general all engines SHOULD
4229                        use this parameter.</t>
4230                    </section>
4231    
4232                    <section title="Setting global volume attenuation" anchor="SET VOLUME">
4233                        <t>The client can alter the current global sampler-wide volume
4234                        attenuation by sending the following command:</t>
4235                        <t>
4236                            <list>
4237                                <t>SET VOLUME &lt;volume&gt;</t>
4238                            </list>
4239                        </t>
4240                       <t>Where &lt;volume&gt; should be replaced by the optional dotted
4241                       floating point value, reflecting the new global volume parameter.
4242                       This value might usually be in the range between 0.0 and 1.0, that
4243                       is for attenuating the overall volume.</t>
4244    
4245                        <t>Possible Answers:</t>
4246                        <t>
4247                            <list>
4248                                <t>"OK" -
4249                                    <list>
4250                                        <t>on success</t>
4251                                    </list>
4252                                </t>
4253                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4254                                    <list>
4255                                        <t>if the global volume was set, but there are noteworthy
4256                                        issue(s) related, providing an appropriate warning code and
4257                                        warning message</t>
4258                                    </list>
4259                                </t>
4260                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4261                                    <list>
4262                                        <t>in case it failed, providing an appropriate error code and error message</t>
4263                                    </list>
4264                                </t>
4265                            </list>
4266                        </t>
4267                    </section>
4268    
4269                    <section title="Getting global voice limit" anchor="GET VOICES">
4270                        <t>The client can ask for the current global sampler-wide limit
4271                           for maximum voices by sending the following command:</t>
4272                        <t>
4273                            <list>
4274                                <t>GET VOICES</t>
4275                            </list>
4276                        </t>
4277                        <t>Possible Answers:</t>
4278                        <t>
4279                            <list>
4280                                <t>LinuxSampler will answer by returning the number for
4281                                   the current limit of maximum voices.</t>
4282                            </list>
4283                        </t>
4284    
4285                        <t>The voice limit setting defines how many voices should maximum
4286                           be processed by the sampler at the same time. If the user
4287                           triggers new notes which would exceed that voice limit, the
4288                           sampler engine will react by stealing old voices for those
4289                           newly triggered notes. Note that the amount of voices triggered
4290                           by a new note can be larger than one and is dependent to the
4291                           respective instrument and probably further criterias.</t>
4292                    </section>
4293    
4294                    <section title="Setting global voice limit" anchor="SET VOICES">
4295                        <t>The client can alter the current global sampler-wide limit
4296                        for maximum voices by sending the following command:</t>
4297                        <t>
4298                            <list>
4299                                <t>SET VOICES &lt;max-voices&gt;</t>
4300                            </list>
4301                        </t>
4302                       <t>Where &lt;max-voices&gt; should be replaced by the integer
4303                       value, reflecting the new global amount limit of maximum voices.
4304                       This value has to be larger than 0.</t>
4305    
4306                        <t>Possible Answers:</t>
4307                        <t>
4308                            <list>
4309                                <t>"OK" -
4310                                    <list>
4311                                        <t>on success</t>
4312                                    </list>
4313                                </t>
4314                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4315                                    <list>
4316                                        <t>if the voice limit was set, but there are noteworthy
4317                                        issue(s) related, providing an appropriate warning code and
4318                                        warning message</t>
4319                                    </list>
4320                                </t>
4321                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4322                                    <list>
4323                                        <t>in case it failed, providing an appropriate error code and error message</t>
4324                                    </list>
4325                                </t>
4326                            </list>
4327                        </t>
4328    
4329                        <t>Note: the given value will be passed to all sampler engine instances.
4330                           The total amount of maximum voices on the running system might thus
4331                           be as big as the given value multiplied by the current amount of engine
4332                           instances.</t>
4333    
4334                         <t>Caution: when adjusting the voice limit, you SHOULD also
4335                            adjust the disk stream limit respectively and vice versa.</t>
4336                    </section>
4337    
4338                    <section title="Getting global disk stream limit" anchor="GET STREAMS">
4339                        <t>The client can ask for the current global sampler-wide limit
4340                           for maximum disk streams by sending the following command:</t>
4341                        <t>
4342                            <list>
4343                                <t>GET STREAMS</t>
4344                            </list>
4345                        </t>
4346                        <t>Possible Answers:</t>
4347                        <t>
4348                            <list>
4349                                <t>LinuxSampler will answer by returning the number for
4350                                   the current limit of maximum disk streams.</t>
4351                            </list>
4352                        </t>
4353    
4354                        <t>The disk stream limit setting defines how many disk streams should
4355                           maximum be processed by a sampler engine at the same time. The
4356                           higher this value, the more memory (RAM) will be occupied, since
4357                           every disk streams allocates a certain buffer size for being able
4358                           to perform its streaming operations.</t>
4359                    </section>
4360    
4361                    <section title="Setting global disk stream limit" anchor="SET STREAMS">
4362                        <t>The client can alter the current global sampler-wide limit
4363                        for maximum disk streams by sending the following command:</t>
4364                        <t>
4365                            <list>
4366                                <t>SET STREAMS &lt;max-streams&gt;</t>
4367                            </list>
4368                        </t>
4369                       <t>Where &lt;max-streams&gt; should be replaced by the integer
4370                       value, reflecting the new global amount limit of maximum disk streams.
4371                       This value has to be positive.</t>
4372    
4373                        <t>Possible Answers:</t>
4374                        <t>
4375                            <list>
4376                                <t>"OK" -
4377                                    <list>
4378                                        <t>on success</t>
4379                                    </list>
4380                                </t>
4381                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
4382                                    <list>
4383                                        <t>if the disk stream limit was set, but there are noteworthy
4384                                        issue(s) related, providing an appropriate warning code and
4385                                        warning message</t>
4386                                    </list>
4387                                </t>
4388                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
4389                                    <list>
4390                                        <t>in case it failed, providing an appropriate error code and error message</t>
4391                                    </list>
4392                                </t>
4393                            </list>
4394                        </t>
4395    
4396                        <t>Note: the given value will be passed to all sampler engine instances.
4397                           The total amount of maximum disk streams on the running system might
4398                           thus be as big as the given value multiplied by the current amount of
4399                           engine instances.</t>
4400    
4401                         <t>Caution: when adjusting the disk stream limit, you SHOULD also
4402                            adjust the voice limit respectively and vice versa.</t>
4403                    </section>
4404    
4405              </section>              </section>
4406    
4407    
# Line 3546  Schoenebeck'> Line 4432  Schoenebeck'>
4432                  cause the sampler to switch to the respective instrument as                  cause the sampler to switch to the respective instrument as
4433                  reflected by the current MIDI instrument map.</t>                  reflected by the current MIDI instrument map.</t>
4434    
4435                  <section title="Create a new MIDI instrument map" anchor="ADD MIDI_INSTRUMENT MAP">                  <section title="Create a new MIDI instrument map" anchor="ADD MIDI_INSTRUMENT_MAP">
4436                      <t>The front-end can add a new MIDI instrument map by sending                      <t>The front-end can add a new MIDI instrument map by sending
4437                      the following command:</t>                      the following command:</t>
4438                      <t>                      <t>
# Line 3556  Schoenebeck'> Line 4442  Schoenebeck'>
4442                      </t>                      </t>
4443                      <t>Where &lt;name&gt; is an optional argument allowing to                      <t>Where &lt;name&gt; is an optional argument allowing to
4444                      assign a custom name to the new map. MIDI instrument Map                      assign a custom name to the new map. MIDI instrument Map
4445                      names do not have to be unique.</t>                      names do not have to be unique, but MUST be encapsulated
4446                        into apostrophes and support escape sequences as described
4447                        in chapter "<xref target="character_set">Character Set and Escape Sequences</xref>".
4448                        </t>
4449    
4450                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
4451                      <t>                      <t>
# Line 3727  Schoenebeck'> Line 4616  Schoenebeck'>
4616                                      <t>NAME -                                      <t>NAME -
4617                                          <list>                                          <list>
4618                                              <t>custom name of the given map,                                              <t>custom name of the given map,
4619                                              which does not have to be unique</t>                                              which does not have to be unique
4620                                                (note that this character string may contain
4621                                                 <xref target="character_set">escape sequences</xref>)</t>
4622                                            </list>
4623                                        </t>
4624                                        <t>DEFAULT -
4625                                            <list>
4626                                                <t>either true or false,
4627                                                defines whether this map is the default map</t>
4628                                          </list>                                          </list>
4629                                      </t>                                      </t>
4630                                  </list>                                  </list>
# Line 3741  Schoenebeck'> Line 4638  Schoenebeck'>
4638                          <list>                          <list>
4639                              <t>C: "GET MIDI_INSTRUMENT_MAP INFO 0"</t>                              <t>C: "GET MIDI_INSTRUMENT_MAP INFO 0"</t>
4640                              <t>S: "NAME: Standard Map"</t>                              <t>S: "NAME: Standard Map"</t>
4641                                <t>&nbsp;&nbsp;&nbsp;"DEFAULT: true"</t>
4642                              <t>&nbsp;&nbsp;&nbsp;"."</t>                              <t>&nbsp;&nbsp;&nbsp;"."</t>
4643                          </list>                          </list>
4644                      </t>                      </t>
# Line 3756  Schoenebeck'> Line 4654  Schoenebeck'>
4654                      </t>                      </t>
4655                      <t>Where &lt;map&gt; is the numerical ID of the map and                      <t>Where &lt;map&gt; is the numerical ID of the map and
4656                      &lt;name&gt; the new custom name of the map, which does not                      &lt;name&gt; the new custom name of the map, which does not
4657                      have to be unique.</t>                      have to be unique (name MUST be encapsulated into apostrophes
4658                        and supports escape sequences as described in chapter
4659                        "<xref target="character_set">Character Set and Escape Sequences</xref>").
4660                        </t>
4661    
4662                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
4663                      <t>                      <t>
# Line 3789  Schoenebeck'> Line 4690  Schoenebeck'>
4690                      command:</t>                      command:</t>
4691                      <t>                      <t>
4692                          <list>                          <list>
4693                              <t>MAP MIDI_INSTRUMENT &lt;map&gt;                              <t>MAP MIDI_INSTRUMENT [NON_MODAL] &lt;map&gt;
4694                              &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;                              &lt;midi_bank&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
4695                              &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;                              &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
4696                              [&lt;instr_load_mode&gt;] [&lt;name&gt;]</t>                              [&lt;instr_load_mode&gt;] [&lt;name&gt;]</t>
# Line 3803  Schoenebeck'> Line 4704  Schoenebeck'>
4704                      index, &lt;engine_name&gt; a sampler engine name as returned by                      index, &lt;engine_name&gt; a sampler engine name as returned by
4705                      the <xref target="LIST AVAILABLE_ENGINES">"LIST AVAILABLE_ENGINES"</xref>                      the <xref target="LIST AVAILABLE_ENGINES">"LIST AVAILABLE_ENGINES"</xref>
4706                      command (not encapsulated into apostrophes), &lt;filename&gt; the name                      command (not encapsulated into apostrophes), &lt;filename&gt; the name
4707                      of the instrument's file to be deployed (encapsulated into apostrophes),                      of the instrument's file to be deployed (encapsulated into apostrophes,
4708                        supporting escape sequences as described in chapter
4709                        "<xref target="character_set">Character Set and Escape Sequences</xref>"),
4710                      &lt;instrument_index&gt; the index (integer value) of the instrument                      &lt;instrument_index&gt; the index (integer value) of the instrument
4711                      within the given file, &lt;volume_value&gt; reflects the master                      within the given file, &lt;volume_value&gt; reflects the master
4712                      volume of the instrument as optionally dotted number (where a                      volume of the instrument as optionally dotted number (where a
4713                      value < 1.0 means attenuation and a value > 1.0 means                      value &lt; 1.0 means attenuation and a value > 1.0 means
4714                      amplification). This parameter easily allows to adjust the                      amplification). This parameter easily allows to adjust the
4715                      volume of all intruments within a custom instrument map                      volume of all intruments within a custom instrument map
4716                      without having to adjust their instrument files. The                      without having to adjust their instrument files. The
# Line 3842  Schoenebeck'> Line 4745  Schoenebeck'>
4745                              <t>"PERSISTENT" -                              <t>"PERSISTENT" -
4746                                  <list>                                  <list>
4747                                      <t>The instrument will immediately be loaded                                      <t>The instrument will immediately be loaded
4748                                      into memory in the background when this mapping                                      into memory when this mapping
4749                                      command is sent and the instrument is kept all                                      command is sent and the instrument is kept all
4750                                      the time. Instruments with this mode are                                      the time. Instruments with this mode are
4751                                      only freed when the sampler is reset or all                                      only freed when the sampler is reset or all
# Line 3885  Schoenebeck'> Line 4788  Schoenebeck'>
4788                      load modes of entries, the frontend should retrieve the actual                      load modes of entries, the frontend should retrieve the actual
4789                      mode by i.e. sending                      mode by i.e. sending
4790                      <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>                      <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>
4791                      command(s). Finally the OPTIONAL &lt;name&gt; argument allows to                      command(s). Finally the OPTIONAL &lt;name&gt; argument allows to set a custom name
4792                      set a custom name (encapsulated into apostrophes) for the mapping                      (encapsulated into apostrophes, supporting escape sequences as described in chapter
4793                      entry, useful for frontends for displaying an appropriate name for                      "<xref target="character_set">Character Set and Escape Sequences</xref>") for the
4794                        mapping entry, useful for frontends for displaying an appropriate name for
4795                      mapped instruments (using                      mapped instruments (using
4796                      <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>).                      <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>).
4797                      </t>                      </t>
4798                      <t>                      <t>
4799                      The "MAP MIDI_INSTRUMENT" command                      By default, "MAP MIDI_INSTRUMENT" commands block until the mapping is
4800                      will immediately return, thus it will not block when an                      completely established in the sampler. The OPTIONAL "NON_MODAL" argument
4801                      instrument is to be loaded due to a "PERSISTENT" type                      however causes the respective "MAP MIDI_INSTRUMENT" command to return
4802                      entry as instruments are loaded in the background. As a                      immediately, that is to let the sampler establish the mapping in the
4803                      consequence this command may not necessarily return an error                      background. So this argument might be especially useful for mappings with
4804                      i.e. when the given instrument file does not exist or may                      a "PERSISTENT" type, because these have to load the respective instruments
4805                      turn out to be corrupt.                      immediately and might thus block for a very long time. It is recommended
4806                        however to use the OPTIONAL "NON_MODAL" argument only if really necessary,
4807                        because it has the following drawbacks: as "NON_MODAL" instructions return
4808                        immediately, they may not necessarily return an error i.e. when the given
4809                        instrument file turns out to be corrupt, beside that subsequent commands
4810                        in a LSCP instruction sequence might fail, because mandatory mappings are
4811                        not yet completed.
4812                      </t>                      </t>
4813    
4814                      <t>Possible Answers:</t>                      <t>Possible Answers:</t>
# Line 3941  Schoenebeck'> Line 4851  Schoenebeck'>
4851                      </t>                      </t>
4852                      <t>                      <t>
4853                          <list>                          <list>
4854                              <t>C: "MAP MIDI_INSTRUMENT 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"</t>                              <t>C: "MAP MIDI_INSTRUMENT NON_MODAL 1 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"</t>
4855                              <t>S: "OK"</t>                              <t>S: "OK"</t>
4856                          </list>                          </list>
4857                      </t>                      </t>
# Line 4105  Schoenebeck'> Line 5015  Schoenebeck'>
5015                                      name for this mapped instrument. It can be set and                                      name for this mapped instrument. It can be set and
5016                                      changed with the                                      changed with the
5017                                      <xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref>                                      <xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref>
5018                                      command and does not have to be unique.</t>                                      command and does not have to be unique.
5019                                        (note that this character string may contain
5020                                        <xref target="character_set">escape sequences</xref>)</t>
5021                                  </list>                                  </list>
5022                              </t>                              </t>
5023                              <t>"ENGINE_NAME" -                              <t>"ENGINE_NAME" -
# Line 4116  Schoenebeck'> Line 5028  Schoenebeck'>
5028                              </t>                              </t>
5029                              <t>"INSTRUMENT_FILE" -                              <t>"INSTRUMENT_FILE" -
5030                                  <list>                                  <list>
5031                                      <t>File name of the instrument.</t>                                      <t>File name of the instrument
5032                                        (note that this path may contain
5033                                        <xref target="character_set">escape sequences</xref>).</t>
5034                                  </list>                                  </list>
5035                              </t>                              </t>
5036                              <t>"INSTRUMENT_NR" -                              <t>"INSTRUMENT_NR" -
# Line 4128  Schoenebeck'> Line 5042  Schoenebeck'>
5042                                  <list>                                  <list>
5043                                      <t>Name of the loaded instrument as reflected by its file.                                      <t>Name of the loaded instrument as reflected by its file.
5044                                      In contrast to the "NAME" field, the "INSTRUMENT_NAME" field                                      In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
5045                                      cannot be changed.</t>                                      cannot be changed (note that this character string may contain
5046                                        <xref target="character_set">escape sequences</xref>).</t>
5047                                  </list>                                  </list>
5048                              </t>                              </t>
5049                              <t>"LOAD_MODE" -                              <t>"LOAD_MODE" -
# Line 4140  Schoenebeck'> Line 5055  Schoenebeck'>
5055                              <t>"VOLUME" -                              <t>"VOLUME" -
5056                                  <list>                                  <list>
5057                                      <t>master volume of the instrument as optionally                                      <t>master volume of the instrument as optionally
5058                                      dotted number (where a value < 1.0 means attenuation                                      dotted number (where a value &lt; 1.0 means attenuation
5059                                      and a value > 1.0 means amplification)</t>                                      and a value > 1.0 means amplification)</t>
5060                                  </list>                                  </list>
5061                              </t>                              </t>
# Line 4212  Schoenebeck'> Line 5127  Schoenebeck'>
5127                  </section>                  </section>
5128              </section>              </section>
5129    
         </section>  
5130    
5131                <section title="Managing Instruments Database" anchor="Managing Instruments Database">
5132                    <t>The following commands describe how to use and manage
5133                    the instruments database.</t>
5134                    <t>Notice:</t>
5135                        <t>
5136                            <list>
5137                                <t>All command arguments representing a path or
5138                                instrument/directory name support escape sequences as described in chapter
5139                                "<xref target="character_set">Character Set and Escape Sequences</xref>".
5140                                </t>
5141                                <t>All occurrences of a forward slash in instrument and directory
5142                                   names are escaped with its hex (\x2f) or octal (\057) escape sequence.
5143                                </t>
5144                            </list>
5145                        </t>
5146    
5147                    <section title="Creating a new instrument directory" anchor="ADD DB_INSTRUMENT_DIRECTORY">
5148                        <t>The front-end can add a new instrument directory to the
5149                        instruments database by sending the following command:</t>
5150                        <t>
5151                            <list>
5152                                <t>ADD DB_INSTRUMENT_DIRECTORY &lt;dir&gt;</t>
5153                            </list>
5154                        </t>
5155                        <t>Where &lt;dir&gt; is the absolute path name of the directory
5156                        to be created (encapsulated into apostrophes).</t>
5157    
5158                        <t>Possible Answers:</t>
5159                        <t>
5160                            <list>
5161                                <t>"OK" -
5162                                    <list>
5163                                        <t>on success</t>
5164                                    </list>
5165                                </t>
5166                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5167                                    <list>
5168                                        <t>when the directory could not be created, which
5169                                        can happen if the directory already exists or the
5170                                        name contains not allowed symbols</t>
5171                                    </list>
5172                                </t>
5173                            </list>
5174                        </t>
5175    
5176                        <t>Examples:</t>
5177                        <t>
5178                            <list>
5179                                <t>C: "ADD DB_INSTRUMENT_DIRECTORY '/Piano Collection'"</t>
5180                                <t>S: "OK"</t>
5181                            </list>
5182                        </t>
5183                    </section>
5184    
5185                    <section title="Deleting an instrument directory" anchor="REMOVE DB_INSTRUMENT_DIRECTORY">
5186                        <t>The front-end can delete a particular instrument directory
5187                        from the instruments database by sending the following command:</t>
5188                        <t>
5189                            <list>
5190                                <t>REMOVE DB_INSTRUMENT_DIRECTORY [FORCE] &lt;dir&gt;</t>
5191                            </list>
5192                        </t>
5193                        <t>Where &lt;dir&gt; is the absolute path name of the directory
5194                        to delete. The optional FORCE argument can be used to
5195                        force the deletion of a non-empty directory and all its content.</t>
5196    
5197                        <t>Possible Answers:</t>
5198                        <t>
5199                            <list>
5200                                <t>"OK" -
5201                                    <list>
5202                                        <t>if the directory is deleted successfully</t>
5203                                    </list>
5204                                </t>
5205                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5206                                    <list>
5207                                        <t>if the given directory does not exist, or
5208                                        if trying to delete a non-empty directory,
5209                                        without using the FORCE argument.</t>
5210                                    </list>
5211                                </t>
5212                            </list>
5213                        </t>
5214    
5215                        <t>Examples:</t>
5216                        <t>
5217                            <list>
5218                                <t>C: "REMOVE DB_INSTRUMENT_DIRECTORY FORCE '/Piano Collection'"</t>
5219                                <t>S: "OK"</t>
5220                            </list>
5221                        </t>
5222                    </section>
5223    
5224                    <section title="Getting amount of instrument directories" anchor="GET DB_INSTRUMENT_DIRECTORIES">
5225                        <t>The front-end can retrieve the current amount of
5226                        directories in a specific directory by sending the following command:</t>
5227                        <t>
5228                            <list>
5229                                <t>GET DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;</t>
5230                            </list>
5231                        </t>
5232                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5233                        name of the directory. If RECURSIVE is specified, the number of
5234                        all directories, including those located in subdirectories of the
5235                        specified directory, will be returned.</t>
5236    
5237                        <t>Possible Answers:</t>
5238                        <t>
5239                            <list>
5240                                <t>The current number of instrument directories
5241                                in the specified directory.</t>
5242                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5243                                    <list>
5244                                        <t>if the given directory does not exist.</t>
5245                                    </list>
5246                                </t>
5247                            </list>
5248                        </t>
5249    
5250                        <t>Example:</t>
5251                        <t>
5252                            <list>
5253                                <t>C: "GET DB_INSTRUMENT_DIRECTORIES '/'"</t>
5254                                <t>S: "2"</t>
5255                            </list>
5256                        </t>
5257                    </section>
5258    
5259                    <section title="Listing all directories in specific directory" anchor="LIST DB_INSTRUMENT_DIRECTORIES">
5260                        <t>The front-end can retrieve the current list of directories
5261                        in specific directory by sending the following command:</t>
5262                        <t>
5263                            <list>
5264                                <t>LIST DB_INSTRUMENT_DIRECTORIES [RECURSIVE] &lt;dir&gt;</t>
5265                            </list>
5266                        </t>
5267                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5268                        name of the directory. If RECURSIVE is specified, the absolute path names
5269                        of all directories, including those located in subdirectories of the
5270                        specified directory, will be returned.</t>
5271    
5272                        <t>Possible Answers:</t>
5273                        <t>
5274                            <list>
5275                                <t>A comma separated list of all instrument directories
5276                                (encapsulated into apostrophes) in the specified directory.</t>
5277                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5278                                    <list>
5279                                        <t>if the given directory does not exist.</t>
5280                                    </list>
5281                                </t>
5282                            </list>
5283                        </t>
5284                        <t>Example:</t>
5285                        <t>
5286                            <list>
5287                                <t>C: "LIST DB_INSTRUMENT_DIRECTORIES '/'"</t>
5288                                <t>S: "'Piano Collection','Percussion Collection'"</t>
5289                            </list>
5290                        </t>
5291                        <t>
5292                            <list>
5293                                <t>C: "LIST DB_INSTRUMENT_DIRECTORIES RECURSIVE '/'"</t>
5294                                <t>S: "'/Piano Collection','/Piano Collection/Acoustic','/Piano Collection/Acoustic/New','/Percussion Collection'"</t>
5295                            </list>
5296                        </t>
5297                    </section>
5298    
5299                    <section title="Getting instrument directory information" anchor="GET DB_INSTRUMENT_DIRECTORY INFO">
5300                        <t>The front-end can ask for the current settings of an
5301                        instrument directory by sending the following command:</t>
5302                        <t>
5303                            <list>
5304                                <t>GET DB_INSTRUMENT_DIRECTORY INFO &lt;dir&gt;</t>
5305                            </list>
5306                        </t>
5307                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5308                        name of the directory the front-end is interested in.</t>
5309    
5310                        <t>Possible Answers:</t>
5311                        <t>
5312                            <list>
5313                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
5314                                Each answer line begins with the settings category name
5315                                followed by a colon and then a space character &lt;SP&gt; and finally
5316                                the info character string to that setting category. At the
5317                                moment the following categories are defined:</t>
5318    
5319                                <t>
5320                                    <list>
5321                                        <t>DESCRIPTION -
5322                                            <list>
5323                                                <t>A brief description of the directory content.
5324                                                Note that the character string may contain
5325                                                <xref target="character_set">escape sequences</xref>.</t>
5326                                            </list>
5327                                        </t>
5328                                        <t>CREATED -
5329                                            <list>
5330                                                <t>The creation date and time of the directory,
5331                                                represented in "YYYY-MM-DD HH:MM:SS" format</t>
5332                                            </list>
5333                                        </t>
5334                                        <t>MODIFIED -
5335                                            <list>
5336                                                <t>The date and time of the last modification of the
5337                                                directory, represented in "YYYY-MM-DD HH:MM:SS" format</t>
5338                                            </list>
5339                                        </t>
5340                                    </list>
5341                                </t>
5342                            </list>
5343                        </t>
5344                        <t>The mentioned fields above don't have to be in particular order.</t>
5345    
5346                        <t>Example:</t>
5347                        <t>
5348                            <list>
5349                                <t>C: "GET DB_INSTRUMENT_DIRECTORY INFO '/Piano Collection'"</t>
5350                                <t>S: "DESCRIPTION: Piano collection of instruments in GigaSampler format."</t>
5351                                <t>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"</t>
5352                                <t>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"</t>
5353                                <t>&nbsp;&nbsp;&nbsp;"."</t>
5354                            </list>
5355                        </t>
5356                    </section>
5357    
5358                    <section title="Renaming an instrument directory" anchor="SET DB_INSTRUMENT_DIRECTORY NAME">
5359                        <t>The front-end can alter the name of a specific
5360                        instrument directory by sending the following command:</t>
5361                        <t>
5362                            <list>
5363                                <t>SET DB_INSTRUMENT_DIRECTORY NAME &lt;dir&gt; &lt;name&gt;</t>
5364                            </list>
5365                        </t>
5366                        <t>Where &lt;dir&gt; is the absolute path name of the directory and
5367                        &lt;name&gt; is the new name for that directory.</t>
5368    
5369                        <t>Possible Answers:</t>
5370                        <t>
5371                            <list>
5372                                <t>"OK" -
5373                                    <list>
5374                                        <t>on success</t>
5375                                    </list>
5376                                </t>
5377                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5378                                    <list>
5379                                        <t>in case the given directory does not exists,
5380                                        or if a directory with name equal to the new
5381                                        name already exists.</t>
5382                                    </list>
5383                                </t>
5384                            </list>
5385                        </t>
5386    
5387                        <t>Example:</t>
5388                        <t>
5389                            <list>
5390                                <t>C: "SET DB_INSTRUMENT_DIRECTORY NAME '/Piano Collection/Acustic' 'Acoustic'"</t>
5391                                <t>S: "OK"</t>
5392                            </list>
5393                        </t>
5394                    </section>
5395    
5396                    <section title="Moving an instrument directory" anchor="MOVE DB_INSTRUMENT_DIRECTORY">
5397                        <t>The front-end can move a specific
5398                        instrument directory by sending the following command:</t>
5399                        <t>
5400                            <list>
5401                                <t>MOVE DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;</t>
5402                            </list>
5403                        </t>
5404                        <t>Where &lt;dir&gt; is the absolute path name of the directory
5405                        to move and &lt;dst&gt; is the location where the directory will
5406                        be moved to.</t>
5407    
5408                        <t>Possible Answers:</t>
5409                        <t>
5410                            <list>
5411                                <t>"OK" -
5412                                    <list>
5413                                        <t>on success</t>
5414                                    </list>
5415                                </t>
5416                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5417                                    <list>
5418                                        <t>in case a given directory does not exists,
5419                                        or if a directory with name equal to the name
5420                                        of the specified directory already exists in
5421                                        the destination directory. Error is also thrown
5422                                        when trying to move a directory to a subdirectory
5423                                        of itself.</t>
5424                                    </list>
5425                                </t>
5426                            </list>
5427                        </t>
5428    
5429                        <t>Example:</t>
5430                        <t>
5431                            <list>
5432                                <t>C: "MOVE DB_INSTRUMENT_DIRECTORY '/Acoustic' '/Piano Collection/Acoustic'"</t>
5433                                <t>S: "OK"</t>
5434                            </list>
5435                        </t>
5436                    </section>
5437    
5438                    <section title="Copying instrument directories" anchor="COPY DB_INSTRUMENT_DIRECTORY">
5439                        <t>The front-end can copy a specific
5440                        instrument directory by sending the following command:</t>
5441                        <t>
5442                            <list>
5443                                <t>COPY DB_INSTRUMENT_DIRECTORY &lt;dir&gt; &lt;dst&gt;</t>
5444                            </list>
5445                        </t>
5446                        <t>Where &lt;dir&gt; is the absolute path name of the directory
5447                        to copy and &lt;dst&gt; is the location where the directory will
5448                        be copied to.</t>
5449    
5450                        <t>Possible Answers:</t>
5451                        <t>
5452                            <list>
5453                                <t>"OK" -
5454                                    <list>
5455                                        <t>on success</t>
5456                                    </list>
5457                                </t>
5458                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5459                                    <list>
5460                                        <t>in case a given directory does not exists,
5461                                        or if a directory with name equal to the name
5462                                        of the specified directory already exists in
5463                                        the destination directory. Error is also thrown
5464                                        when trying to copy a directory to a subdirectory
5465                                        of itself.</t>
5466                                    </list>
5467                                </t>
5468                            </list>
5469                        </t>
5470    
5471                        <t>Example:</t>
5472                        <t>
5473                            <list>
5474                                <t>C: "COPY DB_INSTRUMENT_DIRECTORY '/Piano Collection/Acoustic' '/Acoustic/Pianos'"</t>
5475                                <t>S: "OK"</t>
5476                            </list>
5477                        </t>
5478                    </section>
5479    
5480                    <section title="Changing the description of directory" anchor="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">
5481                        <t>The front-end can alter the description of a specific
5482                        instrument directory by sending the following command:</t>
5483                        <t>
5484                            <list>
5485                                <t>SET DB_INSTRUMENT_DIRECTORY DESCRIPTION &lt;dir&gt; &lt;desc&gt;</t>
5486                            </list>
5487                        </t>
5488                        <t>Where &lt;dir&gt; is the absolute path name of the directory and
5489                        &lt;desc&gt; is the new description for the directory
5490                        (encapsulated into apostrophes, supporting escape sequences as described in chapter
5491                        "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
5492    
5493                        <t>Possible Answers:</t>
5494                        <t>
5495                            <list>
5496                                <t>"OK" -
5497                                    <list>
5498                                        <t>on success</t>
5499                                    </list>
5500                                </t>
5501                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5502                                    <list>
5503                                        <t>in case the given directory does not exists.</t>
5504                                    </list>
5505                                </t>
5506                            </list>
5507                        </t>
5508    
5509                        <t>Example:</t>
5510                        <t>
5511                            <list>
5512                                <t>C: "SET DB_INSTRUMENT_DIRECTORY DESCRIPTION '/Piano Collection' 'A collection of piano instruments in various format.'"</t>
5513                                <t>S: "OK"</t>
5514                            </list>
5515                        </t>
5516                    </section>
5517    
5518                    <section title="Finding directories" anchor="FIND DB_INSTRUMENT_DIRECTORIES">
5519                        <t>The front-end can search for directories
5520                        in specific directory by sending the following command:</t>
5521                        <t>
5522                            <list>
5523                                <t>FIND DB_INSTRUMENT_DIRECTORIES [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;</t>
5524                            </list>
5525                        </t>
5526                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5527                        name of the directory to search in. If NON_RECURSIVE is specified, the
5528                        directories located in subdirectories of the specified directory will not
5529                        be searched. &lt;criteria-list&gt; is a list of search criterias
5530                        in form of "key1=val1 key2=val2 ...". The following criterias are
5531                        allowed:</t>
5532                        <t>
5533                          <t>NAME='&lt;search-string&gt;'
5534                              <list>
5535                                  <t>Restricts the search to directories, which names
5536                                  satisfy the supplied search string (encapsulated into apostrophes,
5537                                  supporting escape sequences as described in chapter
5538                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
5539                              </list>
5540                          </t>
5541    
5542                          <t>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
5543                              <list>
5544                                  <t>Restricts the search to directories, which creation
5545                                  date satisfies the specified period, where &lt;date-after&gt;
5546                                  and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
5547                                  If &lt;date-after&gt; is omitted the search is restricted to
5548                                  directories created before &lt;date-before&gt;. If
5549                                  &lt;date-before&gt; is omitted, the search is restricted
5550                                  to directories created after &lt;date-after&gt;.</t>
5551                              </list>
5552                          </t>
5553    
5554                          <t>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
5555                              <list>
5556                                  <t>Restricts the search to directories, which
5557                                  date of last modification satisfies the specified period, where
5558                                  &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
5559                                  format. If &lt;date-after&gt; is omitted the search is restricted to
5560                                  directories, which are last modified before &lt;date-before&gt;. If
5561                                  &lt;date-before&gt; is omitted, the search is restricted to directories,
5562                                  which are last modified after &lt;date-after&gt;.</t>
5563                              </list>
5564                          </t>
5565    
5566                          <t>DESCRIPTION='&lt;search-string&gt;'
5567                              <list>
5568                                  <t>Restricts the search to directories with description
5569                                  that satisfies the supplied search string
5570                                  (encapsulated into apostrophes, supporting escape
5571                                  sequences as described in chapter
5572                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
5573                              </list>
5574                          </t>
5575                        </t>
5576    
5577                        <t>Where &lt;search-string&gt; is either a regular expression, or a
5578                        word list separated with spaces for OR search and with '+' for AND search.</t>
5579    
5580                        <t>Possible Answers:</t>
5581                        <t>
5582                            <list>
5583                                <t>A comma separated list with the absolute path names (encapsulated into
5584                                apostrophes) of all directories in the specified directory that satisfy
5585                                the supplied search criterias.</t>
5586                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5587                                    <list>
5588                                        <t>if the given directory does not exist.</t>
5589                                    </list>
5590                                </t>
5591                            </list>
5592                        </t>
5593                        <t>Example:</t>
5594                        <t>
5595                            <list>
5596                                <t>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' NAME='Piano'"</t>
5597                                <t>S: "'/Piano Collection'"</t>
5598                            </list>
5599                        </t>
5600                        <t>
5601                            <list>
5602                                <t>C: "FIND DB_INSTRUMENT_DIRECTORIES '/' CREATED='..2007-04-01 09:30:13'"</t>
5603                                <t>S: "'/Piano Collection','/Percussions'"</t>
5604                            </list>
5605                        </t>
5606                    </section>
5607    
5608                    <section title="Adding instruments to the instruments database" anchor="ADD DB_INSTRUMENTS">
5609                        <t>The front-end can add one or more instruments
5610                        to the instruments database by sending the following command:</t>
5611                        <t>
5612                            <list>
5613                                <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>
5614                            </list>
5615                        </t>
5616                        <t>Where &lt;db_dir&gt; is the absolute path name of a directory
5617                        (encapsulated into apostrophes) in the instruments database in which
5618                        only the new instruments (that are not already in the database) will
5619                        be added, &lt;file_path&gt; is the absolute path name of a file or
5620                        directory in the file system (encapsulated into apostrophes). In case
5621                        an instrument file is supplied, only the instruments in the specified
5622                        file will be added to the instruments database. If the optional
5623                        &lt;instr_index&gt; (the index of the instrument within the given file)
5624                        is supplied too, then only the specified instrument will be added.
5625                        In case a directory is supplied, the instruments in that directory
5626                        will be added. The OPTIONAL &lt;mode&gt; argument is only applied
5627                        when a directory is provided as &lt;file_path&gt; and specifies how the
5628                        scanning will be done and has exactly the following possibilities:</t>
5629                        <t>
5630                            <list>
5631                                <t>"RECURSIVE" -
5632                                    <list>
5633                                        <t>All instruments will be processed, including those
5634                                        in the subdirectories, and the respective subdirectory
5635                                        tree structure will be recreated in the instruments
5636                                        database</t>
5637                                    </list>
5638                                </t>
5639                                <t>"NON_RECURSIVE" -
5640                                    <list>
5641                                        <t>Only the instruments in the specified directory
5642                                        will be added, the instruments in the subdirectories
5643                                        will not be processed.</t>
5644                                    </list>
5645                                </t>
5646                                <t>"FLAT" -
5647                                    <list>
5648                                        <t>All instruments will be processed, including those
5649                                        in the subdirectories, but the respective subdirectory
5650                                        structure will not be recreated in the instruments
5651                                        database. All instruments will be added directly in
5652                                        the specified database directory.</t>
5653                                    </list>
5654                                </t>
5655                            </list>
5656                        </t>
5657    
5658                     <t> If FILE_AS_DIR argument is supplied, all instruments in an instrument
5659                     file will be added to a separate directory in the instruments database, which
5660                     name will be the name of the instrument file with the file extension stripped off.
5661                     </t>
5662                     <t>The difference between regular and NON_MODAL versions of the command
5663                        is that the regular command returns when the scanning is finished
5664                        while NON_MODAL version returns immediately and a background process is launched.
5665                        The <xref target="GET DB_INSTRUMENTS_JOB INFO">GET DB_INSTRUMENTS_JOB INFO</xref>
5666                        command can be used to monitor the scanning progress.</t>
5667    
5668                        <t>Possible Answers:</t>
5669                        <t>
5670                            <list>
5671                                <t>"OK" -
5672                                    <list>
5673                                        <t>on success when NON_MODAL is not supplied</t>
5674                                    </list>
5675                                </t>
5676                                <t>"OK[&lt;job-id&gt;]" -
5677                                    <list>
5678                                        <t>on success when NON_MODAL is supplied, where &lt;job-id&gt;
5679                                        is a numerical ID used to obtain status information about the job progress.
5680                                        See <xref target="GET DB_INSTRUMENTS_JOB INFO">GET DB_INSTRUMENTS_JOB INFO</xref>
5681                                        </t>
5682                                    </list>
5683                                </t>
5684                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5685                                    <list>
5686                                        <t>if an invalid path is specified.</t>
5687                                    </list>
5688                                </t>
5689                            </list>
5690                        </t>
5691    
5692                        <t>Examples:</t>
5693                        <t>
5694                            <list>
5695                                <t>C: "ADD DB_INSTRUMENTS '/Piano Collection' '/home/me/gigs/PMI Bosendorfer 290.gig' 0"</t>
5696                                <t>S: "OK"</t>
5697                            </list>
5698                        </t>
5699                    </section>
5700    
5701                    <section title="Removing an instrument" anchor="REMOVE DB_INSTRUMENT">
5702                        <t>The front-end can remove a particular instrument
5703                        from the instruments database by sending the following command:</t>
5704                        <t>
5705                            <list>
5706                                <t>REMOVE DB_INSTRUMENT &lt;instr_path&gt;</t>
5707                            </list>
5708                        </t>
5709                        <t>Where &lt;instr_path&gt; is the absolute path name
5710                        (in the instruments database) of the instrument to remove.</t>
5711    
5712                        <t>Possible Answers:</t>
5713                        <t>
5714                            <list>
5715                                <t>"OK" -
5716                                    <list>
5717                                        <t>if the instrument is removed successfully</t>
5718                                    </list>
5719                                </t>
5720                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5721                                    <list>
5722                                        <t>if the given path does not exist or
5723                                        is a directory.</t>
5724                                    </list>
5725                                </t>
5726                            </list>
5727                        </t>
5728    
5729                        <t>Examples:</t>
5730                        <t>
5731                            <list>
5732                                <t>C: "REMOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290'"</t>
5733                                <t>S: "OK"</t>
5734                            </list>
5735                        </t>
5736                    </section>
5737    
5738                    <section title="Getting amount of instruments" anchor="GET DB_INSTRUMENTS">
5739                        <t>The front-end can retrieve the current amount of
5740                        instruments in a specific directory by sending the following command:</t>
5741                        <t>
5742                            <list>
5743                                <t>GET DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;</t>
5744                            </list>
5745                        </t>
5746                        <t>Where &lt;dir&gt; should be replaced by the absolute path name
5747                        of the directory. If RECURSIVE is specified, the number of all
5748                        instruments, including those located in subdirectories of the
5749                        specified directory, will be returned.</t>
5750    
5751                        <t>Possible Answers:</t>
5752                        <t>
5753                            <list>
5754                                <t>The current number of instruments
5755                                in the specified directory.</t>
5756                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5757                                    <list>
5758                                        <t>if the given directory does not exist.</t>
5759                                    </list>
5760                                </t>
5761                            </list>
5762                        </t>
5763    
5764                        <t>Example:</t>
5765                        <t>
5766                            <list>
5767                                <t>C: "GET DB_INSTRUMENTS '/Piano Collection'"</t>
5768                                <t>S: "2"</t>
5769                            </list>
5770                        </t>
5771                    </section>
5772    
5773                    <section title="Listing all instruments in specific directory" anchor="LIST DB_INSTRUMENTS">
5774                        <t>The front-end can retrieve the current list of instruments
5775                        in specific directory by sending the following command:</t>
5776                        <t>
5777                            <list>
5778                                <t>LIST DB_INSTRUMENTS [RECURSIVE] &lt;dir&gt;</t>
5779                            </list>
5780                        </t>
5781                        <t>Where &lt;dir&gt; should be replaced by the absolute path
5782                        name of the directory. If RECURSIVE is specified, the absolute path
5783                        names of all instruments, including those located in subdirectories
5784                        of the specified directory, will be returned.</t>
5785    
5786                        <t>Possible Answers:</t>
5787                        <t>
5788                            <list>
5789                                <t>A comma separated list of all instruments
5790                                (encapsulated into apostrophes) in the specified directory.</t>
5791                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5792                                    <list>
5793                                        <t>if the given directory does not exist.</t>
5794                                    </list>
5795                                </t>
5796                            </list>
5797                        </t>
5798                        <t>Example:</t>
5799                        <t>
5800                            <list>
5801                                <t>C: "LIST DB_INSTRUMENTS '/Piano Collection'"</t>
5802                                <t>S: "'Bosendorfer 290','Steinway D'"</t>
5803                            </list>
5804                        </t>
5805                        <t>
5806                            <list>
5807                                <t>C: "LIST DB_INSTRUMENTS RECURSIVE '/Piano Collection'"</t>
5808                                <t>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D','/Piano Collection/Lite/Free Piano'"</t>
5809                            </list>
5810                        </t>
5811                    </section>
5812    
5813                    <section title="Getting instrument information" anchor="GET DB_INSTRUMENT INFO">
5814                        <t>The front-end can ask for the current settings of an
5815                        instrument by sending the following command:</t>
5816                        <t>
5817                            <list>
5818                                <t>GET DB_INSTRUMENT INFO &lt;instr_path&gt;</t>
5819                            </list>
5820                        </t>
5821                        <t>Where &lt;instr_path&gt; should be replaced by the absolute path
5822                        name of the instrument the front-end is interested in.</t>
5823    
5824                        <t>Possible Answers:</t>
5825                        <t>
5826                            <list>
5827                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
5828                                Each answer line begins with the settings category name
5829                                followed by a colon and then a space character &lt;SP&gt; and finally
5830                                the info character string to that setting category. At the
5831                                moment the following categories are defined:</t>
5832    
5833                                <t>
5834                                    <list>
5835                                        <t>INSTRUMENT_FILE -
5836                                            <list>
5837                                                <t>File name of the instrument.
5838                                                Note that the character string may contain
5839                                                <xref target="character_set">escape sequences</xref>.</t>
5840                                            </list>
5841                                        </t>
5842                                        <t>INSTRUMENT_NR -
5843                                            <list>
5844                                                <t>Index of the instrument within the file.</t>
5845                                            </list>
5846                                        </t>
5847                                        <t>FORMAT_FAMILY -
5848                                            <list>
5849                                                <t>The format family of the instrument.</t>
5850                                            </list>
5851                                        </t>
5852                                        <t>FORMAT_VERSION -
5853                                            <list>
5854                                                <t>The format version of the instrument.</t>
5855                                            </list>
5856                                        </t>
5857                                        <t>SIZE -
5858                                            <list>
5859                                                <t>The size of the instrument in bytes.</t>
5860                                            </list>
5861                                        </t>
5862                                        <t>CREATED -
5863                                            <list>
5864                                                <t>The date and time when the instrument is added
5865                                                in the instruments database, represented in
5866                                               "YYYY-MM-DD HH:MM:SS" format</t>
5867                                            </list>
5868                                        </t>
5869                                        <t>MODIFIED -
5870                                            <list>
5871                                                <t>The date and time of the last modification of the
5872                                                instrument's database settings, represented in
5873                                                "YYYY-MM-DD HH:MM:SS" format</t>
5874                                            </list>
5875                                        </t>
5876                                        <t>DESCRIPTION -
5877                                            <list>
5878                                                <t>A brief description of the instrument.
5879                                                Note that the character string may contain
5880                                                <xref target="character_set">escape sequences</xref>.</t>
5881                                            </list>
5882                                        </t>
5883                                        <t>IS_DRUM -
5884                                            <list>
5885                                                <t>either true or false, determines whether the
5886                                                instrument is a drumkit or a chromatic instrument</t>
5887                                            </list>
5888                                        </t>
5889                                        <t>PRODUCT -
5890                                            <list>
5891                                                <t>The product title of the instrument.
5892                                                Note that the character string may contain
5893                                                <xref target="character_set">escape sequences</xref>.</t>
5894                                            </list>
5895                                        </t>
5896                                        <t>ARTISTS -
5897                                            <list>
5898                                                <t>Lists the artist names.
5899                                                Note that the character string may contain
5900                                                <xref target="character_set">escape sequences</xref>.</t>
5901                                            </list>
5902                                        </t>
5903                                        <t>KEYWORDS -
5904                                            <list>
5905                                                <t>Provides a list of keywords that refer to the instrument.
5906                                                Keywords are separated with semicolon and blank.
5907                                                Note that the character string may contain
5908                                                <xref target="character_set">escape sequences</xref>.</t>
5909                                            </list>
5910                                        </t>
5911                                    </list>
5912                                </t>
5913                            </list>
5914                        </t>
5915                        <t>The mentioned fields above don't have to be in particular order.</t>
5916    
5917                        <t>Example:</t>
5918                        <t>
5919                            <list>
5920                                <t>C: "GET DB_INSTRUMENT INFO '/Piano Collection/Bosendorfer 290'"</t>
5921                                <t>S: "INSTRUMENT_FILE: /home/me/gigs/Bosendorfer 290.gig"</t>
5922                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"</t>
5923                                <t>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"</t>
5924                                <t>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 2"</t>
5925                                <t>&nbsp;&nbsp;&nbsp;"SIZE: 2050871870"</t>
5926                                <t>&nbsp;&nbsp;&nbsp;"CREATED: 2007-02-05 10:23:12"</t>
5927                                <t>&nbsp;&nbsp;&nbsp;"MODIFIED: 2007-04-07 12:50:21"</t>
5928                                <t>&nbsp;&nbsp;&nbsp;"DESCRIPTION: "</t>
5929                                <t>&nbsp;&nbsp;&nbsp;"IS_DRUM: false"</t>
5930                                <t>&nbsp;&nbsp;&nbsp;"PRODUCT: GRANDIOSO Bosendorfer 290"</t>
5931                                <t>&nbsp;&nbsp;&nbsp;"ARTISTS: Post Musical Instruments"</t>
5932                                <t>&nbsp;&nbsp;&nbsp;"KEYWORDS: Bosendorfer"</t>
5933                                <t>&nbsp;&nbsp;&nbsp;"."</t>
5934                            </list>
5935                        </t>
5936                    </section>
5937    
5938                    <section title="Renaming an instrument" anchor="SET DB_INSTRUMENT NAME">
5939                        <t>The front-end can alter the name of a specific
5940                        instrument by sending the following command:</t>
5941                        <t>
5942                            <list>
5943                                <t>SET DB_INSTRUMENT NAME &lt;instr&gt; &lt;name&gt;</t>
5944                            </list>
5945                        </t>
5946                        <t>Where &lt;instr&gt; is the absolute path name of the instrument and
5947                        &lt;name&gt; is the new name for that instrument.</t>
5948    
5949                        <t>Possible Answers:</t>
5950                        <t>
5951                            <list>
5952                                <t>"OK" -
5953                                    <list>
5954                                        <t>on success</t>
5955                                    </list>
5956                                </t>
5957                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5958                                    <list>
5959                                        <t>in case the given instrument does not exists,
5960                                        or if an instrument with name equal to the new
5961                                        name already exists.</t>
5962                                    </list>
5963                                </t>
5964                            </list>
5965                        </t>
5966    
5967                        <t>Example:</t>
5968                        <t>
5969                            <list>
5970                                <t>C: "SET DB_INSTRUMENT NAME '/Piano Collection/Bosendorfer' 'Bosendorfer 290'"</t>
5971                                <t>S: "OK"</t>
5972                            </list>
5973                        </t>
5974                    </section>
5975    
5976                    <section title="Moving an instrument" anchor="MOVE DB_INSTRUMENT">
5977                        <t>The front-end can move a specific instrument to another directory by
5978                        sending the following command:</t>
5979                        <t>
5980                            <list>
5981                                <t>MOVE DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;</t>
5982                            </list>
5983                        </t>
5984                        <t>Where &lt;instr&gt; is the absolute path name of the instrument
5985                        to move and &lt;dst&gt; is the directory where the instrument will
5986                        be moved to.</t>
5987    
5988                        <t>Possible Answers:</t>
5989                        <t>
5990                            <list>
5991                                <t>"OK" -
5992                                    <list>
5993                                        <t>on success</t>
5994                                    </list>
5995                                </t>
5996                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
5997                                    <list>
5998                                        <t>in case the given instrument does not exists,
5999                                        or if an instrument with name equal to the name of the
6000                                        specified instrument already exists in the destination
6001                                        directory.</t>
6002                                    </list>
6003                                </t>
6004                            </list>
6005                        </t>
6006    
6007                        <t>Example:</t>
6008                        <t>
6009                            <list>
6010                                <t>C: "MOVE DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Piano Collection/Acoustic'"</t>
6011                                <t>S: "OK"</t>
6012                            </list>
6013                        </t>
6014                    </section>
6015    
6016                    <section title="Copying instruments" anchor="COPY DB_INSTRUMENT">
6017                        <t>The front-end can copy a specific instrument to another directory by
6018                        sending the following command:</t>
6019                        <t>
6020                            <list>
6021                                <t>COPY DB_INSTRUMENT &lt;instr&gt; &lt;dst&gt;</t>
6022                            </list>
6023                        </t>
6024                        <t>Where &lt;instr&gt; is the absolute path name of the instrument
6025                        to copy and &lt;dst&gt; is the directory where the instrument will
6026                        be copied to.</t>
6027    
6028                        <t>Possible Answers:</t>
6029                        <t>
6030                            <list>
6031                                <t>"OK" -
6032                                    <list>
6033                                        <t>on success</t>
6034                                    </list>
6035                                </t>
6036                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6037                                    <list>
6038                                        <t>in case the given instrument does not exists,
6039                                        or if an instrument with name equal to the name of the
6040                                        specified instrument already exists in the destination
6041                                        directory.</t>
6042                                    </list>
6043                                </t>
6044                            </list>
6045                        </t>
6046    
6047                        <t>Example:</t>
6048                        <t>
6049                            <list>
6050                                <t>C: "COPY DB_INSTRUMENT '/Piano Collection/Bosendorfer 290' '/Acoustic/Pianos/'"</t>
6051                                <t>S: "OK"</t>
6052                            </list>
6053                        </t>
6054                    </section>
6055    
6056                    <section title="Changing the description of instrument" anchor="SET DB_INSTRUMENT DESCRIPTION">
6057                        <t>The front-end can alter the description of a specific
6058                        instrument by sending the following command:</t>
6059                        <t>
6060                            <list>
6061                                <t>SET DB_INSTRUMENT DESCRIPTION &lt;instr&gt; &lt;desc&gt;</t>
6062                            </list>
6063                        </t>
6064                        <t>Where &lt;instr&gt; is the absolute path name of the instrument and
6065                        &lt;desc&gt; is the new description for the instrument
6066                        (encapsulated into apostrophes, supporting escape sequences as described in chapter
6067                        "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
6068    
6069                        <t>Possible Answers:</t>
6070                        <t>
6071                            <list>
6072                                <t>"OK" -
6073                                    <list>
6074                                        <t>on success</t>
6075                                    </list>
6076                                </t>
6077                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6078                                    <list>
6079                                        <t>in case the given instrument does not exists.</t>
6080                                    </list>
6081                                </t>
6082                            </list>
6083                        </t>
6084    
6085                        <t>Example:</t>
6086                        <t>
6087                            <list>
6088                                <t>C: "SET DB_INSTRUMENT DESCRIPTION '/Piano Collection/Acoustic/Bosendorfer 290' 'No comment :)'"</t>
6089                                <t>S: "OK"</t>
6090                            </list>
6091                        </t>
6092                    </section>
6093    
6094                    <section title="Finding instruments" anchor="FIND DB_INSTRUMENTS">
6095                        <t>The front-end can search for instruments
6096                        in specific directory by sending the following command:</t>
6097                        <t>
6098                            <list>
6099                                <t>FIND DB_INSTRUMENTS [NON_RECURSIVE] &lt;dir&gt; &lt;criteria-list&gt;</t>
6100                            </list>
6101                        </t>
6102                        <t>Where &lt;dir&gt; should be replaced by the absolute path
6103                        name of the directory to search in. If NON_RECURSIVE is specified, the
6104                        directories located in subdirectories of the specified directory will not
6105                        be searched. &lt;criteria-list&gt; is a list of search criterias
6106                        in form of "key1=val1 key2=val2 ...". The following criterias are
6107                        allowed:</t>
6108                        <t>
6109                          <t>NAME='&lt;search-string&gt;'
6110                              <list>
6111                                  <t>Restricts the search to instruments, which names
6112                                  satisfy the supplied search string (encapsulated into apostrophes,
6113                                  supporting escape sequences as described in chapter
6114                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
6115                              </list>
6116                          </t>
6117    
6118                          <t>SIZE=[&lt;min&gt;]..[&lt;max&gt;]
6119                              <list>
6120                                  <t>Restricts the search to instruments, which
6121                                  size is in the specified range. If &lt;min&gt; is omitted,
6122                                  the search results are restricted to instruments with size less then
6123                                  or equal to &lt;max&gt;. If &lt;max&gt; is omitted, the
6124                                  search is restricted to instruments with size greater then
6125                                  or equal to &lt;min&gt;.</t>
6126                              </list>
6127                          </t>
6128    
6129                          <t>CREATED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
6130                              <list>
6131                                  <t>Restricts the search to instruments, which creation
6132                                  date satisfies the specified period, where &lt;date-after&gt;
6133                                  and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS" format.
6134                                  If &lt;date-after&gt; is omitted the search is restricted to
6135                                  instruments created before &lt;date-before&gt;. If
6136                                  &lt;date-before&gt; is omitted, the search is restricted
6137                                  to instruments created after &lt;date-after&gt;.</t>
6138                              </list>
6139                          </t>
6140    
6141                          <t>MODIFIED='[&lt;date-after&gt;]..[&lt;date-before&gt;]'
6142                              <list>
6143                                  <t>Restricts the search to instruments, which
6144                                  date of last modification satisfies the specified period, where
6145                                  &lt;date-after&gt; and &lt;date-before&gt; are in "YYYY-MM-DD HH:MM:SS"
6146                                  format. If &lt;date-after&gt; is omitted the search is restricted to
6147                                  instruments, which are last modified before &lt;date-before&gt;. If
6148                                  &lt;date-before&gt; is omitted, the search is restricted to instruments,
6149                                  which are last modified after &lt;date-after&gt;.</t>
6150                              </list>
6151                          </t>
6152    
6153                          <t>DESCRIPTION='&lt;search-string&gt;'
6154                              <list>
6155                                  <t>Restricts the search to instruments with description
6156                                  that satisfies the supplied search string (encapsulated into apostrophes,
6157                                  supporting escape sequences as described in chapter
6158                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
6159                              </list>
6160                          </t>
6161    
6162                          <t>PRODUCT='&lt;search-string&gt;'
6163                              <list>
6164                                  <t>Restricts the search to instruments with product info
6165                                  that satisfies the supplied search string (encapsulated into apostrophes,
6166                                  supporting escape sequences as described in chapter
6167                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
6168                              </list>
6169                          </t>
6170    
6171                          <t>ARTISTS='&lt;search-string&gt;'
6172                              <list>
6173                                  <t>Restricts the search to instruments with artists info
6174                                  that satisfies the supplied search string (encapsulated into apostrophes,
6175                                  supporting escape sequences as described in chapter
6176                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
6177                              </list>
6178                          </t>
6179    
6180                          <t>KEYWORDS='&lt;search-string&gt;'
6181                              <list>
6182                                  <t>Restricts the search to instruments with keyword list
6183                                  that satisfies the supplied search string (encapsulated into apostrophes,
6184                                  supporting escape sequences as described in chapter
6185                                  "<xref target="character_set">Character Set and Escape Sequences</xref>").</t>
6186                              </list>
6187                          </t>
6188    
6189                          <t>IS_DRUM=true | false
6190                              <list>
6191                                  <t>Either true or false. Restricts the search to
6192                                  drum kits or chromatic instruments.</t>
6193                              </list>
6194                          </t>
6195    
6196                          <t>FORMAT_FAMILIES='&lt;format-list&gt;'
6197                              <list>
6198                                  <t>Restricts the search to instruments of the supplied format families,
6199                                  where &lt;format-list&gt; is a comma separated list of format families.</t>
6200                              </list>
6201                          </t>
6202                        </t>
6203    
6204                        <t>Where &lt;search-string&gt; is either a regular expression, or a
6205                        word list separated with spaces for OR search and with '+' for AND search.</t>
6206    
6207                        <t>Possible Answers:</t>
6208                        <t>
6209                            <list>
6210                                <t>A comma separated list with the absolute path names (encapsulated into
6211                                apostrophes) of all instruments in the specified directory that satisfy
6212                                the supplied search criterias.</t>
6213                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6214                                    <list>
6215                                        <t>if the given directory does not exist.</t>
6216                                    </list>
6217                                </t>
6218                            </list>
6219                        </t>
6220                        <t>Example:</t>
6221                        <t>
6222                            <list>
6223                                <t>C: "FIND DB_INSTRUMENTS '/Piano Collection' NAME='bosendorfer+290'"</t>
6224                                <t>S: "'/Piano Collection/Bosendorfer 290'"</t>
6225                            </list>
6226                        </t>
6227                        <t>
6228                            <list>
6229                                <t>C: "FIND DB_INSTRUMENTS '/Piano Collection' CREATED='2007-04-01 09:30:13..'"</t>
6230                                <t>S: "'/Piano Collection/Bosendorfer 290','/Piano Collection/Steinway D'"</t>
6231                            </list>
6232                        </t>
6233                    </section>
6234    
6235                    <section title="Getting job status information" anchor="GET DB_INSTRUMENTS_JOB INFO">
6236                        <t>The front-end can ask for the current status of a
6237                        particular database instruments job by sending the following command:</t>
6238                        <t>
6239                            <list>
6240                                <t>GET DB_INSTRUMENTS_JOB INFO &lt;job-id&gt;</t>
6241                            </list>
6242                        </t>
6243                        <t>Where &lt;job-id&gt; should be replaced by the numerical ID
6244                        of the job the front-end is interested in.</t>
6245    
6246                        <t>Possible Answers:</t>
6247                        <t>
6248                            <list>
6249                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6250                                Each answer line begins with the settings category name
6251                                followed by a colon and then a space character &lt;SP&gt; and finally
6252                                the info character string to that setting category. At the
6253                                moment the following categories are defined:</t>
6254    
6255                                <t>
6256                                    <list>
6257                                        <t>FILES_TOTAL -
6258                                            <list>
6259                                                <t>The total number of files scheduled for scanning</t>
6260                                            </list>
6261                                        </t>
6262                                        <t>FILES_SCANNED -
6263                                            <list>
6264                                                <t>The current number of scanned files</t>
6265                                            </list>
6266                                        </t>
6267                                        <t>SCANNING -
6268                                            <list>
6269                                                <t>The absolute path name of the file which is currently
6270                                                being scanned</t>
6271                                            </list>
6272                                        </t>
6273                                        <t>STATUS -
6274                                            <list>
6275                                                <t>An integer value between 0 and 100 indicating the
6276                                                scanning progress percentage of the file which is
6277                                                currently being scanned</t>
6278                                            </list>
6279                                        </t>
6280                                    </list>
6281                                </t>
6282                            </list>
6283                        </t>
6284                        <t>The mentioned fields above don't have to be in particular order.</t>
6285    
6286                        <t>Example:</t>
6287                        <t>
6288                            <list>
6289                                <t>C: "GET DB_INSTRUMENTS_JOB INFO 2"</t>
6290                                <t>S: "FILES_TOTAL: 12"</t>
6291                                <t>&nbsp;&nbsp;&nbsp;"FILES_SCANNED: 7"</t>
6292                                <t>&nbsp;&nbsp;&nbsp;"SCANNING: /home/me/gigs/Bosendorfer 290.gig"</t>
6293                                <t>&nbsp;&nbsp;&nbsp;"STATUS: 42"</t>
6294                                <t>&nbsp;&nbsp;&nbsp;"."</t>
6295                            </list>
6296                        </t>
6297                    </section>
6298    
6299                    <section title="Formatting the instruments database" anchor="FORMAT INSTRUMENTS_DB">
6300                        <t>The front-end can remove all instruments and directories and re-create
6301                        the instruments database structure (e.g., in case of a database corruption)
6302                        by sending the following command:</t>
6303                        <t>
6304                            <list>
6305                                <t>FORMAT INSTRUMENTS_DB</t>
6306                            </list>
6307                        </t>
6308    
6309                        <t>Possible Answers:</t>
6310                        <t>
6311                            <list>
6312                                <t>"OK" -
6313                                    <list>
6314                                        <t>on success</t>
6315                                    </list>
6316                                </t>
6317                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6318                                    <list>
6319                                        <t>If the formatting of the instruments database
6320                                        failed.</t>
6321                                    </list>
6322                                </t>
6323                            </list>
6324                        </t>
6325                    </section>
6326    
6327                    <section title="Checking for lost instrument files" anchor="FIND LOST DB_INSTRUMENT_FILES">
6328                        <t>The front-end can retrieve the list of all instrument files in the instruments database
6329                        that don't exist in the filesystem by sending the following command:</t>
6330                        <t>
6331                            <list>
6332                                <t>FIND LOST DB_INSTRUMENT_FILES</t>
6333                            </list>
6334                        </t>
6335    
6336                        <t>Possible Answers:</t>
6337                        <t>
6338                            <list>
6339                                <t>A comma separated list with the absolute path names
6340                                (encapsulated into apostrophes) of all lost instrument files.</t>
6341                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6342                                    <list>
6343                                        <t>in case it failed, providing an appropriate error code and error message.</t>
6344                                    </list>
6345                                </t>
6346                            </list>
6347                        </t>
6348                        <t>Example:</t>
6349                        <t>
6350                            <list>
6351                                <t>C: "FIND LOST DB_INSTRUMENT_FILES"</t>
6352                                <t>S: "'/gigs/Bosendorfer 290.gig','/gigs/Steinway D.gig','/gigs/Free Piano.gig'"</t>
6353                            </list>
6354                        </t>
6355                    </section>
6356    
6357                    <section title="Replacing an instrument file" anchor="SET DB_INSTRUMENT FILE_PATH">
6358                        <t>The front-end can substitute all occurrences of an instrument file
6359                        in the instruments database with a new one by sending the following command:</t>
6360                        <t>
6361                            <list>
6362                                <t>SET DB_INSTRUMENT FILE_PATH &lt;old_path&gt; &lt;new_path&gt;</t>
6363                            </list>
6364                        </t>
6365                        <t>Where &lt;old_path&gt; is the absolute path name of the instrument file
6366                        to substitute with &lt;new_path&gt;.</t>
6367    
6368                        <t>Possible Answers:</t>
6369                        <t>
6370                            <list>
6371                                <t>"OK" -
6372                                    <list>
6373                                        <t>on success</t>
6374                                    </list>
6375                                </t>
6376                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6377                                    <list>
6378                                        <t>in case it failed, providing an appropriate error code and error message.</t>
6379                                    </list>
6380                                </t>
6381                            </list>
6382                        </t>
6383    
6384                        <t>Example:</t>
6385                        <t>
6386                            <list>
6387                                <t>C: "SET DB_INSTRUMENT FILE_PATH '/gigs/Bosendorfer 290.gig' '/gigs/pianos/Bosendorfer 290.gig'"</t>
6388                                <t>S: "OK"</t>
6389                            </list>
6390                        </t>
6391                    </section>
6392    
6393                </section>
6394    
6395    
6396    
6397                <section title="Editing Instruments" anchor="editing_instruments">
6398                    <t>The sampler allows to edit instruments while playing with the
6399                    sampler by spawning an external (3rd party) instrument editor
6400                    application for a given instrument. The 3rd party instrument
6401                    editor applications have to place a respective plugin DLL file
6402                    into the sampler's plugins directory. The sampler will
6403                    automatically try to load all plugin DLLs in that directory on
6404                    startup and only on startup!</t>
6405                    <t>At the moment there is only one command for this feature set,
6406                    but this will most probably change in future.</t>
6407    
6408                    <section title="Opening an appropriate instrument editor application" anchor="EDIT INSTRUMENT">
6409                        <t>The front-end can request to open an appropriate instrument
6410                        editor application by sending the following command:</t>
6411                        <t>
6412                            <list>
6413                                <t>EDIT CHANNEL INSTRUMENT &lt;sampler-channel&gt;</t>
6414                            </list>
6415                        </t>
6416                        <t>Where &lt;sampler-channel&gt; should be replaced by the
6417                        number of the sampler channel as given by the
6418                        <xref target="ADD CHANNEL">"ADD CHANNEL"</xref>
6419                        or <xref target="LIST CHANNELS">"LIST CHANNELS"</xref>
6420                        command.</t>
6421    
6422                        <t>The sampler will try to ask all registered instrument
6423                        editors (or to be more specific: their sampler plugins)
6424                        whether they are capable to handle the instrument on the
6425                        given sampler channel. The sampler will simply use the first
6426                        instrument editor application which replied with a positive
6427                        answer and spawn that instrument editor application within
6428                        the sampler's process and provide that application access
6429                        to the instrument's data structures, so both applications
6430                        can share and access the same instruments data at the same
6431                        time, thus allowing to immediately hear changes with the
6432                        sampler made by the instrument editor.</t>
6433    
6434                        <t>Note: consequently instrument editors are always spawned
6435                        locally on the same machine where the sampler is running
6436                        on!</t>
6437    
6438                        <t>Possible Answers:</t>
6439                        <t>
6440                            <list>
6441                                <t>"OK" -
6442                                    <list>
6443                                        <t>when an appropriate instrument editor was
6444                                        launched</t>
6445                                    </list>
6446                                </t>
6447                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6448                                    <list>
6449                                        <t>when an appropriate instrument editor was
6450                                        launched, but there are noteworthy issues</t>
6451                                    </list>
6452                                </t>
6453                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6454                                    <list>
6455                                        <t>when an appropriate instrument editor
6456                                        could not be launched</t>
6457                                    </list>
6458                                </t>
6459                            </list>
6460                        </t>
6461    
6462                        <t>Examples:</t>
6463                        <t>
6464                            <list>
6465                                <t>C: "EDIT CHANNEL INSTRUMENT 0"</t>
6466                                <t>S: "OK"</t>
6467                            </list>
6468                        </t>
6469                    </section>
6470                </section>
6471    
6472                <section title="Managing Files" anchor="file_management">
6473                    <t>You can query detailed informations about files located
6474                    at the same system where the sampler instance is running on.
6475                    Using this command set allows to retrieve file informations
6476                    even remotely from another machine.</t>
6477    
6478                    <section title="Retrieving amount of instruments of a file" anchor="GET FILE INSTRUMENTS">
6479                        <t>The front-end can retrieve the amount of instruments
6480                        within a given instrument file by sending the
6481                        following command:</t>
6482                        <t>
6483                            <list>
6484                                <t>GET FILE INSTRUMENTS &lt;filename&gt;</t>
6485                            </list>
6486                        </t>
6487                        <t>Where &lt;filename&gt; is the name of the instrument
6488                        file (encapsulated into apostrophes, supporting escape
6489                        sequences as described in chapter
6490                        "<xref target="character_set">Character Set and Escape
6491                            Sequences</xref>").</t>
6492    
6493                        <t>The sampler will try to ask all sampler engines,
6494                        whether they support the given file and ask the first
6495                        engine with a positive answer for the amount of
6496                        instruments.</t>
6497    
6498                        <t>Possible Answers:</t>
6499                        <t>
6500                            <list>
6501                                <t>On success, the sampler will answer by
6502                                   returning the amount of instruments.
6503                                </t>
6504                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6505                                    <list>
6506                                        <t>if the file could not be handled</t>
6507                                    </list>
6508                                </t>
6509                            </list>
6510                        </t>
6511    
6512                        <t>Examples:</t>
6513                        <t>
6514                            <list>
6515                                <t>C: "GET FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"</t>
6516                                <t>S: "10"</t>
6517                            </list>
6518                        </t>
6519                    </section>
6520    
6521                    <section title="Retrieving all instruments of a file" anchor="LIST FILE INSTRUMENTS">
6522                        <t>The front-end can retrieve a list of all instruments
6523                        within a given instrument file by sending the
6524                        following command:</t>
6525                        <t>
6526                            <list>
6527                                <t>LIST FILE INSTRUMENTS &lt;filename&gt;</t>
6528                            </list>
6529                        </t>
6530                        <t>Where &lt;filename&gt; is the name of the instrument
6531                        file (encapsulated into apostrophes, supporting escape
6532                        sequences as described in chapter
6533                        "<xref target="character_set">Character Set and Escape
6534                            Sequences</xref>").</t>
6535    
6536                        <t>The sampler will try to ask all sampler engines,
6537                        whether they support the given file and ask the first
6538                        engine with a positive answer for a list of IDs for the
6539                        instruments in the given file.</t>
6540    
6541                        <t>Possible Answers:</t>
6542                        <t>
6543                            <list>
6544                                <t>On success, the sampler will answer by
6545                                   returning a comma separated list of
6546                                   instrument IDs.
6547                                </t>
6548                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6549                                    <list>
6550                                        <t>if the file could not be handled</t>
6551                                    </list>
6552                                </t>
6553                            </list>
6554                        </t>
6555    
6556                        <t>Examples:</t>
6557                        <t>
6558                            <list>
6559                                <t>C: "LIST FILE INSTRUMENTS 'D:/Sounds/Foo.gig'"</t>
6560                                <t>S: "0,1,2,3,4,5,6,7,8,9"</t>
6561                            </list>
6562                        </t>
6563                    </section>
6564    
6565                    <section title="Retrieving informations about one instrument in a file" anchor="GET FILE INSTRUMENT INFO">
6566                        <t>The front-end can retrieve detailed informations
6567                        about a specific instrument within a given instrument
6568                        file by sending the following command:</t>
6569                        <t>
6570                            <list>
6571                                <t>GET FILE INSTRUMENT INFO &lt;filename&gt;
6572                                &lt;instr-id&gt;</t>
6573                            </list>
6574                        </t>
6575                        <t>Where &lt;filename&gt; is the name of the instrument
6576                        file (encapsulated into apostrophes, supporting escape
6577                        sequences as described in chapter
6578                        "<xref target="character_set">Character Set and Escape
6579                            Sequences</xref>") and &lt;instr-id&gt; is the numeric
6580                        instrument ID as returned by the
6581                        <xref target="LIST FILE INSTRUMENTS">
6582                        "LIST FILE INSTRUMENTS"</xref> command.</t>
6583    
6584                        <t>The sampler will try to ask all sampler engines,
6585                        whether they support the given file and ask the first
6586                        engine with a positive answer for informations about the
6587                        specific instrument in the given file.</t>
6588    
6589                        <t>Possible Answers:</t>
6590                        <t>
6591                            <list>
6592                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6593                                Each answer line begins with the settings category name
6594                                followed by a colon and then a space character &lt;SP&gt; and finally
6595                                the info character string to that setting category. At the
6596                                moment the following categories are defined:</t>
6597    
6598                                <t>
6599                                    <list>
6600                                        <t>NAME -
6601                                            <list>
6602                                                <t>name of the instrument as
6603                                                stored in the instrument file</t>
6604                                            </list>
6605                                        </t>
6606                                        <t>FORMAT_FAMILY -
6607                                            <list>
6608                                                <t>name of the sampler format
6609                                                of the given instrument</t>
6610                                            </list>
6611                                        </t>
6612                                        <t>FORMAT_VERSION -
6613                                            <list>
6614                                                <t>version of the sampler format
6615                                                the instrumen is stored as</t>
6616                                            </list>
6617                                        </t>
6618                                        <t>PRODUCT -
6619                                            <list>
6620                                                <t>official product name of the
6621                                                instrument as stored in the file
6622                                                </t>
6623                                            </list>
6624                                        </t>
6625                                        <t>ARTISTS -
6626                                            <list>
6627                                                <t>artists / sample library
6628                                                vendor of the instrument</t>
6629                                            </list>
6630                                        </t>
6631                                        <t>KEY_BINDINGS -
6632                                            <list>
6633                                                <t>comma separated list of integer values representing
6634                                                   the instrument's key mapping in the range between 0 .. 127,
6635                                                   reflecting the analog meaning of the MIDI specification.</t>
6636                                            </list>
6637                                        </t>
6638                                        <t>KEYSWITCH_BINDINGS -
6639                                            <list>
6640                                                <t>comma separated list of integer values representing
6641                                                   the instrument's keyswitch mapping in the range between 0 .. 127,
6642                                                   reflecting the analog meaning of the MIDI specification.</t>
6643                                            </list>
6644                                        </t>
6645                                    </list>
6646                                </t>
6647                            </list>
6648                        </t>
6649                        <t>The mentioned fields above don't have to be in particular order.</t>
6650    
6651                        <t>Example:</t>
6652                        <t>
6653                            <list>
6654                                <t>C: "GET FILE INSTRUMENT INFO 'D:/Sounds/Foo.gig' 0"</t>
6655                                <t>S: "NAME: Lunatic Loops"</t>
6656                                <t>&nbsp;&nbsp;&nbsp;"FORMAT_FAMILY: GIG"</t>
6657                                <t>&nbsp;&nbsp;&nbsp;"FORMAT_VERSION: 3"</t>
6658                                <t>&nbsp;&nbsp;&nbsp;"PRODUCT: The Backbone Bongo Beats"</t>
6659                                <t>&nbsp;&nbsp;&nbsp;"ARTISTS: Jimmy the Fish"</t>
6660                                <t>&nbsp;&nbsp;&nbsp;"."</t>
6661                            </list>
6662                        </t>
6663                    </section>
6664                </section>
6665                <section title="Managing Effects" anchor="effects">
6666                    <t>Audio effects (e.g. reverb, delay, compression) can be
6667                    applied to the audio signals generated by the sampler. The
6668                    sampler usually provides a set of internal audio effects for
6669                    this task. The exact set of effects depends on the availability
6670                    of third party effect plugins installed on the system where the
6671                    sampler runs on.</t>
6672                    <t>At the moment only "send effects" are supported. Support for
6673                    "insert effects" and "master effects" is planned to be added at
6674                    a later point.</t>
6675                    <t>The following commands allow to retrieve the set of internal
6676                    effects available to the sampler, detailed informations about
6677                    those effects and to create and destroy instances of such
6678                    effects. After an instance of an effect is created, the effect
6679                    instance can be inserted into the audio signal path of the
6680                    sampler, e.g. as send effect.</t>
6681                    <t>The sampler allows to create an arbitrary amount of so called
6682                    send effect chains. Each effect chain can host an arbitrary
6683                    amount of effect instances. The output of the first effect
6684                    instance in an effect chain is fed to the input of the second
6685                    effect instance of the chain and so on. So effects in one chain
6686                    are processed sequentially. Send effect chains however are
6687                    processed in parallel to other send effect chains. Audio signals
6688                    of sampler channels are fed to send effects by creating FX sends
6689                    to the respective sampler channel and assigning a destination
6690                    send effect to that FX by using the
6691                    <xref target="SET FX_SEND SEND_EFFECT">"SET FX_SEND SEND_EFFECT"</xref>
6692                    command. The latter allows to route the FX send to the beginning
6693                    of a send effect chain, as well as directly to any other
6694                    position of the send effect chain.</t>
6695    
6696                    <section title="Retrieve amount of available effects" anchor="GET AVAILABLE_EFFECTS">
6697                        <t>The front-end can retrieve the amount of internal
6698                        effects, available to the sampler by sending
6699                        the following command:</t>
6700                        <t>
6701                            <list>
6702                                <t>GET AVAILABLE_EFFECTS</t>
6703                            </list>
6704                        </t>
6705    
6706                        <t>Possible Answers:</t>
6707                        <t>
6708                            <list>
6709                                <t>The sampler will answer by returning the current
6710                                number of effects available to the sampler.</t>
6711                            </list>
6712                        </t>
6713    
6714                        <t>Examples:</t>
6715                        <t>
6716                            <list>
6717                                <t>C: "GET AVAILABLE_EFFECTS"</t>
6718                                <t>S: "129"</t>
6719                            </list>
6720                        </t>
6721                    </section>
6722    
6723                    <section title="Get list of available effects" anchor="LIST AVAILABLE_EFFECTS">
6724                        <t>The set of available internal effects can change at
6725                        runtime. The front-end can retrieve the list of internal
6726                        effects, available to the sampler by sending the following
6727                        command:</t>
6728                        <t>
6729                            <list>
6730                                <t>LIST AVAILABLE_EFFECTS</t>
6731                            </list>
6732                        </t>
6733    
6734                        <t>Possible Answers:</t>
6735                        <t>
6736                            <list>
6737                                <t>The sampler will answer by returning a comma
6738                                separated list with numerical IDs of effects. Note:
6739                                the numercial ID of an effect is generated by the
6740                                sampler for the current moment. The numerical ID of
6741                                the same effect can change at runtime, e.g. when the
6742                                user requests a rescan of available effect plugins.
6743                                </t>
6744                            </list>
6745                        </t>
6746                        <t>Example:</t>
6747                        <t>
6748                            <list>
6749                                <t>C: "LIST AVAILABLE_EFFECTS"</t>
6750                                <t>S: "5,6,7,120,121,122,123,124"</t>
6751                            </list>
6752                        </t>
6753                    </section>
6754    
6755                    <section title="Retrieving general information about an effect" anchor="GET EFFECT INFO">
6756                        <t>The front-end can ask for general informations about an
6757                        effect by sending the following command:</t>
6758                        <t>
6759                            <list>
6760                                <t>GET EFFECT INFO &lt;effect-index&gt;</t>
6761                            </list>
6762                        </t>
6763                        <t>Where &lt;effect-index&gt; is the numerical ID of an
6764                        effect as returned by the
6765                        <xref target="LIST AVAILABLE_EFFECTS">"LIST AVAILABLE_EFFECTS"</xref>
6766                        command.</t>
6767                        <t>Possible Answers:</t>
6768                        <t>
6769                            <list>
6770                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
6771                                Each answer line begins with the effect information
6772                                category name, followed by a colon and then a space
6773                                character &lt;SP&gt; and finally the info character
6774                                string to that effect information category. At the
6775                                moment the following categories are defined:</t>
6776                                <t>
6777                                    <list>
6778                                        <t>SYSTEM -
6779                                            <list>
6780                                                <t>name of the effect plugin system
6781                                                the effect is based on
6782                                                (e.g. "LADSPA")</t>
6783                                            </list>
6784                                        </t>
6785                                        <t>MODULE -
6786                                            <list>
6787                                                <t>module of the effect plugin
6788                                                system that contains this effect,
6789                                                the module is usually the
6790                                                dynamic-linked library (DLL)
6791                                                filename of the effect plugin,
6792                                                including full path (note that this
6793                                                filename may contain
6794                                                <xref target="character_set">escape sequences</xref>)</t>
6795                                            </list>
6796                                        </t>
6797                                        <t>NAME -
6798                                            <list>
6799                                                <t>character string defining the
6800                                                unique name of the effect within its
6801                                                module (note that the character
6802                                                string may contain
6803                                                <xref target="character_set">escape sequences</xref>)</t>
6804                                            </list>
6805                                        </t>
6806                                        <t>DESCRIPTION -
6807                                            <list>
6808                                                <t>human readable name of the
6809                                                effect, intended to be displayed in
6810                                                user interfaces (note that the
6811                                                character string may contain
6812                                                <xref target="character_set">escape sequences</xref>)</t>
6813                                            </list>
6814                                        </t>
6815                                    </list>
6816                                </t>
6817                            </list>
6818                        </t>
6819                        <t>The mentioned fields above don't have to be in particular order.</t>
6820    
6821                        <t>Example:</t>
6822                        <t>
6823                            <list>
6824                                <t>C: "GET EFFECT INFO 121"</t>
6825                                <t>S: "SYSTEM: LADSPA"</t>
6826                                <t>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/lowpass_iir_1891.so"</t>
6827                                <t>&nbsp;&nbsp;&nbsp;"NAME: lowpass_iir"</t>
6828                                <t>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Glame Lowpass Filter"</t>
6829                                <t>&nbsp;&nbsp;&nbsp;"."</t>
6830                            </list>
6831                        </t>
6832                    </section>
6833    
6834                    <section title="Creating an instance of an effect by its portable ID" anchor="CREATE EFFECT_INSTANCE">
6835                        <t>The front-end can spawn an instance of the desired
6836                        effect by sending the following command:</t>
6837                        <t>
6838                            <list>
6839                                <t>CREATE EFFECT_INSTANCE &lt;effect-system&gt; &lt;module&gt; &lt;effect-name&gt;</t>
6840                            </list>
6841                        </t>
6842                        <t>Where &lt;effect-system&gt; is the "SYSTEM" field,
6843                        &lt;module&gt; the "MODULE" field and &lt;effect-name&gt;
6844                        the "NAME" field as returned by the
6845                        <xref target="GET EFFECT INFO">"GET EFFECT INFO"</xref>
6846                        command. The filename of argument &lt;module&gt; and the
6847                        character string of argument &lt;effect-name&gt; may contain
6848                        <xref target="character_set">escape sequences</xref>.</t>
6849    
6850                        <t>The sampler will try to load the requested effect and to
6851                        create an instance of it. To allow loading the same effect
6852                        on a different machine, probably even running a completely
6853                        different operating system (e.g. Linux vs. Windows), the
6854                        sampler tries to match &lt;module&gt; "softly". That means
6855                        it first tries to find an effect that exactly matches the
6856                        given &lt;module&gt; argument. If there is no exact match,
6857                        the sampler will try to lower the restrictions on matching
6858                        the &lt;module&gt; argument more and more, e.g. by ignoring
6859                        upper / lower case differences and by ignoring the path of
6860                        the DLL filename and file extension. If there is still no
6861                        match at the end, the sampler will try to ignore the
6862                        &lt;module&gt; argument completely and as a last resort
6863                        search for an effect that only matches the given
6864                        &lt;effect-system&gt; and &lt;effect-name&gt; arguments.</t>
6865    
6866                        <t>Possible Answers:</t>
6867                        <t>
6868                            <list>
6869                                <t>"OK[&lt;effect-instance&gt;]" -
6870                                    <list>
6871                                        <t>in case the effect instance was
6872                                        successfully created, where
6873                                        &lt;effect-instance&gt; is the numerical ID
6874                                        of the new effect instance</t>
6875                                    </list>
6876                                </t>
6877                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6878                                    <list>
6879                                        <t>in case the effect instance was spawned
6880                                        successfully, but there are noteworthy
6881                                        issue(s) related, providing an appropriate
6882                                        warning code and warning message</t>
6883                                    </list>
6884                                </t>
6885                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6886                                    <list>
6887                                        <t>if the effect could not be instantiated</t>
6888                                    </list>
6889                                </t>
6890                            </list>
6891                        </t>
6892    
6893                        <t>Examples:</t>
6894                        <t>
6895                            <list>
6896                                <t>C: "CREATE EFFECT_INSTANCE LADSPA '/usr/lib/ladspa/mod_delay_1419.so' 'modDelay'"</t>
6897                                <t>S: "OK[0]"</t>
6898                            </list>
6899                        </t>
6900                    </section>
6901    
6902                    <section title="Creating an instance of an effect by its numerical ID" anchor="CREATE EFFECT_INSTANCE (non-portable)">
6903                        <t>The front-end can spawn an instance of the desired
6904                        effect by sending the following command:</t>
6905                        <t>
6906                            <list>
6907                                <t>CREATE EFFECT_INSTANCE &lt;effect-index&gt;</t>
6908                            </list>
6909                        </t>
6910                        <t>Where &lt;effect-index&gt; is the numerical ID of the
6911                        effect as returned by the
6912                        <xref target="LIST AVAILABLE_EFFECTS">"LIST AVAILABLE_EFFECTS"</xref>
6913                        command.</t>
6914    
6915                        <t>The sampler will try to load the requested effect and to
6916                        create an instance of it.</t>
6917    
6918                        <t>Note: Since the numerical ID of a certain effect can
6919                        change at any time, you should not use this command in
6920                        LSCP files to restore a certain effect at a later time! To
6921                        store a sampler session including all its effects, use the
6922                        <xref target="CREATE EFFECT_INSTANCE">portable text-based
6923                        version of "CREATE EFFECT_INSTANCE"</xref> instead! This
6924                        allows to restore a sampler session with all its effects
6925                        also on other machines, possibly even running a completely
6926                        different operating system (e.g. Linux vs. Windows), with
6927                        different plugin directories or plugin DLL names.</t>
6928    
6929                        <t>Possible Answers:</t>
6930                        <t>
6931                            <list>
6932                                <t>"OK[&lt;effect-instance&gt;]" -
6933                                    <list>
6934                                        <t>in case the effect instance was
6935                                        successfully created, where
6936                                        &lt;effect-instance&gt; is the numerical ID
6937                                        of the new effect instance</t>
6938                                    </list>
6939                                </t>
6940                                <t>"WRN:&lt;warning-code&gt;:&lt;warning-message&gt;" -
6941                                    <list>
6942                                        <t>in case the effect instance was spawned
6943                                        successfully, but there are noteworthy
6944                                        issue(s) related, providing an appropriate
6945                                        warning code and warning message</t>
6946                                    </list>
6947                                </t>
6948                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6949                                    <list>
6950                                        <t>if the effect could not be instantiated</t>
6951                                    </list>
6952                                </t>
6953                            </list>
6954                        </t>
6955    
6956                        <t>Examples:</t>
6957                        <t>
6958                            <list>
6959                                <t>C: "CREATE EFFECT_INSTANCE 72"</t>
6960                                <t>S: "OK[5]"</t>
6961                            </list>
6962                        </t>
6963                    </section>
6964    
6965                    <section title="Destroy an effect instance" anchor="DESTROY EFFECT_INSTANCE">
6966                        <t>The front-end can destroy an unusued effect instance and
6967                        thus freeing it from memory by sending the following command:</t>
6968                        <t>
6969                            <list>
6970                                <t>DESTROY EFFECT_INSTANCE &lt;effect-instance&gt;</t>
6971                            </list>
6972                        </t>
6973                        <t>Where &lt;effect-instance&gt; is the numerical ID of the
6974                        effect instance as returned by the
6975                        <xref target="CREATE EFFECT_INSTANCE">"CREATE EFFECT_INSTANCE"</xref> or
6976                        <xref target="LIST EFFECT_INSTANCES">"LIST EFFECT_INSTANCES"</xref>
6977                        command.</t>
6978    
6979                        <t>The effect instance can only be destroyed if it's not
6980                        used in any part of the sampler's audio signal path anymore.
6981                        If the effect instance is still in use somewhere, trying to
6982                        destroy the effect instance will result in an error
6983                        message.</t>
6984    
6985                        <t>Possible Answers:</t>
6986                        <t>
6987                            <list>
6988                                <t>"OK" -
6989                                    <list>
6990                                        <t>in case the effect instance was successfully destroyed</t>
6991                                    </list>
6992                                </t>
6993                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
6994                                    <list>
6995                                        <t>in case it failed, providing an appropriate error code and
6996                                        error message</t>
6997                                    </list>
6998                                </t>
6999                            </list>
7000                        </t>
7001    
7002                        <t>Examples:</t>
7003                        <t>
7004                            <list>
7005                                <t>C: "DESTROY EFFECT_INSTANCE 5"</t>
7006                                <t>S: "OK"</t>
7007                            </list>
7008                        </t>
7009                    </section>
7010    
7011                    <section title="Retrieve amount of effect instances" anchor="GET EFFECT_INSTANCES">
7012                        <t>The front-end can retrieve the current amount of effect
7013                        instances by sending the following command:</t>
7014                        <t>
7015                            <list>
7016                                <t>GET EFFECT_INSTANCES</t>
7017                            </list>
7018                        </t>
7019    
7020                        <t>Possible Answers:</t>
7021                        <t>
7022                            <list>
7023                                <t>The sampler will answer by returning the current
7024                                number of effect instances created and not yet
7025                                destroyed in the current sampler session.</t>
7026                            </list>
7027                        </t>
7028    
7029                        <t>Examples:</t>
7030                        <t>
7031                            <list>
7032                                <t>C: "GET EFFECT_INSTANCES"</t>
7033                                <t>S: "14"</t>
7034                            </list>
7035                        </t>
7036                    </section>
7037    
7038                    <section title="Get list of effect instances" anchor="LIST EFFECT_INSTANCES">
7039                        <t>The front-end can retrieve the current list of effect
7040                        instances by sending the following command:</t>
7041                        <t>
7042                            <list>
7043                                <t>LIST EFFECT_INSTANCES</t>
7044                            </list>
7045                        </t>
7046    
7047                        <t>Possible Answers:</t>
7048                        <t>
7049                            <list>
7050                                <t>The sampler will answer by returning a comma
7051                                separated list with numerical IDs of effects
7052                                instances.
7053                                </t>
7054                            </list>
7055                        </t>
7056                        <t>Example:</t>
7057                        <t>
7058                            <list>
7059                                <t>C: "LIST EFFECT_INSTANCES"</t>
7060                                <t>S: "9,11,14,15,16,17,25"</t>
7061                            </list>
7062                        </t>
7063                    </section>
7064    
7065                    <section title="Retrieving current information about an effect instance" anchor="GET EFFECT_INSTANCE INFO">
7066                        <t>The front-end can ask for the current informations about
7067                        a particular effect instance by sending the following command:</t>
7068                        <t>
7069                            <list>
7070                                <t>GET EFFECT_INSTANCE INFO &lt;effect-instance&gt;</t>
7071                            </list>
7072                        </t>
7073                        <t>Where &lt;effect-instance&gt; is the numerical ID of an
7074                        effect instance as returned by the
7075                        <xref target="CREATE EFFECT_INSTANCE">"CREATE EFFECT_INSTANCE"</xref>
7076                        or
7077                        <xref target="LIST EFFECT_INSTANCES">"LIST EFFECT_INSTANCES"</xref>
7078                        command.</t>
7079    
7080                        <t>Possible Answers:</t>
7081                        <t>
7082                            <list>
7083                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7084                                Each answer line begins with the information
7085                                category name, followed by a colon and then a space
7086                                character &lt;SP&gt; and finally the info character
7087                                string to that information category. At the
7088                                moment the following categories are defined:</t>
7089                                <t>
7090                                    <list>
7091                                        <t>SYSTEM -
7092                                            <list>
7093                                                <t>name of the effect plugin system
7094                                                the effect is based on
7095                                                (e.g. "LADSPA")</t>
7096                                            </list>
7097                                        </t>
7098                                        <t>MODULE -
7099                                            <list>
7100                                                <t>module of the effect plugin
7101                                                system that contains this effect,
7102                                                the module is usually the
7103                                                dynamic-linked library (DLL)
7104                                                filename of the effect plugin,
7105                                                including full path (note that this
7106                                                filename may contain
7107                                                <xref target="character_set">escape sequences</xref>)</t>
7108                                            </list>
7109                                        </t>
7110                                        <t>NAME -
7111                                            <list>
7112                                                <t>character string defining the
7113                                                unique name of the effect within its
7114                                                module (note that the character
7115                                                string may contain
7116                                                <xref target="character_set">escape sequences</xref>)</t>
7117                                            </list>
7118                                        </t>
7119                                        <t>DESCRIPTION -
7120                                            <list>
7121                                                <t>human readable name of the
7122                                                effect, intended to be displayed in
7123                                                user interfaces (note that the
7124                                                character string may contain
7125                                                <xref target="character_set">escape sequences</xref>)</t>
7126                                            </list>
7127                                        </t>
7128                                        <t>INPUT_CONTROLS -
7129                                            <list>
7130                                                <t>amount of input controls the
7131                                                effect instance provides, to allow
7132                                                controlling the effect parameters in
7133                                                realtime</t>
7134                                            </list>
7135                                        </t>
7136                                    </list>
7137                                </t>
7138                            </list>
7139                        </t>
7140                        <t>The mentioned fields above don't have to be in particular order.</t>
7141    
7142                        <t>Example:</t>
7143                        <t>
7144                            <list>
7145                                <t>C: "GET EFFECT_INSTANCE INFO 3"</t>
7146                                <t>S: "SYSTEM: LADSPA"</t>
7147                                <t>&nbsp;&nbsp;&nbsp;"MODULE: /usr/lib/ladspa/mod_delay_1419.so"</t>
7148                                <t>&nbsp;&nbsp;&nbsp;"NAME: modDelay"</t>
7149                                <t>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Modulatable delay"</t>
7150                                <t>&nbsp;&nbsp;&nbsp;"INPUT_CONTROLS: 1"</t>
7151                                <t>&nbsp;&nbsp;&nbsp;"."</t>
7152                            </list>
7153                        </t>
7154                    </section>
7155    
7156                    <section title="Retrieving information about an effect parameter" anchor="GET EFFECT_INSTANCE_INPUT_CONTROL INFO">
7157                        <t>Effects typically provide a certain set of effect
7158                        parameters which can be altered by the user in realtime
7159                        (e.g. depth of a reverb effect, duration of a delay effect,
7160                        dry / wet signal ratio). Those controllable effect parameters
7161                        are called "input controls". The front-end can ask for the
7162                        current informations of an effect instance's input control
7163                        by sending the following command:</t>
7164                        <t>
7165                            <list>
7166                                <t>GET EFFECT_INSTANCE_INPUT_CONTROL INFO &lt;effect-instance&gt; &lt;input-control&gt;</t>
7167                            </list>
7168                        </t>
7169                        <t>Where &lt;effect-instance&gt; is the numerical ID of an
7170                        effect instance as returned by the
7171                        <xref target="CREATE EFFECT_INSTANCE">"CREATE EFFECT_INSTANCE"</xref>
7172                        or
7173                        <xref target="LIST EFFECT_INSTANCES">"LIST EFFECT_INSTANCES"</xref>
7174                        command and &lt;input-control&gt; is the index of the input
7175                        control within the numerical bounds as returned by the
7176                        "INPUT_CONTROLS" field of the
7177                        <xref target="GET EFFECT_INSTANCE INFO">"GET EFFECT_INSTANCE INFO"</xref>
7178                        command.</t>
7179    
7180                        <t>Possible Answers:</t>
7181                        <t>
7182                            <list>
7183                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7184                                Each answer line begins with the information
7185                                category name, followed by a colon and then a space
7186                                character &lt;SP&gt; and finally the info character
7187                                string to that information category. There are
7188                                information categories which are always returned,
7189                                independent of the respective effect parameter and
7190                                there are optional information categories
7191                                which are only shown for certain effect parameters.
7192                                At the moment the following categories are defined:</t>
7193                                <t>
7194                                    <list>
7195                                        <t>DESCRIPTION -
7196                                            <list>
7197                                                <t>(always returned)
7198                                                human readable name of the
7199                                                effect parameter, intended to be
7200                                                displayed in user interfaces (note
7201                                                that the character string may
7202                                                contain <xref target="character_set">escape sequences</xref>)</t>
7203                                            </list>
7204                                        </t>
7205                                        <t>VALUE -
7206                                            <list>
7207                                                <t>
7208                                                (always returned)
7209                                                current (optional dotted)
7210                                                floating point value of this effect
7211                                                parameter</t>
7212                                            </list>
7213                                        </t>
7214                                        <t>RANGE_MIN -
7215                                            <list>
7216                                                <t>
7217                                                (optionally returned)
7218                                                minimum allowed value for this
7219                                                effect parameter</t>
7220                                            </list>
7221                                        </t>
7222                                        <t>RANGE_MAX -
7223                                            <list>
7224                                                <t>
7225                                                (optionally returned)
7226                                                maximum allowed value for this
7227                                                effect parameter</t>
7228                                            </list>
7229                                        </t>
7230                                        <t>POSSIBILITIES -
7231                                            <list>
7232                                                <t>
7233                                                (optionally returned)
7234                                                comma separated list of
7235                                                (optional dotted) floating point
7236                                                numbers, reflecting the exact set of
7237                                                possible values for this effect
7238                                                parameter</t>
7239                                            </list>
7240                                        </t>
7241                                        <t>DEFAULT -
7242                                            <list>
7243                                                <t>
7244                                                (optionally returned)
7245                                                default value of this effect
7246                                                parameter</t>
7247                                            </list>
7248                                        </t>
7249                                    </list>
7250                                </t>
7251                            </list>
7252                        </t>
7253                        <t>The mentioned fields above don't have to be in particular order.</t>
7254    
7255                        <t>Example:</t>
7256                        <t>
7257                            <list>
7258                                <t>C: "GET EFFECT_INSTANCE_INPUT_CONTROL INFO 1 0"</t>
7259                                <t>S: "SYSTEM: LADSPA"</t>
7260                                <t>&nbsp;&nbsp;&nbsp;"DESCRIPTION: Base delay (s)"</t>
7261                                <t>&nbsp;&nbsp;&nbsp;"VALUE: 0.500"</t>
7262                                <t>&nbsp;&nbsp;&nbsp;"RANGE_MIN: 0.000"</t>
7263                                <t>&nbsp;&nbsp;&nbsp;"."</t>
7264                            </list>
7265                        </t>
7266                    </section>
7267    
7268                    <section title="Altering an effect parameter" anchor="SET EFFECT_INSTANCE_INPUT_CONTROL VALUE">
7269                        <t>The front-end can alter the current value of an effect
7270                        parameter by sending the following command:</t>
7271                        <t>
7272                            <list>
7273                                <t>SET EFFECT_INSTANCE_INPUT_CONTROL VALUE &lt;effect-instance&gt; &lt;input-control&gt; &lt;value&gt;</t>
7274                            </list>
7275                        </t>
7276                        <t>Where &lt;effect-instance&gt; is the numerical ID of the
7277                        effect instance as returned by the
7278                        <xref target="CREATE EFFECT_INSTANCE">"CREATE EFFECT_INSTANCE"</xref> or
7279                        <xref target="LIST EFFECT_INSTANCES">"LIST EFFECT_INSTANCES"</xref>
7280                        command, &lt;input-control&gt; is the index of the input
7281                        control within the numerical bounds as returned by the
7282                        "INPUT_CONTROLS" field of the
7283                        <xref target="GET EFFECT_INSTANCE INFO">"GET EFFECT_INSTANCE INFO"</xref>
7284                        command and &lt;value&gt; is the new (optional dotted)
7285                        floating point value for this effect parameter.</t>
7286    
7287                        <t>Possible Answers:</t>
7288                        <t>
7289                            <list>
7290                                <t>"OK" -
7291                                    <list>
7292                                        <t>in case the effect was altered successfully</t>
7293                                    </list>
7294                                </t>
7295                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7296                                    <list>
7297                                        <t>in case it failed, providing an appropriate error code and
7298                                        error message</t>
7299                                    </list>
7300                                </t>
7301                            </list>
7302                        </t>
7303    
7304                        <t>Examples:</t>
7305                        <t>
7306                            <list>
7307                                <t>C: "SET EFFECT_INSTANCE_INPUT_CONTROL VALUE 0 1 0.5"</t>
7308                                <t>S: "OK"</t>
7309                            </list>
7310                        </t>
7311                    </section>
7312    
7313                    <section title="Retrieve amount of send effect chains" anchor="GET SEND_EFFECT_CHAINS">
7314                        <t>The front-end can retrieve the current amount of send
7315                        effect chains of an audio output device by sending the
7316                        following command:</t>
7317                        <t>
7318                            <list>
7319                                <t>GET SEND_EFFECT_CHAINS &lt;audio-device&gt;</t>
7320                            </list>
7321                        </t>
7322                        <t>Where &lt;audio-device&gt; should be replaced by the
7323                        numerical ID of the audio output device as given by the
7324                        <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
7325                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
7326                        command.</t>
7327    
7328                        <t>Possible Answers:</t>
7329                        <t>
7330                            <list>
7331                                <t>The sampler will answer by returning the current
7332                                number of send effect chains of the supplied audio
7333                                output device.</t>
7334                            </list>
7335                        </t>
7336    
7337                        <t>Examples:</t>
7338                        <t>
7339                            <list>
7340                                <t>C: "GET SEND_EFFECT_CHAINS 0"</t>
7341                                <t>S: "4"</t>
7342                            </list>
7343                        </t>
7344                    </section>
7345    
7346                    <section title="Retrieve list of send effect chains" anchor="LIST SEND_EFFECT_CHAINS">
7347                        <t>The front-end can retrieve the current list of send
7348                        effect chains of an audio output device by sending the
7349                        following command:</t>
7350                        <t>
7351                            <list>
7352                                <t>LIST SEND_EFFECT_CHAINS &lt;audio-device&gt;</t>
7353                            </list>
7354                        </t>
7355                        <t>Where &lt;audio-device&gt; should be replaced by the
7356                        numerical ID of the audio output device as given by the
7357                        <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
7358                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
7359                        command.</t>
7360    
7361                        <t>Possible Answers:</t>
7362                        <t>
7363                            <list>
7364                                <t>The sampler will answer by returning a comma
7365                                separated list with numerical IDs of send effect
7366                                chains of the supplied audio output device.
7367                                </t>
7368                            </list>
7369                        </t>
7370    
7371                        <t>Examples:</t>
7372                        <t>
7373                            <list>
7374                                <t>C: "LIST SEND_EFFECT_CHAINS 0"</t>
7375                                <t>S: "3,4,7"</t>
7376                            </list>
7377                        </t>
7378                    </section>
7379    
7380                    <section title="Add send effect chain" anchor="ADD SEND_EFFECT_CHAIN">
7381                        <t>The front-end can add a send effect chain by sending the
7382                        following command:</t>
7383                        <t>
7384                            <list>
7385                                <t>ADD SEND_EFFECT_CHAIN &lt;audio-device&gt;</t>
7386                            </list>
7387                        </t>
7388                        <t>Where &lt;audio-device&gt; should be replaced by the
7389                        numerical ID of the audio output device as given by the
7390                        <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
7391                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
7392                        command.</t>
7393    
7394                        <t>Possible Answers:</t>
7395                        <t>
7396                            <list>
7397                                <t>"OK[&lt;effect-chain&gt;]" -
7398                                    <list>
7399                                        <t>in case the send effect chain was
7400                                        added successfully, where
7401                                        &lt;effect-chain&gt; is the numerical ID
7402                                        of the new send effect chain</t>
7403                                    </list>
7404                                </t>
7405                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7406                                    <list>
7407                                        <t>if the send effect chain could not be added</t>
7408                                    </list>
7409                                </t>
7410                            </list>
7411                        </t>
7412    
7413                        <t>Examples:</t>
7414                        <t>
7415                            <list>
7416                                <t>C: "ADD SEND_EFFECT_CHAIN 0"</t>
7417                                <t>S: "OK[2]"</t>
7418                            </list>
7419                        </t>
7420                    </section>
7421    
7422                    <section title="Remove send effect chain" anchor="REMOVE SEND_EFFECT_CHAIN">
7423                        <t>The front-end can remove a send effect chain by sending
7424                        the following command:</t>
7425                        <t>
7426                            <list>
7427                                <t>REMOVE SEND_EFFECT_CHAIN &lt;audio-device&gt; &lt;effect-chain&gt;</t>
7428                            </list>
7429                        </t>
7430                        <t>Where &lt;audio-device&gt; should be replaced by the
7431                        numerical ID of the audio output device as given by the
7432                        <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
7433                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
7434                        command and &lt;effect-chain&gt; by the numerical ID as
7435                        returned by the
7436                        <xref target="ADD SEND_EFFECT_CHAIN">"ADD SEND_EFFECT_CHAIN"</xref>
7437                        or
7438                        <xref target="LIST SEND_EFFECT_CHAINS">"LIST SEND_EFFECT_CHAINS"</xref>
7439                        command.</t>
7440    
7441                        <t>Possible Answers:</t>
7442                        <t>
7443                            <list>
7444                                <t>"OK" -
7445                                    <list>
7446                                        <t>in case the send effect chain was
7447                                        removed successfully</t>
7448                                    </list>
7449                                </t>
7450                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7451                                    <list>
7452                                        <t>if the send effect chain could not be removed</t>
7453                                    </list>
7454                                </t>
7455                            </list>
7456                        </t>
7457    
7458                        <t>Examples:</t>
7459                        <t>
7460                            <list>
7461                                <t>C: "REMOVE SEND_EFFECT_CHAIN 0 2"</t>
7462                                <t>S: "OK"</t>
7463                            </list>
7464                        </t>
7465                    </section>
7466    
7467                    <section title="Retrieving information about a send effect chain" anchor="GET SEND_EFFECT_CHAIN INFO">
7468                        <t>The front-end can ask for informations of a send effect
7469                        chain by sending the following command:</t>
7470                        <t>
7471                            <list>
7472                                <t>GET SEND_EFFECT_CHAIN INFO &lt;audio-device&gt; &lt;effect-chain&gt;</t>
7473                            </list>
7474                        </t>
7475                        <t>Where &lt;audio-device&gt; should be replaced by the
7476                        numerical ID of the audio output device as given by the
7477                        <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
7478                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
7479                        command and &lt;effect-chain&gt; by the numerical ID as
7480                        returned by the
7481                        <xref target="ADD SEND_EFFECT_CHAIN">"ADD SEND_EFFECT_CHAIN"</xref>
7482                        or
7483                        <xref target="LIST SEND_EFFECT_CHAINS">"LIST SEND_EFFECT_CHAINS"</xref>
7484                        command.</t>
7485    
7486                        <t>Possible Answers:</t>
7487                        <t>
7488                            <list>
7489                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt; separated list.
7490                                Each answer line begins with the information
7491                                category name, followed by a colon and then a space
7492                                character &lt;SP&gt; and finally the info character
7493                                string to that information category.
7494                                At the moment the following categories are defined:</t>
7495                                <t>
7496                                    <list>
7497                                        <t>EFFECT_COUNT -
7498                                            <list>
7499                                                <t>amount of effects in this send
7500                                                effect chain</t>
7501                                            </list>
7502                                        </t>
7503                                        <t>EFFECT_SEQUENCE -
7504                                            <list>
7505                                                <t>comma separated list of the
7506                                                numerical IDs of the effect
7507                                                instances in this send effect chain,
7508                                                in the order as they are procssed in
7509                                                the effect chain</t>
7510                                            </list>
7511                                        </t>
7512                                    </list>
7513                                </t>
7514                            </list>
7515                        </t>
7516                        <t>The mentioned fields above don't have to be in particular order.</t>
7517    
7518                        <t>Example:</t>
7519                        <t>
7520                            <list>
7521                                <t>C: "GET SEND_EFFECT_CHAIN INFO 0 2"</t>
7522                                <t>S: "EFFECT_COUNT: 3"</t>
7523                                <t>&nbsp;&nbsp;&nbsp;"EFFECT_SEQUENCE: 31,4,7"</t>
7524                                <t>&nbsp;&nbsp;&nbsp;"."</t>
7525                            </list>
7526                        </t>
7527                    </section>
7528    
7529                    <section title="Append effect instance to a send effect chain" anchor="APPEND SEND_EFFECT_CHAIN EFFECT">
7530                        <t>The front-end can add an unused effect instance to the
7531                        end of a send effect chain by sending the following command:</t>
7532                        <t>
7533                            <list>
7534                                <t>APPEND SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;effect-instance&gt;</t>
7535                            </list>
7536                        </t>
7537                        <t>Where &lt;audio-device&gt; should be replaced by the
7538                        numerical ID of the audio output device as given by the
7539                        <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
7540                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
7541                        command and &lt;effect-chain&gt; by the numerical ID as
7542                        returned by the
7543                        <xref target="ADD SEND_EFFECT_CHAIN">"ADD SEND_EFFECT_CHAIN"</xref>
7544                        or
7545                        <xref target="LIST SEND_EFFECT_CHAINS">"LIST SEND_EFFECT_CHAINS"</xref>
7546                        command and &lt;effect-instance&gt; as returned by the
7547                        <xref target="CREATE EFFECT_INSTANCE">"CREATE EFFECT_INSTANCE"</xref> or
7548                        <xref target="LIST EFFECT_INSTANCES">"LIST EFFECT_INSTANCES"</xref>
7549                        command.</t>
7550                        <t>Only unused effect instances can be added to the effect
7551                        chain. Trying to add an effect instance which is already in
7552                        use somewhere in the audio signal path of the sampler will
7553                        result in an error.</t>
7554    
7555                        <t>Possible Answers:</t>
7556                        <t>
7557                            <list>
7558                                <t>"OK" -
7559                                    <list>
7560                                        <t>in case the effect instance was
7561                                        added successfully to the chain</t>
7562                                    </list>
7563                                </t>
7564                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7565                                    <list>
7566                                        <t>if the effect instance could not be added</t>
7567                                    </list>
7568                                </t>
7569                            </list>
7570                        </t>
7571    
7572                        <t>Examples:</t>
7573                        <t>
7574                            <list>
7575                                <t>C: "APPEND SEND_EFFECT_CHAIN EFFECT 0 2 38"</t>
7576                                <t>S: "OK"</t>
7577                            </list>
7578                        </t>
7579                    </section>
7580    
7581                    <section title="Insert effect instance to a send effect chain" anchor="INSERT SEND_EFFECT_CHAIN EFFECT">
7582                        <t>The front-end can add an unused effect instance to a
7583                        certain position of a send effect chain by sending the
7584                        following command:</t>
7585                        <t>
7586                            <list>
7587                                <t>INSERT SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt; &lt;effect-instance&gt;</t>
7588                            </list>
7589                        </t>
7590                        <t>Where &lt;audio-device&gt; should be replaced by the
7591                        numerical ID of the audio output device as given by the
7592                        <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
7593                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
7594                        command, &lt;effect-chain&gt; by the numerical ID as
7595                        returned by the
7596                        <xref target="ADD SEND_EFFECT_CHAIN">"ADD SEND_EFFECT_CHAIN"</xref>
7597                        or
7598                        <xref target="LIST SEND_EFFECT_CHAINS">"LIST SEND_EFFECT_CHAINS"</xref>
7599                        command, &lt;effect-instance&gt; as returned by the
7600                        <xref target="CREATE EFFECT_INSTANCE">"CREATE EFFECT_INSTANCE"</xref> or
7601                        <xref target="LIST EFFECT_INSTANCES">"LIST EFFECT_INSTANCES"</xref>
7602                        command and &lt;chain-pos&gt; the exact position of the
7603                        effect chain where the supplied effect shall be inserted
7604                        to.</t>
7605                        <t>Only unused effect instances can be added to the effect
7606                        chain. Trying to add an effect instance which is already in
7607                        use somewhere in the audio signal path of the sampler will
7608                        result in an error.</t>
7609    
7610                        <t>Possible Answers:</t>
7611                        <t>
7612                            <list>
7613                                <t>"OK" -
7614                                    <list>
7615                                        <t>in case the effect instance was
7616                                        added successfully to the chain</t>
7617                                    </list>
7618                                </t>
7619                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7620                                    <list>
7621                                        <t>if the effect instance could not be added</t>
7622                                    </list>
7623                                </t>
7624                            </list>
7625                        </t>
7626    
7627                        <t>Examples:</t>
7628                        <t>
7629                            <list>
7630                                <t>C: "INSERT SEND_EFFECT_CHAIN EFFECT 0 2 4 38"</t>
7631                                <t>S: "OK"</t>
7632                            </list>
7633                        </t>
7634                    </section>
7635    
7636                    <section title="Remove effect instance from send effect chain" anchor="REMOVE SEND_EFFECT_CHAIN EFFECT">
7637                        <t>The front-end can remove an effect instance from a
7638                        certain position of a send effect chain by sending the
7639                        following command:</t>
7640                        <t>
7641                            <list>
7642                                <t>REMOVE SEND_EFFECT_CHAIN EFFECT &lt;audio-device&gt; &lt;effect-chain&gt; &lt;chain-pos&gt;</t>
7643                            </list>
7644                        </t>
7645                        <t>Where &lt;audio-device&gt; should be replaced by the
7646                        numerical ID of the audio output device as given by the
7647                        <xref target="CREATE AUDIO_OUTPUT_DEVICE">"CREATE AUDIO_OUTPUT_DEVICE"</xref>
7648                        or <xref target="LIST AUDIO_OUTPUT_DEVICES">"LIST AUDIO_OUTPUT_DEVICES"</xref>
7649                        command, &lt;effect-chain&gt; by the numerical ID as
7650                        returned by the
7651                        <xref target="ADD SEND_EFFECT_CHAIN">"ADD SEND_EFFECT_CHAIN"</xref>
7652                        or
7653                        <xref target="LIST SEND_EFFECT_CHAINS">"LIST SEND_EFFECT_CHAINS"</xref>
7654                        command and &lt;chain-pos&gt; the exact position of the
7655                        effect instance to be removed from the effect chain.</t>
7656    
7657                        <t>Possible Answers:</t>
7658                        <t>
7659                            <list>
7660                                <t>"OK" -
7661                                    <list>
7662                                        <t>in case the effect instance was
7663                                        removed successfully</t>
7664                                    </list>
7665                                </t>
7666                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
7667                                    <list>
7668                                        <t>if the effect instance could not be removed</t>
7669                                    </list>
7670                                </t>
7671                            </list>
7672                        </t>
7673    
7674                        <t>Examples:</t>
7675                        <t>
7676                            <list>
7677                                <t>C: "REMOVE SEND_EFFECT_CHAIN EFFECT 0 2 4"</t>
7678                                <t>S: "OK"</t>
7679                            </list>
7680                        </t>
7681                    </section>
7682    
7683                </section>
7684            </section>
7685    
7686          <section title="Command Syntax" anchor="command_syntax">          <section title="Command Syntax" anchor="command_syntax">
7687              <t>The grammar of the control protocol as descibed in <xref target="control_commands"/>              <t>The grammar of the control protocol as descibed in <xref target="control_commands"/>
# Line 4287  Schoenebeck'> Line 7755  Schoenebeck'>
7755                  </t>                  </t>
7756                  <t>/ UNSUBSCRIBE SP unsubscribe_event                  <t>/ UNSUBSCRIBE SP unsubscribe_event
7757                  </t>                  </t>
                 <t>/ SELECT SP text  
                 </t>  
7758                  <t>/ RESET SP reset_instruction                  <t>/ RESET SP reset_instruction
7759                  </t>                  </t>
7760                  <t>/ CLEAR SP clear_instruction                  <t>/ CLEAR SP clear_instruction
7761                  </t>                  </t>
7762                    <t>/ FIND SP find_instruction
7763                    </t>
7764                    <t>/ MOVE SP move_instruction
7765                    </t>
7766                    <t>/ COPY SP copy_instruction
7767                    </t>
7768                    <t>/ EDIT SP edit_instruction
7769                    </t>
7770                    <t>/ FORMAT SP format_instruction
7771                    </t>
7772                    <t>/ SEND SP send_instruction
7773                    </t>
7774                    <t>/ APPEND SP append_instruction
7775                    </t>
7776                    <t>/ INSERT SP insert_instruction
7777                    </t>
7778                  <t>/ RESET                  <t>/ RESET
7779                  </t>                  </t>
7780                  <t>/ QUIT                  <t>/ QUIT
# Line 4303  Schoenebeck'> Line 7785  Schoenebeck'>
7785          <list>          <list>
7786                  <t>CHANNEL                  <t>CHANNEL
7787                  </t>                  </t>
7788                    <t>/ DB_INSTRUMENT_DIRECTORY SP db_path
7789                    </t>
7790                    <t>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP db_path SP filename
7791                    </t>
7792                    <t>/ DB_INSTRUMENTS SP NON_MODAL SP scan_mode SP FILE_AS_DIR SP db_path SP filename
7793                    </t>
7794                    <t>/ DB_INSTRUMENTS SP scan_mode SP db_path SP filename
7795                    </t>
7796                    <t>/ DB_INSTRUMENTS SP scan_mode SP FILE_AS_DIR SP db_path SP filename
7797                    </t>
7798                    <t>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename
7799                    </t>
7800                    <t>/ DB_INSTRUMENTS SP NON_MODAL SP db_path SP filename SP instrument_index
7801                    </t>
7802                    <t>/ DB_INSTRUMENTS SP db_path SP filename
7803                    </t>
7804                    <t>/ DB_INSTRUMENTS SP db_path SP filename SP instrument_index
7805                    </t>
7806                  <t>/ MIDI_INSTRUMENT_MAP                  <t>/ MIDI_INSTRUMENT_MAP
7807                  </t>                  </t>
7808                  <t>/ MIDI_INSTRUMENT_MAP SP map_name                  <t>/ MIDI_INSTRUMENT_MAP SP map_name
7809                  </t>                  </t>
7810                    <t>/ SEND_EFFECT_CHAIN SP device_index
7811                    </t>
7812          </list>          </list>
7813  </t>  </t>
7814  <t>subscribe_event =  <t>subscribe_event =
7815          <list>          <list>
7816                  <t>CHANNEL_COUNT                  <t>AUDIO_OUTPUT_DEVICE_COUNT
7817                    </t>
7818                    <t>/ AUDIO_OUTPUT_DEVICE_INFO
7819                    </t>
7820                    <t>/ MIDI_INPUT_DEVICE_COUNT
7821                    </t>
7822                    <t>/ MIDI_INPUT_DEVICE_INFO
7823                    </t>
7824                    <t>/ CHANNEL_COUNT
7825                    </t>
7826                    <t>/ CHANNEL_MIDI
7827                    </t>
7828                    <t>/ DEVICE_MIDI
7829                  </t>                  </t>
7830                  <t>/ VOICE_COUNT                  <t>/ VOICE_COUNT
7831                  </t>                  </t>
# Line 4321  Schoenebeck'> Line 7835  Schoenebeck'>
7835                  </t>                  </t>
7836                  <t>/ CHANNEL_INFO                  <t>/ CHANNEL_INFO
7837                  </t>                  </t>
7838                    <t>/ FX_SEND_COUNT
7839                    </t>
7840                    <t>/ FX_SEND_INFO
7841                    </t>
7842                    <t>/ MIDI_INSTRUMENT_MAP_COUNT
7843                    </t>
7844                    <t>/ MIDI_INSTRUMENT_MAP_INFO
7845                    </t>
7846                    <t>/ MIDI_INSTRUMENT_COUNT
7847                    </t>
7848                    <t>/ MIDI_INSTRUMENT_INFO
7849                    </t>
7850                    <t>/ DB_INSTRUMENT_DIRECTORY_COUNT
7851                    </t>
7852                    <t>/ DB_INSTRUMENT_DIRECTORY_INFO
7853                    </t>
7854                    <t>/ DB_INSTRUMENT_COUNT
7855                    </t>
7856                    <t>/ DB_INSTRUMENT_INFO
7857                    </t>
7858                    <t>/ DB_INSTRUMENTS_JOB_INFO
7859                    </t>
7860                  <t>/ MISCELLANEOUS                  <t>/ MISCELLANEOUS
7861                  </t>                  </t>
7862                    <t>/ TOTAL_STREAM_COUNT
7863                    </t>
7864                  <t>/ TOTAL_VOICE_COUNT                  <t>/ TOTAL_VOICE_COUNT
7865                  </t>                  </t>
7866                    <t>/ GLOBAL_INFO
7867                    </t>
7868          </list>          </list>
7869  </t>  </t>
7870  <t>unsubscribe_event =  <t>unsubscribe_event =
7871          <list>          <list>
7872                  <t>CHANNEL_COUNT                  <t>AUDIO_OUTPUT_DEVICE_COUNT
7873                    </t>
7874                    <t>/ AUDIO_OUTPUT_DEVICE_INFO
7875                    </t>
7876                    <t>/ MIDI_INPUT_DEVICE_COUNT
7877                    </t>
7878                    <t>/ MIDI_INPUT_DEVICE_INFO
7879                    </t>
7880                    <t>/ CHANNEL_COUNT
7881                    </t>
7882                    <t>/ CHANNEL_MIDI
7883                    </t>
7884                    <t>/ DEVICE_MIDI
7885                  </t>                  </t>
7886                  <t>/ VOICE_COUNT                  <t>/ VOICE_COUNT
7887                  </t>                  </t>
# Line 4339  Schoenebeck'> Line 7891  Schoenebeck'>
7891                  </t>                  </t>
7892                  <t>/ CHANNEL_INFO                  <t>/ CHANNEL_INFO
7893                  </t>                  </t>
7894                    <t>/ FX_SEND_COUNT
7895                    </t>
7896                    <t>/ FX_SEND_INFO
7897                    </t>
7898                    <t>/ MIDI_INSTRUMENT_MAP_COUNT
7899                    </t>
7900                    <t>/ MIDI_INSTRUMENT_MAP_INFO
7901                    </t>
7902                    <t>/ MIDI_INSTRUMENT_COUNT
7903                    </t>
7904                    <t>/ MIDI_INSTRUMENT_INFO
7905                    </t>
7906                    <t>/ DB_INSTRUMENT_DIRECTORY_COUNT
7907                    </t>
7908                    <t>/ DB_INSTRUMENT_DIRECTORY_INFO
7909                    </t>
7910                    <t>/ DB_INSTRUMENT_COUNT
7911                    </t>
7912                    <t>/ DB_INSTRUMENT_INFO
7913                    </t>
7914                    <t>/ DB_INSTRUMENTS_JOB_INFO
7915                    </t>
7916                  <t>/ MISCELLANEOUS                  <t>/ MISCELLANEOUS
7917                  </t>                  </t>
7918                    <t>/ TOTAL_STREAM_COUNT
7919                    </t>
7920                  <t>/ TOTAL_VOICE_COUNT                  <t>/ TOTAL_VOICE_COUNT
7921                  </t>                  </t>
7922                    <t>/ GLOBAL_INFO
7923                    </t>
7924          </list>          </list>
7925  </t>  </t>
7926  <t>map_instruction =  <t>map_instruction =
7927          <list>          <list>
7928                  <t>MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value                  <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
7929                  </t>                  </t>
7930                  <t>/ MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode                  <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
7931                  </t>                  </t>
7932                  <t>/ MIDI_INSTRUMENT SP midi_map SP midi_bank SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP entry_name                  <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
7933                  </t>                  </t>
7934                  <t>/ MIDI_INSTRUMENT SP 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                  <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
7935                  </t>                  </t>
7936          </list>          </list>
7937  </t>  </t>
# Line 4371  Schoenebeck'> Line 7949  Schoenebeck'>
7949                  </t>                  </t>
7950                  <t>/ MIDI_INSTRUMENT_MAP SP ALL                  <t>/ MIDI_INSTRUMENT_MAP SP ALL
7951                  </t>                  </t>
7952                    <t>/ SEND_EFFECT_CHAIN SP device_index SP effect_chain
7953                    </t>
7954                    <t>/ SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos
7955                    </t>
7956                    <t>/ FX_SEND SP SEND_EFFECT SP sampler_channel SP fx_send_id
7957                    </t>
7958                    <t>/ DB_INSTRUMENT_DIRECTORY SP FORCE SP db_path
7959                    </t>
7960                    <t>/ DB_INSTRUMENT_DIRECTORY SP db_path
7961                    </t>
7962                    <t>/ DB_INSTRUMENT SP db_path
7963                    </t>
7964          </list>          </list>
7965  </t>  </t>
7966  <t>get_instruction =  <t>get_instruction =
7967          <list>          <list>
7968                  <t>AVAILABLE_ENGINES                  <t>AVAILABLE_ENGINES
7969                  </t>                  </t>
7970                    <t>/ AVAILABLE_EFFECTS
7971                    </t>
7972                    <t>/ EFFECT_INSTANCES
7973                    </t>
7974                    <t>/ EFFECT SP INFO SP effect_index
7975                    </t>
7976                    <t>/ EFFECT_INSTANCE SP INFO SP effect_instance
7977                    </t>
7978                    <t>/ EFFECT_INSTANCE_INPUT_CONTROL SP INFO SP effect_instance SP input_control
7979                    </t>
7980                    <t>/ SEND_EFFECT_CHAINS SP device_index
7981                    </t>
7982                    <t>/ SEND_EFFECT_CHAIN SP INFO SP device_index SP effect_chain
7983                    </t>
7984                  <t>/ AVAILABLE_MIDI_INPUT_DRIVERS                  <t>/ AVAILABLE_MIDI_INPUT_DRIVERS
7985                  </t>                  </t>
7986                  <t>/ MIDI_INPUT_DRIVER SP INFO SP string                  <t>/ MIDI_INPUT_DRIVER SP INFO SP string
# Line 4423  Schoenebeck'> Line 8027  Schoenebeck'>
8027                  </t>                  </t>
8028                  <t>/ SERVER SP INFO                  <t>/ SERVER SP INFO
8029                  </t>                  </t>
8030                    <t>/ TOTAL_STREAM_COUNT
8031                    </t>
8032                  <t>/ TOTAL_VOICE_COUNT                  <t>/ TOTAL_VOICE_COUNT
8033                  </t>                  </t>
8034                  <t>/ TOTAL_VOICE_COUNT_MAX                  <t>/ TOTAL_VOICE_COUNT_MAX
# Line 4437  Schoenebeck'> Line 8043  Schoenebeck'>
8043                  </t>                  </t>
8044                  <t>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map                  <t>/ MIDI_INSTRUMENT_MAP SP INFO SP midi_map
8045                  </t>                  </t>
8046                    <t>/ FX_SENDS SP sampler_channel
8047                    </t>
8048                    <t>/ FX_SEND SP INFO SP sampler_channel SP fx_send_id
8049                    </t>
8050                    <t>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
8051                    </t>
8052                    <t>/ DB_INSTRUMENT_DIRECTORIES SP db_path
8053                    </t>
8054                    <t>/ DB_INSTRUMENT_DIRECTORY SP INFO SP db_path
8055                    </t>
8056                    <t>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
8057                    </t>
8058                    <t>/ DB_INSTRUMENTS SP db_path
8059                    </t>
8060                    <t>/ DB_INSTRUMENT SP INFO SP db_path
8061                    </t>
8062                    <t>/ DB_INSTRUMENTS_JOB SP INFO SP number
8063                    </t>
8064                    <t>/ VOLUME
8065                    </t>
8066                    <t>/ VOICES
8067                    </t>
8068                    <t>/ STREAMS
8069                    </t>
8070                    <t>/ FILE SP INSTRUMENTS SP filename
8071                    </t>
8072                    <t>/ FILE SP INSTRUMENT SP INFO SP filename SP instrument_index
8073                    </t>
8074          </list>          </list>
8075  </t>  </t>
8076  <t>set_instruction =  <t>set_instruction =
# Line 4447  Schoenebeck'> Line 8081  Schoenebeck'>
8081                  </t>                  </t>
8082                  <t>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list                  <t>/ MIDI_INPUT_DEVICE_PARAMETER SP number SP string '=' param_val_list
8083                  </t>                  </t>
8084                    <t>/ MIDI_INPUT_PORT_PARAMETER SP number SP number SP string '=' NONE
8085                    </t>
8086                  <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
8087                  </t>                  </t>
8088                    <t>/ EFFECT_INSTANCE_INPUT_CONTROL SP VALUE SP effect_instance SP input_control SP control_value
8089                    </t>
8090                  <t>/ CHANNEL SP set_chan_instruction                  <t>/ CHANNEL SP set_chan_instruction
8091                  </t>                  </t>
8092                  <t>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name                  <t>/ MIDI_INSTRUMENT_MAP SP NAME SP midi_map SP map_name
8093                  </t>                  </t>
8094                    <t>/ FX_SEND SP NAME SP sampler_channel SP fx_send_id SP fx_send_name
8095                    </t>
8096                    <t>/ FX_SEND SP AUDIO_OUTPUT_CHANNEL SP sampler_channel SP fx_send_id SP audio_channel_index SP audio_channel_index
8097                    </t>
8098                    <t>/ FX_SEND SP MIDI_CONTROLLER SP sampler_channel SP fx_send_id SP midi_ctrl
8099                    </t>
8100                    <t>/ FX_SEND SP LEVEL SP sampler_channel SP fx_send_id SP volume_value
8101                    </t>
8102                    <t>/ FX_SEND SP SEND_EFFECT SP sampler_channel SP fx_send_id SP effect_chain SP chain_pos
8103                    </t>
8104                    <t>/ DB_INSTRUMENT_DIRECTORY SP NAME SP db_path SP stringval_escaped
8105                    </t>
8106                    <t>/ DB_INSTRUMENT_DIRECTORY SP DESCRIPTION SP db_path SP stringval_escaped
8107                    </t>
8108                    <t>/ DB_INSTRUMENT SP NAME SP db_path SP stringval_escaped
8109                    </t>
8110                    <t>/ DB_INSTRUMENT SP DESCRIPTION SP db_path SP stringval_escaped
8111                    </t>
8112                    <t>/ DB_INSTRUMENT SP FILE_PATH SP filename SP filename
8113                    </t>
8114                  <t>/ ECHO SP boolean                  <t>/ ECHO SP boolean
8115                  </t>                  </t>
8116                    <t>/ VOLUME SP volume_value
8117                    </t>
8118                    <t>/ VOICES SP number
8119                    </t>
8120                    <t>/ STREAMS SP number
8121                    </t>
8122          </list>          </list>
8123  </t>  </t>
8124  <t>create_instruction =  <t>create_instruction =
# Line 4467  Schoenebeck'> Line 8131  Schoenebeck'>
8131                  </t>                  </t>
8132                  <t>/ MIDI_INPUT_DEVICE SP string                  <t>/ MIDI_INPUT_DEVICE SP string
8133                  </t>                  </t>
8134                    <t>/ FX_SEND SP sampler_channel SP midi_ctrl
8135                    </t>
8136                    <t>/ FX_SEND SP sampler_channel SP midi_ctrl SP fx_send_name
8137                    </t>
8138                    <t>/ EFFECT_INSTANCE SP effect_index
8139                    </t>
8140                    <t>/ EFFECT_INSTANCE SP effect_system SP module SP effect_name
8141                    </t>
8142          </list>          </list>
8143  </t>  </t>
8144  <t>reset_instruction =  <t>reset_instruction =
# Line 4483  Schoenebeck'> Line 8155  Schoenebeck'>
8155                  </t>                  </t>
8156          </list>          </list>
8157  </t>  </t>
8158    <t>find_instruction =
8159            <list>
8160                    <t>DB_INSTRUMENTS SP NON_RECURSIVE SP db_path SP query_val_list
8161                    </t>
8162                    <t>/ DB_INSTRUMENTS SP db_path SP query_val_list
8163                    </t>
8164                    <t>/ DB_INSTRUMENT_DIRECTORIES SP NON_RECURSIVE SP db_path SP query_val_list
8165                    </t>
8166                    <t>/ DB_INSTRUMENT_DIRECTORIES SP db_path SP query_val_list
8167                    </t>
8168                    <t>/ LOST SP DB_INSTRUMENT_FILES
8169                    </t>
8170            </list>
8171    </t>
8172    <t>move_instruction =
8173            <list>
8174                    <t>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
8175                    </t>
8176                    <t>/ DB_INSTRUMENT SP db_path SP db_path
8177                    </t>
8178            </list>
8179    </t>
8180    <t>copy_instruction =
8181            <list>
8182                    <t>DB_INSTRUMENT_DIRECTORY SP db_path SP db_path
8183                    </t>
8184                    <t>/ DB_INSTRUMENT SP db_path SP db_path
8185                    </t>
8186            </list>
8187    </t>
8188  <t>destroy_instruction =  <t>destroy_instruction =
8189          <list>          <list>
8190                  <t>AUDIO_OUTPUT_DEVICE SP number                  <t>AUDIO_OUTPUT_DEVICE SP number
8191                  </t>                  </t>
8192                  <t>/ MIDI_INPUT_DEVICE SP number                  <t>/ MIDI_INPUT_DEVICE SP number
8193                  </t>                  </t>
8194                    <t>/ FX_SEND SP sampler_channel SP fx_send_id
8195                    </t>
8196                    <t>/ EFFECT_INSTANCE SP number
8197                    </t>
8198          </list>          </list>
8199  </t>  </t>
8200  <t>load_instruction =  <t>load_instruction =
# Line 4499  Schoenebeck'> Line 8205  Schoenebeck'>
8205                  </t>                  </t>
8206          </list>          </list>
8207  </t>  </t>
8208    <t>append_instruction =
8209            <list>
8210                    <t>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP effect_instance
8211                    </t>
8212            </list>
8213    </t>
8214    <t>insert_instruction =
8215            <list>
8216                    <t>SEND_EFFECT_CHAIN SP EFFECT SP device_index SP effect_chain SP chain_pos SP effect_instance
8217                    </t>
8218            </list>
8219    </t>
8220  <t>set_chan_instruction =  <t>set_chan_instruction =
8221          <list>          <list>
8222                  <t>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index                  <t>AUDIO_OUTPUT_DEVICE SP sampler_channel SP device_index
# Line 4531  Schoenebeck'> Line 8249  Schoenebeck'>
8249                  </t>                  </t>
8250          </list>          </list>
8251  </t>  </t>
8252    <t>edit_instruction =
8253            <list>
8254                    <t>CHANNEL SP INSTRUMENT SP sampler_channel
8255                    </t>
8256            </list>
8257    </t>
8258    <t>format_instruction =
8259            <list>
8260                    <t>INSTRUMENTS_DB
8261                    </t>
8262            </list>
8263    </t>
8264    <t>modal_arg =
8265            <list>
8266                    <t>/* epsilon (empty argument) */
8267                    </t>
8268                    <t>/ NON_MODAL SP
8269                    </t>
8270            </list>
8271    </t>
8272  <t>key_val_list =  <t>key_val_list =
8273          <list>          <list>
8274                  <t>string '=' param_val_list                  <t>string '=' param_val_list
# Line 4557  Schoenebeck'> Line 8295  Schoenebeck'>
8295                  </t>                  </t>
8296                  <t>/ AVAILABLE_ENGINES                  <t>/ AVAILABLE_ENGINES
8297                  </t>                  </t>
8298                    <t>/ AVAILABLE_EFFECTS
8299                    </t>
8300                    <t>/ EFFECT_INSTANCES
8301                    </t>
8302                    <t>/ SEND_EFFECT_CHAINS SP number
8303                    </t>
8304                  <t>/ AVAILABLE_MIDI_INPUT_DRIVERS                  <t>/ AVAILABLE_MIDI_INPUT_DRIVERS
8305                  </t>                  </t>
8306                  <t>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS                  <t>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
# Line 4567  Schoenebeck'> Line 8311  Schoenebeck'>
8311                  </t>                  </t>
8312                  <t>/ MIDI_INSTRUMENT_MAPS                  <t>/ MIDI_INSTRUMENT_MAPS
8313                  </t>                  </t>
8314                    <t>/ FX_SENDS SP sampler_channel
8315                    </t>
8316                    <t>/ DB_INSTRUMENT_DIRECTORIES SP RECURSIVE SP db_path
8317                    </t>
8318                    <t>/ DB_INSTRUMENT_DIRECTORIES SP db_path
8319                    </t>
8320                    <t>/ DB_INSTRUMENTS SP RECURSIVE SP db_path
8321                    </t>
8322                    <t>/ DB_INSTRUMENTS SP db_path
8323                    </t>
8324                    <t>/ FILE SP INSTRUMENTS SP filename
8325                    </t>
8326            </list>
8327    </t>
8328    <t>send_instruction =
8329            <list>
8330                    <t>CHANNEL SP MIDI_DATA SP string SP sampler_channel SP number SP number
8331                    </t>
8332          </list>          </list>
8333  </t>  </t>
8334  <t>load_instr_args =  <t>load_instr_args =
# Line 4593  Schoenebeck'> Line 8355  Schoenebeck'>
8355                  </t>                  </t>
8356          </list>          </list>
8357  </t>  </t>
8358    <t>effect_instance =
8359            <list>
8360                    <t>number
8361                    </t>
8362            </list>
8363    </t>
8364  <t>device_index =  <t>device_index =
8365          <list>          <list>
8366                  <t>number                  <t>number
# Line 4649  Schoenebeck'> Line 8417  Schoenebeck'>
8417                  </t>                  </t>
8418          </list>          </list>
8419  </t>  </t>
8420    <t>midi_ctrl =
8421            <list>
8422                    <t>number
8423                    </t>
8424            </list>
8425    </t>
8426  <t>volume_value =  <t>volume_value =
8427          <list>          <list>
8428                  <t>dotnum                  <t>dotnum
# Line 4657  Schoenebeck'> Line 8431  Schoenebeck'>
8431                  </t>                  </t>
8432          </list>          </list>
8433  </t>  </t>
8434    <t>control_value =
8435            <list>
8436                    <t>real
8437                    </t>
8438            </list>
8439    </t>
8440  <t>sampler_channel =  <t>sampler_channel =
8441          <list>          <list>
8442                  <t>number                  <t>number
# Line 4669  Schoenebeck'> Line 8449  Schoenebeck'>
8449                  </t>                  </t>
8450          </list>          </list>
8451  </t>  </t>
8452    <t>fx_send_id =
8453            <list>
8454                    <t>number
8455                    </t>
8456            </list>
8457    </t>
8458  <t>engine_name =  <t>engine_name =
8459          <list>          <list>
8460                  <t>string                  <t>string
# Line 4677  Schoenebeck'> Line 8463  Schoenebeck'>
8463  </t>  </t>
8464  <t>filename =  <t>filename =
8465          <list>          <list>
8466                  <t>stringval                  <t>path
8467                    </t>
8468            </list>
8469    </t>
8470    <t>db_path =
8471            <list>
8472                    <t>path
8473                  </t>                  </t>
8474          </list>          </list>
8475  </t>  </t>
8476  <t>map_name =  <t>map_name =
8477          <list>          <list>
8478                  <t>stringval                  <t>stringval_escaped
8479                  </t>                  </t>
8480          </list>          </list>
8481  </t>  </t>
8482  <t>entry_name =  <t>entry_name =
8483          <list>          <list>
8484                  <t>stringval                  <t>stringval_escaped
8485                    </t>
8486            </list>
8487    </t>
8488    <t>fx_send_name =
8489            <list>
8490                    <t>stringval_escaped
8491                    </t>
8492            </list>
8493    </t>
8494    <t>effect_name =
8495            <list>
8496                    <t>stringval_escaped
8497                    </t>
8498            </list>
8499    </t>
8500    <t>effect_index =
8501            <list>
8502                    <t>number
8503                    </t>
8504            </list>
8505    </t>
8506    <t>effect_chain =
8507            <list>
8508                    <t>number
8509                    </t>
8510            </list>
8511    </t>
8512    <t>chain_pos =
8513            <list>
8514                    <t>number
8515                    </t>
8516            </list>
8517    </t>
8518    <t>input_control =
8519            <list>
8520                    <t>number
8521                  </t>                  </t>
8522          </list>          </list>
8523  </t>  </t>
# Line 4701  Schoenebeck'> Line 8529  Schoenebeck'>
8529                  </t>                  </t>
8530          </list>          </list>
8531  </t>  </t>
8532    
8533  <t>param_val =  <t>param_val =
8534          <list>          <list>
8535                  <t>string                  <t>string
# Line 4713  Schoenebeck'> Line 8542  Schoenebeck'>
8542                  </t>                  </t>
8543          </list>          </list>
8544  </t>  </t>
8545    <t>query_val_list =
8546            <list>
8547                    <t>string '=' query_val
8548                    </t>
8549                    <t>/ query_val_list SP string '=' query_val
8550                    </t>
8551            </list>
8552    </t>
8553    <t>query_val =
8554            <list>
8555                    <t>text_escaped
8556                    </t>
8557                    <t>/ stringval_escaped
8558                    </t>
8559            </list>
8560    </t>
8561    <t>scan_mode =
8562            <list>
8563                    <t>RECURSIVE
8564                    </t>
8565                    <t>/ NON_RECURSIVE
8566                    </t>
8567                    <t>/ FLAT
8568                    </t>
8569            </list>
8570    </t>
8571    <t>effect_system =
8572            <list>
8573                    <t>string
8574                    </t>
8575            </list>
8576    </t>
8577    <t>module =
8578            <list>
8579                    <t>filename
8580                    </t>
8581            </list>
8582    </t>
8583    
8584              <!-- GRAMMAR_BNF_END - do NOT delete or modify this line !!! -->              <!-- GRAMMAR_BNF_END - do NOT delete or modify this line !!! -->
8585    
8586                <section title="Character Set and Escape Sequences" anchor="character_set">
8587                    <t>Older versions of this protocol up to and including v1.1 only
8588                    supported the standard ASCII character set (ASCII code 0 - 127)
8589                    <xref target="RFC20"/>, all younger versions of this protocol
8590                    however support the Extended ASCII character set (ASCII code
8591                    0 - 255). The same group of younger protocols also support
8592                    escape sequences, but only for certain, explicitly declared
8593                    parts of the protocol. The supported escape sequences are
8594                    defined as follows:</t>
8595                    <texttable>
8596                        <ttcol>ASCII Character Sequence</ttcol>
8597                        <ttcol>Translated into (Name)</ttcol>
8598                        <c>\n</c> <c>new line</c>
8599                        <c>\r</c> <c>carriage return</c>
8600                        <c>\f</c> <c>form feed</c>
8601                        <c>\t</c> <c>horizontal tab</c>
8602                        <c>\v</c> <c>vertical tab</c>
8603                        <c>\'</c> <c>apostrophe</c>
8604                        <c>\"</c> <c>quotation mark</c>
8605                        <c>\\</c> <c>backslash</c>
8606                        <c>\OOO</c> <c>three digit octal ASCII code of the character</c>
8607                        <c>\xHH</c> <c>two digit hex ASCII code of the character</c>
8608                    </texttable>
8609                    <t>Notice: due to the transition of certain parts of the
8610                    protocol which now support escape sequences, a slight backward
8611                    incompatibility to protocols version v1.1 and younger has been
8612                    introduced. The only difference is that in parts of the protocol
8613                    where escape characters are now supported, a backslash characters
8614                    MUST be escaped as well (that is as double backslash), whereas
8615                    in the old versions a single backslash was sufficient.</t>
8616    
8617                    <t>The following LSCP commands support escape sequences as part
8618                    of their filename / path based arguments and / or may contain
8619                    a filename / path with escape sequences in their response:
8620                    <list>
8621                        <t><xref target="LOAD INSTRUMENT">"LOAD INSTRUMENT"</xref></t>
8622                        <t><xref target="GET CHANNEL INFO">"GET CHANNEL INFO"</xref></t>
8623                        <t><xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref></t>
8624                        <t><xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref></t>
8625                        <t><xref target="ADD DB_INSTRUMENT_DIRECTORY">"ADD DB_INSTRUMENT_DIRECTORY"</xref></t>
8626                        <t><xref target="ADD DB_INSTRUMENTS">"ADD DB_INSTRUMENTS"</xref></t>
8627                        <t><xref target="REMOVE DB_INSTRUMENT_DIRECTORY">"REMOVE DB_INSTRUMENT_DIRECTORY"</xref></t>
8628                        <t><xref target="REMOVE DB_INSTRUMENT">"REMOVE DB_INSTRUMENT"</xref></t>
8629                        <t><xref target="GET DB_INSTRUMENT_DIRECTORIES">"GET DB_INSTRUMENT_DIRECTORIES"</xref></t>
8630                        <t><xref target="LIST DB_INSTRUMENT_DIRECTORIES">"LIST DB_INSTRUMENT_DIRECTORIES"</xref></t>
8631                        <t><xref target="GET DB_INSTRUMENT_DIRECTORY INFO">"GET DB_INSTRUMENT_DIRECTORY INFO"</xref></t>
8632                        <t><xref target="GET DB_INSTRUMENTS">"GET DB_INSTRUMENTS"</xref></t>
8633                        <t><xref target="LIST DB_INSTRUMENTS">"LIST DB_INSTRUMENTS"</xref></t>
8634                        <t><xref target="GET DB_INSTRUMENT INFO">"GET DB_INSTRUMENT INFO"</xref></t>
8635                        <t><xref target="SET DB_INSTRUMENT_DIRECTORY NAME">"SET DB_INSTRUMENT_DIRECTORY NAME"</xref></t>
8636                        <t><xref target="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"</xref></t>
8637                        <t><xref target="SET DB_INSTRUMENT NAME">"SET DB_INSTRUMENT NAME"</xref></t>
8638                        <t><xref target="SET DB_INSTRUMENT DESCRIPTION">"SET DB_INSTRUMENT DESCRIPTION"</xref></t>
8639                        <t><xref target="FIND DB_INSTRUMENTS">"FIND DB_INSTRUMENTS"</xref></t>
8640                        <t><xref target="FIND DB_INSTRUMENT_DIRECTORIES">"FIND DB_INSTRUMENT_DIRECTORIES"</xref></t>
8641                        <t><xref target="MOVE DB_INSTRUMENT">"MOVE DB_INSTRUMENT"</xref></t>
8642                        <t><xref target="MOVE DB_INSTRUMENT_DIRECTORY">"MOVE DB_INSTRUMENT_DIRECTORY"</xref></t>
8643                        <t><xref target="COPY DB_INSTRUMENT">"COPY DB_INSTRUMENT"</xref></t>
8644                        <t><xref target="COPY DB_INSTRUMENT_DIRECTORY">"COPY DB_INSTRUMENT_DIRECTORY"</xref></t>
8645                        <t><xref target="FIND LOST DB_INSTRUMENT_FILES">"FIND LOST DB_INSTRUMENT_FILES"</xref></t>
8646                        <t><xref target="SET DB_INSTRUMENT FILE_PATH">"SET DB_INSTRUMENT FILE_PATH"</xref></t>
8647                        <t><xref target="GET FILE INSTRUMENTS">"GET FILE INSTRUMENTS"</xref></t>
8648                        <t><xref target="LIST FILE INSTRUMENTS">"LIST FILE INSTRUMENTS"</xref></t>
8649                        <t><xref target="GET FILE INSTRUMENT INFO">"GET FILE INSTRUMENT INFO"</xref></t>
8650                        <t><xref target="GET EFFECT INFO">"GET EFFECT INFO"</xref></t>
8651                        <t><xref target="GET EFFECT_INSTANCE INFO">"GET EFFECT_INSTANCE INFO"</xref></t>
8652                        <t><xref target="CREATE EFFECT_INSTANCE">"CREATE EFFECT_INSTANCE"</xref></t>
8653                    </list>
8654                    Note that the forward slash character ('/') has a special meaning in
8655                    filename / path based arguments: it acts as separator of the nodes in
8656                    the path, thus if a directory- or filename includes a forward slash
8657                    (not intended as path node separator), you MUST escape that slash
8658                    either with the respective hex escape sequence ("\x2f") or with the
8659                    respective octal escape sequence ("\057").
8660                    </t>
8661    
8662                    <t>
8663                    Note for Windows: file path arguments in LSCP are expected
8664                    to use forward slashes as directory node separator similar
8665                    to Unix based operating systems. In contrast to Unix however
8666                    a Windows typical drive character is expected to be
8667                    prefixed to the path. That is an original Windows file path
8668                    like "D:\Sounds\My.gig" would become in LSCP:
8669                    "D:/Sounds/My.gig".
8670                    </t>
8671    
8672                    <t>
8673                    The following LSCP commands even support escape sequences as
8674                    part of at least one of their text-based arguments (i.e. entity name,
8675                    description) and / or may contain escape sequences in at least one of
8676                    their text-based fields in their response:
8677                    <list>
8678                        <t><xref target="GET SERVER INFO">"GET SERVER INFO"</xref></t>
8679                        <t><xref target="GET ENGINE INFO">"GET ENGINE INFO"</xref></t>
8680                        <t><xref target="GET CHANNEL INFO">"GET CHANNEL INFO"</xref></t>
8681                        <t><xref target="CREATE FX_SEND">"CREATE FX_SEND"</xref></t>
8682                        <t><xref target="GET FX_SEND INFO">"GET FX_SEND INFO"</xref></t>
8683                        <t><xref target="SET FX_SEND NAME">"SET FX_SEND NAME"</xref></t>
8684                        <t><xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref></t>
8685                        <t><xref target="GET MIDI_INSTRUMENT_MAP INFO">"GET MIDI_INSTRUMENT_MAP INFO"</xref></t>
8686                        <t><xref target="ADD MIDI_INSTRUMENT_MAP">"ADD MIDI_INSTRUMENT_MAP"</xref></t>
8687                        <t><xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref></t>
8688                        <t><xref target="SET MIDI_INSTRUMENT_MAP NAME">"SET MIDI_INSTRUMENT_MAP NAME"</xref></t>
8689                        <t><xref target="GET DB_INSTRUMENT_DIRECTORY INFO">"GET DB_INSTRUMENT_DIRECTORY INFO"</xref></t>
8690                        <t><xref target="SET DB_INSTRUMENT_DIRECTORY NAME">"SET DB_INSTRUMENT_DIRECTORY NAME"</xref></t>
8691                        <t><xref target="SET DB_INSTRUMENT_DIRECTORY DESCRIPTION">"SET DB_INSTRUMENT_DIRECTORY DESCRIPTION"</xref></t>
8692                        <t><xref target="FIND DB_INSTRUMENT_DIRECTORIES">"FIND DB_INSTRUMENT_DIRECTORIES"</xref></t>
8693                        <t><xref target="GET DB_INSTRUMENT INFO">"GET DB_INSTRUMENT INFO"</xref></t>
8694                        <t><xref target="SET DB_INSTRUMENT NAME">"SET DB_INSTRUMENT NAME"</xref></t>
8695                        <t><xref target="SET DB_INSTRUMENT DESCRIPTION">"SET DB_INSTRUMENT DESCRIPTION"</xref></t>
8696                        <t><xref target="FIND DB_INSTRUMENTS">"FIND DB_INSTRUMENTS"</xref></t>
8697                        <t><xref target="GET EFFECT INFO">"GET EFFECT INFO"</xref></t>
8698                        <t><xref target="GET EFFECT_INSTANCE INFO">"GET EFFECT_INSTANCE INFO"</xref></t>
8699                        <t><xref target="CREATE EFFECT_INSTANCE">"CREATE EFFECT_INSTANCE"</xref></t>
8700                    </list>
8701                    Please note that these lists are manually maintained. If you
8702                    find a command that also supports escape sequences we forgot to
8703                    mention here, please report it!
8704                    </t>
8705                </section>
8706          </section>          </section>
8707    
8708          <section title="Events" anchor="events">          <section title="Events" anchor="events">
8709              <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>
8710    
8711              <section title="Number of sampler channels changed" anchor="SUBSCRIBE CHANNEL">              <section title="Number of audio output devices changed" anchor="SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT">
8712                    <t>Client may want to be notified when the total number of audio output devices on the
8713                    back-end changes by issuing the following command:</t>
8714                    <t>
8715                        <list>
8716                            <t>SUBSCRIBE AUDIO_OUTPUT_DEVICE_COUNT</t>
8717                        </list>
8718                    </t>
8719                    <t>Server will start sending the following notification messages:</t>
8720                    <t>
8721                        <list>
8722                            <t>"NOTIFY:AUDIO_OUTPUT_DEVICE_COUNT:&lt;devices&gt;"</t>
8723                        </list>
8724                    </t>
8725                    <t>where &lt;devices&gt; will be replaced by the new number
8726                    of audio output devices.</t>
8727                </section>
8728    
8729                <section title="Audio output device's settings changed" anchor="SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO">
8730                    <t>Client may want to be notified when changes were made to audio output devices on the
8731                    back-end by issuing the following command:</t>
8732                    <t>
8733                        <list>
8734                            <t>SUBSCRIBE AUDIO_OUTPUT_DEVICE_INFO</t>
8735                        </list>
8736                    </t>
8737                    <t>Server will start sending the following notification messages:</t>
8738                    <t>
8739                        <list>
8740                            <t>"NOTIFY:AUDIO_OUTPUT_DEVICE_INFO:&lt;device-id&gt;"</t>
8741                        </list>
8742                    </t>
8743                    <t>where &lt;device-id&gt; will be replaced by the numerical ID of the audio output device,
8744                    which settings has been changed. The front-end will have to send
8745                    the respective command to actually get the audio output device info. Because these messages
8746                    will be triggered by LSCP commands issued by other clients rather than real
8747                    time events happening on the server, it is believed that an empty notification
8748                    message is sufficient here.</t>
8749                </section>
8750    
8751                <section title="Number of MIDI input devices changed" anchor="SUBSCRIBE MIDI_INPUT_DEVICE_COUNT">
8752                    <t>Client may want to be notified when the total number of MIDI input devices on the
8753                    back-end changes by issuing the following command:</t>
8754                    <t>
8755                        <list>
8756                            <t>SUBSCRIBE MIDI_INPUT_DEVICE_COUNT</t>
8757                        </list>
8758                    </t>
8759                    <t>Server will start sending the following notification messages:</t>
8760                    <t>
8761                        <list>
8762                            <t>"NOTIFY:MIDI_INPUT_DEVICE_COUNT:&lt;devices&gt;"</t>
8763                        </list>
8764                    </t>
8765                    <t>where &lt;devices&gt; will be replaced by the new number
8766                    of MIDI input devices.</t>
8767                </section>
8768    
8769                <section title="MIDI input device's settings changed" anchor="SUBSCRIBE MIDI_INPUT_DEVICE_INFO">
8770                    <t>Client may want to be notified when changes were made to MIDI input devices on the
8771                    back-end by issuing the following command:</t>
8772                    <t>
8773                        <list>
8774                            <t>SUBSCRIBE MIDI_INPUT_DEVICE_INFO</t>
8775                        </list>
8776                    </t>
8777                    <t>Server will start sending the following notification messages:</t>
8778                    <t>
8779                        <list>
8780                            <t>"NOTIFY:MIDI_INPUT_DEVICE_INFO:&lt;device-id&gt;"</t>
8781                        </list>
8782                    </t>
8783                    <t>where &lt;device-id&gt; will be replaced by the numerical ID of the MIDI input device,
8784                    which settings has been changed. The front-end will have to send
8785                    the respective command to actually get the MIDI input device info. Because these messages
8786                    will be triggered by LSCP commands issued by other clients rather than real
8787                    time events happening on the server, it is believed that an empty notification
8788                    message is sufficient here.</t>
8789                </section>
8790    
8791                <section title="Number of sampler channels changed" anchor="SUBSCRIBE CHANNEL_COUNT">
8792                  <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
8793                  back-end changes by issuing the following command:</t>                  back-end changes by issuing the following command:</t>
8794                  <t>                  <t>
# Line 4738  Schoenebeck'> Line 8806  Schoenebeck'>
8806                  of sampler channels.</t>                  of sampler channels.</t>
8807              </section>              </section>
8808    
8809                <section title="MIDI data on a sampler channel arrived" anchor="SUBSCRIBE CHANNEL_MIDI">
8810                    <t>Client may want to be notified when MIDI data arrive on sampler channels on
8811                    back-end side, by issuing the following command:</t>
8812                    <t>
8813                        <list>
8814                            <t>SUBSCRIBE CHANNEL_MIDI</t>
8815                        </list>
8816                    </t>
8817                    <t>Server will start sending one of the the following notification messages:</t>
8818                    <t>
8819                        <list>
8820                            <t>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_ON  &lt;note&gt; &lt;velocity&gt;"</t>
8821                            <t>"NOTIFY:CHANNEL_MIDI:&lt;channel-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"</t>
8822                        </list>
8823                    </t>
8824                    <t>where &lt;channel-id&gt; will be replaced by the ID of the sampler channel where the MIDI
8825                    data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
8826                    0 .. 127, reflecting the analog meaning of the MIDI specification.
8827                    </t>
8828                    <t>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
8829                    delivered by this mechanism! With other words: events could be lost at any time!
8830                    This restriction was made to keep the RT-safeness of the backend's MIDI and audio
8831                    thread unaffected by this feature.</t>
8832                </section>
8833    
8834                <section title="MIDI data on a MIDI input device arrived" anchor="SUBSCRIBE DEVICE_MIDI">
8835                        <t>Client may want to be notified when MIDI data arrive on MIDI input devices by issuing the following command:</t>
8836                        <t>
8837                                <list>
8838                                        <t>SUBSCRIBE DEVICE_MIDI</t>
8839                                </list>
8840                        </t>
8841                        <t>Server will start sending one of the the following notification messages:</t>
8842                        <t>
8843                                <list>
8844                                        <t>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_ON &lt;note&gt; &lt;velocity&gt;"</t>
8845                                        <t>"NOTIFY:DEVICE_MIDI:&lt;device-id&gt; &lt;port-id&gt; NOTE_OFF &lt;note&gt; &lt;velocity&gt;"</t>
8846                                </list>
8847                        </t>
8848                        <t>where &lt;device-id&gt; &lt;port-id&gt; will be replaced
8849                           by the IDs of the respective MIDI input device and the device's MIDI port where the MIDI
8850                           data arrived. &lt;note&gt; and &lt;velocity&gt; are integer values in the range between
8851                           0 .. 127, reflecting the analog meaning of the MIDI specification.
8852                        </t>
8853                        <t>CAUTION: no guarantee whatsoever will be made that MIDI events are actually all
8854                           delivered by this mechanism! With other words: events could be lost at any time!
8855                           This restriction was made to keep the RT-safeness of the backend's MIDI and audio
8856                           thread unaffected by this feature.</t>
8857                </section>
8858    
8859              <section title="Number of active voices changed" anchor="SUBSCRIBE VOICE_COUNT">              <section title="Number of active voices changed" anchor="SUBSCRIBE VOICE_COUNT">
8860                  <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
8861                  back-end changes by issuing the following command:</t>                  back-end changes by issuing the following command:</t>
# Line 4749  Schoenebeck'> Line 8867  Schoenebeck'>
8867                  <t>Server will start sending the following notification messages:</t>                  <t>Server will start sending the following notification messages:</t>
8868                  <t>                  <t>
8869                      <list>                      <list>
8870                          <t>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;</t>                          <t>"NOTIFY:VOICE_COUNT:&lt;sampler-channel&gt; &lt;voices&gt;"</t>
8871                      </list>                      </list>
8872                  </t>                  </t>
8873                  <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 4797  Schoenebeck'> Line 8915  Schoenebeck'>
8915                  "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>
8916              </section>              </section>
8917    
8918              <section title="Channel information changed" anchor="SUBSCRIBE INFO">              <section title="Channel information changed" anchor="SUBSCRIBE CHANNEL_INFO">
8919                  <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
8920                  back-end by issuing the following command:</t>                  back-end by issuing the following command:</t>
8921                  <t>                  <t>
# Line 4819  Schoenebeck'> Line 8937  Schoenebeck'>
8937                  message is sufficient here.</t>                  message is sufficient here.</t>
8938              </section>              </section>
8939    
8940                <section title="Number of effect sends changed" anchor="SUBSCRIBE FX_SEND_COUNT">
8941                    <t>Client may want to be notified when the number of effect sends on
8942                    a particular sampler channel is changed by issuing the following command:</t>
8943                    <t>
8944                        <list>
8945                            <t>SUBSCRIBE FX_SEND_COUNT</t>
8946                        </list>
8947                    </t>
8948                    <t>Server will start sending the following notification messages:</t>
8949                    <t>
8950                        <list>
8951                            <t>"NOTIFY:FX_SEND_COUNT:&lt;channel-id&gt; &lt;fx-sends&gt;"</t>
8952                        </list>
8953                    </t>
8954                    <t>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
8955                    channel, on which the effect sends number is changed and &lt;fx-sends&gt; will
8956                    be replaced by the new number of effect sends on that channel.</t>
8957                </section>
8958    
8959                <section title="Effect send information changed" anchor="SUBSCRIBE FX_SEND_INFO">
8960                    <t>Client may want to be notified when changes were made to effect sends on a
8961                    a particular sampler channel by issuing the following command:</t>
8962                    <t>
8963                        <list>
8964                            <t>SUBSCRIBE FX_SEND_INFO</t>
8965                        </list>
8966                    </t>
8967                    <t>Server will start sending the following notification messages:</t>
8968                    <t>
8969                        <list>
8970                            <t>"NOTIFY:FX_SEND_INFO:&lt;channel-id&gt; &lt;fx-send-id&gt;"</t>
8971                        </list>
8972                    </t>
8973                    <t>where &lt;channel-id&gt; will be replaced by the numerical ID of the sampler
8974                    channel, on which an effect send entity is changed and &lt;fx-send-id&gt; will
8975                    be replaced by the numerical ID of the changed effect send.</t>
8976                </section>
8977    
8978              <section title="Total number of active voices changed" anchor="SUBSCRIBE TOTAL_VOICE_COUNT">              <section title="Total number of active voices changed" anchor="SUBSCRIBE TOTAL_VOICE_COUNT">
8979                  <t>Client may want to be notified when the total number of voices on the                  <t>Client may want to be notified when the total number of voices on the
8980                  back-end changes by issuing the following command:</t>                  back-end changes by issuing the following command:</t>
# Line 4830  Schoenebeck'> Line 8986  Schoenebeck'>
8986                  <t>Server will start sending the following notification messages:</t>                  <t>Server will start sending the following notification messages:</t>
8987                  <t>                  <t>
8988                      <list>                      <list>
8989                          <t>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;</t>                          <t>"NOTIFY:TOTAL_VOICE_COUNT:&lt;voices&gt;"</t>
8990                      </list>                      </list>
8991                  </t>                  </t>
8992                  <t>where &lt;voices&gt; will be replaced by the new number of                  <t>where &lt;voices&gt; will be replaced by the new number of
8993                  all currently active voices.</t>                  all currently active voices.</t>
8994              </section>              </section>
8995    
8996                <section title="Total number of active disk streams changed" anchor="SUBSCRIBE TOTAL_STREAM_COUNT">
8997                    <t>Client may want to be notified when the total number of disk streams on the
8998                    back-end changes by issuing the following command:</t>
8999                    <t>
9000                        <list>
9001                            <t>SUBSCRIBE TOTAL_STREAM_COUNT</t>
9002                        </list>
9003                    </t>
9004                    <t>Server will start sending the following notification messages:</t>
9005                    <t>
9006                        <list>
9007                            <t>"NOTIFY:TOTAL_STREAM_COUNT:&lt;streams&gt;"</t>
9008                        </list>
9009                    </t>
9010                    <t>where &lt;streams&gt; will be replaced by the new number of
9011                    all currently active disk streams.</t>
9012                </section>
9013    
9014                <section title="Number of MIDI instrument maps changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT">
9015                    <t>Client may want to be notified when the number of MIDI instrument maps on the
9016                    back-end changes by issuing the following command:</t>
9017                    <t>
9018                        <list>
9019                            <t>SUBSCRIBE MIDI_INSTRUMENT_MAP_COUNT</t>
9020                        </list>
9021                    </t>
9022                    <t>Server will start sending the following notification messages:</t>
9023                    <t>
9024                        <list>
9025                            <t>"NOTIFY:MIDI_INSTRUMENT_MAP_COUNT:&lt;maps&gt;"</t>
9026                        </list>
9027                    </t>
9028                    <t>where &lt;maps&gt; will be replaced by the new number
9029                    of MIDI instrument maps.</t>
9030                </section>
9031    
9032                <section title="MIDI instrument map information changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO">
9033                    <t>Client may want to be notified when changes were made to MIDI instrument maps on the
9034                    back-end by issuing the following command:</t>
9035                    <t>
9036                        <list>
9037                            <t>SUBSCRIBE MIDI_INSTRUMENT_MAP_INFO</t>
9038                        </list>
9039                    </t>
9040                    <t>Server will start sending the following notification messages:</t>
9041                    <t>
9042                        <list>
9043                            <t>"NOTIFY:MIDI_INSTRUMENT_MAP_INFO:&lt;map-id&gt;"</t>
9044                        </list>
9045                    </t>
9046                    <t>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
9047                    for which information changes occurred. The front-end will have to send
9048                    the respective command to actually get the MIDI instrument map info. Because these messages
9049                    will be triggered by LSCP commands issued by other clients rather than real
9050                    time events happening on the server, it is believed that an empty notification
9051                    message is sufficient here.</t>
9052                </section>
9053    
9054                <section title="Number of MIDI instruments changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_COUNT">
9055                    <t>Client may want to be notified when the number of MIDI instrument maps on the
9056                    back-end changes by issuing the following command:</t>
9057                    <t>
9058                        <list>
9059                            <t>SUBSCRIBE MIDI_INSTRUMENT_COUNT</t>
9060                        </list>
9061                    </t>
9062                    <t>Server will start sending the following notification messages:</t>
9063                    <t>
9064                        <list>
9065                            <t>"NOTIFY:MIDI_INSTRUMENT_COUNT:&lt;map-id&gt; &lt;instruments&gt;"</t>
9066                        </list>
9067                    </t>
9068                    <t>where &lt;map-id&gt; is the numerical ID of the MIDI instrument map, in which
9069                    the nuber of instruments has changed and &lt;instruments&gt; will be replaced by
9070                    the new number of MIDI instruments in the specified map.</t>
9071                </section>
9072    
9073                <section title="MIDI instrument information changed" anchor="SUBSCRIBE MIDI_INSTRUMENT_INFO">
9074                    <t>Client may want to be notified when changes were made to MIDI instruments on the
9075                    back-end by issuing the following command:</t>
9076                    <t>
9077                        <list>
9078                            <t>SUBSCRIBE MIDI_INSTRUMENT_INFO</t>
9079                        </list>
9080                    </t>
9081                    <t>Server will start sending the following notification messages:</t>
9082                    <t>
9083                        <list>
9084                            <t>"NOTIFY:MIDI_INSTRUMENT_INFO:&lt;map-id&gt; &lt;bank&gt; &lt;program&gt;"</t>
9085                        </list>
9086                    </t>
9087                    <t>where &lt;map-id&gt; will be replaced by the numerical ID of the MIDI instrument map,
9088                    in which a MIDI instrument is changed. &lt;bank&gt; and &lt;program&gt; specifies
9089                    the location of the changed MIDI instrument in the map. The front-end will have to send
9090                    the respective command to actually get the MIDI instrument info. Because these messages
9091                    will be triggered by LSCP commands issued by other clients rather than real
9092                    time events happening on the server, it is believed that an empty notification
9093                    message is sufficient here.</t>
9094                </section>
9095    
9096                <section title="Global settings changed" anchor="SUBSCRIBE GLOBAL_INFO">
9097                    <t>Client may want to be notified when changes to the global settings
9098                    of the sampler were made by issuing the following command:</t>
9099                    <t>
9100                        <list>
9101                            <t>SUBSCRIBE GLOBAL_INFO</t>
9102                        </list>
9103                    </t>
9104                    <t>Server will start sending the following types of notification messages:</t>
9105                    <t>
9106                        <list>
9107                            <t>"NOTIFY:GLOBAL_INFO:VOLUME &lt;volume&gt;" - Notifies that the
9108                            golbal volume of the sampler is changed, where &lt;volume&gt; will be
9109                            replaced by the optional dotted floating point value, reflecting the
9110                            new global volume parameter.</t>
9111                        </list>
9112                        <list>
9113                            <t>"NOTIFY:GLOBAL_INFO:VOICES &lt;max-voices&gt;" - Notifies that the
9114                            golbal limit of the sampler for maximum voices is changed, where
9115                            &lt;max-voices&gt; will be an integer value, reflecting the
9116                            new global voice limit parameter.</t>
9117                        </list>
9118                        <list>
9119                            <t>"NOTIFY:GLOBAL_INFO:STREAMS &lt;max-streams&gt;" - Notifies that the
9120                            golbal limit of the sampler for maximum disk streams is changed, where
9121                            &lt;max-streams&gt; will be an integer value, reflecting the
9122                            new global disk streams limit parameter.</t>
9123                        </list>
9124                    </t>
9125                </section>
9126    
9127                <section title="Number of database instrument directories changed" anchor="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT">
9128                    <t>Client may want to be notified when the number of instrument
9129                    directories in a particular directory in the instruments database
9130                    is changed by issuing the following command:</t>
9131                    <t>
9132                        <list>
9133                            <t>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_COUNT</t>
9134                        </list>
9135                    </t>
9136                    <t>Server will start sending the following notification messages:</t>
9137                    <t>
9138                        <list>
9139                            <t>"NOTIFY:DB_INSTRUMENT_DIRECTORY_COUNT:&lt;dir-path&gt;"</t>
9140                        </list>
9141                    </t>
9142                    <t>where &lt;dir-path&gt; will be replaced by the absolute path
9143                    name of the directory in the instruments database,
9144                    in which the number of directories is changed.</t>
9145                    <t>Note that when a non-empty directory is removed, this event
9146                    is not sent for the subdirectories in that directory.</t>
9147                </section>
9148    
9149                <section title="Database instrument directory information changed" anchor="SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO">
9150                    <t>Client may want to be notified when changes were made to directories
9151                    in the instruments database by issuing the following command:</t>
9152                    <t>
9153                        <list>
9154                            <t>SUBSCRIBE DB_INSTRUMENT_DIRECTORY_INFO</t>
9155                        </list>
9156                    </t>
9157                    <t>Server will start sending the following notification messages:</t>
9158                    <t>
9159                        <list>
9160                            <t>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:&lt;dir-path&gt;"</t>
9161                        </list>
9162                    </t>
9163                    <t>where &lt;dir-path&gt; will be replaced by the absolute path name
9164                    of the directory, for which information changes occurred. The front-end will have to send
9165                    the respective command to actually get the updated directory info. Because these messages
9166                    will be triggered by LSCP commands issued by other clients rather than real
9167                    time events happening on the server, it is believed that an empty notification
9168                    message is sufficient here.</t>
9169                    <t>
9170                        <list>
9171                            <t>"NOTIFY:DB_INSTRUMENT_DIRECTORY_INFO:NAME &lt;old-dir-path&gt; &lt;new-name&gt;"</t>
9172                        </list>
9173                    </t>
9174                    <t>where &lt;old-dir-path&gt; is the old absolute path name of the directory
9175                    (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
9176                    the new name of the directory, encapsulated into apostrophes.</t>
9177                </section>
9178    
9179                <section title="Number of database instruments changed" anchor="SUBSCRIBE DB_INSTRUMENT_COUNT">
9180                    <t>Client may want to be notified when the number of instruments
9181                    in a particular directory in the instruments database
9182                    is changed by issuing the following command:</t>
9183                    <t>
9184                        <list>
9185                            <t>SUBSCRIBE DB_INSTRUMENT_COUNT</t>
9186                        </list>
9187                    </t>
9188                    <t>Server will start sending the following notification messages:</t>
9189                    <t>
9190                        <list>
9191                            <t>"NOTIFY:DB_INSTRUMENT_COUNT:&lt;dir-path&gt;"</t>
9192                        </list>
9193                    </t>
9194                    <t>where &lt;dir-path&gt; will be replaced by the absolute path
9195                    name of the directory in the instruments database,
9196                    in which the number of instruments is changed.</t>
9197                    <t>Note that when a non-empty directory is removed, this event
9198                    is not sent for the instruments in that directory.</t>
9199                </section>
9200    
9201                <section title="Database instrument information changed" anchor="SUBSCRIBE DB_INSTRUMENT_INFO">
9202                    <t>Client may want to be notified when changes were made to instruments
9203                    in the instruments database by issuing the following command:</t>
9204                    <t>
9205                        <list>
9206                            <t>SUBSCRIBE DB_INSTRUMENT_INFO</t>
9207                        </list>
9208                    </t>
9209                    <t>Server will start sending the following notification messages:</t>
9210                    <t>
9211                        <list>
9212                            <t>"NOTIFY:DB_INSTRUMENT_INFO:&lt;instr-path&gt;"</t>
9213                        </list>
9214                    </t>
9215                    <t>where &lt;instr-path&gt; will be replaced by the absolute path name
9216                    of the instrument, which settings are changed. The front-end will have to send
9217                    the respective command to actually get the updated directory info. Because these messages
9218                    will be triggered by LSCP commands issued by other clients rather than real
9219                    time events happening on the server, it is believed that an empty notification
9220                    message is sufficient here.</t>
9221                    <t>
9222                        <list>
9223                            <t>"NOTIFY:DB_INSTRUMENT_INFO:NAME &lt;old-instr-path&gt; &lt;new-name&gt;"</t>
9224                        </list>
9225                    </t>
9226                    <t>where &lt;old-instr-path&gt; is the old absolute path name of the instrument
9227                    (encapsulated into apostrophes), which name is changes and &lt;new-name&gt; is
9228                    the new name of the instrument, encapsulated into apostrophes.</t>
9229                </section>
9230    
9231                <section title="Database job status information changed" anchor="SUBSCRIBE DB_INSTRUMENTS_JOB_INFO">
9232                    <t>Client may want to be notified when the status of particular database
9233                    instruments job is changed by issuing the following command:</t>
9234                    <t>
9235                        <list>
9236                            <t>SUBSCRIBE DB_INSTRUMENTS_JOB_INFO</t>
9237                        </list>
9238                    </t>
9239                    <t>Server will start sending the following notification messages:</t>
9240                    <t>
9241                        <list>
9242                            <t>"NOTIFY:DB_INSTRUMENTS_JOB_INFO:&lt;job-id&gt;"</t>
9243                        </list>
9244                    </t>
9245                    <t>where &lt;job-id&gt; will be replaced by the numerical ID of the job,
9246                    which status is changed. The front-end will have to send the respective
9247                    command to actually get the status info. Because these messages
9248                    will be triggered by LSCP commands issued by other clients rather than real
9249                    time events happening on the server, it is believed that an empty notification
9250                    message is sufficient here.</t>
9251                </section>
9252    
9253              <section title="Miscellaneous and debugging events" anchor="SUBSCRIBE MISCELLANEOUS">              <section title="Miscellaneous and debugging events" anchor="SUBSCRIBE MISCELLANEOUS">
9254                  <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
9255                  the server by issuing the following command:</t>                  the server by issuing the following command:</t>
# Line 4915  Schoenebeck'> Line 9328  Schoenebeck'>
9328                  </front>                  </front>
9329                  <seriesInfo name="RFC" value="2234" />                  <seriesInfo name="RFC" value="2234" />
9330              </reference>              </reference>
9331                <reference anchor="RFC20">
9332                    <front>
9333                        <title>ASCII format for Network Interchange</title>
9334                        <author>
9335                            <organization>UCLA</organization>
9336                        </author>
9337                        <date year="1969"></date>
9338                    </front>
9339                    <seriesInfo name="RFC" value="20" />
9340                </reference>
9341           </references>           </references>
9342      </back>      </back>
9343    

Legend:
Removed from v.973  
changed lines
  Added in v.2138

  ViewVC Help
Powered by ViewVC