困っていることがあるので皆さんに質問させてください。
C言語を用いてボリュームコントロールの「バランス」を操作したいと考えています。
右と左のスピーカーの音量バランスを設定するあのスライダーです。
その左右バランスを変更できるような方法(APIなど)をご存知ありませんでしょうか。
javaなら僕の要望にぴったり合ったAPIがあるようですが、同じようなものでCで使用できるものを探しています。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
(このクラスのPANやBALANCEに相当するようなものがあればすばらしいのですが。。。)
ご存知の方がいらっしゃればぜひ教えてください。お願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
バランスコントロールはないので自分で左右の音量を調節して実装するようです
回答ありがとうございます。
やはりそれ自体を直接触ることはできないんですね・・・
教えていただいたサイトを参考にして、ボリューム変更プログラムを作ってみました。
MIXERCONTROL_CONTROLTYPE_VOLUMEを変更してマスターボリュームを変更させることはできましたが左右のスピーカ音量をそれぞれを調節するにはどうしたらいいかわからなくて困っています。
どうすればよいでしょうか・・・
No.2
- 回答日時:
こんばんは。
取り敢えず以下で出来ませんか。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;
}
回答ありがとうございます。
コンパイルして実行してみたらちゃんとできました!
ありがとうございます。
これを参考に勉強させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- スピーカー・コンポ・ステレオ BOSE companion20の左右の音量バランスについて 6 2023/03/23 08:56
- スピーカー・コンポ・ステレオ ヴィンテージ真空管アンプの入出力端子および操作について 4 2023/06/24 00:35
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- ドライブ・ストレージ HDDの未割り当て領域が認識されない 7 2022/11/27 18:51
- スピーカー・コンポ・ステレオ 5.1chサラウンドの “センターの谷” に落ちています。 7 2022/08/07 06:42
- 英語 balanceにおける「残高」「負債」の見分け方や考え方 3 2023/05/16 19:54
- 楽器・演奏 ステージの中央プレーヤーのモニター左右は、観客に向かっているメインスピーカーの右左と同じなのですか? 2 2022/11/01 22:03
- 高齢者・シニア 聴力を補うツールについて、質問させてください。 一般的に聞こえない(聞こえづらい)場合、耳の後ろに手 4 2022/05/22 15:24
- Windows 10 Windows10 の設定?について (長文ですがよろしくお願いします)m(_ _)m 3 2022/05/14 12:22
- モニター・ディスプレイ WindowsノートパソコンからLG UltraFine 4K Displayへの出力 5 2022/04/20 11:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「指定されたキャストは有効で...
-
#define _CRT_SECURE_NO_WARNIN...
-
へんな現象
-
【C++】関数ポインタの使い方
-
(int *)の意味
-
C言語での引数の省略方法
-
if と配列の組み合わせ
-
複数桁10進数の*桁目だけを抽出...
-
C言語でDxlibを使って3x3の奇数...
-
(マルチスレッド)_beginthrea...
-
C言語での奇数の和
-
ラップ関数とはどんなものですか?
-
整数データの配列から同じ値の...
-
system関数がうまくいかない
-
足して100になるような乱数のア...
-
教えてください(丸罰ゲーム)
-
ファイルに含まれるアルファベ...
-
囚人のジレンマゲーム C言語
-
C言語の配列をC++のvectorに高...
-
プログラミングペーパーテスト ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
c言語
-
足して100になるような乱数のア...
-
C言語初心者です、、、お助けく...
-
数字列を3桁ごとにカンマで区切...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
課題でつまってます・・・
-
商と剰余を同時に求める(C言語)
-
C言語の配列をC++のvectorに高...
-
std::set<int> で、ある値が何...
おすすめ情報