Mixed Adlib in MI2 - Did someone script extra sound effects?
Moderator: ScummVM Team
-
- Posts: 85
- Joined: Sun Sep 17, 2006 2:26 am
- Location: Perth, WA, Australia
Mixed Adlib in MI2 - Did someone script extra sound effects?
Ok this isn't a question about how to use mixed adlib or what it does.
It is a very specific question, likely for the people that worked on the ScummVM implemention of MI2...
The scene in question is the bar with the barkeeper cleaning a mug, there is a piano with a metronom on top of it...
Now the barkeeper cleans his bug and spits in it.
On Adlib: You hear the cleaning sound and a spitting noise
On Sound Blaster: Cleaning sound but no spittin noise
Roland: Neither sound
Now Mixed Adlib gives you something not found in any version of the "real" game.
You get the cleaning sound of Adlib and Sound Blaster version and you hear a spitting noise that is totally different compared to the Adlib spitting noise.
The Adlib spittin noise sound like FM, the Mixed Adlib spitting noise sounds like a digital recording.
Now one thing I can think of is that someone took the digital recording from Largo LaGrande spitting in the bar and reused it for the barkeeper spitting into his mug.
Not even the old version in Special Edition of MI2 has the barkeeper spitting into his mug sound
It is a very specific question, likely for the people that worked on the ScummVM implemention of MI2...
The scene in question is the bar with the barkeeper cleaning a mug, there is a piano with a metronom on top of it...
Now the barkeeper cleans his bug and spits in it.
On Adlib: You hear the cleaning sound and a spitting noise
On Sound Blaster: Cleaning sound but no spittin noise
Roland: Neither sound
Now Mixed Adlib gives you something not found in any version of the "real" game.
You get the cleaning sound of Adlib and Sound Blaster version and you hear a spitting noise that is totally different compared to the Adlib spitting noise.
The Adlib spittin noise sound like FM, the Mixed Adlib spitting noise sounds like a digital recording.
Now one thing I can think of is that someone took the digital recording from Largo LaGrande spitting in the bar and reused it for the barkeeper spitting into his mug.
Not even the old version in Special Edition of MI2 has the barkeeper spitting into his mug sound
- eriktorbjorn
- ScummVM Developer
- Posts: 3561
- Joined: Mon Oct 31, 2005 7:39 am
I don't remember the details. Monkey Island 2 has some digitized sound effects (some yells from Largo, and some sound effects during the spitting competition at least), and from what I remember ScummVM cheats so that those are always played.
A comment in script_v5.cpp (the o5_isEqual() function; the aforementioned cheat) also mentions a spitting sound for the bartender that's only played - I think - if the interpreter claims you have an AdLib soundcard. It might be the sound effect you're hearing. I don't remember if it's a digitized sound or not. I can't check at the moment.
A comment in script_v5.cpp (the o5_isEqual() function; the aforementioned cheat) also mentions a spitting sound for the bartender that's only played - I think - if the interpreter claims you have an AdLib soundcard. It might be the sound effect you're hearing. I don't remember if it's a digitized sound or not. I can't check at the moment.
-
- Posts: 85
- Joined: Sun Sep 17, 2006 2:26 am
- Location: Perth, WA, Australia
- LogicDeLuxe
- Posts: 437
- Joined: Thu Nov 10, 2005 9:54 pm
That was the whole point. Especially MT-32 (while it has the superior music) has some sounds missing. Native SCUMM isn't able to use multiple music devices simultaneously, but ScummVM does with this switch on.Now Mixed Adlib gives you something not found in any version of the "real" game.
Usually, sampled sounds are not affected by this switch. However, this particular script is somewhat buggy, so the sound is usually not played in DOS. ScummVM circumvents some script bugs.
-
- Posts: 85
- Joined: Sun Sep 17, 2006 2:26 am
- Location: Perth, WA, Australia
Fully aware that the MT-32 has missing sounds. My question was specifically for this one room with the barkeeper spitting noise...
So you are saying that the real DOS version, not playing the spitting sound in Sound Blaster mode, is a scripting bug?
Or did someone at ScummVM simply go "Hey let's just reuse Largo Legrande spit and use it for the barkeeper"?
I don't mind mixing technologies that are found in the Game, but adding sound effects that don't exist in the Game is something else alltogether...
So you are saying that the real DOS version, not playing the spitting sound in Sound Blaster mode, is a scripting bug?
Or did someone at ScummVM simply go "Hey let's just reuse Largo Legrande spit and use it for the barkeeper"?
I don't mind mixing technologies that are found in the Game, but adding sound effects that don't exist in the Game is something else alltogether...
- eriktorbjorn
- ScummVM Developer
- Posts: 3561
- Joined: Mon Oct 31, 2005 7:39 am
I've had a chance to look at it now, so things are starting to come back to me. I believe that the (possible) script bug is that is only tries to play the spitting sound when the soundcard variable is 3 (AdLib, I think). I don't think ScummVM tries to do anything to get around that.Mau1wurf1977 wrote: So you are saying that the real DOS version, not playing the spitting sound in Sound Blaster mode, is a scripting bug?
Each sound effect can exist in several different formats, and this one does so it's strange that it's so picky about playing it in this particular case. ScummVM generally prefers the digitized version of the sound effect, if one is available. The "cheat" I mentioned before is that for some other sound effects (Largo's yelps of pain, for instance) the scripts check if the soundcard variable is 5 (not sure what that means) before playing them. In those cases, whatever value the variable actually has ScummVM pretends that it is 5 after all.
(It's possible that this hack could be reworked now - the cheat was added a long time ago - but I don't think ScummVM ever sets that variable to 5 on its own at the moment.)
It's possible that this particular spitting sound is reused in other places, but ScummVM doesn't try to swap one sound effect for another. Judging by what you say, it just decides to play a different version of it than the original did in that case.Mau1wurf1977 wrote:Or did someone at ScummVM simply go "Hey let's just reuse Largo Legrande spit and use it for the barkeeper"?
- LogicDeLuxe
- Posts: 437
- Joined: Thu Nov 10, 2005 9:54 pm
This is the actual part of the script in question:Trying in DOSBox, this variable is 3 in AdLib mode, and 4 in MT-32 mode.
It is the same sound used at the campfire, for Largo's spit, at the spitting contest, and when hanging above the acid pit. None of those have any check against VAR_SOUNDCARD.
In ScummVM, the variable seems to be always set to 3, even in MIDI mode and mixed AdLib turned off.
And the reason ScummVM plays that sample in MIDI mode at all is due to a higher priority given to samples than MIDI. Quite a useful feature. Original SCUMM just plays the first sub resource in a SOUN resource which it is able to play. Oddly enough, in Monkey 2, ROL is always ordered before SBL. Only Largo's screams have no ROL resource, thus the sample is actually played.
They must have encountered problems with the ROL version of the spit sound in this scene. Maybe they ran out of available MIDI channels on the MT-32, and thus included this check against VAR_SOUNDCARD (I didn't try). You might argue that this wouldn't be a problem, if they had ordered SBL before ROL. But then again, it is possible to have just an MPU-401 interface, and no soundcard at all, which is a supported system some might have in use in those days after all.
Code: Select all
[0012] (48) if (VAR_SOUNDCARD == 3) {
[0019] (1C) startSound(11);
[001B] (**) }
It is the same sound used at the campfire, for Largo's spit, at the spitting contest, and when hanging above the acid pit. None of those have any check against VAR_SOUNDCARD.
In ScummVM, the variable seems to be always set to 3, even in MIDI mode and mixed AdLib turned off.
And the reason ScummVM plays that sample in MIDI mode at all is due to a higher priority given to samples than MIDI. Quite a useful feature. Original SCUMM just plays the first sub resource in a SOUN resource which it is able to play. Oddly enough, in Monkey 2, ROL is always ordered before SBL. Only Largo's screams have no ROL resource, thus the sample is actually played.
They must have encountered problems with the ROL version of the spit sound in this scene. Maybe they ran out of available MIDI channels on the MT-32, and thus included this check against VAR_SOUNDCARD (I didn't try). You might argue that this wouldn't be a problem, if they had ordered SBL before ROL. But then again, it is possible to have just an MPU-401 interface, and no soundcard at all, which is a supported system some might have in use in those days after all.
-
- Posts: 85
- Joined: Sun Sep 17, 2006 2:26 am
- Location: Perth, WA, Australia
And that is exactly what I found!LogicDeLuxe wrote:This is the actual part of the script in question:Trying in DOSBox, this variable is 3 in AdLib mode, and 4 in MT-32 mode.Code: Select all
[0012] (48) if (VAR_SOUNDCARD == 3) { [0019] (1C) startSound(11); [001B] (**) }
If you play Monkey island with "monkey2 a" you will hear a FM spit sound. But if you play with "monkey2 s" no spit sound.
However ScummVM plays a digital spitting sound and that's the thing I can't figure out...
I guess it's a bug that under DOS with a Sound Blaster you don't hear the digital version of the spit sound...
Even the classic version in Monkey Island 2 Deluxe Edition has no spitting sound for the barkeeper! A bug that made it's way into the next game Heheheh
-
- Posts: 85
- Joined: Sun Sep 17, 2006 2:26 am
- Location: Perth, WA, Australia
Variable 5 would have to be for Sound Blaster. In Adlib mode Largo you can hear the needle go into the doll, but no screaming whatsoever. With a Sound Blaster you hear digital recordings of him screaming...eriktorbjorn wrote: The "cheat" I mentioned before is that for some other sound effects (Largo's yelps of pain, for instance) the scripts check if the soundcard variable is 5 (not sure what that means) before playing them. In those cases, whatever value the variable actually has ScummVM pretends that it is 5 after all.
But looking at the script posted above, there should only be a spitting sound when you play in Adlib mode. Which is exactly what I found...Judging by what you say, it just decides to play a different version of it than the original did in that case.
-
- Posts: 85
- Joined: Sun Sep 17, 2006 2:26 am
- Location: Perth, WA, Australia
Here is a video of the issue: http://www.youtube.com/watch?v=dTBcqDPXMTs
I don't how to record in ScummVM. I have a full version of Fraps but no luck...
I don't how to record in ScummVM. I have a full version of Fraps but no luck...
I read on queststudios.
That the CM-32L had more effects in MI2 than the MT-32 (the Spit noise).
And does that not mean we need a MT-32 vs LAPC-I/CM-32L (ans all the other devices with the 33 extra sounds) switch?
That the CM-32L had more effects in MI2 than the MT-32 (the Spit noise).
Does any of the other sounds have the AdLib/SoundBlaster Problem?They include the Spit noises, doors opening/closing, Slamming gate on Phatt island, Keys from Walt the dog, metronome in scabb island bar, thunder at graveyard, hammer noises, and bats.
And does that not mean we need a MT-32 vs LAPC-I/CM-32L (ans all the other devices with the 33 extra sounds) switch?
-
- Posts: 85
- Joined: Sun Sep 17, 2006 2:26 am
- Location: Perth, WA, Australia
I use a CM-64, but that wasn't the problem.rftl wrote:I read on queststudios.
That the CM-32L had more effects in MI2 than the MT-32 (the Spit noise).
The issue is related to the mixed Adlib mode.
Not at all. The Roland mode works perfectly.And does that not mean we need a MT-32 vs LAPC-I/CM-32L (ans all the other devices with the 33 extra sounds) switch?
Watch the YouTube video I uploaded. It shows that in Adlib mode you hear a spit noise, but not in Sound Blaster mode.
However in mixed Adlib mode with ScummVM you hear a spit sound that doesn't exist in the game. THAT's the issue. A sound that doesn't exist in the real game.
If I could record ScummVM I could upload a video. But there isn't an option and Fraps doesn't work with it either. So I'm stuck
-
- Posts: 85
- Joined: Sun Sep 17, 2006 2:26 am
- Location: Perth, WA, Australia
Here is the issue in all it's glory:
Real game Adlib: FM spit sound
Real game Sound Blaster: No spit sound whatsoever
See this video: http://www.youtube.com/watch?v=dTBcqDPXMTs
ScummVM: Digital recording of spit sound
See this video: http://www.youtube.com/watch?v=36niZEFZ9Ls
So the question is, how come ScummVM plays a sound that doesn't exist in the real game?
Real game Adlib: FM spit sound
Real game Sound Blaster: No spit sound whatsoever
See this video: http://www.youtube.com/watch?v=dTBcqDPXMTs
ScummVM: Digital recording of spit sound
See this video: http://www.youtube.com/watch?v=36niZEFZ9Ls
So the question is, how come ScummVM plays a sound that doesn't exist in the real game?
- eriktorbjorn
- ScummVM Developer
- Posts: 3561
- Joined: Mon Oct 31, 2005 7:39 am
Because the game script, in some cases, tells it to play a certain sound effect. The script only provides a numerical ID for the sound but ScummVM notices that it exists in several different forms, and guesses that the digitized one is the best one.Mau1wurf1977 wrote: So the question is, how come ScummVM plays a sound that doesn't exist in the real game?
So ScummVM handles it slightly differently than the original, but is it wrong or is it closer to the original vision? I don't know. It is playing the sound effect it's being told to, after all.
-
- Posts: 85
- Joined: Sun Sep 17, 2006 2:26 am
- Location: Perth, WA, Australia