VOGONS


First post, by realnc

User metadata
Rank Member
Rank
Member

First, I'd like to thank you guys for the absolutely incredible work on Munt! It sounds amazing! Especially the high-profile games (see "Monkey Island") sound indistinguishable to the real thing.

I spotted a possible issue with "Heart of China", where Munt (mt32d under Linux using the ALSA driver), prints this when the game starts:

"Sysex write to unrecognised address 52000a, len 7"

I'm using current Git Master of Munt. I'm attaching a MIDI file which reproduces the issue. (It's GZipped since .mid isn't listed as an allowed attachment type.) Sound is OK though. It does seem to sound a tiny bit different, but I can't quite place it.

(For comparison, this is on real hardware: http://youtu.be/Q2iv2RSXkXA)

This post is about the "unrecognised address" warning of course, the possible difference in the sound might not be related to it.

Attachments

  • Filename
    hoc_000.mid.gz
    File size
    9.36 KiB
    Downloads
    3 downloads
    File license
    Fair use/fair dealing exception

Reply 1 of 9, by sergm

User metadata
Rank Oldbie
Rank
Oldbie

Hi, realnc!

First, thanks for your kind words. 😀
I really hope we'll see the day when Munt will sound precisely and really *indistinguishable* to the real things, but unfortunately, not today.

With regards to the mentioned message, this address seems to be unused according to the docs. FYI, there are a number of games known to send bogus SysExes and notes to the device. These include SysExes with invalid addresses, illegal values, notes with pitches out of range the real device can play, etc. Real devices either just ignore such a crap or clamp invalid values, so does Munt. There's no particular harm with it but the MIDI data could be a bit less in size. 😀
One of the reasons could be the fact those tracks were composed using different MIDI devices and thus, rudiments like that remain.

Here're some thoughts about the mentioned difference in sounding, i.e. annual development progress report. 😀))

While KG and I worked hard last year on emulation of synthesized partials and I hope we’ve achieved remarkable accuracy in this field, there’re still problems around.

I think the nastiest one is the PCM interpolation algorithm. We use for now exact linear interpolation whereas LA-32 chip doesn’t due to presumable lack of a multiplication unit onboard. It seems that PCM wave played with quite low pitch is interpolated in somewhat rough way. Because of this, LA-32 chip introduces high pitched noise, and Munt doesn’t. For example, “Potion” timbre as reported by ripsaw8080 Munt Reloaded - Development

Moreover, Munt for now uses precise float maths for computations whereas LA-32 is assumed to use logarithmic fixed point maths. In consequence, one can see big difference in FFT spectrum analysis graph, though barely hearable.

And finally, reverb for modes 0-2 is still off and inaccurate, but there is a hope to finish it in the near future.

Reply 2 of 9, by realnc

User metadata
Rank Member
Rank
Member
sergm wrote:

First, thanks for your kind words. 😀
I really hope we'll see the day when Munt will sound precisely and really *indistinguishable* to the real things, but unfortunately, not today.

Still, when I switched from the ScummVM MT-32 emu (old version of Munt I think?) to the newest Munt Git master, I was like "WTF?" Very impressive.

With regards to the mentioned message, this address seems to be unused according to the docs. FYI, there are a number of games known to send bogus SysExes and notes to the device. These include SysExes with invalid addresses, illegal values, notes with pitches out of range the real device can play, etc. Real devices either just ignore such a crap or clamp invalid values, so does Munt. There's no particular harm with it but the MIDI data could be a bit less in size. 😀
One of the reasons could be the fact those tracks were composed using different MIDI devices and thus, rudiments like that remain.

Ah, OK. All is normal then I guess.

And thanks for the status update. Munt really has come a long way.

I think the nastiest one is the PCM interpolation algorithm. We use for now exact linear interpolation whereas LA-32 chip doesn’t due to presumable lack of a multiplication unit onboard.

I took a class in numerical analysis, but I never heard about doing interpolation without division 😒 Maybe it used pre-calculated results and used the nearest match (but since I'm not familiar AT ALL with the internals of the hardware, maybe I should refrain from doing guesswork.)

Reply 3 of 9, by sergm

User metadata
Rank Oldbie
Rank
Oldbie
realnc wrote:

I took a class in numerical analysis, but I never heard about doing interpolation without division 😒 Maybe it used pre-calculated results and used the nearest match (but since I'm not familiar AT ALL with the internals of the hardware, maybe I should refrain from doing guesswork.)

Hmm, in fact, guesswork is the main approach we used until now. 😀 The internals of those LA-32 and the reverb master chip are still unavailable for us. The accuracy we have today was achieved solely via digital sample analysis, no less. So, any ideas are appreciated and should be worked out.

I guess, there is no multiplication / division unit in those chips because of that logarithmic maths that is know to be used (actually, the PCM ROM contains the data in such format). Thus, it seems to be either a sort of bit shifts / additions algorithm or a table transform you mentioned. But we're still unsure about it.

Reply 4 of 9, by Mau1wurf1977

User metadata
Rank l33t++
Rank
l33t++

Also note that The Heart of China is optimised for the MT-32 (Old) and MUNT AFAIK tries to replicate a CM-32L.

Games like this will sound off on a real CM-32L too.

My website with reviews, demos, drivers, tutorials and more...
My YouTube channel

Reply 5 of 9, by HunterZ

User metadata
Rank l33t++
Rank
l33t++
Mau1wurf1977 wrote:

Also note that The Heart of China is optimised for the MT-32 (Old) and MUNT AFAIK tries to replicate a CM-32L.

Is that true even if you supply MT-32 ROMs instead of CM-32 ones?

Reply 6 of 9, by Mau1wurf1977

User metadata
Rank l33t++
Rank
l33t++
HunterZ wrote:

Is that true even if you supply MT-32 ROMs instead of CM-32 ones?

I don't know 😦

But I did read that the MUNT team are using a CM-32L as their reference.

Reply 8 of 9, by NewRisingSun

User metadata
Rank Oldbie
Rank
Oldbie
realnc wrote:

"Sysex write to unrecognised address 52000a, len 7"

That address is used on the CM-32P part of the CM-64, which listens on MIDI channels 11-16. This system exclusive message disables those channels. It is a leftover from an earlier version of the MT-32 sound driver, the version used with SCI0 games (remember that Dynamix uses Sierra sound drivers internally), which sent out AdLib song data on channels 11-16, and which would therefore have a CM-64 play MT-32 and (garbage) AdLib song data simultaneously were it not for that system exclusive message.