GSS
From DoomWiki.org
GSS, short for General Sound Set, is the name of DMX's support for using MIDI sound effects. Instead of using the standard MIDI format, GSS use DMX formats 1 and 2 (format 0 is used for PC speaker sound effects, format 3 is used for digitized sounds).
The Roland GS standard, a superset of General MIDI introduces the concept of instrument banks, which is used in these GSS sound formats; thanks to them there can be separate sound effect banks and melodic banks, so MIDI sound effects could be used without affecting the instruments used by MIDI music.
Format 1[edit]
This format allows to have simple sequences of notes played by a single instrument.
Offset | Type | Description |
---|---|---|
0x00 | Unsigned 16-bit LE int | Format number (must be 1) |
0x02 | Unsigned 16-bit LE int | Number of samples |
0x04 | Unsigned 16-bit LE int | MIDI bank |
0x06 | Unsigned 16-bit LE int | MIDI instrument |
0x08 | Unsigned 8-bit array | Samples |
The sample rate is 140 Hz. A sample with value zero is a note off, otherwise each sample value determines both the note and the pitch bend. The note and pitch bend portions are bitpacked into a single byte:
- note is equal to 28 plus the top 7 bits of the byte.
- pitch bend depends on the lowest bit of the byte: a value of 0 maps to a MIDI pitch bend of 159, while a value of 1 maps to a pitch bend of 127.
Format 2[edit]
This format only defines a single note.
Offset | Type | Description |
---|---|---|
0x00 | Unsigned 16-bit LE int | Format number (must be 2) |
0x02 | Unsigned 16-bit LE int | MIDI bank |
0x04 | Unsigned 16-bit LE int | MIDI instrument |
0x06 | Unsigned 16-bit LE int | Note |
0x08 | Unsigned 16-bit LE int | Note length |