summaryrefslogtreecommitdiff
path: root/README.instruments
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2013-09-18 22:40:48 +0200
committerFlorian Jung <flo@windfisch.org>2013-09-18 22:40:48 +0200
commit32589cdd760755d685a76d31469798fde74ad827 (patch)
treed50afd9a2a176846dd6c5b19d734ed9108e44aad /README.instruments
parentaf09b4f881888b97903cda57907cda571be83b18 (diff)
parent48a93993cfce160fb7d4cf0b67b4b77e22db19e5 (diff)
Merge branch 'master' into audiomsg_overhaul
Diffstat (limited to 'README.instruments')
-rw-r--r--README.instruments149
1 files changed, 149 insertions, 0 deletions
diff --git a/README.instruments b/README.instruments
new file mode 100644
index 00000000..1bc66e7f
--- /dev/null
+++ b/README.instruments
@@ -0,0 +1,149 @@
+================================================
+ MusE loadable Midi Instrument Definitions
+ (valid from around MusE 0.8.1, Edited by Tim NOV.11.2012, at MusE 2.1rc1)
+================================================
+
+ - File Extension ".idf"
+ - searched in Subdirectory "instruments"
+ (/usr/share/muse/instruments on my system)
+ - Can be viewed, created or edited with menu 'Midi -> Edit Instrument'
+
+ 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="Pan" l="10" min="-64" max="63" init="0" />
+ <Controller name="PitchBendSensitivity" type="RPN" h="0" l="0" max="24" init="2" />
+
+ ...
+ </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) Prior to version 2.1:
+ ---------------------
+ 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"/>
+
+ From version 2.1:
+ -----------------
+ There is no 'mode' parameter. The selection of GM, GS, or XG instruments
+ or other instruments with an sysex 'Init' section, determines what 'mode'
+ the device is in.
+
+ (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
+
+ From version 2.1:
+ -----------------
+ This section contains initialization events to be sent to the devices
+ upon certain changes such as device selection, change of instrument etc.
+ Usually it contains a brief series of sysex commands such as (4) to set the
+ device to a 'mode'.
+
+ (6) Controllers have the following properties:
+
+ name: arbitrary unique (short) string describing the controller
+
+ type: Controller7 regular 7-bit controller
+ Controller14 14-bit controller
+ RPN registered parameter 7-bit
+ NRPN non registered parameter 7-bit
+ RPN14 registered parameter 14-bit
+ NRPN14 non registered parameter 14-bit
+ Pitch pitch mod wheel
+ Program program
+ From version 2.1:
+ PolyAftertouch key pressure controller
+ Aftertouch channel pressure controller
+
+ Default Controller7 if omitted.
+ Pitch Program PolyAftertouch and Aftertouch are convenience controllers which
+ wrap functionality in one controller. They translate to and from the real midi messages
+ which are behind the scenes such as Pitch -> midi 0xE0. Their controller numbers are
+ internal and cannot be changed. PolyAftertouch is really an internal per-pitch controller.
+
+ h: controller number MSB. Default 0 if omitted.
+ l: controller number LSB. Default 0 if omitted.
+ For per-pitch controllers, 'l' can also be "pitch" indicating each 'note' or
+ 'drum sound' has its own controller. Some devices such as XG support this.
+
+ 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 omitted
+ Auto-biasing feature: If min is less than zero, such as with
+ pan = -64 -> 63, MusE automatically displays this range,
+ yet uses the true range of 0-127 'behind the scenes'.
+
+ From version 2.1:
+ ----------------
+ showType: Combination of 1: Show controller in drum tracks.
+ and 2: Show controller in midi tracks.
+ Default is to show in both drum and midi tracks if omitted (same as "3").
+
+ Here is a per-pitch drum controller example from the XG instrument definition file:
+ <Controller name="Drum Pan" type="NRPN" h="28" l="pitch" min="-64" max="63" showType="1" />
+ \ No newline at end of file