VOGONS

Common searches


Reply 40 of 85, by Sammy666

User metadata
Rank Newbie
Rank
Newbie

KarjamP, now I know what you mean and could reproduce it!

I downloaded NoteWorthy Player (old MIDI player with notation, comes with some songs, 32-bit version) from:
http://www.noteworthysoftware.com/player/

NoteWorthy Player always used the first Win8 MIDI device (device 0) as MIDI output for playback.
It was not possible to change that with any MIDI-Mapper tool.

In Win-7 32-bit with NoteWorthy Player and Puslowitsch Vista MIDI-Mapper = working, possible to change the MIDI out.
Side note, not with "MIDI Out Setter".

So, the MIDI-Mapper tools from my list can work in some cases, but NOT in all!
... Damn! .... I have to add that in my post.

Windows 8 seems to need a kind of virtual MIDI driver as Windows MIDI out device 0, which routes the MIDI data to another MIDI out device.

I know, similar tools/driver exists for "MIDI over network" and as Loopback driver to send MIDI data from "one MIDI application to another".
But it seems, there is no tool yet for Win8, that can be used as a Windows MIDI-Mapper replacement.

Reply 42 of 85, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

Sorry for the necro, but this is absolutely killing me in Windows 10. I can't use my real synthesizers with System Shock Enhanced Edition because it doesn't let me pick the desired MIDI output device, and Windows 10 no longer lets me configure a default mapping.

CoolSoft VirtualMIDISynth manages to install itself as MIDI output device ID 0, which supplants the Microsoft GS software synthesizer, but that still doesn't help me really.

Reply 43 of 85, by collector

User metadata
Rank l33t
Rank
l33t

Not currently booted to 10, but doesn't Putzlowitsch's work in 10? http://sierrahelp.com/Utilities/SoundUtilitie … IDI_Mapper.html

The Sierra Help Pages -- New Sierra Game Installers -- Sierra Game Patches -- New Non-Sierra Game Installers

Reply 44 of 85, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

I'll give it a shot, but so far the only control any of those utilities provide is to change the device used by Windows Media Player and nothing else.

Interestingly, VirtualMIDISynth is able to displace the Microsoft GS synth as the default device, so it seems like it should be possible for someone to implement a loopback device that does the same thing, allowing you to then route the data wherever you want.

Reply 45 of 85, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

Update, it doesn't work: It lists the MIDI devices and lets you pick one, but the setting doesn't stick. The Microsoft GS synth always shows up as the selected synth when you run it.

Also, it doesn't run at all from C:\Windows\System32.

Reply 46 of 85, by collector

User metadata
Rank l33t
Rank
l33t

Too bad. I'll have to play around with it next time I boot to 10.

HunterZ wrote:

Also, it doesn't run at all from C:\Windows\System32.

Of course not. It is a 32-bit CPL, it has to be placed in the SysWOW64 directory.

The Sierra Help Pages -- New Sierra Game Installers -- Sierra Game Patches -- New Non-Sierra Game Installers

Reply 47 of 85, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

It runs from there, but the behavior is the same as running it from anywhere else - always shows the Microsoft GS synth, even if I run as administrator and try to set something else, then close and re-run it.

Reply 48 of 85, by collector

User metadata
Rank l33t
Rank
l33t

I only just now installed 10 and have not yet worked everything out. I don't like how heavy handed the restrictions are, even when in an administrator account with UAC turned off. It is obviously restricting the CPL's access to the registry. There could be an additional fix needed besides the Registry change.

Just remembered that MusicallyInspired was having a similar problem getting Munt to show in Cakewalk Sonar on 10. Don't know if you can find any help in that thread -- MUNT QT driver doesn't appear as a MIDI output device in Cakewalk Sonar

The Sierra Help Pages -- New Sierra Game Installers -- Sierra Game Patches -- New Non-Sierra Game Installers

Reply 49 of 85, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

No, it's worse than that. They rewrote the MIDI stack in Windows 8, and the MIDI mapper functionality is completely gone (not just hidden as in Vista/7, but *GONE*). The Microsoft GS synth is now hard-coded to MIDI device #0, so any application that asks for the "default" MIDI device will now get the Microsoft GS synth and there is no way to change it (except for a proprietary hack that VirtualMIDISynth is able to pull off).

Applications that allow you to choose a specific MIDI device can still use alternate devices. DOSBox falls under this category, but System Shock: Enhanced Edition does NOT.

Reply 50 of 85, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

I tried CoolSoft's VirtualMIDISynth in Windows 8.1. It does not restore the MIDI Mapper, which makes sense because the MIDI Mapper does not exist in Windows 8, 8.1 or 10. The drop down box for that feature cannot be used. But it does allow you to change the default device for Windows Media Player. That worked for me using Microsoft's latest v12. I would suggest that changing the device for WMP changes it for everything else that does not allow for MIDI device selection. It appears to be about as good as it gets for those individuals beyond 7.

