Opened 16 years ago

Last modified 3 months ago

#7283 new enhancement

ALL: Favor Adlib over MT32 for SFX tracks

Reported by: SF/logicdeluxe Owned by:
Priority: low Component: Audio
Keywords: Cc:


I don't know if you can easily distinguish between
music and SFX, e.g. recognise if a midi resource is
used for a sound effect or is it part of the musical score.
The problem is, that the MT32-to-GM translation is good
for music, but not that good for SFX, e.g. open and
close doors doesn't really sound like doors with a GM
wavetable when multi-midi is enabled. A priority like
Sample > Adlib > MT-32 would be usefull while all
musical scores should play the MT-32 version regardless
of the existance of other formats.

Ticket imported from: #758457. Ticket imported from: feature-requests/99.

Change History (13)

comment:1 Changed 16 years ago by SF/khalek

Owner: set to SF/jamieson630

comment:2 Changed 16 years ago by SF/jamieson630

Wait a minute.... You're asking for better SFX under multi-
midi? In that case, I have to assume you are referring to
sound effects that you don't hear AT ALL unless you use the
multi-midi option. If that's the case, here's why: those sound
effects are ADLIB ONLY. They are not MT-32, they are NOT
suffering from bad MT32-to-GM translation. They are going
through the Adlib MidiDriver and will sound exactly the same
regardless of your wavetable synth hardware (which they're
not even using).

In the case where a native driver has been selected, GM
tracks take first priority, followed by ROL tracks (MT-32 with
GM translation). Adlib is used ONLY if the other two are not
present AND multi-midi has been selected to allow an Adlib
driver to run in parallel with a native music driver.

If the above is NOT what you are referring to, please give
specific examples (game, location in game and action taken)
where you think the SFX are not sounding appropriate, and
list all command line options and config file options used to
run the game.

Lowering priority; I suspect this feature request arises out of
a fundamental misunderstanding of what multi-midi support is

comment:3 Changed 16 years ago by SF/jamieson630

Priority: normallow

comment:4 Changed 16 years ago by SF/logicdeluxe

I think multi-midi is ment in order to enable adlib sounds
while all the GM or MT-32 is played at the same time, which
was not possible in the original interpreter.

And I am not refering to ADLIB ONLY effects. In fact, they
seem to play just fine. I am not aware of any sound effect
that only plays with multi-midi at all.

Well, some examples: Just start Monkey Island 2 with
multi-midi enabled. You hear a perfect Adlib sound while the
code wheel items are shuffling. Then in the next screen,
when you select the difficulty level you hear some dull MIDI
noise. At this screen the Adlib equivalent would be more
appropriate. This goes for all sound effects where an MT-32
and an Adlib version exists. As I mentioned before, this
includes almost all doors in MI2 and FOA. In case of that
door, I hear some sound of the drums which really don't have
similarities to a door sound.
Or in MI2, when you dig for the bone at the graveyard, gun
shots play. Also here the Adlib thunder sound would be more
There is no problem with the Adlib only sound effects as in
MI2 the fire crackles correctly, the sound when broking the
shovel from the sign sound well etc.. Sampled effects like
the spit from the barkeeper play fine as well. There is no
problem with the music, at all. The translation just works
fine, and I think the quality is comparable with the DOTT
midis for example. Because that I asked for distinguishing
between music and sfx.

This feature request should probably an option which is only
used when MT-32 is translated to GM not when native MT-32 is
enabled as that device would understand those effects correctly.

comment:5 Changed 16 years ago by SF/jamieson630

Some examples of Adlib-only tracks that require multi-midi if
you're using a native driver are the clicking sound during the
MI2 copy protection screen code wheel, the sound when you
pull the shovel off the sign in Woodtick, and the sound of the
carpenter's hammer. But I digress....

I am not aware of anything in the resources that specifies
whether a sound is music or SFX. Consequently, the only
solution I can see would be a hack that takes into account
the SIZE of the resource -- i.e. we MIGHT be able to get
away with assuming that sound resources that are sufficiently
small are probably SFX rather than background music. At this
time I would prefer not to implement such a hack until I've
consulted with the project leads.

comment:6 Changed 16 years ago by SF/jamieson630

Summary: better multi-midi priority for SFXALL: Favor Adlib over MT32 for SFX tracks

comment:7 Changed 16 years ago by SF/logicdeluxe

Some SFX used in the games currently sound awfull with the
GM translation. At least some of them do have their GS
counterpart. This is the case for doors, thunder and
explosion for example. Is it possible to translate them to
those GS sounds? This would be even better than Adlib
emulation, of course. Since these aren't available on any
wavetable this should be another optional switch of course.

comment:8 Changed 15 years ago by SF/logicdeluxe

A way of detecting an SFX track could be that: Check if it
uses one or more MIDI channels, ie. start parsing the file
until more than one MIDI channel is found or the end of the
MIDI data is reached. In case there is only one channel that
approach wouldn't take that long, since such MIDI are
ususally very small. Those parsing cases could be even
reduced by a MTrk count check before that, since it is
greater than one in many cases and then a musical cue for sure.
Note that even the simpliest music cues use at least two
channels. For instance the Scabb Island map overview has one
flute track and one percussion track.
The metronome ticking on the Bloody Lip might be a rare
exception, but I think it really doesn't effect gameplay
when it ticks with Adlib.

comment:9 Changed 15 years ago by SF/jamieson630

Just a note on the MTrk comment -- SCUMM games use SMF
Type 0 tracks, which means the events for all the MIDI
channels occur in a single MTrk. So counting MTrk's wouldn't
work because the count is *always* 1.

I will ponder on your other suggestions....

comment:10 Changed 15 years ago by SF/logicdeluxe

As far as I can tell, all tracks in Monkey2 and FOA (which
are the only games where this feature request does matter,
as multi-midi has no effect on other games anyway) have all
the MIDI in type 2, which is multi track not ment to be
played simulaneously, which is a requirement for iMuse. (But
ScummRV does, which is why they play in that funny mess
there.) Even SFX tracks are type 2 even only one MTrk is
exist, as I checked it with ScummRV. There are some none
interactive cues like the part screen melody, which are in
fact one track, but of course they also use more than one
MIDI channel for playback. So this can be best checked with
the note on commands to detect a SFX.
Of course the MTrk comment was not ment as the only way to
detect this, but since you have just to read one byte to
figure out if there are more than one MTrk you can skip that
note on checking procedure completely in such a case. But if
it is single MTrk you go on and check for note on and count
the used channels. If it is a single MTrk AND only one
channel is used it is very probably a SFX.

comment:11 Changed 13 years ago by sev-

Back to the pool.

comment:12 Changed 13 years ago by sev-

Owner: SF/jamieson630 deleted

comment:13 Changed 3 months ago by digitall

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