ZDoom and Chocolate Doom have support for Gravis Ultrasound emulation. Since GUS was one of the two most popular soundcards during Doom's release (the other being SoundBlaster), and since PrBoom-Plus already has OPL2 emulation, I think it would a good idea for PrBoom-Plus to support GUS emulation as well.
You can technically already use GUS patches with SDL_mixer, but this poses two issues: (1) SDL_mixer sucks and causes problems on multi-core machines, and (2) SDL's native timidity support does not play back GUS patches like a real Gravis Ultrasound would. Incorporating ZDoom/Chocolate's GUS emulation code, however, would solve both of these issues, because it supports Doom's DMXGUS lumps and does not depend on SDL_mixer.
1) Since when does chocolate-doom have GUS emulation?
2) SDL_mixer > 1.2.12 has support for fliudsynth built in. So could one not just load a sf2 soud font that sounds like a GUS?
The latest Chocolate Doom v2 SVN build has GUS emulation, which you can download here: http://www.tc.umn.edu/~delbe001/chocolate-doom-v2/
PrBoom-Plus has fluidsynth support, but simply using a GUS soundfont will not accurately reproduce the midi play back of a real GUS. You can also configure SDL's native timidity to use the default GUS patches, as I mentioned in my request, but this has the same issue.
Real Gravis Ultrasounds were limited to a maximum of 1024K onboard memory, which would restrict the number of patches that could be loaded into the card and used to play back a midi track; so a midi track may not necessarily sound the same on a real GUS as it would with either fluidsynth or timidity, both of which have access to the entire patchset. Also, a real GUS would play back Doom's music with the internal DMXGUS lump, just as a SoundBlaster would use the default GENMIDI lump (and is the case with OPL2 emulation).
As an example, listen to DTWID.wad E2M2 with SDL_Mixer and then with Chocolate Doom's GUS emulation. The track sounds very different between the two.
Last edit: Blondie 2013-07-09
Listen to DTWID.wad with dtwidmus.wad, I meant to say. I forgot that the DTWID team chose to store the music in a separate .wad file. :P
You can use timidity.cfg generated from DMXGUS lump by Chocolate-Doom. That's all it does, if I understood correctly
So Chocolate Doom simply generates a timidity configuration file from the iwad's DMXGUS lump and runs it through SDL_mixer?
Well, that would still be useful for implementation into PrBoom-Plus, because DOOM.WAD and DOOM2.WAD have different instrument mappings in their DMXGUS lumps; so in order to have the appropriate GUS playback for the particular iwad that is being used, one has to manually switch to that iwad's generated timidity DMXGUS configuration file, which is extremely inconvenient.
Automatically generating the timidity cfg on demand would be a lot easier for the user, since you wouldn't have to constantly be swapping cfgs every time you want to load a different iwad.