[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Forward of moderated message

From: gnu-music-discuss-bounces
Subject: Forward of moderated message
Date: Sun, 25 May 2003 20:57:39 -0400

--- Begin Message --- Subject: MIDI support for GS/XG instruments etc Date: Sun, 25 May 2003 09:42:09 +0100

I don't know if this has been discussed before, but I wonder
if Lilypond's MIDI output could support the hundreds of
extra instruments and effects from Roland GS, Yamaha XG etc

I once typed in a list of all the GS instrument names and
effects (from the back of a manual), changed some of the
names slightly, customised some parameters, and tried to
organise them into a menu hierarchy.  It would be nice if
someone could integrate this with Lilypond so I'm posting
the data here.

I think XG is a superset of GS, so this will be compatible
with both XG and GS.  All data that requires GS/XG (not just
General MIDI) is marked "GS", so it's possible for the user
to avoid it if s/he wants to keep to General MIDI.

The data in the attached file can be used to build up a menu
system (or some such).  The format is generally:

Category: Subcategory 1, Subcategory 2, ... (end of line)
Subcategory 1: ... (etc)

If a "subcategory" represents an actual instrument rather
than a category, its name is preceded by the instrument
number in quotes, in the form "$I-x" or "$I-x/y", where 'x'
is the MIDI instrument number and 'y' is the variation
number (i.e. the value of the "MSB bank selector"

The quotes might also contain the command $ICx where x is a
note number.  In this case we're selecting a drum from a
drum set and it's important to send the right note number
(as well as putting it on channel 10 and possibly selecting
the right instrument if there's a $I as well).

SysEx (system exclusive) events are represented by $IM
followed by a hex string (MSB-LSB) beginning with F0 and
ending with F7.  The SysEx event should be sent whenever the
instrument is selected.  When processing a SysEx event,

  - The checksum should be replaced with the correct value

  - When writing to a MIDI file, the length of the event
    should be added in the correct place

The hex string might include the letter 'x', which should be
changed into the (two-digit) hex value of the current
channel.  The letter 'y' should be changed into the hex
value of EVERY channel (i.e. the event should be sent 16
times, one for each channel).

About temperaments: The "Just temperament" in the detune
given is supposed to sound better with the primary triads of
the scale in question; the "Arabian temperament" is as its
name implies; "Equal temperament" is what Western
instruments are normally tuned to, and "Harmonic
temperament", for each semitone, approximates the first
approximation to that semitone which is reached by following
a harmonic progression in the given keynote (I think that's
my original idea but someone else might have done it
before).  There are also some historical pitches on the
menus, and plain out-of-tune.

Best wishes,        Silas

Silas S Brown, St John's College Cambridge UK

"A fool will believe anything" - Proverbs 14:15 (TEV)

Attachment: midi-data
Description: Binary data

--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]