Opened 17 years ago

Closed 16 years ago

Last modified 11 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, 17 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), 17 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, 17 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, 17 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, 17 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, 17 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, 16 years ago

Status: newclosed

comment:19 by SF/jamieson630, 16 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, 11 months ago

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