Opened 18 years ago

Closed 17 years ago

Last modified 13 months ago

#7222 closed enhancement

Adlib sound effects with GM drivers

Reported by: SF/trinity78 Owned by: SF/jamieson630
Priority: low Component: Audio
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 SF/ender, 18 years ago

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

comment:2 by (none), 18 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 SF/bbrox, 18 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 SF/trinity78, 18 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 SF/ender, 18 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 SF/cjholding, 18 years ago

I couldn't get sounds to work with Indy 4, got the Couldn't find MDhd! error, UK disk version.

comment:7 by fingolfin, 17 years ago

Ender, out of curiosity, which format is that? What tag etc.?

comment:8 by fingolfin, 17 years ago

Summary: Windows MIDI disables Sound FXMONKEY2: No SFX with Windows MIDI

comment:9 by fingolfin, 17 years ago

Summary: MONKEY2: No SFX with Windows MIDIMI2: No SFX with Windows MIDI

comment:10 by SF/jamieson630, 17 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 fingolfin, 17 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:12 by fingolfin, 17 years ago

Jamieson, aren't we able to do that now? <g>

comment:13 by fingolfin, 17 years ago

Owner: set to SF/jamieson630

comment:14 by SF/jamieson630, 17 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 SF/jamieson630, 17 years ago

Component: Engine: SCUMM
Game: Monkey Island 2
Owner: SF/jamieson630 removed
Priority: normallow
Summary: MI2: No SFX with Windows MIDIAdlib sound effects with GM drivers

comment:16 by SF/jamieson630, 17 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 SF/jamieson630, 17 years ago

Owner: set to SF/jamieson630

comment:18 by SF/jamieson630, 17 years ago

Status: newclosed

comment:19 by SF/jamieson630, 17 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 digitall, 13 months ago

Component: Audio
Note: See TracTickets for help on using tickets.