VC6++、c言語+APIです。
MCIでサウンドファイルを再生中に、MCI_SETコマンドでステレオ音声の左のみ、右のみという切り替える機能を付けたいのですが、再生中に変更できるのか?できるとしたらどうやるのか?がわかりません。
すでにオープンしたMCIデバイスに対し、
BOOL bLeft, bRight;
msp.dwAudio = MCI_SET_AUDIO_RIGHT;
mciSendCommand(wDeviceID, MCI_SET, MCI_SET_AUDIO | (bRight ? MCI_SET_ON : MCI_SET_OFF), (DWORD)&msp);
msp.dwAudio = MCI_SET_AUDIO_LEFT;
mciSendCommand(wDeviceID, MCI_SET, MCI_SET_AUDIO | (bLeft ? MCI_SET_ON : MCI_SET_OFF), (DWORD)&msp);
//MCIデバイスに再生の指示を出す
mpp.dwCallback = (DWORD)hwnd;
dwError = mciSendCommand(mop.wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)&mpp);
if(dwError)
{
mciShowError(hwnd, dwError);
mciSendCommand(mop.wDeviceID, MCI_CLOSE, 0, 0);
return 0;
}
ということはできるのですが、ファイル再生中に動的な変更(といったらいいのでしょうか?)を行うことはできません。
分かりにくくて申し訳ありませんが、どなたか解決法をご存知の方いらっしゃいましたらお願いします。
>再生中に変更できるのか?
出来るとは思います。
sndvol32.exe の Volume Control で切り替えできるから。
問題は mciSendCommand で出来るかどうかだね。
ミキサーデバイスを操作すれば出来ると思います。
ただ難しすぎで説明できないから次の関数を元に調べてくれ。
1. mixerOpen、mixerClose
2. mixerGetNumDevs、mixerGetDevCaps、mixerGetID
3. mixerGetLineInfo、mixerGetLineControls
4. mixerGetControlDetails、mixerSetControlDetails
参考文献
http://www.terra.dti.ne.jp/~vivas/delphi/mixerapi.html
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpperiod/period98/VBDev/Feb/vb0298.asp
http://doglover.jp/index.php?%B2%BB%CE%CC%C4%B4%C0%E1%A4%F2%A4%B7%A4%BF%A4%A4
ツイート | ![]() |