VOGONS

Common searches


First post, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t

Just found out that MIDI volume can no longer be controlled from inside the application, just like CD audio. So, I am thinking if there's already some wrapper that enables the MIDI volume to be changed from inside the application. Maybe Virtual MIDISynth and Falcosoft MIDI Player or similar allow this change from outside, but I don't know if they can change the volume from inside the application. Your knowledge could be useful...

previously known as Discrete_BOB_058

Reply 1 of 9, by Shponglefan

User metadata
Rank l33t
Rank
l33t

What is your setup (OS, MIDI devices, etc.)?

Typically if you're playing back MIDI files on hardware, you'd adjust the output volume of the hardware itself.

If you're using some sort of software MIDI synth, you can typically use the system volume mixer.

Pentium 4 Multi-OS Build
486 DX4-100 with 6 sound cards
486 DX-33 with 5 sound cards

Reply 2 of 9, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
Shponglefan wrote on 2022-10-08, 15:49:

What is your setup (OS, MIDI devices, etc.)?

Typically if you're playing back MIDI files on hardware, you'd adjust the output volume of the hardware itself.

If you're using some sort of software MIDI synth, you can typically use the system volume mixer.

I don't use any external HW on Windows for MIDI playback. It's just the normal Roland SC based Wavetable Synthesizer that MS provides... I occassionally use soundfonts with Coolsoft MIDI Player but the controlling is difficult here.

The system volume mixer can't control MIDI sounds since Windows Vista, it changes all sound.

previously known as Discrete_BOB_058

Reply 3 of 9, by SScorpio

User metadata
Rank Member
Rank
Member

Are you using Windows 10/11? If so any reason you can't use the volume mixer? Right-click the systray speaker and choose open volume mixer. It should list all applications and you should be able to adjust Coolsoft's volume.

Another option is just pressing windows+G which will open the game bar. One of the widgets is for audio and lets you adjust the volume of each application.

Reply 4 of 9, by Shponglefan

User metadata
Rank l33t
Rank
l33t
BEEN_Nath_58 wrote on 2022-10-08, 16:21:

The system volume mixer can't control MIDI sounds since Windows Vista, it changes all sound.

It should allow you to change audio volume on a per-application basis. This does work in Windows 10.

I just tested this by playing a MIDI file with Windows Media Player Classic and playing a soundtrack in Steam.

I can adjust each application's audio level independently and it doesn't affect the other one.

Attachments

Pentium 4 Multi-OS Build
486 DX4-100 with 6 sound cards
486 DX-33 with 5 sound cards

Reply 5 of 9, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
Shponglefan wrote on 2022-10-08, 17:34:
It should allow you to change audio volume on a per-application basis. This does work in Windows 10. […]
Show full quote
BEEN_Nath_58 wrote on 2022-10-08, 16:21:

The system volume mixer can't control MIDI sounds since Windows Vista, it changes all sound.

It should allow you to change audio volume on a per-application basis. This does work in Windows 10.

I just tested this by playing a MIDI file with Windows Media Player Classic and playing a soundtrack in Steam.

I can adjust each application's audio level independently and it doesn't affect the other one.

I don't have problem changing any independent MIDI volume. That is easy. I am talking about MIDI in an application, such as a game. Earlier, the OS had controls for Wave volume, MIDI volume, CD volume, and an overall volume. While DxWnd has wrapped the availability of CD volume to applications from inside, I haven't found one such for MIDI volume or wave volume.

You can take Age of Empire as an example, it has both CD Audio and MIDI support. The in-game Music slider doesn't work with MIDI, and not also CD audio (unless DxWnd mixer is emulated)

file.php?mode=view&id=147210

SNDVOL32.EXE of both XP and 98 were run and both have synchronised volume control for all three available settings, when you decrease one, every other is decreased. Plus there is no MIDI volume, which should be after Master Volume if I remember correctly.

Attachments

previously known as Discrete_BOB_058

Reply 6 of 9, by SScorpio

User metadata
Rank Member
Rank
Member

Thanks for including what you are actually trying to do. DxWnd intercepts the CD calls and has its own CD player which was created to allow the proxying of audio files in place of actual CD playback. This allows the playback to happen in its own process and thus volume can be controlled separately.

It might make sense for you to reach out to the DxWnd team as it's still being developed and see if they are able to intercept the MIDI calls as well. If so a separate MIDI player could also be created with the benefit of allowing the use of a SoundFonts versus relying on Windows GS Wavetable.

If you search for the top of MIDI volume in Vista and newer you'll see references involving Chocolate Doom and Descent source ports running into the same issue. Their resolution was spawning off a separate SDL MIDI playback process which allowed independent volume control.

