================================================
    MusE loadable Midi Instrument Definitions
    (as of 10.09.2003) MusE 0.7.0
================================================

  - File Extension  ".idf"
  - searched in Subdirectory  "instruments"
    (/usr/share/muse/instruments on my system)

  All found instrument definitions are presented by MusE
  in Config->MidiPorts in Pulldown in column "Instrument".

-------------------------------------------------
   Example of Instrument Definition File:
-------------------------------------------------

<?xml version="1.0"?>
<muse version="1.0">
  <MidiInstrument name="GM">
    <Init>
      ...MusE event list which initializes instrument
      </Init>
    <PatchGroup name="Piano">
       <Patch name="Grand Piano" prog="0"/>
       <Patch name="Bright Piano" prog="1"/>
       ...
      </PatchGroup>
    <PatchGroup name="Bass">
      <Patch name="Acoustic Bass" prog="32"/>
      <Patch name="Fingered Bass" prog="33"/>
      </PatchGroup>
    ...
    <Controller name="Brightness">
      <n>0x4a</n>
      <min>0</min>
      <max>127</max>
      <init>0</init>
      </Controller>
    ...
    </MidiInstrument>
  </muse>

-------------------------------------------------
      Notes
-------------------------------------------------

 (1)  PatchGroups are not mandatory; its valid to write:

      <MidiInstrument name="GM">
        <Patch name="Grand Piano" prog="0"/>
        <Patch name="Bright Piano" prog="1"/>
        <Patch name="Acoustic Bass" prog="32"/>
        <Patch name="Fingered Bass" prog="33"/>
        ...
        </MidiInstrument>

 (2)  An "Instrument Definition File" can define more than on
      Instrument, but it is recommended to use one file for
      one instrument

 (3)  the "prog" parameter in a "Patch" is mandatory. Missing
      "hbank" or "lbank" are treated as "don't care".
      Missing "drum" is treated as drum="0".

      A XG-Patch looks like:
      <Patch name="Electro" drum="1" hbank="127" lbank="0" prog="24"/>

 (5)  A patch can be associated with a "mode" with one of

            1  - GM
            2  - GS
            4  - XG

      Example:
      <Patch name="Electro" mode="4" drum="1" hbank="127" lbank="0" prog="24"/>

      Mode id's can be ore'd together for patches which are valid
      for more than one mode:

      <Patch name="Grand Piano" mode=7" hbank="0" lbank="0" prog="0"/>

 (4)  example for MusE event (Sysex "XG-On"):

      <event tick="0" type="5" datalen="7">
        43 10 4c 00 00 7e 00
        </event>

 (5)  <Init> ... </Init> part can be omitted


 (6)  Controller have the following porperties:

      name: arbitrary unique (short) string describing the controller
      n:    controller number, defines also the controller type:
            values from 0x0 - 0x7f are 7Bit controller
            values from 0x1000 - 0x1ffff are 14 bit controller with
               MSB/LSB value pairs
            values from 0x20000 - 0x2ffff are RPN's
            values from 0x30000 - 0x3ffff are NRPN's

      min:  minimum value for controller
      max:  maximum value for controller
      init: reset value for controller; when controller value is
            undefined after instrument reset, use the ''undefined''
            value 0x10000

      the min/max/init values can be ommited

