Opened 14 years ago

Last modified 4 months ago

#1946 new defect

ADLIB: Adlib Emulation doesn't Respect Volume Settings

Reported by: SF/tbcarey Owned by:
Priority: low Component: Engine: SCUMM
Keywords: audio, reproducible Cc:


In INDY3, LOOM, and MONKEYVGA, when Adlib emulation is
selected, the music volume does not decrease or mute
when volume is changed using the volume control hotkeys
and new dialogue. For example, setting volume at 0 for
any of these games will still play the music at full
volume using Adlib emulation. I do not have MONKEYEGA
to test, but I have tried all other SCUMM games
utilizing MIDI and no others exhibit this behavior.

Note that this behaviour occurs only with Adlib
emulation; any other type of emulation will properly
mute or lower the volume when the volume control
hotkeys are used.

Ticket imported from: #1159581. Ticket imported from: bugs/1946.

Change History (11)

comment:1 Changed 14 years ago by SF/tbcarey

Once again, forgot to mention I'm using the latest CVS build
[Mar 9 2005 10:47:16] on Win32. Sorry about that.

comment:2 Changed 14 years ago by SF/tbcarey

I downloaded the Monkey1 Demo [which uses the MONKEYEGA
target] and the same behaviour was exhibited.

comment:3 Changed 14 years ago by fingolfin

Owner: set to fingolfin
Summary: MULT: Adlib Emulation Does Not Respect Music Volume SettingsADLIB: Adlib Emulation doesn't Respect Volume Settings

comment:4 Changed 14 years ago by fingolfin

Yes, we know that the adlib emu doesn't use the volume
settings. It would be trivial to make it use the music
volume setting (at least in SCUMM games), too. However,
adlib is also used for SFX, which means this wouldn't be the
right fix... of course, being able to control the volume at
least in some way for now might be better than not having
any control over it at all... I'll see what I can do once I
am back home from this conference sometime next week.

comment:5 Changed 14 years ago by fingolfin

I am back to my own computer now and had some time to look into this.
Essentially, the problem is that with V3-V6 SCUMM games, volume
control is done by iMuse. Hence, it would be wrong if the adlib emu would
do volume control, too, because then everything would be too quiet.

So, the question is why the volume settings aren't applied for these three
games. All of them are small header (V3/V4) games. For those games,
PROP_OLD_ADLIB is set. To quote from adlib.cpp:
"Older games used a different operator volume algorithm". There is a flag
in it, _game_SmallHeader, which controls the differences between old and
new games.

My guess: for some reason, the small header mode doesn't properly
handle volume changes. Note in particular that for SH games, neither
volume_table nor lookup_table are used.

comment:6 Changed 14 years ago by fingolfin

Owner: fingolfin deleted

comment:7 Changed 14 years ago by eriktorbjorn

Looks like you're right. Without the final volume
adjustments - the one where volume_table[] is used - it
seems to me like the note volume is simply a constant
determined by a property (oplvl_1 and oplvl_2) of the
instrument itself.

But I don't really understand this part of the code.

comment:8 Changed 8 years ago by bluegr

Bug #3053125 seems to be a duplicate of this, for SCI

comment:9 Changed 7 years ago by lordhoto

Bug #3053125 is probably not related to the cause of this problem though. The SCUMM engine uses a different AdLib driver implementation.

comment:10 Changed 4 months ago by Mataniko

Keywords: audio reproducible added
Priority: normallow

This is still reproducible using MONKEYEGA demo

comment:11 Changed 4 months ago by Mataniko

Component: Engine: SCUMM
Note: See TracTickets for help on using tickets.