/[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 937 by schoenebeck, Fri Nov 24 17:43:09 2006 UTC revision 944 by schoenebeck, Sun Nov 26 16:29:57 2006 UTC
# Line 13  Line 13 
13  <?rfc iprnotified="no" ?>  <?rfc iprnotified="no" ?>
14  <?rfc strict="yes" ?>  <?rfc strict="yes" ?>
15    
16  <rfc category="std" ipr="full2026" docName="LSCP 1.1">  <rfc category="std" ipr="full2026" docName="LSCP 1.2">
17      <front>      <front>
18          <title>LinuxSampler Control Protocol</title>          <title>LinuxSampler Control Protocol</title>
19          <author initials='C.S.' surname="Schoenebeck" fullname='C.          <author initials='C.S.' surname="Schoenebeck" fullname='C.
# Line 3434  Schoenebeck'> Line 3434  Schoenebeck'>
3434                      Other fields might be added in future.</t>                      Other fields might be added in future.</t>
3435                  </section>                  </section>
3436              </section>              </section>
3437    
3438    
3439                <section title="MIDI Instrument Mapping">
3440                    <t>The MIDI protocol provides a way to switch between instruments
3441                    by sending so called MIDI bank select and MIDI program change
3442                    messages which are essentially just numbers. The following commands
3443                    allow to actually map arbitrary MIDI bank select / program change
3444                    numbers with real instruments.</t>
3445                    <t>By default, that is when the sampler is launched, this map will
3446                    be empty, thus the sampler will simply ignore all program change
3447                    messages. The front-end has to explicitly add entries to the map
3448                    so the sampler knows how to react on a given program change
3449                    message, that is by switching to the respectively defined engine
3450                    type and loading the respective instrument.</t>
3451                    <t>Also note per MIDI specification a bank select message does not
3452                    cause to switch to another instrument. Instead when receiving a
3453                    bank select message the bank value will be stored and a subsequent
3454                    program change message (which may occur at any time) will finally
3455                    cause the sampler to switch to the respective instrument as
3456                    reflected by the current MIDI instrument map.</t>
3457    
3458                    <section title="Create or replace a MIDI instrument map entry" anchor="MAP MIDI_INSTRUMENT">
3459                        <t>The front-end can create a new or replace an existing entry
3460                        in the sampler's MIDI instrument map by sending the following
3461                        command:</t>
3462                        <t>
3463                            <list>
3464                                <t>MAP MIDI_INSTRUMENT &lt;midi_bank_msb&gt;
3465                                &lt;midi_bank_lsb&gt; &lt;midi_prog&gt; &lt;engine_name&gt;
3466                                &lt;filename&gt; &lt;instrument_index&gt; &lt;volume_value&gt;
3467                                [&lt;instr_load_mode&gt;] [&lt;name&gt;]</t>
3468                            </list>
3469                        </t>
3470                        <t>Where &lt;midi_bank_msb&gt; is an integer value between
3471                        0..127 reflecting the MIDI bank select MSB (coarse) index,
3472                        &lt;midi_bank_lsb&gt; an integer value between 0..127 reflecting
3473                        the MIDI bank select LSB (fine) index, &lt;midi_prog&gt; an
3474                        integer value between 0..127 reflecting the MIDI program change
3475                        index, &lt;engine_name&gt; a sampler engine name as returned by
3476                        the <xref target="LIST AVAILABLE_ENGINES">"LIST AVAILABLE_ENGINES"</xref>
3477                        command (not encapsulated into apostrophes), &lt;filename&gt; the name
3478                        of the instrument's file to be deployed (encapsulated into apostrophes), &lt;instrument_index&gt; the index (integer value) of the instrument
3479                        within the given file, &lt;volume_value&gt; reflects the master
3480                        volume of the instrument as optionally dotted number (where a
3481                        value < 1.0 means attenuation and a value > 1.0 means
3482                        amplification). This parameter easily allows to adjust the
3483                        volume of all intruments within a custom instrument map
3484                        without having to adjust their instrument files. The
3485                        OPTIONAL &lt;instr_load_mode&gt; argument defines the life
3486                        time of the instrument, that is when the instrument should
3487                        be loaded, when freed and has exactly the following
3488                        possibilities:</t>
3489                        <t>
3490                            <list>
3491                                <t>"ON_DEMAND" -
3492                                    <list>
3493                                        <t>The instrument will be loaded when needed,
3494                                        that is when demanded by at least one sampler
3495                                        channel. It will immediately be freed from memory
3496                                        when not needed by any sampler channel anymore.</t>
3497                                    </list>
3498                                </t>
3499                                <t>"ON_DEMAND_HOLD" -
3500                                    <list>
3501                                        <t>The instrument will be loaded when needed,
3502                                        that is when demanded by at least one sampler
3503                                        channel. It will be kept in memory even when
3504                                        not needed by any sampler channel anymore.
3505                                        Instruments with this mode are only freed
3506                                        when the sampler is reset or all mapping
3507                                        entries with this mode (and respective
3508                                        instrument) are explicitly changed to
3509                                        "ON_DEMAND" and no sampler channel is using
3510                                        the instrument anymore.</t>
3511                                    </list>
3512                                </t>
3513                                <t>"PERSISTENT" -
3514                                    <list>
3515                                        <t>The instrument will immediately be loaded
3516                                        into memory in the background when this mapping
3517                                        command is sent and the instrument is kept all
3518                                        the time. Instruments with this mode are
3519                                        only freed when the sampler is reset or all
3520                                        mapping entries with this mode (and
3521                                        respective instrument) are explicitly
3522                                        changed to "ON_DEMAND" and no sampler
3523                                        channel is using the instrument anymore.</t>
3524                                    </list>
3525                                </t>
3526                                <t>not supplied -
3527                                    <list>
3528                                        <t>In case there is no &lt;instr_load_mode&gt;
3529                                        argument given, it will be up to the
3530                                        InstrumentManager to decide which mode to use.
3531                                        Usually it will use "ON_DEMAND" if an entry
3532                                        for the given instrument does not exist in
3533                                        the InstrumentManager's list yet, otherwise
3534                                        if an entry already exists, it will simply
3535                                        stick with the mode currently reflected by
3536                                        the already existing entry, that is it will
3537                                        not change the mode.</t>
3538                                    </list>
3539                                </t>
3540                            </list>
3541                        </t>
3542                        <t>
3543                        The &lt;instr_load_mode&gt; argument thus allows to define an
3544                        appropriate strategy (low memory consumption vs. fast
3545                        instrument switching) for each instrument individually. Note, the
3546                        following restrictions apply to this argument: "ON_DEMAND_HOLD" and
3547                        "PERSISTENT" have to be supported by the respective sampler engine
3548                        (which is technically the case when the engine provides an
3549                        InstrumentManager for its format). If this is not the case the
3550                        argument will automatically fall back to the default value
3551                        "ON_DEMAND". Also the load mode of one instrument may
3552                        automatically change the laod mode of other instrument(s), i.e.
3553                        because the instruments are part of the same file and the
3554                        engine does not allow a way to manage load modes for them
3555                        individually. Due to this, in case the frontend shows the
3556                        load modes of entries, the frontend should retrieve the actual
3557                        mode by i.e. sending
3558                        <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>
3559                        command(s). Finally the OPTIONAL &lt;name&gt; argument allows to
3560                        set a custom name (encapsulated into apostrophes) for the mapping
3561                        entry, useful for frontends for displaying an appropriate name for
3562                        mapped instruments (using
3563                        <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>).
3564                        </t>
3565                        <t>
3566                        The "MAP MIDI_INSTRUMENT" command
3567                        will immediately return, thus it will not block when an
3568                        instrument is to be loaded due to a "PERSISTENT" type
3569                        entry as instruments are loaded in the background. As a
3570                        consequence this command may not necessarily return an error
3571                        i.e. when the given instrument file does not exist or may
3572                        turn out to be corrupt.
3573                        </t>
3574    
3575                        <t>Possible Answers:</t>
3576                        <t>
3577                            <list>
3578                                <t>"OK" -
3579                                    <list>
3580                                        <t>usually</t>
3581                                    </list>
3582                                </t>
3583                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3584                                    <list>
3585                                        <t>when the given engine does not exist or a value
3586                                        is out of range</t>
3587                                    </list>
3588                                </t>
3589                            </list>
3590                        </t>
3591    
3592                        <t>Examples:</t>
3593                        <t>
3594                            <list>
3595                                <t>C: "MAP MIDI_INSTRUMENT 3 0 0 gig '/usr/share/Steinway D.gig' 0 0.8 PERSISTENT"</t>
3596                                <t>S: "OK"</t>
3597                            </list>
3598                        </t>
3599                        <t>
3600                            <list>
3601                                <t>C: "MAP MIDI_INSTRUMENT 127 4 50 gig '/home/john/foostrings.gig' 7 1.0"</t>
3602                                <t>S: "OK"</t>
3603                            </list>
3604                        </t>
3605                        <t>
3606                            <list>
3607                                <t>C: "MAP MIDI_INSTRUMENT 0 0 0 gig '/usr/share/piano.gig' 0 1.0 'Normal Piano'"</t>
3608                                <t>S: "OK"</t>
3609                                <t>C: "MAP MIDI_INSTRUMENT 1 0 0 gig '/usr/share/piano.gig' 0 0.25 'Silent Piano'"</t>
3610                                <t>S: "OK"</t>
3611                            </list>
3612                        </t>
3613                        <t>
3614                            <list>
3615                                <t>C: "MAP MIDI_INSTRUMENT 99 8 120 gig '/home/joe/foodrums.gig' 0 1.0 PERSISTENT 'Foo Drumkit'"</t>
3616                                <t>S: "OK"</t>
3617                            </list>
3618                        </t>
3619                    </section>
3620    
3621                    <section title="Getting ammount of MIDI instrument map entries" anchor="GET MIDI_INSTRUMENTS">
3622                        <t>The front-end can query the amount of currently existing MIDI
3623                        instrument map entries by sending the following
3624                        command:</t>
3625                        <t>
3626                            <list>
3627                                <t>GET MIDI_INSTRUMENTS</t>
3628                            </list>
3629                        </t>
3630                        <t>Possible Answers:</t>
3631                        <t>
3632                            <list>
3633                                <t>LinuxSampler will answer by sending the current number of
3634                                entries in the sampler's MIDI instrument map.</t>
3635                            </list>
3636                        </t>
3637    
3638                        <t>Example:</t>
3639                        <t>
3640                            <list>
3641                                <t>C: "GET MIDI_INSTRUMENTS"</t>
3642                                <t>S: "634"</t>
3643                            </list>
3644                        </t>
3645                    </section>
3646    
3647                    <section title="Getting indeces of all MIDI instrument map entries" anchor="LIST MIDI_INSTRUMENTS">
3648                        <t>The front-end can query a list of all currently existing MIDI
3649                        instrument map entries by sending the following command:</t>
3650                        <t>
3651                            <list>
3652                                <t>LIST MIDI_INSTRUMENTS</t>
3653                            </list>
3654                        </t>
3655                        <t>Possible Answers:</t>
3656                        <t>
3657                            <list>
3658                                <t>LinuxSampler will answer by sending a comma separated
3659                                list of MIDI bank MSB (coarse) - MIDI bank LSB (fine) -
3660                                MIDI program triples, where each triple is encapsulated
3661                                into curly braces. The list is returned in one single
3662                                line. Each triple just reflects the key of the respective
3663                                map entry, thus subsequent
3664                                <xref target="GET MIDI_INSTRUMENT INFO">"GET MIDI_INSTRUMENT INFO"</xref>
3665                                command(s) are necessary to retrieve detailed informations
3666                                about each entry.</t>
3667                            </list>
3668                        </t>
3669    
3670                        <t>Example:</t>
3671                        <t>
3672                            <list>
3673                                <t>C: "LIST MIDI_INSTRUMENTS"</t>
3674                                <t>S: "{0,0,0},{0,0,1},{120,0,3},{120,0,4},{23,127,127}"</t>
3675                            </list>
3676                        </t>
3677                    </section>
3678    
3679                    <section title="Remove an entry from the MIDI instrument map" anchor="UNMAP MIDI_INSTRUMENT">
3680                        <t>The front-end can delete an entry from the MIDI instrument
3681                        map by sending the following command:</t>
3682                        <t>
3683                            <list>
3684                                <t>UNMAP MIDI_INSTRUMENT &lt;midi_bank_msb&gt; &lt;midi_bank_lsb&gt; &lt;midi_prog&gt;</t>
3685                            </list>
3686                        </t>
3687                        <t>
3688                        Where &lt;midi_bank_msb&gt; is an integer value between 0..127
3689                        reflecting the MIDI bank MSB (coarse) value, &lt;midi_bank_lsb&gt;
3690                        an integer value between 0..127 reflecting the MIDI bank LSB
3691                        (fine) value and &lt;midi_prog&gt; an integer value between
3692                        0..127 reflecting the MIDI program value of the map entrie's key
3693                        index triple.
3694                        </t>
3695    
3696                        <t>Possible Answers:</t>
3697                        <t>
3698                            <list>
3699                                <t>"OK" -
3700                                    <list>
3701                                        <t>usually</t>
3702                                    </list>
3703                                </t>
3704                                <t>"ERR:&lt;error-code&gt;:&lt;error-message&gt;" -
3705                                    <list>
3706                                        <t>when index out of bounds</t>
3707                                    </list>
3708                                </t>
3709                            </list>
3710                        </t>
3711    
3712                        <t>Example:</t>
3713                        <t>
3714                            <list>
3715                                <t>C: "UNMAP MIDI_INSTRUMENT 2 40 127"</t>
3716                                <t>S: "OK"</t>
3717                            </list>
3718                        </t>
3719                    </section>
3720    
3721                    <section title="Get current settings of MIDI instrument map entry" anchor="GET MIDI_INSTRUMENT INFO">
3722                        <t>The front-end can retrieve the current settings of a certain
3723                        instrument map entry by sending the following command:</t>
3724                        <t>
3725                            <list>
3726                                <t>GET MIDI_INSTRUMENT INFO &lt;midi_bank_msb&gt; &lt;midi_bank_lsb&gt; &lt;midi_prog&gt;</t>
3727                            </list>
3728                        </t>
3729                        <t>
3730                        Where &lt;midi_bank_msb&gt; is an integer value between 0..127
3731                        reflecting the MIDI bank MSB (coarse) value, &lt;midi_bank_lsb&gt;
3732                        an integer value between 0..127 reflecting the MIDI bank LSB
3733                        (fine) value and &lt;midi_prog&gt; an integer value between
3734                        0..127 reflecting the MIDI program value of the map entrie's key
3735                        index triple.
3736                        </t>
3737    
3738                        <t>Possible Answers:</t>
3739                        <t>
3740                            <list>
3741                                <t>LinuxSampler will answer by sending a &lt;CRLF&gt;
3742                                separated list. Each answer line begins with the
3743                                information category name followed by a colon and then
3744                                a space character &lt;SP&gt; and finally the info
3745                                character string to that info category. At the moment
3746                                the following categories are defined:</t>
3747                                <t>"NAME" -
3748                                    <list>
3749                                        <t>Name for this MIDI instrument map entry (if defined).
3750                                        This name shall be used by frontends for displaying a
3751                                        name for this mapped instrument. It can be set and
3752                                        changed with the
3753                                        <xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref>
3754                                        command and does not have to be unique.</t>
3755                                    </list>
3756                                </t>
3757                                <t>"ENGINE_NAME" -
3758                                    <list>
3759                                        <t>Name of the engine to be deployed for this
3760                                        instrument.</t>
3761                                    </list>
3762                                </t>
3763                                <t>"INSTRUMENT_FILE" -
3764                                    <list>
3765                                        <t>File name of the instrument.</t>
3766                                    </list>
3767                                </t>
3768                                <t>"INSTRUMENT_NR" -
3769                                    <list>
3770                                        <t>Index of the instrument within the file.</t>
3771                                    </list>
3772                                </t>
3773                                <t>"INSTRUMENT_NAME" -
3774                                    <list>
3775                                        <t>Name of the loaded instrument as reflected by its file.
3776                                        In contrast to the "NAME" field, the "INSTRUMENT_NAME" field
3777                                        cannot be changed.</t>
3778                                    </list>
3779                                </t>
3780                                <t>"LOAD_MODE" -
3781                                    <list>
3782                                        <t>Life time of instrument
3783                                        (see <xref target="MAP MIDI_INSTRUMENT">"MAP MIDI_INSTRUMENT"</xref> for details about this setting).</t>
3784                                    </list>
3785                                </t>
3786                                <t>"VOLUME" -
3787                                    <list>
3788                                        <t>master volume of the instrument as optionally
3789                                        dotted number (where a value < 1.0 means attenuation
3790                                        and a value > 1.0 means amplification)</t>
3791                                    </list>
3792                                </t>
3793                                <t>The mentioned fields above don't have to be in particular order.</t>
3794                            </list>
3795                        </t>
3796    
3797                        <t>Example:</t>
3798                        <t>
3799                            <list>
3800                                <t>C: "GET MIDI_INSTRUMENT INFO 3 45 120"</t>
3801                                <t>S: "NAME: Drums for Foo Song"</t>
3802                                <t>&nbsp;&nbsp;&nbsp;"ENGINE_NAME: GigEngine"</t>
3803                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_FILE: /usr/share/joesdrumkit.gig"</t>
3804                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NR: 0"</t>
3805                                <t>&nbsp;&nbsp;&nbsp;"INSTRUMENT_NAME: Joe's Drumkit"</t>
3806                                <t>&nbsp;&nbsp;&nbsp;"LOAD_MODE: PERSISTENT"</t>
3807                                <t>&nbsp;&nbsp;&nbsp;"VOLUME: 1.0"</t>
3808                                <t>&nbsp;&nbsp;&nbsp;"."</t>
3809                            </list>
3810                        </t>
3811                    </section>
3812    
3813                    <section title="Clear MIDI instrument map" anchor="CLEAR MIDI_INSTRUMENTS">
3814                        <t>The front-end can clear the whole MIDI instrument map, that
3815                        is delete all entries by sending the following command:</t>
3816                        <t>
3817                            <list>
3818                                <t>CLEAR MIDI_INSTRUMENTS</t>
3819                            </list>
3820                        </t>
3821    
3822                       <t>Possible Answers:</t>
3823                        <t>
3824                            <list>
3825                                <t>"OK" -
3826                                    <list>
3827                                        <t>always</t>
3828                                    </list>
3829                                </t>
3830                            </list>
3831                        </t>
3832    
3833                        <t>Example:</t>
3834                        <t>
3835                           <list>
3836                                <t>C: "CLEAR MIDI_INSTRUMENTS"</t>
3837                                <t>S: "OK"</t>
3838                            </list>
3839                        </t>
3840                    </section>
3841                </section>
3842    
3843          </section>          </section>
3844    
3845    
3846          <section title="Command Syntax" anchor="command_syntax">          <section title="Command Syntax" anchor="command_syntax">
3847              <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"/>
3848              is defined below using Backus-Naur Form (BNF as described in <xref target="RFC2234"/>)              is defined below using Backus-Naur Form (BNF as described in <xref target="RFC2234"/>)
# Line 3486  Schoenebeck'> Line 3893  Schoenebeck'>
3893          <list>          <list>
3894                  <t>ADD SP CHANNEL                  <t>ADD SP CHANNEL
3895                  </t>                  </t>
3896                    <t>/ MAP SP map_instruction
3897                    </t>
3898                    <t>/ UNMAP SP unmap_instruction
3899                    </t>
3900                  <t>/ GET SP get_instruction                  <t>/ GET SP get_instruction
3901                  </t>                  </t>
3902                  <t>/ CREATE SP create_instruction                  <t>/ CREATE SP create_instruction
# Line 3496  Schoenebeck'> Line 3907  Schoenebeck'>
3907                  </t>                  </t>
3908                  <t>/ LOAD SP load_instruction                  <t>/ LOAD SP load_instruction
3909                  </t>                  </t>
3910                  <t>/ REMOVE SP CHANNEL SP sampler_channel                  <t>/ REMOVE SP remove_instruction
3911    
3912                  </t>                  </t>
3913                  <t>/ SET SP set_instruction                  <t>/ SET SP set_instruction
3914                  </t>                  </t>
# Line 3506  Schoenebeck'> Line 3918  Schoenebeck'>
3918                  </t>                  </t>
3919                  <t>/ SELECT SP text                  <t>/ SELECT SP text
3920                  </t>                  </t>
3921                  <t>/ RESET SP CHANNEL SP sampler_channel                  <t>/ RESET SP reset_instruction
3922                    </t>
3923                    <t>/ CLEAR SP clear_instruction
3924                  </t>                  </t>
3925                  <t>/ RESET                  <t>/ RESET
3926                  </t>                  </t>
# Line 3550  Schoenebeck'> Line 3964  Schoenebeck'>
3964                  </t>                  </t>
3965          </list>          </list>
3966  </t>  </t>
3967    <t>map_instruction =
3968            <list>
3969                    <t>MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value
3970                    </t>
3971                    <t>/ MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode
3972                    </t>
3973                    <t>/ MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP entry_name
3974                    </t>
3975                    <t>/ MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog SP engine_name SP filename SP instrument_index SP volume_value SP instr_load_mode SP entry_name
3976                    </t>
3977            </list>
3978    </t>
3979    <t>unmap_instruction =
3980            <list>
3981                    <t>MIDI_INSTRUMENT SP midi_bank_msb SP midi_bank_lsb SP midi_prog
3982                    </t>
3983            </list>
3984    </t>
3985    <t>remove_instruction =
3986            <list>
3987                    <t>CHANNEL SP sampler_channel
3988                    </t>
3989            </list>
3990    </t>
3991  <t>get_instruction =  <t>get_instruction =
3992          <list>          <list>
3993                  <t>AVAILABLE_ENGINES                  <t>AVAILABLE_ENGINES
# Line 3604  Schoenebeck'> Line 4042  Schoenebeck'>
4042                  </t>                  </t>
4043                  <t>/ TOTAL_VOICE_COUNT_MAX                  <t>/ TOTAL_VOICE_COUNT_MAX
4044                  </t>                  </t>
4045                    <t>/ MIDI_INSTRUMENTS
4046                    </t>
4047                    <t>/ MIDI_INSTRUMENT SP INFO SP midi_bank_msb SP midi_bank_lsb SP midi_prog
4048                    </t>
4049          </list>          </list>
4050  </t>  </t>
4051  <t>set_instruction =  <t>set_instruction =
# Line 3634  Schoenebeck'> Line 4076  Schoenebeck'>
4076                  </t>                  </t>
4077          </list>          </list>
4078  </t>  </t>
4079    <t>reset_instruction =
4080            <list>
4081                    <t>CHANNEL SP sampler_channel
4082                    </t>
4083            </list>
4084    </t>
4085    <t>clear_instruction =
4086            <list>
4087                    <t>MIDI_INSTRUMENTS
4088                    </t>
4089            </list>
4090    </t>
4091  <t>destroy_instruction =  <t>destroy_instruction =
4092          <list>          <list>
4093                  <t>AUDIO_OUTPUT_DEVICE SP number                  <t>AUDIO_OUTPUT_DEVICE SP number
# Line 3706  Schoenebeck'> Line 4160  Schoenebeck'>
4160                  </t>                  </t>
4161                  <t>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS                  <t>/ AVAILABLE_AUDIO_OUTPUT_DRIVERS
4162                  </t>                  </t>
4163                    <t>/ MIDI_INSTRUMENTS
4164                    </t>
4165          </list>          </list>
4166  </t>  </t>
4167  <t>load_instr_args =  <t>load_instr_args =
# Line 3722  Schoenebeck'> Line 4178  Schoenebeck'>
4178                  </t>                  </t>
4179          </list>          </list>
4180  </t>  </t>
4181    <t>instr_load_mode =
4182            <list>
4183                    <t>ON_DEMAND
4184                    </t>
4185                    <t>/ ON_DEMAND_HOLD
4186                    </t>
4187                    <t>/ PERSISTENT
4188                    </t>
4189            </list>
4190    </t>
4191  <t>device_index =  <t>device_index =
4192          <list>          <list>
4193                  <t>number                  <t>number
# Line 3760  Schoenebeck'> Line 4226  Schoenebeck'>
4226                  </t>                  </t>
4227          </list>          </list>
4228  </t>  </t>
4229    <t>midi_bank_msb =
4230            <list>
4231                    <t>number
4232                    </t>
4233            </list>
4234    </t>
4235    <t>midi_bank_lsb =
4236            <list>
4237                    <t>number
4238                    </t>
4239            </list>
4240    </t>
4241    <t>midi_prog =
4242            <list>
4243                    <t>number
4244                    </t>
4245            </list>
4246    </t>
4247  <t>volume_value =  <t>volume_value =
4248          <list>          <list>
4249                  <t>dotnum                  <t>dotnum
# Line 3790  Schoenebeck'> Line 4274  Schoenebeck'>
4274          <list>          <list>
4275                  <t>stringval                  <t>stringval
4276                  </t>                  </t>
4277            </list>
4278    </t>
4279    <t>entry_name =
4280            <list>
4281                    <t>stringval
4282                    </t>
4283          </list>          </list>
4284  </t>  </t>
4285  <t>param_val_list =  <t>param_val_list =

Legend:
Removed from v.937  
changed lines
  Added in v.944

  ViewVC Help
Powered by ViewVC