Reply 20 of 32, by Scali
Updated SoftMPU for DreamBlaster S2(P) here: https://www.dropbox.com/s/v9tssu8k1samlf4/sof … p_mt32.zip?dl=0
Updated SoftMPU for DreamBlaster S2(P) here: https://www.dropbox.com/s/v9tssu8k1samlf4/sof … p_mt32.zip?dl=0
Hi,
In theory you are absolutely right: with the help of SysEx messages you can associate any midi channels with any parts on MT-32. But in practice I have never met midi files intended to be played on MT-32 that used different channel layout than the default 2-10. There are many MT-32 midis that use custom instruments and so are lost cases for DreamBlaster MT-32 emulation but even these files use default channels. Roland itself released a SysEx pack that reconfigures the channel layout of MT-32 to be 1-8,10 for better GM compatibility but this is not relevant for the Dreamblaster since it's a GM device itself.
So I think simply setting default MT-32 instruments (and sending proper bank change messages if necessary) and MT-32 default 12 semitones for pitch bend range on channels 2-10 is enough for MT-32 midi files that have a chance to sound good with Dreamblaster.
wrote:So I think simply setting default MT-32 instruments (and sending proper bank change messages if necessary) and MT-32 default 12 semitones for pitch bend range on channels 2-10 is enough for MT-32 midi files that have a chance to sound good with Dreamblaster.
Yea, do you happen to have some sample MIDI files for MT-32 with some good pitch bends?
I've only tested with some games so far (Larry 2, Larry 3, Monkey Island 1, Colonel's Bequest), but they don't seem to use pitch bend much, if at all.
Also, panning... I recall that MT-32 had left and right reversed?
Also, panning... I recall that MT-32 had left and right reversed?
Yes, it's true but I don't think it's highly relevant. At least it never disturbed me.
Yea, do you happen to have some sample MIDI files for MT-32 with some good pitch bends?
I have attached Dune 1 arrakis.mid just as a relevant example (it can be played perfectly on GS MT-32 emulation) that uses a subtle pitch bend at 1:51 on channel 7.
Also attached Space Quest as a less relevant example since it uses custom patches but it also uses a whole 1 minute pitch bend 'solo' at 6:57 on channel 5 so it's much easier to test with. In both cases I recommend to set the affected channel to solo it's much easier to hear the difference this way.
Okay, thanks.
I used the following commands to set 12 semitones:
static uint8_t MT32_PB[] = {
CC, 0x65, 0x00, // 101 00 MSB
CC, 0x64, 0x00, // 100 00 LSB
CC, 0x06, 0x0C, // 06 12 MSB
CC, 0x26, 0x00 // 38 00 LSB
};
I adjust the 4 CC commands for every MIDI channel, so I send these commands 16 times in total.
It seems to work... I've also thought of Ski or Die as a test-case, its guitar solos are full of pitch bends 😀
Here is the latest version: https://www.dropbox.com/s/v9tssu8k1samlf4/sof … p_mt32.zip?dl=0
In theory you are absolutely right: with the help of SysEx messages you can associate any midi channels with any parts on MT-32. But in practice I have never met midi files intended to be played on MT-32 that used different channel layout than the default 2-10.
This is because the MT-32 only has standard MIDI channels 2-10. 😀 So as you say, there is no point emulating further.
Panning should be reversed, no idea how to implement that.
Most Sierra MT-32 games use pitch bend setting of 2, GM games use 12.
Obvious problem is that any game which uses custom instruments will sound wrong.
It provides the same functionality vis a vis MT-32 compatibility as many of the Sound Canvas modules and early Dream based wavetable modules such as my old CS9233 Aztech daughterboard.
This is absolutely not correct. Roland GS emulation of the MT-32 tones on Roland devices is quite good in many ways, despite being PCM versus LA based, but by looking at the sheet posted by dreamblaster, you can see a lot of the patches are GM or GS patches masquerading as a MT-32 tone, some don't really match at all. So these are more of a remap with limited compatibility than MT-32 emulation.
To the OP- definitely use Adlib with correct instruments over playing a MT-32 game with GM sounds! That is closer to what the composer intended, although not perfect of course. But there is MUNT emulation, is that usable on an old machine (maybe not)?
wrote:This is because the MT-32 only has standard MIDI channels 2-10. 😀 So as you say, there is no point emulating further.
Yes, by default Parts 1-9 are assigned to channels 2-10. But with the help of SysEx messages
you can configure this association differently. So in theory there could be midi files/games that use different channels. (e.g. 1-8,10).
Panning should be reversed, no idea how to implement that.
Yes it's true, but I don't think it's disturbing. BTW It's easy to implement:
if (status & 0xF0 == 0xB0 && byte2 == 10)
byte3 = 127 - byte3
Most Sierra MT-32 games use pitch bend setting of 2, GM games use 12.
I don't think it's true. It's just the opposite. GM devices by default use 2 semitones and MT-32 after a reset uses 12 semitones.
So MT-32 games that use GM style 2 semitones (e.g. Larry games) explicitly set it by SysEx/RPN messages.
But games that use MT-32 default 12 semitones do not set anything but presume the default (Dune1, Space Quest etc.)
@Scali: I forgot that only the new type MT-32 (v2.0x), and CM/LAPC-variants support setting the Pitch Bend Range with RPN #0. Old type MT-32s (v1.0x) only support the SysEx method. So interpreting SysEx messages that set Pitch bend sensitivity is necessary since games most likely use SysEx methods because of better compatibility.
I don't think it's true. It's just the opposite. GM devices by default use 2 semitones and MT-32 after a reset uses 12 semitones.
However, Sierra games do the reverse 😀 GM games send CC #6 (Data Entry MSB) at a value of 12 (maybe to ensure compatibility with the MT-32?). To quote NewRisingSun:
Sierra sets to 12 on General MIDI using RPN in 4.PAT
Maybe MT-32 games do operate at a pitch bend of 12, and I just never noticed or knew that. Sierra games that is, I knew the MT-32's default bender setting was 12.
Although, to again quote NRS, Larry 5 for example uses a MT-32 bender of 2. And apparently some instruments in other games (from my experience, some instruments like guitars and saxes).
wrote:However, Sierra games do the reverse 😀 GM games send CC #6 (Data Entry MSB) at a value of 12 (maybe to ensure compatibility with the MT-32?). To quote NewRisingSun:
Actually it makes sense if the original version is written for MT-32. So in GM games Sierra sets Pitch Bend Range to 12 since this way they can use the same Pitch Bend messages/sequences as in the MT-32 version (no need to rewrite).
Most Sierra MT-32 games use pitch bend setting of 2
Yes, I have found examples (such as Larry games) where the Pitch Bend Range is explicitly set to 2 by SysEx messages. These are the problematic ones for DreamBlaster/Scali's patch.
The problem is it's rather difficult to write a proper SysEx interpteter that can catch every possible SysEx variations that can influence the 'Bender Range' part of Patch memory area.
But the main question is if there are MT-32 midi files/games that do not use custom instruments (so they can be played on Dreamblaster with Scali's patch) BUT use SysEx messages to set different Pitch Band Range.
Monkey Island, Dune1 do not use SySex messages at all so default 12 semitones work. Sierra games usually also use custom instruments so do not work anyway. Other examples?
Yea, the MT-32 'emulation' of the DreamBlaster S1/S2 is not that great anyway. So question is: how far do you want to take it?
For now, I'd just like to know if it works on the original WaveBlaster versions of the DreamBlaster... so the real S1 and S2 models.
I only have the S2P myself, the LPT version. That's what I originally wrote the patch for, and at least with Monkey Island, it's quite an improvement.
I just modified the patch so it should also work on WaveBlaster (MPU-401) interfaces.
I have found a site that refers to Vogons and lists MT-32 games that do not use custom instruments (although it's still possible that some games rearrange default patches with SysEx messages so not using custom instruments still does not mean 100% instrument level compatibility with Dreamblaster/GS devices):
http://minirevver.weebly.com/mt-32-music.html
Leisure Suit Larry 2, Legend of Kyrandia 1 (except for one instrument), King's Quest IV, Budokan, Ultima VI, Bad Blood, Simon th […]
Leisure Suit Larry 2,
Legend of Kyrandia 1 (except for one instrument),
King's Quest IV,
Budokan, Ultima VI,
Bad Blood,
Simon the Sorcerer,
Loom,
Monkey Island 1,
Dune,
KGB/Conspiracy,
Spellcasting 101: Sorcerers Get All The Girls,
Spellcasting 201: The Sorcerer's Appliance,
Timequest,
Gateway,
Spellcasting 301: Spring Break,
Eric the Unready,
Gateway 2 - Homeworld,
Companions of Xanth,
Death Gate,
Superhero League of Hoboken
wrote:Updated SoftMPU for DreamBlaster S2(P) here: https://www.dropbox.com/s/v9tssu8k1samlf4/sof … p_mt32.zip?dl=0
Hey, SoftMPU works perfectly for my S2P but i'd rather like to use my S2 and later X2 on my real MPU401 soundcard instead of the LPT thingy. But I found out that the /MT32 switch does not work without the /OUTPUT option. So using my Aztech SGP16 with the SBMIDI option works though but its not what I intend to use. Could you please implement the /MT32 switch into the "normal" SoftMPU operation with a "real" mpu401 compatible soundcard?
Thanks in advance.
Really no help? 🙁