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