我正在編寫C++代碼來輸出MIDI消息。我需要這樣做以立體聲的方式工作,以便通過左聲道/揚聲器播放一些音符,其他音符則通過右聲道播放。如果我呼叫midiOutSetVolume(midiOutHandle,0xFFFF),然後幾次調用midiOutShortMsg,每次呼叫相隔幾百毫秒,音符就會通過左揚聲器。同樣,如果我在調用midiOutShortMsg之前首先調用midiOutSetVolume(midiOutHandle,0xFFFF0000),則所有內容都會發出正確的說話者。但是,如果我試圖同時輸出一個音符通過左揚聲器和一個通過正確執行以下操作:midiOutShortMsg和midiOutSetVolume輸出立體聲
midiOutSetVolume(midiOutHandle, 0xFFFF);
midiOutShortMsg(...);
midiOutSetVolume(midiOutHandle, 0xFFFF0000);
midiOutShortMsg(...);
兩個註釋簡單的問世右揚聲器。我想,如果我可能有兩個單獨的手柄,我可以設置一個播放左聲道音符,另一個是正確的。但是,如果我嘗試通過2次調用打開2個手柄到相同的設備midiOutOpen我第二次調用時收到MMSYSERR_ALLOCATED錯誤。
任何意見非常讚賞。
非常感謝您的回覆。我實際上使用的是打擊樂器,它們被設置爲頻道10,因此不能使用多個頻道。我試着設定音量,而不是設定音量,但結果是一樣的,一切都結束了。 – fhevol 2012-08-14 19:01:36
是否可以設置另一個打擊樂器的頻道?您的方法可以使用標準的GM儀器完美工作如果我可以得到2個頻道打擊樂器我在那裏。 – fhevol 2012-08-14 19:30:26
@AndrewKlinkhamer:可以,這取決於你的MIDI設備。答案已更新。 – Scotty 2012-08-16 02:55:48