Discussing rules for MSGS in MPTM format
BotB Academy Bulletins
Level 21 Mixist
post #191787 :: 2024.06.12 6:26pm
  Yung Gotenks and agargara liēkd this
Hi all! Been a bit inactive lately. Just not feeling it; my will to participate tends to come and go.

Anyway, I've been working on an MPTM for whenever it appears next, and decided to incorporate MIDI out to the MSGS Wavetable Synth. This is because, according to the format rules, you can, in fact, do this.

As for why, I am under the impression that because all computers that can run OpenMPT are Windows-based, and all computers with Windows have the MSGS Wavetable Synth as an available output, there is no reason not to allow the MIDI output to do this.

However, I ran into a really... fun quirk.

It is absolutely TERRIBLE at handling latency. You have to specifically set up the sound card settings to get the audio from the mptm to sync up with the heavily-delayed output from the MSGS Wavetable Synth. The only way I have found to get it to play in time is with the following settings, most of which are accessed via Ctrl+F1 by default, under the "Sound Card" tab:

  • 250ms of latency. (This is setting applies to all modules. Lower values mean less delay between the audio playback and the
  • Period of 1ms. (This is essentially the refresh rate of the VU meters. It also applies to all modules. Increasing this value adds additional delay to the audio, but decreases processing requirements. Crucially, increasing this value also means the MIDI timing is sloppier even when you've adjusted for latency correctly.)
  • Set MIDI I/O "Output Latency" to -221ms. (This value is saved with the module, as it is a parameter on the MIDI I/O Plugin itself. It essentially offsets the timing of the MIDI plugin; -221 is placing MIDI playback earlier than the module's audio by 221ms, which, on my machine, with the above settings, was the delay between the MSGS Wavetable Synth and the audio of the module. Your mileage may vary. I have no idea. Ideally, some volunteers could help me test this. Get in contact on Discord via DMs. If interested. I can also post a test case in the general chat on Discord.)

If any of these settings are different to the above, MIDI playback will be out of time. After testing, the master sample rate does not matter, luckily.

So I have to pose the question: do we still allow this, slightly special playback considerations and all? Or should we maybe rethink this rule? Obviously, we already specify Interpolation settings for rendering in s3xmodit a lot. But you can change that with a simple drop-down menu, and it's one setting. I don't know that everyone who cares about listening to the original file will actually know how to change all of this. And incorrect interpolation isn't detrimental to a render in most cases. But, MIDI timing being off is a completely different beast.

On top of that, just rendering the audio file doesn't work. The MIDI stuff isn't included when rendering to .wav; you HAVE to record via loopback because the MIDI data is sent in real time (which is part of why these issues arise in the first place).

Sorry for the long read. Best wishes!
Level 31 Chipist
post #191788 :: 2024.06.12 6:29pm
  Jangler and 02FD liēkd this
i don't really like the idea of allowing msgs midi as part of the openmpt format in the first place, personally... i think it's more about being a souped-up s3xmodit.
Level 21 Mixist
post #191789 :: 2024.06.12 6:31pm
I kind of agree. Literally the only use I've had for it is fretless bass in the song I'm working on. It doesn't really fit the vibe of the stuff you can do with mptm
Level 20 Mixist
post #191790 :: 2024.06.12 7:10pm
  Jangler liēkd this
remember that while openmpt's interface is tied to windows, the command line player works on anything (and supports effects and all that shit) so an mpt entry using msgs wouldn't work at all without extra setup, which is the reason plugins aren't supported

so yeah, KILL
Level 26 Chipist
post #191795 :: 2024.06.12 8:51pm :: edit 2024.06.12 8:52pm
  Jangler, 02FD and damifortune liēkd this
I also think it would make more sense to just disallow midi in mptm, playback does sound like a bit of a nightmare and I bet those latency settings would be different for each person.

As a side note, since MSGS is a wavetable synth, I wonder if you could mostly replicate it within openmpt itself (by importing the msgs soundfont samples)?
Level 21 Mixist
post #191796 :: 2024.06.12 9:39pm
  agargara liēkd this
I mean kind of? The default MIDI library used when importing MIDIs is literally just opening the DLS up and extracting the .wav files. This leads to inaccuracies on specific things like interpolation, envelopes, CC#01, any auto-vibrato in instruments... OK so there are a lot of inaccuracies but at least it can extract them. I've replaced the MIDI output in the module I'm working on anyway just to be safe.
Level 28 Chipist
post #191837 :: 2024.06.13 10:04am
  gotoandplay, agargara, blower5, damifortune, kleeder and SRB2er liēkd this
edited thread title to be less clickbait-y and more informative ;D

original title was: Discussing A Certain Small Rule In *.mptm
Level 23 Chipist
post #191842 :: 2024.06.13 11:26am
  cs127 liēkd this
openmpt supports linux via wine, but there is no way msgs midi will work under that setup.
Level 21 Mixist
post #191864 :: 2024.06.13 8:59pm
I thought it was relatively OK to avoid stating which rule I was referring to in the title so I could explain it in the original post but if you would prefer it does I guess I'm powerless to stop you :D

LOGIN or REGISTER to add your own comments!