MIDI rips of Konami's 1993 Sharp X68000 game, "Akumajō Dracula" for Roland MT-32/CM-32L/CM-64

Chat about anything related to the QuestStudios Archive, Classic PC Games, MIDI, Etc.

Moderator: Quest Studios Archive moderators

jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 164
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: MIDI rips of Konami's 1993 Sharp X68000 game, "Akumajō Dracula" for Roland MT-32/CM-32L/CM-64

Post by jaffa225man »

Sbeehive wrote: Sat Mar 09, 2019 11:40 am
jaffa225man wrote: Tue Mar 05, 2019 4:38 pm

Actually, I think your speed issues are with falcosoft's MIDI player. I had issues like you've described, while testing it, until I enabled the option to wait a bit between each song's playback (at least I think that was my solution). It's annoying Microsoft dropped support for selecting MIDI devices in current versions of windows. Maybe there's a better player for windows available. I don't know, though, as I'm on GNU/Linux and mostly using an older version of audacious (3.4.3, which I manually compiled, along with its AMIDI-Plug plugin) to play anything and everything. My experience with MIDI hardware (mostly roland, though) is that they generate very low latency, so I doubt your thru box is the issue.

Yeah Falcosoft tends to run GM/GS stuff flawlessly but MT-32 tends to be a pain.... I think I might try running things through an older player in DosBox and seeing how that goes!
That's a great idea! I've never had a problem with gsplay, and I just checked and it even plays raw SysEx (.syx) files, and (if you make sure any programming initial SysEx files are named to play first) it even supports playing files within recursive directories, like so:

Code: Select all

gsplay rec c:\wherever\all\midi\and\sysex\files\reside\*.*
("rec" is used to make it find files recursively. - Running gsplay without any arguments reveals its options.)
It will skip files with extensions it doesn't understand, but that just makes it better for this purpose. That way, you can just put the SysEx for each game into the directory with all the game's music, as 00sysex.mid or 00sysex.syx, keeping each game in its own directory with its own SysEx (in a more top-level directory named for "MIDI", "music", or whatever you'd like). And pause/resume, I just discovered, is the space bar!

I was just thinking about it, and although "mt32" is an option for gsplay to support mt32-reset messages before playback, that may mean between each song (which, if so, would reset the SysEx programming). So, instead, it might be a good idea to have a MT-32 reset MIDI file renamed to zzreset.mid in each directory too. I created that file for my audacious player long ago, so you may as well just download it here if you need it. I'm also including the CM-32L/CM-64 overflow assign on/off (again, although it still is reliant on a velocity>0 note off solution) files, and a MT-32/CM-32L/CM-64 master volume lowering (to 48) file (so certain older games don't cause digital volume clipping on newer modules) because they're all of the same ilk. Just copy the ones necessary to each game's directory and rename them so they play in the right order.

