Opened 17 years ago

Last modified 15 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:
Game:

Description

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 by SF/khalek, 17 years ago

Owner: set to SF/jamieson630

comment:2 by SF/jamieson630, 17 years ago

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 for.

comment:3 by SF/jamieson630, 17 years ago

Priority: normallow

comment:4 by SF/logicdeluxe, 17 years ago

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 appropriate. 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 by SF/jamieson630, 17 years ago

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

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

comment:7 by SF/logicdeluxe, 17 years ago

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 by SF/logicdeluxe, 16 years ago

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

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 by SF/logicdeluxe, 16 years ago

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 by sev-, 14 years ago

Back to the pool.

comment:12 by sev-, 14 years ago

Owner: SF/jamieson630 removed

comment:13 by digitall, 15 months ago

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