VOGONS


First post, by Mikity

User metadata
Rank Newbie
Rank
Newbie

I'm sure everyone here knows about the peculiarities of LA synthesis which means using a simple (or even not so simple) soundfont just won't work for playing back MT-32 music.

Setting aside gaming with DOSBox and ScummVM for now, what are the best ways to play back MT-32 (or LAPC-I) specific MIDI files on your computer?

Option 1: use the real hardware. Find a sound card or a cable with a MIDI connector, set the correct MIDI Out, and Bob's your uncle. It's easy, provided you have one of the original modules. 🤣

Option 2: use munt. I can think of several ways to do this:

  • Using Falcosoft's excellent SoundFont MIDI Player (there's an entire thread devoted to it on this forum). It comes with a munt VSTi interface, it all works pretty seamlessly. For some reason I only became aware of this piece of software recently! Previously I was using...
  • ...the regular munt executable, along with vanBasco's wonderful Karaoke Player. You will need to point the player at the correct MIDI input, if you're using one of the more recent Windows versions you might need a tool like Coolsoft's MIDI Mapper.
    One advantage of this slightly more complicated process is that you get to see the MT-32's LCD display in its full glory... (note: munt VSTi also shows the display, although not in graphical form).
  • There is also the "VST driver", it adds two virtual MIDI ports to the system to be used by any VST module. I haven't used it for a while, the only reference I can now find to it is on kode54's github page. Is this even still being developed?
  • Finally, you could also just use foobar2000 with kode54's excellent foo_midi plugin. It is very nicely integrated and you can also choose to use BASSMIDI, OPL emulation etc. from the same interface.

So, that's what I have. What other methods might I be missing? Which one of these options do you prefer and why?

Reply 1 of 12, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Only one remark. The definitive advantage of FSMP in case of MT-32 midi files (whether you use it with Munt VSTi or external Munt/real MT-32) is its versatile SysEx handling.
(with FSMP you are not restricted to use only MUNT VSTi, you can also use regular Munt/or any other method that e.g. Van Basco supports).

1. In case of same named midi+syx files (e.g. MI2_1.MID + MI2_1.SYX) FSMP automatically loads the SySex file before playing the midi file. These kind of midi+syx pairs are very common among MT-32 distribution packages.

2. In case of midi files that all require the same SysEx (or initialization midi files) you can make things easier with FSMP.
a. You should rename the syx file to 'Folder.syx' and then all files in that folder loads the initialization SysEx file automatically before playing.
b. If you have only an initialization MID file, you can extract the SysEx messages with the help of FSMP and then use the above 'a' method.
(Event Debugger -> File ->Save SysEx data from Midi)
This is useful since in case of initialization MID files you have to set your player to not send reset SysEx messages between midi songs, or not playing any other midi files that sends its own SysEx messages since it will ruin the setup. This can also be much faster:
MT-32 General Midi Conversion/Patching problems
(In case of Munt/Munt VSTi you can set the 'Delay between SysEx chunks' value even to 5 ms and it still works. This way loading big SysEx files can be really much faster.)

3. In case of other special situations you can also Drag&Drop SysEx files to FSMP's, and the SysEx messages are sent immediately to the active synth.

(Anyway similar naming conventions also work with SF2 soundfont files so using FSMP with its built-in Bassmidi synth also has some advantage over VMS, foobar, etc.)

I have attached some tests packages so you can test how fluid the experience is with different players.

Ps:
When you play MT-32 midi files in FSMP you should set the reset SysEx that is sent between midis to 'MT32_Reset.syx'. You can do this by right clicking the Reset button (with the first aid like icon) and then Select/Send Custom SysEx -> MT32_Reset.syx.

Filename
Foldersyx_test.zip
File size
89.67 KiB
Downloads
160 downloads
File license
Fair use/fair dealing exception
Filename
MI2_1.zip
File size
51.56 KiB
Downloads
178 downloads
File license
Fair use/fair dealing exception

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

Reply 2 of 12, by Mikity

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote:

1. In case of same named midi+syx files (e.g. MI2_1.MID + MI2_1.SYX) FSMP automatically loads the SySex file before playing the midi file. These kind of midi+syx pairs are very common among MT-32 distribution packages.

Yes, these additional SYX files are common. It's great that your program handles them in this automated way! Even just being able to drag & drop is very convenient.

Falcosoft wrote:

(Anyway similar naming conventions also work with SF2 soundfont files so using FSMP with its built-in Bassmidi synth also has some advantage over VMS, foobar, etc.)

