VOGONS

Common searches


First post, by Guest

User metadata

Background: I am playing one of my favorite old games (Frederik Pohl's Gateway) under DOSBox 0.62 on Windows XP. For the most part, it works great; kudos to the developers!

I am still having one problem, though. I want to hear the music as I remember it on an MT-32 long ago. Under DOSBox, with "intelligent=true" in the MIDI settings, the game does recognize the virtual MT-32 and plays music through it. Cool! Except it sounds a little weird, probably because the MT-32 commands are going to a GM device.

I know the best results would come from mt32emu, but that requires the mt32_pcm.rom file which I do not have and do not know how to obtain.

As a workaround, VDMSound implements "map files", and it includes mt2gm.map which remaps MT-32 instruments to GM instruments. Could DOSBox do something similar? (I tried using VDMSound without DOSBox, but the game does not recognize VDMSound's MT-32 emulator.)

Or is there another way to get the same result? Like a virtual sound driver for Windows which looks like an MT-32 but just remaps the instruments and sends the commands on to the GM device?

Thanks!

Reply 2 of 12, by canadacow

User metadata
Rank Member
Rank
Member

I would code a mapper into DosBox, but it only adds one or two games to the "sounds right list". The vast majority of games that used the MT-32 made use of its dynamic instrument capabilities. As such, the mapper thing just doesn't work very well. Its the reason why I wrote my emulator to begin with.

Reply 4 of 12, by patl

User metadata
Rank Newbie
Rank
Newbie

Thanks for the tips; I will see if I can obtain a legal copy of the ROM.

Meanwhile, I discovered that I can do on-the-fly MT-32 to GM mapping using MIDI-OX and MIDI Yoke, which are free for personal use. Here is what I did.

First, I downloaded and installed MIDI-OX and MIDI Yoke. This was a bit of a pain... If you want to try this, read the instructions very carefully, especially the "step by step" page for XP Home installation.

Next, I configured MIDI Yoke as the default Windows MIDI output device in the Sounds and Multimedia control panel (under the Audio tab).

Then I ran MIDI-OX and configured it to use the MIDI Yoke device for input and my MIDI synth device for output.

Finally, I created a MIDI-OX "Data Mapper" to map MT-32 instruments to GM instruments on the fly. I stole the mapping itself from the PATCHCNV.TXT file in this "mt2gm" tool:

http://www.mirsoft.info/gamemids-help.php#mt2gm

I wrote a Perl script to convert PATCHCNV.TXT to a MIDI-OX text-based map file (.txm). I am attaching the map file to this message in case anybody else wants to try it.

The music in Gateway now sounds pretty decent. Not as good as the MT-32 emulator, I am sure, but not too bad. And it's perfectly legal 😀.

Attachments

  • Filename
    mt2gm.zip
    File size
    1.01 KiB
    Downloads
    362 downloads
    File comment
    MIDI-OX data mapping configuration for MT-32 to GM conversion
    File license
    Fair use/fair dealing exception

Reply 5 of 12, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

Sorry for the mega-necro, but I was looking for this exact thing and this thread popped up via Google.

In case anyone else lands here too, I've attached my own spin on this that uses ScummVM's MT32-to-GM mapping table (https://github.com/scummvm/scummvm/blob/maste … dio/mididrv.cpp). I actually wrote a quick C++ program that uses the table directly, and then pasted the output into the MIDI-OX .txm file, so there should be no risk of typos.

This provides a couple of enhancements over the original mapping above:

  1. Maps all 128 MT-32 melodic instruments
  2. Uses correct program values range 0-127, instead of an incorrect range of 1-128

With this mapping, you should be able to replicate ScummVM's MT-32 to GM mapping in any Windows program (including DOSBox in particular) by routing the program to a MIDI loopback driver, then have MIDI-OX read from that, perform the mapping, and write to the actual desired MIDI output.

Tested with the DOS release of Wizardry 7 running in DOSBox, which uses the default MT-32 instrument set (no SysEx). Sounds reasonable to me when routing to VirtualMIDISynth.

Attachments

Reply 6 of 12, by cyclone3d

User metadata
Rank l33t++
Rank
l33t++

Does the official Roland GM sysex remapper for the MT-32 not remap everything properly?

Yamaha modified setupds and drivers
Yamaha XG repository
YMF7x4 Guide
Aopen AW744L II SB-LINK

Reply 7 of 12, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
cyclone3d wrote on 2021-09-24, 05:19:

Does the official Roland GM sysex remapper for the MT-32 not remap everything properly?

It does, but it does the exact opposite thing: It remaps instruments on the MT-32 so you can listen to GM titles on it.
Contrary the above remapper remaps instruments on GM devices so you can listen to MT-32 titles on them (provided no custom MT-32 instruments are used).

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 9 of 12, by HunterZ

User metadata
Rank l33t++
Rank
l33t++
_Rob wrote on 2021-09-24, 06:47:

What is the point, you can just use Munt to emulate a MT-32 or CM-32L.

Or I could use my actual MT-32 or CM-64, or even the compatibility modes on my real SC-88, but the reasons are:

  • ScummVM already provides this functionality for its games, so why not expand it to something that works in more situations?
  • I personally wanted to hear what a default-instrument MT-32 MIDI soundtrack might sound like when rendered via large General MIDI soundfonts.
  • For fun. Because it's fun and I enjoy it.

Reply 10 of 12, by cyclone3d

User metadata
Rank l33t++
Rank
l33t++
Falcosoft wrote on 2021-09-24, 05:57:
cyclone3d wrote on 2021-09-24, 05:19:

Does the official Roland GM sysex remapper for the MT-32 not remap everything properly?

It does, but it does the exact opposite thing: It remaps instruments on the MT-32 so you can listen to GM titles on it.
Contrary the above remapper remaps instruments on GM devices so you can listen to MT-32 titles on them (provided no custom MT-32 instruments are used).

So shouldn't it be called GM to MT-32 then?

Yamaha modified setupds and drivers
Yamaha XG repository
YMF7x4 Guide
Aopen AW744L II SB-LINK

Reply 11 of 12, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
cyclone3d wrote on 2021-09-24, 20:00:
Falcosoft wrote on 2021-09-24, 05:57:
cyclone3d wrote on 2021-09-24, 05:19:

Does the official Roland GM sysex remapper for the MT-32 not remap everything properly?

It does, but it does the exact opposite thing: It remaps instruments on the MT-32 so you can listen to GM titles on it.
Contrary the above remapper remaps instruments on GM devices so you can listen to MT-32 titles on them (provided no custom MT-32 instruments are used).

So shouldn't it be called GM to MT-32 then?

I do not think so 😀 . The starting point is an MT-32 game and the destination is a GM device. So 'MT-32 to GM' is somewhat more intuitive.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 12 of 12, by HunterZ

User metadata
Rank l33t++
Rank
l33t++
cyclone3d wrote on 2021-09-24, 20:00:
Falcosoft wrote on 2021-09-24, 05:57:
cyclone3d wrote on 2021-09-24, 05:19:

Does the official Roland GM sysex remapper for the MT-32 not remap everything properly?

It does, but it does the exact opposite thing: It remaps instruments on the MT-32 so you can listen to GM titles on it.
Contrary the above remapper remaps instruments on GM devices so you can listen to MT-32 titles on them (provided no custom MT-32 instruments are used).

So shouldn't it be called GM to MT-32 then?

You're just thinking of it from a different angle. The idea is that when a MIDI stream says "switch to MT-32 instrument #X", the command is translated to a "switch to GM instrument #Y" best-effort equivalent. It is an X-to-Y mapping, where the input is an MT-32 instrument number, and the output is a General MIDI instrument number (thus MT-32 to GM). My mapping even comes from a ScummVM data table called "MidiDriver::_mt32ToGm".