私は実際には C++ や SDL_Mixer に精通しているわけではありませんが、Doom コミュニティを代表してこの質問をしています。簡単に言えば、Windows Vista または 7 で SDL_Mixer を使用して通常のサウンド ボリュームと MIDI サウンド ボリュームを個別に制御する方法を、Doom ソース ポートを作成しているユーザーは誰も理解していないようです。Eternity Engine の作成者である James Haley に彼自身の言葉で説明してもらいます。 :
Windows Vista または 7 では、ネイティブ MIDI の独立したボリュームの概念は存在しないようです。これは、MIDI ボリューム スライダーを持つアプリケーション (SDL_mixer を使用するほとんどのゲームを含む) で MIDI ボリューム スライダーを使用すると、デジタル サウンド出力のボリュームにも影響するためです。これにより、快適さのために音楽の相対的な音量を調整しようとすることが不可能になります。
誰かがこれに対する回避策を見つけましたか? 個々のサウンド デバイスの音量を個別に制御するために、Microsoft が OS 全体を軽視しているように見えることを考えると、それはありそうもないことだと思います。
Timidity ドライバーを使用するさまざまな回避策について聞いたことがありますが、これには、ユーザーが自分のシステムにゲームをインストールするだけでなく、それ以上のことが必要です。この問題を確実に修正するポートとして私が知っている唯一のポートは ZDoom ですが、これは GPL 非互換の FModEx を使用しているため、適切なソリューションではありません。
コードを確認したい場合は、Chocolate Doom が最も簡単に理解できる Doom ソース ポートであり、そのソースをここで取得できます。
他のオープンソースのサウンドおよび音楽ライブラリに関する提案も大歓迎です。