MCIで再生中のデバイス設定を変更するには?


ちょっと待ってよ車屋  2007-10-21 02:06:30  No: 66636

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;
                }

ということはできるのですが、ファイル再生中に動的な変更(といったらいいのでしょうか?)を行うことはできません。

分かりにくくて申し訳ありませんが、どなたか解決法をご存知の方いらっしゃいましたらお願いします。


夏みかん  2007-10-25 07:04:46  No: 66637

>再生中に変更できるのか?
出来るとは思います。
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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加