For now, your best bet might be to install Virtual MIDISynth or use loopMIDI along with Falcosoft MIDI Player. You'll need to change Window's default MIDI Out, then MIDI playback will be passed to these separate applications which again would allow you to control just their volumes. It would be seamless to whatever program or game you are running as it would be just like if you were running an external MIDI module. Again a benefit is you can also get access to SoundFonts or VTIs to get much better-sounding MIDI.

Coolsoft's MIDIMapper will let you change the default MIDI Out port in Win 8, 10, and 11.

Reply 7 of 9, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
SScorpio wrote on 2022-10-08, 20:29:

It might make sense for you to reach out to the DxWnd team as it's still being developed and see if they are able to intercept the MIDI calls as well. If so a separate MIDI player could also be created with the benefit of allowing the use of a SoundFonts versus relying on Windows GS Wavetable.

Actually it can control MIDI volume with its per application configuration, but as I said, I would like to have the option to change the volume from inside the application.
To what I have read, MIDI is a very complex thing to tame and it's just because of some very bright ideas that allowed the MIDI Out port to be changed on Win8+. (There was this old thread on vogons I read probably in 2017 that talked about the problem and how Coolsoft countered it here)

SScorpio wrote on 2022-10-08, 20:29:

For now, your best bet might be to install Virtual MIDISynth or use loopMIDI along with Falcosoft MIDI Player. You'll need to change Window's default MIDI Out, then MIDI playback will be passed to these separate applications which again would allow you to control just their volumes. It would be seamless to whatever program or game you are running as it would be just like if you were running an external MIDI module. Again a benefit is you can also get access to SoundFonts or VTIs to get much better-sounding MIDI.

Coolsoft's MIDIMapper will let you change the default MIDI Out port in Win 8, 10, and 11.

If I understand correctly, VirtualMIDISynth or Falcosoft MIDI Player will allow you to change the volume with its control panel (which I already did), but it won't allow the change from inside the application which is running (such as AOE Music Volume slider)?

previously known as Discrete_BOB_058

Reply 8 of 9, by SScorpio

User metadata
Rank Member
Rank
Member
BEEN_Nath_58 wrote on 2022-10-09, 17:20:

Actually it can control MIDI volume with its per application configuration, but as I said, I would like to have the option to change the volume from inside the application.
To what I have read, MIDI is a very complex thing to tame and it's just because of some very bright ideas that allowed the MIDI Out port to be changed on Win8+. (There was this old thread on vogons I read probably in 2017 that talked about the problem and how Coolsoft countered it here)

As I said, only something like DxWnd hooking all the calls could make what you want to happen possible.

The MIDI volume slider you are seeing in the game isn't passing over MIDI commands to control the volume. It's just changing the volume of the MIDI channel in Windows' sound mixer. But since Vista, the channels are all linked together, so changing the MIDI channel volume affects the Wave channel and vice versa. If you were playing the game on Win98 with an external MIDI module, changing the MIDI volume won't affect the volume the synth is outputting.

DxWnd or something else would have to register a MIDI Out port and set it as the default output. Then when you play the game it would spawn a MIDI player in the background along with a SoundFont. It would then need to intercept the volume changes to the MIDI channel and have them affect just the MIDI player's process rather than changing the game's volume.

Reply 9 of 9, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
SScorpio wrote on 2022-10-09, 18:39:
As I said, only something like DxWnd hooking all the calls could make what you want to happen possible. […]
Show full quote
BEEN_Nath_58 wrote on 2022-10-09, 17:20:

Actually it can control MIDI volume with its per application configuration, but as I said, I would like to have the option to change the volume from inside the application.
To what I have read, MIDI is a very complex thing to tame and it's just because of some very bright ideas that allowed the MIDI Out port to be changed on Win8+. (There was this old thread on vogons I read probably in 2017 that talked about the problem and how Coolsoft countered it here)

As I said, only something like DxWnd hooking all the calls could make what you want to happen possible.

The MIDI volume slider you are seeing in the game isn't passing over MIDI commands to control the volume. It's just changing the volume of the MIDI channel in Windows' sound mixer. But since Vista, the channels are all linked together, so changing the MIDI channel volume affects the Wave channel and vice versa. If you were playing the game on Win98 with an external MIDI module, changing the MIDI volume won't affect the volume the synth is outputting.

DxWnd or something else would have to register a MIDI Out port and set it as the default output. Then when you play the game it would spawn a MIDI player in the background along with a SoundFont. It would then need to intercept the volume changes to the MIDI channel and have them affect just the MIDI player's process rather than changing the game's volume.

Convoluted but looks achievable. I am going to ask gho if he can manage it. Thanks.

previously known as Discrete_BOB_058