• 締切済み

Cでボリュームコントロールを制御する方法

困っていることがあるので皆さんに質問させてください。 C言語を用いてボリュームコントロールの「バランス」を操作したいと考えています。 右と左のスピーカーの音量バランスを設定するあのスライダーです。 その左右バランスを変更できるような方法(APIなど)をご存知ありませんでしょうか。 javaなら僕の要望にぴったり合ったAPIがあるようですが、同じようなものでCで使用できるものを探しています。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/sound/sampled/FloatControl.Type.html (このクラスのPANやBALANCEに相当するようなものがあればすばらしいのですが。。。) ご存知の方がいらっしゃればぜひ教えてください。お願いします。

みんなの回答

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

Gri
質問者

お礼

回答ありがとうございます。 コンパイルして実行してみたらちゃんとできました! ありがとうございます。 これを参考に勉強させていただきます。

全文を見る
すると、全ての回答が全文表示されます。
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

http://www.terra.dti.ne.jp/~vivas/delphi/mixerapi.html#4 バランスコントロールはないので自分で左右の音量を調節して実装するようです

Gri
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Visual C#でのメソッド

    Visual C# でプログラミングしようと思ったのですが、メソッドの一覧などはどこでわかるのでしょうか? たとえば、javaでならhttp://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html このようなページを見てやってたのですが、 C#ではこういった情報の入手方法がわからず困っています。 わかるかたがいたら教えてください。

  • 今、SunのサイトのjavaAPIリファレンス見られますか?

    たとえば http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/index.html とか、 http://java.sun.com/j2se/1.4/ja/docs/ja/api なんですが・・・。

    • ベストアンサー
    • Java
  • APIの読み方

    下記APIの読み方が分かりません。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Enumeration.html タイトルにEnumeration<E>とありますが、<E>とはどういう意味でしょうか? さらに http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/naming/NamingEnumeration.html を参照すると、概要の冒頭に public interface NamingEnumeration<T> extends Enumeration<T> とも書いてあります。先ほどはEnumeration<E>だったのが、Enumeration<T>と表記されており、何が何なのか混乱しています。 質問をまとめさせていだきますと、 1.Enumeration<E>の<E>とはどういう意味でしょうか? 2.NamingEnumerationでは、なぜEnumeration<T>なのか? 以上です。基本的すぎる内容な気がして申し訳ありませんが、宜しくお願い致します。

    • ベストアンサー
    • Java
  • Javaの公式メソッドの中身を見るには?

    Javaの公式なメソッドやクラスの中身を見るにはどうすればいいでしょうか? jTextAreaクラスに、指定した位置に文字列を挿入する、 「insertメソッド」というメソッドがあるのですが、 このメソッドがどういうアルゴリズムかを勉強したいのですが、 JavaのAPIを見ても、引数や説明があるだけで、中のソースがありません。 http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/JTextArea.html#insert%28java.lang.String,%20int%29 何か中身を見る方法ありませんか?

    • ベストアンサー
    • Java
  • API 仕様のダウンロードできませんか?

    JavaTM Platform, Standard Edition, v 1.3 API 仕様 (http://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html) の一式をダウンロードできるサイトをご存知ありませんか? 圧縮ファイルで22MBぐらいのものらしいのですが・・・

    • ベストアンサー
    • Java
  • APIリファレンス 日本語版のDLが見つかりません

    JDK1.5のAPIリファレンスの日本語版を探してます。 オンラインでの利用はhttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/overview-summary.html にありましたが、DLして使うタイプがあるのでしたら利用したいと思い投稿しました。 どなたかご存知の方がいらっしゃいましたら教えてください。

    • ベストアンサー
    • Java
  • APIのページ

    お世話になります。 Javaには「Java 2 Platform Standard Edition 5.0 API 仕様(http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html)」 PHPには「PHPマニュアル(http://jp.php.net/manual/ja/index.php)」というように、公式(?)のようなAPIのページがありますが、 perlにはそのようなオンラインで参照できるページはないのでしょうか。 関数を探す際等に利用できるページを探しているのですが、見つかりません。 ご存知の方がいらっしゃったらどうかお教えいただけないでしょうか。

    • ベストアンサー
    • Perl
  • APIドキュメントのダウンロードの仕方について

    現在JAVAのSDK1.4.1を入手してForteを使って勉強しているのですがAPI仕様の日本語版がほしくてサイトを調べていたら下記のサイトに日本語版がありました。 http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html ここのAPIドキュメントを私のPCへダウンロードしたいのですがどのようにしたらよいのでしょうか?

    • ベストアンサー
    • Java
  • JavaDocはどこにあるのでしょう

    NetBeans(javaのIDE)を使っているのですが、JavaDocを組みこみたいのですが、その元になるデータをjavaのホームページからダウンロードしたいのですがどれかわかりません。 ホームページとしては、http://java.sun.com/javase/ja/6/docs/ja/api/ なのですが、これと同じものがデータとしてダウンロードして、NetBeansに組み込めるようなのですが。 趣味でjavaの勉強をしています。 どなたかお助けを! また、参考になるホームページがありましたら教えてください。

    • ベストアンサー
    • Java
  • JDK1.5のjava.math.BigDecimal#toString

    JDK1.5のjava.math.BigDecimal#toStringについて教えて下さい。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/math/BigDecimal.html#toString() SunにDocumentがありますが、この説明にある「調整された指数」の算出の仕方がよくわからないので、どういうときに指数表示されるのかが分かりません。 例を示してわかりやすく説明していただけるとありがたいです。