VLC cannot play MIDI files anymore. Even when it could, it would choke on large MIDI files where WMP would play without issue. DOS MIDI players also tended to have difficulties with the large MIDI files in the Sierra Soundtrack Archive.

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 51 of 85, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

Changing the WMP device most definitely does *not* change it for everything else. System Shock: Enhanced Edition ignores the setting and uses the Microsoft GS synth unless VirtualMIDISynth uses its proprietary hack to take over as device #0.

I recommend MIDIBar (from the author of MIDI-OX/MIDI-Yoke) as a simple MIDI player. It lets you choose a specific output.

Reply 52 of 85, by Silanda

User metadata
Rank Member
Rank
Member

This is a frustrating problem, and I'm really surprised that no-one has tackled it. Setting the default device for media player may be effective for some software other than media player, but it doesn't work for any games that I've tried. I did ask the author of VirtualMIDISynth if he could add passthrough functionality for hardware devices, but he wasn't willing to as it's outside of the intended function of the software. It's a shame, as that software is essentially a proof of concept that such an approach could work. I'd do it myself if I had the skills.

My current workaround for the problem is to hack the executables of software with no device selection to output to a MIDI device of my choosing. The only drawback is that if the MIDI devices change, the hacks need to too. Also, I've ran into at least one game that I was unable to hack as it appeared to use a less common way of outputting MIDI, and I couldn't find anywhere where it set the MIDI device parameters. Of course it's also possible that my limited skills with IDA Pro were to blame.

Reply 54 of 85, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

I read that if you connect an external MIDI interface or device, then that device becomes the default MIDI device. So you could use a USB MIDI interface and connect it to a MIDI Module like the SC-55 and enjoy System Shock Enhanced Edition as it was meant to be heard. Not a great solution, if it works at all.

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 55 of 85, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

That doesn't seem to be true either, as my M-Audio MIDIsport Uno didn't take over. This could be related to VirtualMIDISynth having already taken over though.

Good news for my particular case: I used OllyDbg to find where the game was calling midiOutOpen(), then used HxD to find the same spot in sshock.exe and edit the byte where it pushes the device ID (zero by default) onto the stack. I iterated through the values until I got music from my SC-88 instead of from VirtualMIDISynth (or having it crash).

If anyone cares, the offset is 1591h.

Thanks to Silanda for the inspiration.

Edit: I've been thinking that it should be possible to make a fake winmm.dll that intercepts the call to midiOutOpen() and forwards the call to the real winmm.dll, but with a device ID parameter from a config file instead of whatever was passed in. Unfortunately I don't know how to do this (but I'm sure someone on here does). Here's the Microsoft documentation for the method in question: https://msdn.microsoft.com/en-us/librar ... s.85).aspx

Reply 56 of 85, by Silanda

User metadata
Rank Member
Rank
Member

^That's basically what I've been doing but I've been using the free version of IDA Pro instead, and using dosbox's "mixer /listmidi" command to get the device IDs. IIRC, sometimes the default device ID will be 0, other times it will be FF (or FFFF, sometimes it uses two bytes). Directmusic games can be changed using the same principal. Chocolate Doom required hacking sdlmixer.dll instead, but the principal was exactly the same, and Road Rash required some bypassing of code since it assumes that it can change MIDI volume through the Windows mixer, and freaks out when it can't. The game I couldn't fix (VG Custom) didn't call midiOutOpen, and I couldn't see anywhere it was passing device parameters.

I've been thinking about a winmm.dll wrapper too, similar to the ones used to play audio tracks from ogg files rather than CD (and fix looping). This should be pretty straightforward to do for someone knowledgeable, alas I'm not. That being said, I'll post here if I ever do succeed in writing one.

Great Hierophant wrote:

I read that if you connect an external MIDI interface or device, then that device becomes the default MIDI device. So you could use a USB MIDI interface and connect it to a MIDI Module like the SC-55 and enjoy System Shock Enhanced Edition as it was meant to be heard. Not a great solution, if it works at all.

Sadly it doesn't. I've got two hardware devices connected (an SC-8820 and a UM-2G) and they occupy position 4-8. If anything, Windows seems to prioritise software devices, with Munt being in position 1. Only VirtualMIDISynth seems to be able to supplant the built in softsynth by replacing midimap.dll as the driver in position 0.

Last edited by Silanda on 2016-06-13, 21:47. Edited 1 time in total.

Reply 58 of 85, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

I poked the VirtualMIDISynth author and he released this: http://coolsoft.altervista.org/en/forum/thread/427

Edit: Works for me, including passing SysEx to my MT-32.