gpt4 book ai didi

windows audio waveOut SetVolume 交叉连接 midi Out SetVolume

转载 作者:行者123 更新时间:2023-12-02 23:17:28 30 4
gpt4 key购买 nike

我有一个程序可以生成 midi 和 wav 音频。我需要能够分别控制 MIDI 和音频的音量和平衡,理论上,我需要做的似乎就是打电话

  unsigned short left = (unsigned short)(wavvol*wavbal/100.0);
unsigned short right = (unsigned short)(wavvol*(100-wavbal)/100.0);
MMRESULT err = waveOutSetVolume(hWaveOut, left | (right<<16)); // for audio


  unsigned short left = (unsigned short)(midivol*midibal/100.0);
unsigned short right = (unsigned short)(midivol*(100-midibal)/100.0);
MMRESULT err = midiOutSetVolume(s_hmidiout, left | (right<<16)); // for midi

为中音

问题是,控制 midi 音量会设置波形音量和签证,就像它们在 window 内粘在一起

有谁知道是否有办法解开它们?

顺便说一句,我在 Windows 7 上,我知道微软在 win7 中搞砸了音频。在 XP 上,我有一个音频控制面板,带有单独的 midi 和 wave 控件,这似乎已经消失了。我想他们现在只是在内部混合起来,即使在 API 级别也不公开它,所以也许我已经回答了我自己的问题。

仍然有兴趣知道是否有更好的答案。

谢谢,史蒂夫

最佳答案

我不认为他们可以分开。您可以移至较新的 IAudioClient接口(interface)和使用两个WASAPI单独控制音量的 session - 一个用于 wav,一个用于 midi。这在 Vista 下的任何东西上都不起作用。

或者,您可以在代码中跟踪音量级别,只要您不同时播放 wav 和 midi,请在播放前重置它们。

关于windows audio waveOut SetVolume 交叉连接 midi Out SetVolume,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15266050/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com