• ベストアンサー

MIXERCONTROL.dwControlTypeの値について

今、WindowAPIを用いてCDの音楽のVolumeを拾ってこようと考えています。MIXERCONTROL.dwControlTypeの値がMIXERCONTROL_CONTROLTYPE_VOLUMEというのはとってこれたのですが、どうもこれはマスター音量(windowsでボリュームコントロールで設定する大きさ)のようで、音楽の音に反応して値が変化しません。自分としてはイコライザのように音楽の音量に反応するものを作りたいと考えているのですが、音に反応するMIXERCONTROL.dwControlTypeの値をどれにしたらいいのか判りません。わかる方は教えてください。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

mmioXxxを使用するということは、既に.wavファイルがあって、その中に記録されている音の音量を求めたい、ということですね? mmioXxxはもう10年近くも使ってないのですが、確かこんな感じでよかったかと思います。(Visual C++ .NETに付属のヘルプからの切り貼りです。)   HMMIO hmmio = mmioOpen(szFileName, NULL, MMIO_READ | MMIO_ALLOCBUF);   MMCKINFO mmckinfoParent;   mmckinfoParent.fccType = mmioFOURCC('W', 'A', 'V', 'E');   mmioDescend(hmmio, &mmckinfoParent, NULL, MMIO_FINDRIFF);   MMCKINFO mmckinfoSubchunk;   mmckinfoSubchunk.ckid = mmioFOURCC('d', 'a', 't', 'a');   mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent, MMIO_FINDCHUNK);   DWORD dwDataSize = mmckinfoSubchunk.cksize;   HPSTR pData = new char[dwDataSize];   mmioRead(hmmio, pData, dwDataSize);   // do whatever here   delete [] pData;   mmioClose(hmmio, 0); 「// do whatever here」の時点でpDataに.wavの音のデータが入っているので、これを適当に処理(音量を調べる等)してください。 この例では.wavの音のデータを一度に全部読み込もうとしていますが、.wavのサイズが大きい場合は少しずつ読み込んで処理する等、いろいろ工夫が必要になると思います。 なお、コンパイルエラーにはならないことを確認していますが、動作については全く確認していません。

garnetcrow
質問者

補足

xcrOSgS2wY さんありがとうございます。また、質問ですが、この方法で行うと、リアルタイムの音の大きさのデータって取得できますか?音楽を聴きながら、その時の音の大きさをバーで表したいので、それが可能かどうか、教えてください。 あと、貼り付けてコンパイルすると以下のようなエラーが出てしまいます。 error C2275: 'HMMIO' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。 c:\program files\microsoft visual studio\vc98\include\mmsystem.h(2290) : 'HMMIO' の宣言を確認してください。 これの回避の仕方も教えていただければ幸いです。力量不足で聞いてばかりではいけないことは判っていますが、お願いします。

その他の回答 (1)

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

アンプやラジカセに、回せば音量の変わるツマミが付いてますよね(最近はボタンでしか音量が変わらないのもありますけど)。あのツマミが、Windows APIで言うところの「ボリューム」(Volume)です。アンプやラジカセのボリュームは、聞いている音楽の音の大きさによって勝手に変化したりしません。同じように、Windows APIで言うところの「ボリューム」も、聞いている音楽の音の大きさによって自動的に変化することはありません。 質問者さんが取得したいと思っている「音量」とは、音楽の音の大きさのことではないでしょうか。だとすると、その「音の大きさ」はwaveInXxx関数を使って「録音」し、録音した音楽の波形データの数値を調べて測定する必要があります。 あるいは、CD音楽の場合はリッピングしてwavファイルにし、そのwavファイルの内容(音楽の波形データ)の数値を調べて測定する方法もあります。(なお、リッピングの方法についての質問・回答はOKWebや教えてGooでは禁止事項となっているため、ここでは説明しません。説明すると削除されてしまいます。) wavファイルから波形データを取得するのには、mmioXxx関数が使えます。

garnetcrow
質問者

補足

xcrOSgS2wYさんありがとうございました。あつかましいですが、mmioXXX関数を使うための前準備の手順を教えていただけませんか?わかりにくい日本語ですいませんが、つまりは、 例) (1)mmioOpenを使う。 (2)mmioReadで読み取る などの情報をいただければ幸いです。仕事で使うつもりなのですが自分の力量不足のためぜんぜん前に進まず困っています。助けてください。お願いします。

