luciodra wrote: 28 Mar 2025 09:54
I would like a clarification on Picogus: I use it in SB emulation mode and it works in a somewhat incomprehensible way.
Doom: SFX works but not music, or by launching doom.prg -music adlib then you hear music and SFX at the same time.
Scumm: YM audio only
Tyrian: only music without SFX.
Jam and Mxplay: No midi audio.
If I put OPLMIDI. PRG in AUTO:
DoomSB and Tyrian: music and SFX OK but the computer crashes as if there was the usual ISA conflict.
Scumm: midi music works and no freeze.
Jam and Mxplay great midi audio !
Where am I wrong?
Terribly sorry, I completely missed your post before
@luciodra
Music has an explanation:
- By default, midi messages are sent to the midi-out jack on the motherboard. You'll need an external midi synth to get actual audio.
- The MPU401 driver re-routes midi messages to MPU401 device on the ISA bus, such as soundblaster, or the picogus in SB mode, or other cards with a compatible device.
What the card does with these messages is up to it but generally speaking they usually won't produce audio but rather forward the messages out their own midi jack, requiring an external midi synth to get actual audio.
If your card has a wavetable header then it can send the midi messages to it, and that wavetable synth will produce actual audio. This is the most convenient solution to get audio from midi.
- The OPLMIDI driver is a software synth that works in the background. It consumes the midi messages and tries to play something sensible on OPL2/3 device if you have one on of these on the ISA bus. (I'm sure there can be bugs in this code, and if so, fixes are welcome :) )
(Tyrian plays Adlib music rather than midi which is why you are hearing it regardless of midi driver)
I don't have a good answer for the lack of SFX in Tyrian and ScummST. The audio code should be very similar to the one in Doom but perhaps some bug or something initialization related missing, like hardware volume or something like that perhaps.
I forget, can your default pcm audio volume be set by pgusinit? Perhaps you have it set to 0 by default and I am setting it to something sensible in Doom but not in the other ones (just wildly guessing since it works here for me)