It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
Windows 10 doesn't let you set a default MIDI device. I'd like to play System Shock Enhanced Edition with a real MIDI synth, but the game seems to default to either the built-in Windows software synthesizer or VirtualMIDISynth.

Is there some way to tell System Shock Enhanced Edition which device to use? DOSBox lets you do this.
Bump!
Update: I made some inquiries and inspired someone to make a helpful tool.

Coolsoft MIDIMapper is from the author of VirtualMIDISynth and on Windows 8+ is a MIDI routing device that takes over as default and lets you choose which other MIDI device to route MIDI data to.

I've been using this to play System Shock: EE with my Roland SC-88 synth (sounds perfect in SC-55 mode) and just completed the game.

I also figured out on my own how to hex edit the game to hard-code it to a specific MIDI device number if anyone would rather do that.
avatar
HunterZ: I also figured out on my own how to hex edit the game to hard-code it to a specific MIDI device number if anyone would rather do that.
Could you post instructions for how to do this?
I've installed the CoolSoft MIDI Mapper, but it doesn't seem to work with SSEE on Windows 10.
Other applications play to my SC-55 when using the default device but not SSEE for some reason.
Well this was a good learning experience at least.
I barely know what I'm doing, but I was able to use IDA 5.0 Freeware to find out where the MIDI Device was being set.
I still couldn't figure out how to actually edit sshock.exe with IDA (I'm sure it must be possible, but perhaps not in the freeware version?) so I ended up editing the file with HxD Hex Editor.

1. Open up DOSBox and run "mixer /listmidi" to get a list of your MIDI devices.
2. Open up sshock.exe in HxD and search for "6A 00 6A 00 6A 00 6A 00" The offset for this should be 000019C0
3. Set the last two digits to match the ID of your MIDI device. In my case it was #5 so it now reads "6A 00 6A 00 6A 00 6A 05"

(P.S. I would have included links to IDA and HxD, but I don't think I have enough posts on the forum yet to include links)
Post edited July 10, 2016 by 6834287868
I think I used OllyDbg to trace where the game was making the call to the Windows DLL function to open the MIDI device, and then HxD to edit where I thought the device ID parameter was being passed to the function.

Details are here: http://www.vogons.org/viewtopic.php?p=504927#p504927
avatar
6834287868: 2. Open up sshock.exe in HxD and search for "6A 00 6A 00 6A 00 6A 00" The offset for this should be 000019C0
3. Set the last two digits to match the ID of your MIDI device. In my case it was #5 so it now reads "6A 00 6A 00 6A 00 6A 05"
Thank you so much for this! This is exactly what I was looking for.

However in my case I could not find the sequence which you indicated at offset 19C0, instead it was at 1591.

I found that changing MIDI device only changes in-game music and in-menu music. All other sounds are generated not via MIDI. So it does make a little difference, but not much.

Apparently the name of sshock.exe file does not matter. So I renamed a copy of the original file sshock-midi00.exe and the modified version sshock-midi01.exe and I can run either file without renaming it back to sshock.exe and the game still works properly. (Of course, the default shortcuts won't work and something else may break down the road, but then I'll just use the default name sshock.exe).
Post edited April 25, 2020 by fdr182
For Win 7 I use Putzlowitschs Vista-MIDIMapper to choose MIDI device.
Don't know if it works with or has been updated for Win 10, though.
avatar
HunterZ: I also figured out on my own how to hex edit the game to hard-code it to a specific MIDI device number if anyone would rather do that.
avatar
6834287868: Could you post instructions for how to do this?
I've installed the CoolSoft MIDI Mapper, but it doesn't seem to work with SSEE on Windows 10.
Other applications play to my SC-55 when using the default device but not SSEE for some reason.
Dropping by in 2021 to let you all know that, on windows 10 20H2 and the most recent iteration of such, that CoolSoft MIDI mapper worked perfectly.
Playing EE with the new sourceport, changing midi in the menu did nothing besides change the value in the cfg file. Telling the mapper to force it towards my loopmidi port worked immediately. Its the same problem you have all identified, where the game only uses midi device 0
avatar
6834287868: Well this was a good learning experience at least.
I barely know what I'm doing, but I was able to use IDA 5.0 Freeware to find out where the MIDI Device was being set.
I still couldn't figure out how to actually edit sshock.exe with IDA (I'm sure it must be possible, but perhaps not in the freeware version?) so I ended up editing the file with HxD Hex Editor.

1. Open up DOSBox and run "mixer /listmidi" to get a list of your MIDI devices.
2. Open up sshock.exe in HxD and search for "6A 00 6A 00 6A 00 6A 00" The offset for this should be 000019C0
3. Set the last two digits to match the ID of your MIDI device. In my case it was #5 so it now reads "6A 00 6A 00 6A 00 6A 05"

(P.S. I would have included links to IDA and HxD, but I don't think I have enough posts on the forum yet to include links)
Any way to change midi device in exe file after latest update? If file name is changed to sekhmet_x64.exe
So pardon the walrus tusks, but I've gotta ask what's probably a stupid question: Is there an option for music that isn't MIDI? It feels weird for a game made in 1994 to just rely on what even then was thought of as a somewhat unreliable format due to all the variance.