DMXOPL

DMXOPL is a custom GENMIDI WAD lump created by ConSiGno containing custom instrument data for the DMX sound library to use in OPL synthesis, either through emulation, or a real FM chip. Given an *.OP2 extension, it can be used in a variety of utilities that support the DMX format. The current version is v2.11d, released on January 1, 2018.

History
Beginning development in 2011 as a potential GENMIDI lump replacement for Freedoom, DMXOPL is the third custom GENMIDI replacement to be released: the first being Hell's Games Music by Joe Veldhuis, and the second being a quick conversion of 's 2op FM patch by Dan L'Ecuyer. DMXOPL is under constant development, with many contributions from the FM synthesis community.

Method
Doom's music was written with the Sound Canvas in mind, so DMXOPL's instrument set aims to mimic the, most notably the SC-55 and SC-88 models. DMXOPL freely exploits the "double voice" flag of DMX, along with the "fine tuning" value (adjusting the pitch of the second voice relative to the first) to create chorus, resonance, and "pseudo-4op" effects. This can be achieved even on an OPL2 chip.

Advantages
GENMIDI support is usually seen as a "last resort" for source ports, with all the negative connotations that come along with it. DMXOPL aims to make this fallback mode sound more pleasant to the player. Additionally, DMXOPL can be used in standalone projects that cannot ship with copyrighted soundfonts, or used for platforms with no native MIDI support. Vanilla Doom can also run the patch without having to modify the IWAD.

Limitations
One double voice note requires two channels of the OPL3 chip, out of a maximum of 18. in OPL2 mode, that value drops to 9. Therefore, the number of voices one double voiced instrument can play is 9, before DMX begins to drop the second voice to relieve channel pressure. DMXOPL's instruments are designed with the fundamental voice first to mask this behavior.

Originally, only the first 4 waveforms of the OPL3 are used, due to the (incorrect) belief that vanilla Doom could only support OPL2 waveforms. This was addressed with the DMXOPL v2.x series, which uses OPL3 waveforms. For compatibility, the last release of DMXOPL v1.x is included as DMXOPL2.WAD.