| Summary: | Native MIDI music volume manipulating changes application global sound volume (MS GS only) | ||
|---|---|---|---|
| Product: | SDL_mixer | Reporter: | Vitaly Novichkov <admin> |
| Component: | misc | Assignee: | Ryan C. Gordon <icculus> |
| Status: | NEW --- | QA Contact: | Sam Lantinga <slouken> |
| Severity: | minor | ||
| Priority: | P2 | CC: | castro8583bennett, sezeroz |
| Version: | unspecified | ||
| Hardware: | x86 | ||
| OS: | Windows (All) | ||
|
Description
Vitaly Novichkov
2016-11-18 15:01:05 UTC
I remember having a similar issue: https://sf.net/p/uhexen2/code/3815/ Quoting my commit message: http://msdn.microsoft.com/en-us/library/dd798480(VS.85).aspx#1 "This [midiOutSetVolume] function does not set the MIDI device volume when using a software synthesizer under Windows Vista or Windows 7, but instead alters the application-specific volume level in the system mixer. This means that if your application also outputs digital audio, the volume level of that audio will be reduced or increased by the same amount." AFAICS, the user addition in that msdn page no longer exists, but the issue is there. (In reply to Ozkan Sezer from comment #1) > I remember having a similar issue: https://sf.net/p/uhexen2/code/3815/ > Quoting my commit message: > > http://msdn.microsoft.com/en-us/library/dd798480(VS.85).aspx#1 > "This [midiOutSetVolume] function does not set the MIDI device > volume when using a software synthesizer under Windows Vista > or Windows 7, but instead alters the application-specific volume > level in the system mixer. This means that if your application > also outputs digital audio, the volume level of that audio will > be reduced or increased by the same amount." > > AFAICS, the user addition in that msdn page no longer exists, > but the issue is there. Yea, therefore I implemented libADLMIDI as default MIDI engine which is: - required NO external bank files to be able to play MIDI - generates sound from scratch by formulas (like real Yamaha OPL3 FM Synthesis chip did) - works almost everywhere, tested Linux, Windows, OS X, Android. However, this is suggested to people who want remember old DOS games or just liking the unique sound generated by that chip and have to use it for extra advantages in the music making, etc. Okay, I have the solution idea: instead of passing entire MIDI file into Operating System, I have to implement the MIDI player that I'll iterate with dependence on sample rate and SDL Audio's timer and will play MIDI in real time. So, I getting the advantage: instead of changing application master volume, I have to apply volume multiply factor to every MIDI channel's volume value and this stupid bug will leave us. I already have iterative MIDI player at libADLMIDI, and I have to split it away as independent library that plays MIDI in real time with ability to attach any MIDI library or output to it Does the issue already fixed? any current update? Thanks! Castro B, https://tab.do/zh-tw/ (In reply to Castro B from comment #4) > Does the issue already fixed? > any current update? > Thanks! > > Castro B, > https://tab.do/zh-tw/ No, it isn't. I still keep in my mind this to implement at any moment. Thanks for reminding, I'll try to do this soon. |