アプリ版:「スタンプのみでお礼する」機能のリリースについて

困っていることがあるので皆さんに質問させてください。

C言語を用いてボリュームコントロールの「バランス」を操作したいと考えています。
右と左のスピーカーの音量バランスを設定するあのスライダーです。

その左右バランスを変更できるような方法(APIなど)をご存知ありませんでしょうか。

javaなら僕の要望にぴったり合ったAPIがあるようですが、同じようなものでCで使用できるものを探しています。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
(このクラスのPANやBALANCEに相当するようなものがあればすばらしいのですが。。。)

ご存知の方がいらっしゃればぜひ教えてください。お願いします。

A 回答 (2件)

http://www.terra.dti.ne.jp/~vivas/delphi/mixerap …
バランスコントロールはないので自分で左右の音量を調節して実装するようです
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やはりそれ自体を直接触ることはできないんですね・・・

教えていただいたサイトを参考にして、ボリューム変更プログラムを作ってみました。
MIXERCONTROL_CONTROLTYPE_VOLUMEを変更してマスターボリュームを変更させることはできましたが左右のスピーカ音量をそれぞれを調節するにはどうしたらいいかわからなくて困っています。
どうすればよいでしょうか・・・

お礼日時:2009/06/23 15:33

 こんばんは。


 取り敢えず以下で出来ませんか。left, rightそれぞれ、0~127迄です。

static void SetMasterVolumeValance(int left, int right)
{
//ミキサデバイスを開く
HMIXER hmx;
::mixerOpen(&hmx, 0, 0, 0, 0);

//ライン情報
MIXERLINE mxl = {sizeof(mxl)};
mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
::mixerGetLineInfo((HMIXEROBJ)hmx, &mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);

//マスターボリューム情報の取り出し
MIXERCONTROL mxctrl = {sizeof(mxctrl)};
MIXERLINECONTROLS mxlctrl = {sizeof(mxlctrl), mxl.dwLineID, MIXERCONTROL_CONTROLTYPE_VOLUME, 1, sizeof(MIXERCONTROL), &mxctrl};
if(!::mixerGetLineControls((HMIXEROBJ) hmx, &mxlctrl, MIXER_GETLINECONTROLSF_ONEBYTYPE))
{
if(MIXERCONTROL_CONTROLF_UNIFORM & mxctrl.fdwControl)
{
::MessageBox(NULL, "error", "error", IDOK);
return;
}

MIXERCONTROLDETAILS_UNSIGNED valances[2] = {0};
MIXERCONTROLDETAILS mxcd = {sizeof(mxcd), mxctrl.dwControlID, mxl.cChannels, NULL, sizeof MIXERCONTROLDETAILS_UNSIGNED, valances};
//::mixerGetControlDetails((HMIXEROBJ)hmx, &mxcd, MIXER_SETCONTROLDETAILSF_VALUE);

//左右ボリューム
valances[0].dwValue = 65565.0f * (left / 127.0f);
valances[1].dwValue = 65565.0f * (right/ 127.0f);

::mixerSetControlDetails((HMIXEROBJ)hmx, &mxcd, MIXER_SETCONTROLDETAILSF_VALUE);
}

::mixerClose(hmx);
}

int main()
{
SetMasterVolumeValance(32, 0);
return 0;
}
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

コンパイルして実行してみたらちゃんとできました!
ありがとうございます。

これを参考に勉強させていただきます。

お礼日時:2009/06/23 20:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!