Edit 04/08/2019:
I was just playing some GM files through my overflow-assigned CM-64 to MT-32. I initialized them by playing these in this order: cm-32l-cm-64_overflow-assign.mid, mt-32-cm-32l-cm-64_reset.mid, MTGM.mid (found in the mt2gm.exe here for those unaware: http://www.midimusicadventures.com/ques ... utilities/), and finally mt-32-cm-32l-cm-64_master-volume-48.mid. I found it pretty annoying, as usual, that some GM files increase the volume too much and digitally-overflow/clip the CM-64, but I didn't want to use the mt-32-cm-32l-cm-64_reset.mid file because that would obviously unmap all the MTGM.mid equivalences, resetting any special SysEx instruments programmed, along with the other files I'd played. I wanted something that would handle any changes GM files make, without the seemingly-necessary, full MT-32 reset, so I created a new file that can be played to make various less major resets: mt-32-cm-32l-cm-64_reset-various.mid.

First, it resets the volume on all MIDI channels (1-16) to 100/0x64 (but not the "MASTER VOLUME"). Then each channel's pan is set to the center (64/0x40). Then each channel has a "Reset All Controllers" (CC# 121/79h) sent to it, which resets modulation (min: 0/0x00), expression (max: 127/0x7F), "Hold 1" (Off: 0/0x00), and "Pitch Bender" (Center: +-0/0x20,0x00). Lastly, it uses the "All Notes Off" controller (CC# 123/0x7B) to quiet any stuck notes.

In my limited testing, it seems to work perfectly. It probably will come in handy between separated soundtrack songs if they end with stuck notes, etc. too because it doesn't deprogram startup SysEx instruments. If any game sets the mentioned parameters only once while starting, it obviously won't be suitable. Of course, the offending MIDI messages could be removed without too much difficulty.

Here they are:
MT-32-CM-32L-CM-64-SysEx.7z
(536 Bytes) Downloaded 1013 times
Last edited by jaffa225man on Mon Apr 08, 2019 3:32 am, edited 1 time in total.
Sbeehive
Posts: 7
Joined: Sun Feb 24, 2019 9:29 am

Re: MIDI rips of Konami's 1993 Sharp X68000 game, "Akumajō Dracula" for Roland MT-32/CM-32L/CM-64

Post by Sbeehive »

Wow! Thanks for setting up those files!!!

I haven't had a chance to try yet - very busy week at work. I can't wait to try this out over the weekend!
jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 164
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: MIDI rips of Konami's 1993 Sharp X68000 game, "Akumajō Dracula" for Roland MT-32/CM-32L/CM-64

Post by jaffa225man »

Sbeehive wrote: Fri Mar 15, 2019 4:59 pm Wow! Thanks for setting up those files!!!

I haven't had a chance to try yet - very busy week at work. I can't wait to try this out over the weekend!
You're welcome! The files have been helpful to me, and I hope they are for you too. It's a bit clunky to work in DOS, but at least it should allow you to avoid the speed issues.
Televicious
Posts: 1
Joined: Tue Oct 08, 2019 7:27 am

Re: MIDI rips of Konami's 1993 Sharp X68000 game, "Akumajō Dracula" for Roland MT-32/CM-32L/CM-64

Post by Televicious »

I've found that playing back certain songs from this pack will freeze up my MT-100. Not sure why. I have to reset it before it will play again. Creatures in the depth and thrashard in the cave are the biggest culprits. The notes appear to get backed up and trigger all at once sporadically and then it will just completely freeze up eventually playing some chord or retriggering a note every few seconds.
jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 164
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: MIDI rips of Konami's 1993 Sharp X68000 game, "Akumajō Dracula" for Roland MT-32/CM-32L/CM-64

Post by jaffa225man »

I don't think that has happened with my any of my modules. These include the MT-32 (old) with the displayed ROM version of 1.07, CM-64, and most recently obtained CM-32L. The CM-64 and CM-32L both report "V 1.02 89/Dec/05" when sent the SysEx "F0 41 10 16 11 7E 00 00 00 00 20 62 F7". Although the old MT-32 doesn't sound great with those two tracks, it doesn't freeze completely. That grungy guitar clicks, stutters and is too loud on it, probably because it wasn't the intended module. Does it matter which program is used to play the errant files? If you downloaded from one of my earlier posts, try this one instead, as it's possible there was something amiss elsewhere, although I haven't tested the older posts yet: viewtopic.php?f=4&t=28#p126. Aside from those possibilities, it could be a bug in the MT-32 (new) (& hence MT-100), but I think that's less likely, and hope that's not the case.

Good luck, and I hope that helps.
jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 164
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: MIDI rips of Konami's 1993 Sharp X68000 game, "Akumajō Dracula" for Roland MT-32/CM-32L/CM-64

Post by jaffa225man »

Televicious wrote: Tue Oct 08, 2019 7:43 am I've found that playing back certain songs from this pack will freeze up my MT-100. Not sure why. I have to reset it before it will play again. Creatures in the depth and thrashard in the cave are the biggest culprits. The notes appear to get backed up and trigger all at once sporadically and then it will just completely freeze up eventually playing some chord or retriggering a note every few seconds.
Thanks for mentioning this because I've just verified that an MT-32 (new, having the headphones port) freezes with those files as well! I decided to go ahead and try this also because I wanted to play the demo songs only available on the MT-32 (new) and MT-100. With buttons 4, RHTHM, and MASTER VOLUME held while powering it on, I get this for the version: "MT-32 v2.04 88-11-11". I also see an error message that's new to me, but just with Creatures In The Depth: "MIDI Buffer overflow". That leads me to believe that Roland's changes between the MT-32 (old) and MT-32 (new) was a partly buggy (or too small) implementation of the CM-32L's buffer that prevents the MT-32 (old)'s "Exc. Buffer overflow". It's also notable that these two troublesome songs don't contain embedded SysEx, so the "MIDI buffer" new in these units doesn't only buffer SysEx, and the data in these songs that freezes the MT-100/MT-32 (new) is just standard MIDI messages sent too fast or numerously. That's extremely fascinating to me! On the MT-32 (old), although I can overcome "Exc. Buffer overflow" by delaying just the SysEx messages, it does sometimes mess with the programming of sounds. Since Roland buffers everything with this new buffer, they overcome that side effect, but we also experience no audible delays so they must be doing some message reordering or hidden tricks there. If we knew exactly which standard MIDI messages don't cause adverse programming when inserting SysEx between them, my custom delays device (and, for that matter, softmpu's delays) could be perfected. That would be fun to investigate, but it sounds like a lot of work. It really does seem like the MT-32 (new) and newer have a normal input buffer with message reordering, and that would definitely be possible to implement externally for the MT-32 (old).

On an unrelated note, since I haven't noticed it mentioned before, the takego.mid clicking test makes both my old and new MT-32s click, seemingly no matter the master volume, or volume set on Syn Bass 4 (part 8). I got lucky that both my CM-32L and CM-64 aren't older versions and have this bug fixed.

Thanks again,

Lucas
jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 164
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: MIDI rips of Konami's 1993 Sharp X68000 game, "Akumajō Dracula" for Roland MT-32/CM-32L/CM-64

Post by jaffa225man »

Televicious wrote: Tue Oct 08, 2019 7:43 am I've found that playing back certain songs from this pack will freeze up my MT-100. Not sure why. I have to reset it before it will play again. Creatures in the depth and thrashard in the cave are the biggest culprits. The notes appear to get backed up and trigger all at once sporadically and then it will just completely freeze up eventually playing some chord or retriggering a note every few seconds.
Sorry to have only discovered it now, but I have a solution! First, I was just plain wrong that those files don't contain SysEx. In fact, all the songs begin with a few. Creatures-In The-Depth, and Thrashard-In-The-Cave contain the exact same SysEx:

Code: Select all

F0 41 00 16 40 06 00 00 00 40 00 3A F7
F0 41 10 16 42 05 00 00 00 00 18 32 0C 00 01 00 00 01 18 32 0C 00 01 00 00 02 18 32 0C 00 01 00 00 03 18 32 0C 00 01 00 00 04 18 32 0C 00 01 00 00 05 18 32 0C 00 01 00 00 06 18 32 0C 00 01 00 00 07 18 32 0C 00 01 00 00 08 18 32 0C 00 01 00 00 09 18 32 0C 00 01 00 00 0A 18 32 0C 00 01 00 00 0B 18 32 0C 00 01 00 00 0C 18 32 0C 00 01 00 00 0D 18 32 0C 00 01 00 00 0E 18 32 0C 00 01 00 00 0F 18 32 0C 00 01 00 00 10 18 32 0C 00 01 00 00 11 18 32 0C 00 01 00 00 12 18 32 0C 00 01 00 00 13 18 32 0C 00 01 00 00 14 18 32 0C 00 01 00 00 15 18 32 0C 00 01 00 00 16 18 32 0C 00 01 00 00 17 18 32 0C 00 01 00 00 18 18 32 0C 00 01 00 00 19 18 32 0C 00 01 00 00 1A 18 32 0C 00 01 00 00 1B 18 32 0C 00 01 00 00 1C 18 32 0C 00 01 00 00 1D 18 32 0C 00 01 00 00 1E 18 32 0C 00 01 00 00 1F 18 32 0C 00 01 00 2B F7
F0 41 10 16 42 05 02 00 00 20 18 32 0C 00 01 00 00 21 18 32 0C 00 01 00 00 22 18 32 0C 00 01 00 00 23 18 32 0C 00 01 00 00 24 18 32 0C 00 01 00 00 25 18 32 0C 00 01 00 00 26 18 32 0C 00 01 00 00 27 18 32 0C 00 01 00 00 28 18 32 0C 00 01 00 00 29 18 32 0C 00 01 00 00 2A 18 32 0C 00 01 00 00 2B 18 32 0C 00 01 00 00 2C 18 32 0C 00 01 00 00 2D 18 32 0C 00 01 00 00 2E 18 32 0C 00 01 00 00 2F 18 32 0C 00 01 00 00 30 18 32 0C 00 01 00 00 31 18 32 0C 00 01 00 00 32 18 32 0C 00 01 00 00 33 18 32 0C 00 01 00 00 34 18 32 0C 00 01 00 00 35 18 32 0C 00 01 00 00 36 18 32 0C 00 01 00 00 37 18 32 0C 00 01 00 00 38 18 32 0C 00 01 00 00 39 18 32 0C 00 01 00 00 3A 18 32 0C 00 01 00 00 3B 18 32 0C 00 01 00 00 3C 18 32 0C 00 01 00 00 3D 18 32 0C 00 01 00 00 3E 18 32 0C 00 01 00 00 3F 18 32 0C 00 01 00 29 F7
F0 41 10 16 42 05 04 00 01 00 18 32 0C 00 01 00 01 01 18 32 0C 00 01 00 01 02 18 32 0C 00 01 00 01 03 18 32 0C 00 01 00 01 04 18 32 0C 00 01 00 01 05 18 32 0C 00 01 00 01 06 18 32 0C 00 01 00 01 07 18 32 0C 00 01 00 01 08 18 32 0C 00 01 00 01 09 18 32 0C 00 01 00 01 0A 18 32 0C 00 01 00 01 0B 18 32 0C 00 01 00 01 0C 18 32 0C 00 01 00 01 0D 18 32 0C 00 01 00 01 0E 18 32 0C 00 01 00 01 0F 18 32 0C 00 01 00 01 10 18 32 0C 00 01 00 01 11 18 32 0C 00 01 00 01 12 18 32 0C 00 01 00 01 13 18 32 0C 00 01 00 01 14 18 32 0C 00 01 00 01 15 18 32 0C 00 01 00 01 16 18 32 0C 00 01 00 01 17 18 32 0C 00 01 00 01 18 18 32 0C 00 01 00 01 19 18 32 0C 00 01 00 01 1A 18 32 0C 00 01 00 01 1B 18 32 0C 00 01 00 01 1C 18 32 0C 00 01 00 01 1D 18 32 0C 00 01 00 01 1E 18 32 0C 00 01 00 01 1F 18 32 0C 00 01 00 07 F7
F0 41 10 16 42 05 06 00 01 20 18 32 0C 00 01 00 01 21 18 32 0C 00 01 00 01 22 18 32 0C 00 01 00 01 23 18 32 0C 00 01 00 01 24 18 32 0C 00 01 00 01 25 18 32 0C 00 01 00 01 26 18 32 0C 00 01 00 01 27 18 32 0C 00 01 00 01 28 18 32 0C 00 01 00 01 29 18 32 0C 00 01 00 01 2A 18 32 0C 00 01 00 01 2B 18 32 0C 00 01 00 02 18 18 32 0C 00 01 00 01 2D 18 32 0C 00 01 00 01 2E 18 32 0C 00 01 00 01 2F 18 32 0C 00 01 00 01 30 18 32 0C 00 01 00 01 31 18 32 0C 00 01 00 01 32 18 32 0C 00 01 00 01 33 18 32 0C 00 01 00 01 34 18 32 0C 00 01 00 01 35 18 32 0C 00 01 00 01 36 18 32 0C 00 01 00 01 37 18 32 0C 00 01 00 01 38 18 32 0C 00 01 00 01 39 18 32 0C 00 01 00 02 00 18 32 0C 00 00 00 02 04 18 32 0C 00 00 00 02 03 18 32 0C 00 00 00 02 02 18 32 0C 00 01 00 01 3E 18 32 0C 00 01 00 02 01 0C 32 0C 00 00 00 46 F7
F0 41 10 16 45 F7
One at a time, I removed each message and tested for the freezing. The message causing it, turned out to be one that maps the previously loaded Initial SysEx patch "OVER DRIVE" for use:

Code: Select all

F0 41 10 16 42 05 06 00 01 20 18 32 0C 00 01 00 01 21 18 32 0C 00 01 00 01 22 18 32 0C 00 01 00 01 23 18 32 0C 00 01 00 01 24 18 32 0C 00 01 00 01 25 18 32 0C 00 01 00 01 26 18 32 0C 00 01 00 01 27 18 32 0C 00 01 00 01 28 18 32 0C 00 01 00 01 29 18 32 0C 00 01 00 01 2A 
                                          vv vv
18 32 0C 00 01 00 01 2B 18 32 0C 00 01 00 02 18 18 32 0C 00 01 00 01 2D 18 32 0C 00 01 00 01 2E 18 32 0C 00 01 00 01 2F 18 32 0C 00 01 00 01 30 18 32 0C 00 01 00 01 31 18 32 0C 00 01 00 01 32 18 32 0C 00 01 00 01 33 18 32 0C 00 01 00 01 34 18 32 0C 00 01 00 01 35 18 32 0C 00 01 00 01 36 18 32 0C 00 01 00 01 37 18 32 0C 00 01 00 01 38 18 32 0C 00 01 00 01 39 18 32 0C 00 01 00 02 00 18 32 0C 00 00 00 02 04 18 32 0C 00 00 00 02 03 18 32 0C 00 00 00 02 02 18 32 0C 00 01 00 01 3E 18 32 0C 00 01 00 02 01 0C 32 0C 00 00 00 46 F7
The 0x02 and 0x18, pointed out there, were the only bytes different from a message in Something-Loopy, so I deciphered them. The 0x02 means the patch is in timbre group 2, "i", which for some reason is Roland's notation for programmable "Timbre Memory". The "Timbre #" there is the 0x18. Since each Timbre Memory block is 0x02 0x00 bytes, I multiplied it by 2 and got 0x30. Then, I looked at the initial SysEx and found one right away that began with "F0 41 10 16 42 08 30 00". The SysEx programming "OVER DRIVE":

Code: Select all

F0 41 10 16 42 08 30 00 4F 56 45 52 20 44 52 49 56 45 0C 0B 0F 00 24 33 0F 01 00 2B 00 07 0A 00 00 0C 0A 0B 00 32 04 57 32 32 40 00 00 00 00 03 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 5F 37 62 0C 16 0C 00 04 00 08 00 5A 32 64 11 64 32 30 33 0B 01 00 2B 00 07 00 00 00 00 00 00 00 32 32 32 32 32 2B 00 00 00 00 0B 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 5F 3C 62 0C 16 0C 04 04 00 00 00 5A 32 64 64 64 32 30 3C 0B 01 01 2B 4F 07 0A 03 00 00 00 00 00 5A 32 32 32 32 46 21 00 64 14 0B 00 07 64 00 00 00 00 00 00 64 00 64 64 64 31 5F 32 5B 0C 1B 0C 00 00 00 00 00 50 25 64 64 64 46 37 32 0B 01 00 2B 4F 07 00 00 00 00 00 00 00 32 32 32 32 32 41 01 18 5B 00 0A 30 09 48 00 00 00 06 11 18 21 49 1B 12 0C 07 4B 46 5B 0C 1B 0C 00 02 00 00 00 5A 2E 64 64 64 32 00 00 00 00 00 00 00 00 00 00 3A F7
I tried various modifications to that, and settled on one that works without adversely affecting the sound as much as the rest I attempted. I muted partial 1 (none are muted above, normally). So changing that to this works:

Code: Select all

F0 41 10 16 42 08 30 00 4F 56 45 52 20 44 52 49 56 45 0C 0B 07 00 24 33 0F 01 00 2B 00 07 0A 00 00 0C 0A 0B 00 32 04 57 32 32 40 00 00 00 00 03 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 5F 37 62 0C 16 0C 00 04 00 08 00 5A 32 64 11 64 32 30 33 0B 01 00 2B 00 07 00 00 00 00 00 00 00 32 32 32 32 32 2B 00 00 00 00 0B 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 5F 3C 62 0C 16 0C 04 04 00 00 00 5A 32 64 64 64 32 30 3C 0B 01 01 2B 4F 07 0A 03 00 00 00 00 00 5A 32 32 32 32 46 21 00 64 14 0B 00 07 64 00 00 00 00 00 00 64 00 64 64 64 31 5F 32 5B 0C 1B 0C 00 00 00 00 00 50 25 64 64 64 46 37 32 0B 01 00 2B 4F 07 00 00 00 00 00 00 00 32 32 32 32 32 41 01 18 5B 00 0A 30 09 48 00 00 00 06 11 18 21 49 1B 12 0C 07 4B 46 5B 0C 1B 0C 00 02 00 00 00 5A 2E 64 64 64 32 00 00 00 00 00 00 00 00 00 00 42 F7
Anyway, here's the qmidiroute-edited Initial SysEx MIDI file to be used for the MT-32 (new) and MT-100:
MT-32-(new)_MT-100_Initial-SysEx.7z
(3.26 KiB) Downloaded 381 times
This is still such a strange issue that I wonder if there will ever be a better known cause for it, but for now I hope that's enough. Again, I'm sorry the solution came so late.
Post Reply