Great Hierophant
Senior Member
Offline
Posts: 988
|
 |
« on: November 19, 2005, 04:54:38 PM » |
|
I have a request. I know you can embed sysex commands into a midi file. You can also create a midi file entirely of sysex commands. I need a midi file that can completely disable the CM-32P parts (11-16) of a CM-32L + CM_32P, CM-64 or CM-500 Mode B setup without affecting the MT-32 parts (2-9, 10). I know it can be done with sysex, but I would prefer something more convenient and I don't know how to do it. This is necessary for those early Sierra SCI games that improperly use the extra parts.
|
|
|
|
|
Logged
|
|
|
|
|
Cloudschatze
Guest
|
 |
« Reply #1 on: November 19, 2005, 05:50:14 PM » |
|
...This is necessary for those early Sierra SCI games that improperly use the extra parts. Using a later SCI0 MT32.DRV will produce the same result as a SysEx file disabling parts 11-16.
|
|
|
|
|
Logged
|
|
|
|
Great Hierophant
Senior Member
Offline
Posts: 988
|
 |
« Reply #2 on: November 20, 2005, 04:16:07 PM » |
|
Could you identify specific MT32.DRVs that worked to solve the problem? I keep getting into trouble with KQ4 and LSL2.
|
|
|
|
|
Logged
|
|
|
|
|
Alistair
|
 |
« Reply #3 on: November 20, 2005, 09:03:13 PM » |
|
They're not later SCI0 MT-32.DRV's, they'r ethe earliest ones!
I think Eric means, like QFG2 and such.
- Alistair
|
|
|
|
|
Logged
|
|
|
|
Great Hierophant
Senior Member
Offline
Posts: 988
|
 |
« Reply #4 on: November 20, 2005, 09:18:06 PM » |
|
I meant that the solution does work, except for KQ4 and LSL2. I hesitiate to use the MT32.DRV from QG2 because QG2 really uses the SCI1 engine and only looks like an SCI0 game.
|
|
|
|
|
Logged
|
|
|
|
|
Alistair
|
 |
« Reply #5 on: November 20, 2005, 09:32:55 PM » |
|
Well then, QFG1 or LSL3. Yeesh.  - Alistair
|
|
|
|
|
Logged
|
|
|
|
|
Cloudschatze
Guest
|
 |
« Reply #6 on: November 21, 2005, 06:06:11 PM » |
|
Great Hierophant, were you able to get everything working?
I picked on KQ1SCI's driver for substitution into KQ4, PQ2, and LSL2.
The driver from QFG2 should not work, as you state.
|
|
|
|
|
Logged
|
|
|
|
|
Kaminari
|
 |
« Reply #7 on: November 22, 2005, 06:38:46 AM » |
|
I have a CM-500 set to Mode B and I'm looking too for a solution to disable the "AdLib" parts. So far, no other MT32.DRV has done the trick. I've tried the ones from KQ1SCI, LSL3 and QFG1 with no luck. Some parts are indeed muted, but the active ones don't sound right at all.
[Edit] I've found something very interesting.
If you launch a later SCI game like QFG1 or QFG2, then quit the game and reset the CM-64/500 with the reset SysEx available in the QS Resource Center (Utilities), parts 1 and 11-16 will remain muted unless you power the synth off -- KQ4, PQ2 and LSL2 will play perfectly until then (with their original driver).
I've been using DOSBox in my tests, but maybe it works in pure DOS too.
|
|
|
|
|
Logged
|
|
|
|
|
Cloudschatze
Guest
|
 |
« Reply #8 on: November 22, 2005, 11:59:58 AM » |
|
Not to speculate, but could DOSBox be fouling something up? From everything I've tried, you should be able to take and use the driver from any game that does play correctly. When editing such a driver, you will see "CM-64" etc. in the top line.
I've never had an issue doing as I've suggested, but in case it's environment-specific, I'm using a DOS-based 486 and hardware MPU interfaces (MPU-IPC-T, LAPC-I).
|
|
|
|
|
Logged
|
|
|
|
NewRisingSUn
Senior Member
Offline
Posts: 634
|
 |
« Reply #9 on: November 22, 2005, 03:44:38 PM » |
|
I always use the CM-500 in Mode A (both GS+LA), sending this sysex for General MIDI data and this sysex for MT-32 data. Works nice for KQ4 1.000.111 and everything else except for those few silly games from Origin Systems that use the MT-32 driver (which sends an MT-32 Reset Sysex) to play General MIDI music. For them, I just remove that Reset Sysex from the driver file itself. From everything I've tried, you should be able to take and use the driver from any game that does play correctly. No, KQ4 1.000.111 also embeds the patch bank within the mt32.drv itself rather than a patch.001 resource.
|
|
|
|
« Last Edit: February 11, 2008, 09:55:27 PM by NewRisingSUn »
|
Logged
|
|
|
|
|
Cloudschatze
Guest
|
 |