This confuses me a bit. Are you saying I can send SysEx messages to a soundfont? 😕

Falcosoft wrote:

I have attached some tests packages so you can test how fluid the experience is with different players.

Thank you, Zoltan!
I noticed one strange thing though - these files are not detected as "MT32" type by your player (upper icon: "MIDI System of File").
I have seen it work for other files, I am attaching an example.

By the way, I think I have found a bug in your munt VSTi: every time I start the plugin, it forgets the location of the ROMs and I have to specify it again. A real pain... 😢

Falcosoft wrote:

Ps:
When you play MT-32 midi files in FSMP you should set the reset SysEx that is sent between midis to 'MT32_Reset.syx'. You can do this by right clicking the Reset button (with the first aid like icon) and then Select/Send Custom SysEx -> MT32_Reset.syx.

Hope this isn't a stupid question, but why do I need to do that? What happens if I don't...?

Attachments

  • Filename
    SQ3MT.zip
    File size
    63.68 KiB
    Downloads
    139 downloads
    File license
    Fair use/fair dealing exception

Reply 3 of 12, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

This confuses me a bit. Are you saying I can send SysEx messages to a soundfont? 😕

No, my remark was out of context in this respect. I wanted to say that same named midi+sf2 pairs are handled similar way. Eg. if a midi file need a special soundfont file to play back properly same named sf2 file is loaded automatically to the designated bank. And 'Folder.sf2' works similar to 'Folder.syx'. More info (just above your question in FSMP topic 😀 :
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi

I noticed one strange thing though - these files are not detected as "MT32" type by your player (upper icon: "MIDI System of File").

This is not strange at all. These midi files do not contain any SxsEx messages at all since the SysEx messages are in a separate Syx file. So if you inspect the midi files themselves (e.g. in Event debugger) you cannot tell what midi system they are designed for. They just look like simple (mostly GM) midi files without any system specific messages.

@Edit: A little more info about why it is more logical/useful not to display such midi+syx pairs according to the syx file part.
1. Let's suppose that you have an MT-32 syx file and rename it to the same name as a GS midi file. The GS midi file would not become magically an MT-32 midi file because of this.
2. Also this midi+syx pairs can only work when the midi file itself does NOT contain reset SysEx messages. If you see that the MT-32 midi file itself is displayed as an MT-32 file that means it contains a reset SysEx. In this case the reset SysEx message in the midi file itself would override the effects of the SysEx messages contained in the Syx file, so you would not get the proper initialization (first the syx file would be loaded but when the midi file would start to play it would send its reset nullifying the previously set state by the syx file). This useful information would be lost if FSMP would display midi system type according to separate Syx files.
So "MIDI System of File" strictly means the detected midi system of the midi file itself.

By the way, I think I have found a bug in your munt VSTi: every time I start the plugin, it forgets the location of the ROMs and I have to specify it again. A real pain...

There is no such bug, it would have been discovered much earlier making bigger noise 😀. I think you have simply forget to save the plugin's settings and check the 'Autoload Last used Settings File' checkbox.

@Edit: Plugins as Munt VSTI can have multiple useful settings (configured with MT-32 ROM or CM-64 ROM, full floating point rendering or not etc.). You can save as many settings file for a plugin as you want and load them when you need. But you can also set that you want to auto-load the last used one. This option can only be disturbing when you try many different plugins since the auto-loading settings file will not match. Configuration presets also preserve the last used settings file for a plugin so using them is the best solution as I have suggested earlier in FSMP's topic.

Hope this isn't a stupid question, but why do I need to do that? What happens if I don't...?

Because without reset SysEx messages between midi tracks you can experience unexpected results and playback problems. E.g. imagine that a midi file loads its own instruments/settings by SysEx messages and then you want to play another simple midi file that do not send any resets just assumes the default MT-32 state. It will play wrong since the synth will be in a state defined by your previous midi file. This problem is not MT-32 specific anyway and not just SysEx messages can cause such problems. You can meet such situations also in case of GS/XG midis and controller messages. That's why you can set in FSMP what kind of reset messages you want to send to the synth between tracks (GM/GS/XG/GM2/NX/MT-32 etc.).

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

Reply 4 of 12, by Mikity

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote:

More info (just above your question in FSMP topic 😀 :
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi

Haha, thanks for the reminder. For the last few days I have been working my way through that thread - but it is slow going, since there are so many interesting topics being raised. I'm currently on page 22 out of 35. 🤣

Falcosoft wrote:

This is not strange at all. These midi files do not contain any SxsEx messages at all since the SysEx messages are in a separate Syx file. So if you inspect the midi files themselves (e.g. in Event debugger) you cannot tell what midi system they are designed for. They just look like simple (mostly GM) midi files without any system specific messages.

Aha, that makes sense. So if a file contains no explicit SysEx, your player assumes it is GM (by default), correct?

Falcosoft wrote:

I think you have simply forget to save the settings and check the 'Autoload Last used Settings File' checkbox.

That checkbox is problematic! If I select it, then it complains every time I choose a new VSTi - it gives me an error saying that the configurations settings don't match the module (which I think I understand). Could you make this a bit more user-friendly? If there is a .FXB file with the same file name as the DLL in the same directory, couldn't you just assume this was the desired settings file and then load it? Otherwise this function becomes pretty useless if you use multiple instruments.

Falcosoft wrote:

Because without reset SysEx messages between midi tracks you can experience unexpected results and playback problems. E.g. imagine that a midi file loads its own instruments/settings by SysEx messages and then you want to play another simple midi file that do not send any resets just assumes the default MT-32 state. It will play wrong since the synth will be in a state defined by your previous midi file. This problem is not MT-32 specific anyway and not just SysEx messages can cause such problems. You can meet such situations also in case of GS/XG midis and controller messages.

I see, thank you. I was previously just resetting the virtual synth - reminds me of when I used to switch off my MT-32 and then back on again, just to be sure. 😊

Reply 5 of 12, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Aha, that makes sense. So if a file contains no explicit SysEx, your player assumes it is GM (by default), correct?

Yes, the 'grey GM mark' means no explicit known SysEx found so GM is assumed as the most common midi system. But a 'black GM mark' means explicit GM System ON SysEx is found.

That checkbox is problematic! If I select it, then it complains every time I choose a new VSTi - it gives me an error saying that the configurations settings don't match the module (which I think I understand). Could you make this a bit more user-friendly? If there is a .FXB file with the same file name as the DLL in the same directory, couldn't you just assume this was the desired settings file and then load it? Otherwise this function becomes pretty useless if you use multiple instruments.

I don't think such automatism would be good at that place. E.g. getting a 'clear plugin state' would be hard without deleting the same named setting files...
Otherwise it's not an error, just a warning message. It does not prevent you to load the plugin and then load right settings files for it. Enabling that checkbox and 'Autoload at Startup' should be the final step when you are ready defining your (startup) configuration.
But the most important thing is, this is not the way it's meant to be played 😀 For using multiple instrument/VSTi plugins follow the author's recommendations:
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi

That part of the interface is for defining a configuration. You can try different plugins/settings without checking 'Autoload Last used Settings File'. Checking this control is only useful when you are done with your experiments and you are ready to save the whole configuration as a configuration preset. Let's see a real world example why configuration presets are much more convenient than your current usage pattern. You want to use 3 plugins regularly:
1. Sound Canvas-VA for GM/GS midis.
2. S-YXG50 for XG midis
3. Munt(VSTi) for MT-32 midis.

But there's a problem: it's not enough to change the plugin in the way you currently do to get a proper environment for different midi files. Since besides the plugin:
1. You have to also change the reset type: GS for SC-VA, XG for S-YXG50, MT-32 for MUNT.
2. You should also change the instrument definition file to get proper instrument names on channels. (Instrument -> Custom patch definitions).
3. You should set 32 KHz sample rate for Munt VSTi, 44.1 - 48KHz for S-YXG50.
4. Optionally you may want to set 'Use patch info for Capital Tone Fallback' for SC-VA or other things such as ideal SysEx delay between chunks etc.

You do not want to do this all the time you need to use a different config that is ideal for some kind of midi files. Instead you should save your whole configurations as presets:
1. Sound_CanvasVA_001
2. S-YXG50_002
3. Munt_MT32_ROM_003
4. MUnt_CM64_ROM_004

You have to do this only once! After this you only have to load the preset you need and you get back your whole perfectly fine tuned configuration.
By loading I mean:
1. Press CTRL + ALT + 1 to load Sound_CanvasVA_001, CTRL + ALT + 2 to load S-YXG50_002 etc.
2. If you hate hotkeys (as I suspect) you can still use just your mouse to navigate to 'Storage of Settings -> Configuration Presets' and double click the preset name or press apply on the selected preset.
3. Hybrid version: Press Ctrl + Alt + P to open Configuration Presets dialog and then double click the preset name or press apply on the selected preset.
4. Besides the above you can also define shortcuts on your desktop for your different presets (detailed in the above link)
5. Advanced users can also change presets by sending SysEx messages e.g. from DosBox:
https://youtu.be/6CdJ7sEt8UM

I hope I finally succeeded in convincing you 😀
But if you do not believe me Phil recommends the same (and he was very satisfied with his results):
https://youtu.be/vSk9S1bkRS8

I see, thank you. I was previously just resetting the virtual synth - reminds me of when I used to switch off my MT-32 and then back on again, just to be sure. 😊

You can also send your selected reset messages manually whenever you want be pressing the first aid like reset button of FSMP. If the synth understands the selected SysEx reset message it should have the same effect as 'rebooting' the synth but it's faster.

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

Reply 6 of 12, by Mikity

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote:
Let's see a real world example why configuration presets are much more convenient than your current usage pattern. You want to u […]
Show full quote

Let's see a real world example why configuration presets are much more convenient than your current usage pattern. You want to use 3 plugins regularly:
1. Sound Canvas-VA for GM/GS midis.
2. S-YXG50 for XG midis
3. Munt(VSTi) for MT-32 midis.

Aha, I never realised that configuration presets were so all-encompassing! You are right, this is a more convenient way of setting up and then loading "all in one" configurations.

Falcosoft wrote:

2. You should also change the instrument definition file to get proper instrument names on channels. (Instrument -> Custom patch definitions).

Am I doing this right, by the way, regarding patch and rhythm banks?
lDrA5myt.png

Falcosoft wrote:

3. You should set 32 KHz sample rate for Munt VSTi, 44.1 - 48KHz for S-YXG50.

What is the default, 44.1 or 48 kHz? Why does the S-YXG50 require a different setting from the others?

Falcosoft wrote:
You do not want to do this all the time you need to use a different config that is ideal for some kind of midi files. Instead yo […]
Show full quote

You do not want to do this all the time you need to use a different config that is ideal for some kind of midi files. Instead you should save your whole configurations as presets:
1. Sound_CanvasVA_001
2. S-YXG50_002
3. Munt_MT32_ROM_003
4. MUnt_CM64_ROM_004

You have to do this only once! After this you only have to load the preset you need and you get back your whole perfectly fine tuned configuration.

Such a great idea 🤣 I added a SoundFont preset too!

Falcosoft wrote:

2. If you hate hotkeys (as I suspect) you can still use just your mouse to navigate to 'Storage of Settings -> Configuration Presets' and double click the preset name or press apply on the selected preset.

Hehe. I don't exactly hate hotkeys, but my problem with hotkeys is that they're only intuitive for the person who comes up with them...
Some of your shortcuts use Ctrl-Shift-key, others use Ctrl-Alt-key, ...I'm sure you can appreciate, it is easy to get a little confused sometimes. 😕 Rather than screw things up, I'd rather have a quick confirmation of which setting I'm loading, first.

Falcosoft wrote:

3. Hybrid version: Press Ctrl + Alt + P to open Configuration Presets dialog and then double click the preset name or press apply on the selected preset.

Any chance you could include a button for loading presets in the GUI? 😘

Falcosoft wrote:

I hope I finally succeeded in convincing you 😀

You are getting very close, your software has started showing up in my Start Menu's "Most used" items 🤣

Thanks again for your help and patience.

Reply 7 of 12, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Am I doing this right, by the way, regarding patch and rhythm banks?

Yes.

What is the default, 44.1 or 48 kHz? Why does the S-YXG50 require a different setting from the others?

1. For S-YXG50 44.1 kHz seems to be the ideal sample rate. The XP driver version of the synth gives this hint:

syxg50_samplerate.jpg
Filename
syxg50_samplerate.jpg
File size
53.58 KiB
Views
5003 views
File license
Fair use/fair dealing exception

Anyway you can try 32kHz with S-YXG50 and you will definitely hear that something is not right. You get down-tuned instruments that simply sound bad. As tested by the plugin's modder 96kHz is also problematic:
Yamaha S-YXG50 Portable VSTi (a software MIDI synth)
48kHz sounds OK, but since the instrument bank is the same as the Windows driver's, 22.05/44.1 kHz samples are the most likely (and 22.05/44.1 -> 48kHz resampling is never ideal) .

2. In case of Munt we know that it always uses 32kHz internally (source is available) and for Munt VSTi 32kHz is even more important because of this:
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi

3. Soundfonts typically use 44.1 - 48 kHz samples so 32kHz is not ideal for them.

4. In case of SC-VA no one can tell exactly since contrary to Munt SC-VA is not open source, so its internal emulation engine is not well known in this regard. The original SC-88/88Pro/8820 hardware's resolution is 32kHz so maybe the emulation preserved also this aspect. SC-VA has no problems with any sample rates so 48/96 kHz seems to be the ideal if we consider modern hardware/Windows that typically use these sample rates. (32 -> 48/96 kHz resampling is typically less problematic than e.g. 22.05/44.1 <-> 32/48/96 kHz resampling)

Any chance you could include a button for loading presets in the GUI? 😘

I do not understand this. Configuration Presets dialog is a GUI. It's a standard Windows dialogbox with a list control and buttons. What is 'more GUI' than this?

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

Reply 8 of 12, by Mikity

User metadata
Rank Newbie
Rank
Newbie

Thanks for answering all the questions about sample rates!
So the best values I conclude from your post are:

  • Munt: 32 kHz
  • S-YXG50: 44.1 kHz
  • Sound Canvas VA & soundfonts: 48 kHz (on modern sound cards)
Falcosoft wrote:

I do not understand this. Configuration Presets dialog is a GUI. It's a standard Windows dialogbox with a list control and buttons. What is 'more GUI' than this?

I meant, the fact that there is no button for it in the main window. I use it so frequently, I would love to be just one click away from it. The current options are either: right-click | select menu | left-click, or a somewhat obscure triple-key shortcut. Do you see why I was talking about a more "direct" shortcut to it?
Of course this is just a minor detail, and it's your software, so you get to make the call. 😀

But why are some of your shortcuts Ctrl-Shift-key and others, Ctrl-Alt-key?

Reply 9 of 12, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

I meant, the fact that there is no button for it in the main window. I use it so frequently, I would love to be just one click away from it. The current options are either: right-click | select menu | left-click, or a somewhat obscure triple-key shortcut. Do you see why I was talking about a more "direct" shortcut to it?
Of course this is just a minor detail, and it's your software, so you get to make the call. 😀

Of course every item you can find in the main menu could have its own button on the interface. But some already argued that the main interface is already a little too crowded. You cannot please everyone. You want to change configurations a lot + you do not like shorcuts/accelerators = you are a special case 😀

But why are some of your shortcuts Ctrl-Shift-key and others, Ctrl-Alt-key?

Because otherwise there would be collisions. There are separate command/accelerator 'domains' belonging to different function areas.
1. Shift + x ( Shift + 1, Shift + 2 etc.) -> Opening/invoking VST effect/Instrument plugin windows.
2. Ctrl + x (Ctrl + 1, Ctrl + 2 etc.) -> Switching banks on all channels. This can be useful for testing different soundfonts in real time:
https://youtu.be/A4rXu3YNXDc
https://youtu.be/aBhTH1Z9s4I
3. Ctrl + Alt + x ( Ctrl + Alt + 1, Ctrl + Alt + 2 etc.) -> Changing presets.

For 3. it seems that the logical accelerator domain should have been Alt + x, but unfortunately it collides with Windows default menu accelerator keys.
As you can see there is no Ctrl + Shift + key domain so far (that I know of) so I do not know where you got that information from.

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

Reply 10 of 12, by Mikity

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote:
1. Shift + x ( Shift + 1, Shift + 2 etc.) -> Opening/invoking VST effect/Instrument plugin windows. 2. Ctrl + x (Ctrl + 1, Ctrl […]
Show full quote

1. Shift + x ( Shift + 1, Shift + 2 etc.) -> Opening/invoking VST effect/Instrument plugin windows.
2. Ctrl + x (Ctrl + 1, Ctrl + 2 etc.) -> Switching banks on all channels. This can be useful for testing different soundfonts in real time:
https://youtu.be/A4rXu3YNXDc
https://youtu.be/aBhTH1Z9s4I
3. Ctrl + Alt + x ( Ctrl + Alt + 1, Ctrl + Alt + 2 etc.) -> Changing presets.

For 3. it seems that the logical accelerator domain should have been Alt + x, but unfortunately it collides with Windows default menu accelerator keys.
As you can see there is no Ctrl + Shift + key domain so far (that I know of) so I do not know where you got that information from.

Maybe I simply got confused by too many key combinations, my mistake 😊

My point was simply that these various key combos are not intuitive. After a month, I doubt I will remember any of them... Which is why a quick menu option is more user friendly.
Cool option for testing soundfonts though! Right now I am using your modded Reality, and Weeds.

Reply 11 of 12, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

OK, one step closer 😀
Re: Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi

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