関連するQ&A

  • PCの音が消えてしまいました。

    WINDOWS98を使用していますが、あるゲームをダウンロードしてやっていたところ、音がうるさいので「ボリュームコントロール」で音量を下げて、聞こえないようにしていました。1週間ほどして音量を元に戻したところ、ゲームの音楽や、音楽CDは普通に聞こえるのですが、設定していたパソコンの起動時の音、OUTLOOKの音、ポスペの音が消えてしまったのです。 「全ミュート」にはチェックもしていないですし、「コントロールパネル」の「サウンド」を見ても音は出る設定にしています。「テスト」をチェックしても音は出ません。 何が悪かったのかさっぱり判らなく、途方にくれています。判る方がいらっしゃいましたら、どうか元に戻す方法を教えてください!!

  • 変な音楽?雑音が聞こえる

    パソコンにスピーカーがないので、 コードレスヘッドフォンやイヤホンを 直接、HDに繋げて映画や音楽を 聴いているのですが、 何もプレイヤーを立ち上げていない状態なのに(立ち上げても) 変な音楽がきこえてきます。。 変な音楽とは、なんというかホラー映画の入り口で かかるような・・感じの音です(わかりにくくてすいません 前まではこんなことなかったのですが、、、 音量をあげたりするボリュームコントロール設定で WAVEっていうところを0にするとまったくしなくなります。 しかしそうすると、 マスターコントロールが全音量にもかかわらず 音全般が聞こえなくなってしまいます。。 この音は一体なんなんでしょうか・・ 気になって映画や音楽ところじゃありません。。

  • マスター音量が保存されないのです

    今、不思議な現象に悩まされています。 windows7のマスター音量を100にしても、再起動させるとボリューム70に戻ってしまいます。 pc-talker7(画面読み上げソフト)を使っているのですが、マスター音量を設定するチェックボックスをはずして、ボリュームコントロールで設定できるようにしても、 解決できません。 あと、できるとしたら、何ができるでしょうか? とても困っています。 よろしくお願いします。

  • DVDをもっとヴォリュームを上げて聞きたい

    CDやrealPlayerなどで音楽を聴くときは自分の好きな大音量で聞けるのですが、DVD(Win3.0)ではイマイチ音量が出ません。もちろん最高に上げていますし、ヴォリュームコントロールも最大にしています。 (ヴォリューム設定はWin3.0も最大限にしています) 言い忘れましたがヘッドフォンで聞いています。 アドバイスお願いします。

  • アンプのセッティングの仕方

    ギターです。 アンプのセッティングについて少々教えてください。 ゲインの設定についてです。 歪ませる音で鳴らすなら、ゲインで歪み具合を調節、マスターボリュームで最終的な音量を調節、となるのでしょうが、僕は基本クリーンで使うので、そういう場合ゲインはどう扱えばいいのでしょうか。 今までは、ゲインをコードを弾いてもなんとか歪まない程度のレベルまで上げ(アンプによっても違いますが3~5ぐらいの間)、それからマスターボリュームで音量を調節するというやり方をしていました。基本的にはこの方法で間違ってはいないと思います。 しかし、ある記事で「クリーンで鳴らす場合でもゲインを調整することで倍音の量や反応性をコントロールでき、同じ音量でも音を前に出すか、控えめにするかといった設定ができる」というのを読み、もっとアンプセッティングについて積極的に知ろうと思いはじめました。 しかし、バンドでやる時に設定をいろいろ変えたりしているのですが、あまり変化がわかりません。 僕は耳が少し軟調気味なので、高音の聞こえが多少弱く、そのせいで倍音の出具合を感じにくいのかもしれませんが、バンドの音はそんなのは関係ないぐらいの音量ですからね・・・(大音量バンドということではなく普通のバンドですが、生ドラムの音量に合わせるという意味で) クリーン音の場合のゲインの使い方、コツなどを、詳しく説明してくださる方がいらっしゃいましたら、よろしくお願いします。

  • 音量に関して

    QUADのアンプ、パイオニアのCDマルチプレーヤーと6オームのBOSEのスピーカの組み合わせです。 寝室は8畳で寝るときに好きな音楽を聴くのですがQUADのアンプのボリュームはノッチタイプで最低ボリュームにしても、CDによっては音が大きく困っています。こんなときはどのようにすれば音量調節が可能なのでしょうかイコライザーを使うなどではなく、単純な方法はありますか?

  • midiの音が大きいのですが…。

    midiを再生するとやたらと音量が大きいんです。 ボリュームはほとんど消音に近い状態にしてます。 (目盛で言うと2です。1で消音。) CDなどの音楽はすごく小さい音ですが、midiはかなり大きいんです。 ボリュームコントロールを開くと、「SWシンセサイザ」の部分だけ高い位置に設定してあったのでこれかな?と思い、下げました。 しかし、再生してもぜんぜん変わっていません。 もう一度ボリュームコントロールを開くと何故か元の位置に戻っていました。 どうすればいいのでしょうか? パソコンはつい最近買ったばかりなのに、いくらやっても変わらないんです。 再インストールだけは避けたいです。

  • ボリュームが大きすぎて困ってます

    ボリュームコントロールで音量を最小に設定しても大きめな音が出ます。 ミュートからボリュームを上げても徐々に音が聞こえてくる訳ではなく、聞こえてくる最低のレベルに設定しても「微かに聞こえる」レベルよりかなり大きな音量になってしまいます。 イヤホンをしても音漏れしてしまいますし、もう少し小さな音量で音楽などをPCで楽しみたいのですが、何か良い方法はないでしょうか? 分かりにくい質問になってしまって申し訳ありませんが回答お待ちしております。

  • 音が割れる・・

    音楽を聴いたりすると音が割れます なぜなのでしょうか? 音量を下げてもなおりません スピーカーが悪いのかなと思って スピーカーをはずして、ディスプレイから 音を出しても割れます ボリュームコントロールの設定が間違っているのでしょうか? OSはXPです

  • アッテネーター

    アンプについての質問です。アンプで音量をコントロールするつまみ(gainとかvolume)が1つしかないとき、何か何かと不便なので、マスターヴォリュームを増設するか、アッテネーターを購入するか、選択肢があると思うのですが、アッテネーターの場合、音がそれを通った音になるといわれています。しかし、前者の増設する場合でも、やはりその回路を通ることになるので、音に何かしらの変化があると思います。実際のところどうなのでしょうか?

専門家に質問してみよう