Opened 8 weeks ago
#15625 new feature request
AGI MIDI Implementation - extra features suggestion (MT-32 mainly, but GM too)
Reported by: | MusicallyInspired | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | Engine: AGI |
Version: | Keywords: | midi, mt32, sysex, message, pc, program, change, channel, noise, percussion | |
Cc: | Game: |
Description
I had a thought for some optional extra settings for the MT-32 audio implementation for AGI games. Is ScummVM's implementation based on the original DOS tool AGIMIDI.EXE by Anders M Olsson? The extra features it offered might be nice to add to ScummVM's implementation. Also had an idea for a new feature. These settings would probably be best located in an AGI game's "Game" tab menu in "Game Options," but they'd only be used if a MIDI device was selected as the music device. I'm not sure it would be beneficial to add these settings to the MIDI or MT-32 menu tabs when it only affects AGI games.
1-Custom MIDI Channels
Instead of just defaulting to channels 2, 3, and 4 (for the MT-32) and channel 10 for noise, offer the option to set each tone channel and the noise channel to a custom MIDI channel (1-16).
2-Custom Note Keys for Noise Channel
Offer the ability to set a specific MIDI channel note for each of the 3 noise channel frequency pitches used on the Tandy (2330Hz, 1165Hz, and 583Hz). AGIMIDI defaulted these to notes 51, 46, and 49 respectively (which I believe are normally "crash cymbal," "kick," and "snare" IIRC).
3-Program Changes
Allow the user to set the Program Change value (0-127) for each of the 3 tone channels for custom instrument patches to be used. You could have a dropdown menu for each one with either GM or MT-32 mapped instrument names, but I think just having 3 text boxes to type in the digits yourself would be easier because of my next suggestion...
4-Optional Custom SysEx
I made an MT-32 sysex bank file specifically for AGIMIDI that replaces AcouPiano1 on the MT-32 with a custom timbre that sounds as close to the Tandy square wave as I could get it. The results were quite convincing. I also made 3 custom timbres for the 3 noise channel frequency pitches which were made from the "Breath Noise" PCM sample on the MT-32 (which is basically white noise). They were all pitched differently to try to mimic the Tandy noise pitches. AGIMIDI didn't support custom sysex banks of course so you'd have to dump the SYX file manually to your MT-32 (or MUNT) before launching an AGIMIDI-patched game. It'd be nice for ScummVM to offer this built-in and have the user select a custom SYX bank file that they'd like to dump to the MIDI device before the game boots up (similar to how SCI games already do this with built-in sysex banks). But it doesn't have to be MT-32 only. Many MIDI devices can of course accept sysex bank dumps that can change instrument patches including the SC-55. So it can work great for those as well.
5-MIDI Init String
This is something that AGIMIDI did do. It offered a short text field to input a custom byte string for MIDI messages. It defaulted to "C1 00 C2 00 C3 00" which sets channels 2, 3, and 4's Program Change to 0 (acoustic piano) but you could alter that or even add to it with other MIDI messages or even a short sysex message if you wanted to. Problem was it would only allow a string the length of the printable screen area (including spaces which it added itself) so custom messages had to be short. It'd be nice to offer another text field area where you could add your own byte string which could be much longer. It'd make more sense to load a SYX dump file in the case of sysex messages, but standard MIDI messages (like CC controller changes, or something else) are handy to have control over as well. This gets pretty nerdy, though, and would of course confuse (or worse, scare) general players. Perhaps the text field itself would be short and only display a preview of the full string. Next to the field there could be a button that opens a popup window with a larger text field that you could type into and review everything if you wanted.
Here's a link a video capture on my Google Drive of myself running AGIMIDI in DOSBox and using my custom Tandy timbre bank with MUNT to make it sound like a Tandy 3-voice (the noise channel timbres need some work):
https://drive.google.com/file/d/1-ZJk5TAI_rVoUGvnqx-bYCH-d92vzHG_/view?usp=sharing