我正在编写 C++ 代码来输出 midi 消息。我需要它在立体声中工作,以便通过左声道/扬声器播放一些音符,通过右声道播放其他音符。如果我调用 midiOutSetVolume(midiOutHandle, 0xFFFF),然后调用 midiOutShortMsg,每次调用间隔几百毫秒,则音符会通过左侧扬声器。同样,如果我在调用 midiOutShortMsg 之前首先调用 midiOutSetVolume(midiOutHandle, 0xFFFF0000) ,那么一切都会从正确的扬声器中出来。但是,如果我尝试通过执行以下操作同时通过左扬声器和右扬声器输出一个音符:
midiOutSetVolume(midiOutHandle, 0xFFFF);
midiOutShortMsg(...);
midiOutSetVolume(midiOutHandle, 0xFFFF0000);
midiOutShortMsg(...);
两个音符都只是从正确的扬声器中出来。我想如果我可能有 2 个独立的设备手柄,我可以设置一个来播放左声道音符,另一个用于播放右声道。但是,如果我尝试通过对 midiOutOpen 的 2 次调用打开同一设备的 2 个句柄,我会在第二次调用时收到 MMSYSERR_ALLOCATED 错误。
非常感谢任何建议。