#7222 closed feature request
Adlib sound effects with GM drivers
Reported by: | SF/trinity78 | Owned by: | SF/jamieson630 |
---|---|---|---|
Priority: | low | Component: | Audio |
Version: | Keywords: | ||
Cc: | Game: |
Description
Ver: ScummVM 0.20 Game: Monkey Island 2 - German (ver 5.2.2) OS: Windows 2000 Advanced Server SP 2 Hardware: Soundblaster 32 AWE
Bug:
Ok, if I use the native midi option (-ewindows) the music plays fine, but all SFX are skipped (for example: the "wosh"-sound, when taking the shovel in the first screen in the game (the one with bridge, after the intro)). There are no SFX at all in the game. The ScummVM displays following error:
Warning: SE::start_sound failed: Couldn't find MDhd!
If I use the build-in adlib emulation, everything is fine, both music and sounds are played correctly and no ScummVM error messages appears. But of course, the adlib music sounds a lot worser the native windows midi music.
I'm not sure if this is releated to any other bug already reported.
thx
Ticket imported from: #557411. Ticket imported from: feature-requests/38.
Change History (20)
comment:1 by , 23 years ago
comment:2 by , 23 years ago
Logged In: NO
Then I wonder why "Indiana Jones 4 - Atlantis" and "Dott" work fine. Do they not store the SFX in resource files?
comment:3 by , 23 years ago
As far as I know, most sounds FX in "Indiana Jones 4" and "DOTT" are 'PCM' FX and not 'MIDI' FX (ie they are stored in the .SOU files and generated, like the voices, by the PCM part of your sound card, not the MIDI part).
Some others (like the clock in DOTT in the first time you are in the mansion) are generated via MIDI. Do you hear those with ewindows ?
comment:4 by , 23 years ago
1.)
Indy4 - Atlantis in the german floppy version has no *.sou file. For me it seems that the indy 4 floppy version has the same format as the monkey 2 floppy version (monkey2.000, monkey2.001 and atlantis.000, atlantis.001, but no monster.sou or similar). So Indy 4 works fine (all sounds are there, no ScummVM error message), but Monkey 2 doesn't (no sounds and ScummVM error message [Couldn't find MDhd!]).
2.)
In DOTT, I can hear the clock ticking using -ewindows and there is no ScummVM error message either. No problems here.
3.)
To Monkey Island 2, I've noticed even using the adlib- emulation only, that sometimes (rarely) the sounds are skipped with the message "Warning: SE::start_sound failed: Couldn't find MDhd!" appears.
comment:5 by , 23 years ago
Okay, well, to further my previous comment.. they are stored in the resource file AS A DIFFERENT FORMAT. ScummVM currently doesn't understand the format, so defaults to adlib versions. And as I said, you cannot currently mix two soundengine types.
comment:6 by , 22 years ago
I couldn't get sounds to work with Indy 4, got the Couldn't find MDhd! error, UK disk version.
comment:8 by , 22 years ago
Summary: | Windows MIDI disables Sound FX → MONKEY2: No SFX with Windows MIDI |
---|
comment:9 by , 22 years ago
Summary: | MONKEY2: No SFX with Windows MIDI → MI2: No SFX with Windows MIDI |
---|
comment:10 by , 22 years ago
In the MI2 resource file, there are 14 occurrences of a SOU block that contains only an ADL block. In ScummVM, ADL blocks are ignored for ANY driver except -eadlib. (And for good reason -- there's no reliable way to map FM synth patches to GM or MT32 programs).
Trinity, in your particular example -- removing the shovel from the sign by the bridge -- there is a SOU block containing only an ADL block and a SPK block. The SPK block WILL get played under -ewindows, but since it has no information for generating useful sound for GM, it will either come out as a piano sound or no sound at all.
Ender, mixing multiple sound engine types sounds intriguing. If we can mix Adlib and digi.... and GM and digi.... Why not Adlib and GM? Sounds like a good goal for the next iMuse revamp. ;)
comment:11 by , 22 years ago
The idea for such a thing is there for a long time. However it would indeed require a lot lot of work - the whole system is designed towards one iMuse output system, *either* adlib *or* midi. Changing it to support both at once, w/o breaking anything, requires a lot of understanding of the code and iMuse in my estimate. That said, I am all for it :-)
comment:13 by , 22 years ago
Owner: | set to |
---|
comment:14 by , 22 years ago
Now that Adlib functionality is just another MidiDriver, we *are* very close to being able to run side-by-side drivers to handle situations where the preferred music driver is unable to handle a particular track.
Keep an eye out for this great new iMuse+ feature, coming soon. ;) In the meantime, is there *anybody* out there who can say with authority that the shovel sound was audible under MT-32/GM in the original executable?
comment:15 by , 22 years ago
Component: | Engine: SCUMM |
---|---|
Game: | Monkey Island 2 |
Owner: | removed |
Priority: | normal → low |
Summary: | MI2: No SFX with Windows MIDI → Adlib sound effects with GM drivers |
comment:16 by , 22 years ago
Reassigning to feature requests. This is not a bug. If we do add support for Adlib alongside GM music, it will be a feature.
comment:17 by , 22 years ago
Owner: | set to |
---|
comment:18 by , 22 years ago
Status: | new → closed |
---|
comment:19 by , 22 years ago
Support for simultaneous use of a native MIDI driver and the Adlib driver is now implemented. The capability is based on a #define that must be present in imuse.cpp (it's right at the top). Because this feature is a deviant of the original IMuse capabilities, and may not be desirable for all users, it is disabled by default. To enable it, you must uncomment the #define in imuse.cpp and recompile.
When enabled and a native driver is selected, a parallel Adlib driver will be fired up if a music resource is encountered that has no version suitable for the native driver. Note that after this happens, the two drivers will both be running for the rest of the ScummVM session, which might tax slower systems. (I didn't notice any performance degradation on my 366 Celeron.)
When our command-line options processing gets better, we will add this as a command-line option and get rid of the #define.
comment:20 by , 6 years ago
Component: | → Audio |
---|
This is due to the fact that SFX in MI2 are stored in the resource file. We do not currently read the digital versions, and instead use adlib versions. Obviously disabling adlib engine will disable the adlib sound effects