« Reply #10 on: November 23, 2005, 05:20:18 AM » |
|
From everything I've tried, you should be able to take and use the driver from any game that does play correctly. No, KQ4 1.000.111 also embeds the patch bank within the mt32.drv itself rather than a patch.001 resource. Ah. 1.006.004 seems to work though.
|
|
|
|
|
Logged
|
|
|
|
Great Hierophant
Senior Member
Offline
Posts: 988
|
 |
« Reply #11 on: November 23, 2005, 11:18:26 PM » |
|
Ah. 1.006.004 seems to work though. Indeed it does for Kq4. The problem I had is that I had 1.000.111 (copy-protected crack.) Fortunately, I found the later version on my King's Quest Collection CD. Unfortunately, it is not cracked and has stripped down graphics/sound options (no CGA/Tandy at all.) No, KQ4 1.000.111 also embeds the patch bank within the mt32.drv itself rather than a patch.001 resource. Do early versions of LSL2 do this?
|
|
|
|
|
Logged
|
|
|
|
Great Hierophant
Senior Member
Offline
Posts: 988
|
 |
« Reply #12 on: November 26, 2005, 02:02:11 AM » |
|
The sysex commands to turn off all CM-32P parts, if I read Roland's midi interpretation correctly, are:
F0 41 10 16 12 52 00 0A 10 14 F7 F0 41 10 16 12 52 00 0B 10 13 F7 F0 41 10 16 12 52 00 0C 10 12 F7 F0 41 10 16 12 52 00 0D 10 11 F7 F0 41 10 16 12 52 00 0E 10 10 F7 F0 41 10 16 12 52 00 0F 10 0F F7
Now, how can I turn those commands into a regular single midi file?
|
|
|
|
|
Logged
|
|
|
|
|
Cloudschatze
Guest
|
 |
« Reply #13 on: November 26, 2005, 03:32:26 AM » |
|
Now, how can I turn those commands into a regular single midi file? I created a SysEx file using Cakewalk: cm32p_off.syxAnd then saved it into a Format 0 MIDI file: cm32p_off.mid
|
|
|
|
|
Logged
|
|
|
|
Great Hierophant
Senior Member
Offline
Posts: 988
|
 |
« Reply #14 on: November 26, 2005, 01:57:09 PM » |
|
That seems to work, just don't use Windows Media Player. By the way, Roland's manual implies I can achieve the same result with this single command:
F0 41 10 16 12 52 00 0A 10 10 10 10 10 10 10 C4 F7
It didn't work very well when I tried to send it through my sysex program. Why not?
|
|
|
|
|
Logged
|
|
|
|
NewRisingSUn
Senior Member
Offline
Posts: 634
|
 |
« Reply #15 on: November 26, 2005, 02:41:56 PM » |
|
The checksum should be 34, not C4.
|
|
|
|
|
Logged
|
|
|
|
Tom
Administrator
Senior Member
Offline
Posts: 5,618
|
 |
« Reply #16 on: November 26, 2005, 04:13:11 PM » |
|
Question...
I need a refresher -- it's been so long since I've done this:
F0 41 10 16 12 52 00 0A 10 10 10 10 10 10 10 CHKSM F7
I've always used Hex Workshop to calculate checksums, and the resulting SysEx files I've created seem to work fine -- but it's been years. When you calculate the checksum for the above string, I've forgotten what numbers to include in the calculation? Hex Workshop does the calculation, but I can't find any combination of numbers that produces a checksum of 34, as you've stated it should be.
|
|
|
|
|
Logged
|
|
|
|
NewRisingSUn
Senior Member
Offline
Posts: 634
|
 |
« Reply #17 on: November 26, 2005, 04:21:28 PM » |
|
> 52 00 0A 10 10 10 10 10 10 10
Generally: checksum = neg (sum (address/data bytes)) and 7F
52+00+0A+70 (10x7) = CC neg CC = 34 and 7F = 34 => checksum = 34
|
|
|
|
|
Logged
|
|
|
|
Tom
Administrator
Senior Member
Offline
Posts: 5,618
|
 |
« Reply #18 on: November 26, 2005, 04:53:05 PM » |
|
I think I've figured it out; Roland gives a little tutorial and several examples in the back of my 8820 manual that explains it as:
The SUM of the ADDRESS and SIZE, divided by 128. The remainder subtracted from 128 gives you the checksum.
I've tried a few 8820 SysEx strings that came with my module and they're calculating correctly. And now I also come up with a checksum of 34 for the above string. I have to convert everything to decimals -- HEX makes me dizzy.
|
|
|
|
|
Logged
|
|
|
|
Laust
Senior Member
Offline
Posts: 722
|
 |
« Reply #19 on: November 26, 2005, 06:55:26 PM » |
|
Calculating SysEx checksums by hand is truly "oldschool", but if you want to cheat, there's a nice little tool here that can do it for you 
|
|
|
|
|
Logged
|
|
|
|
|