• 締切済み

音量のプログラミング

現在waveIn()関数を使って音声を取得するプログラムを作っています。このプログラムにある一定の音量以上でメッセージを出し、それ以下なら別のメッセージを出すというのをリアルタイムで実行したいのですが、どんな関数を使えばいいのかで戸惑っています。 何かいいものがあれば教えてください。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

リアルタイムってのも厳しいんじゃないですかねぇ……。 waveInOpen()でコールバックを指定して、WIM_DATAメッセージで通知されたデータブロックの内容を解析して…ということになるかと……。 「waveIn リアルタイム 波形」辺りで検索することになりますかねぇ。 # 軽く探した限りじゃなぜかVBばかり… WAVEFORMATEX構造体で指定した情報により、1サンプリングデータのビット数とかは判っているでしょうし。 なるべくリアルタイムに処理しようとしてWAVEHDR構造体でサイズを小さく設定した場合は…取りこぼしとか発生しませんかねぇ。 まぁ試したことはないのですが…。

bach663877
質問者

お礼

ご回答ありがとうございます。 そうなんです。検索はいろいろ試みているのですが、VBであったりとなかなか望むものまでたどり着けない場合がおおくて。 もう少し別な角度から追求してみます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

そんな関数は用意されていないと思う. そもそも何をもって「音量」とするのか書かれていないわけだし. 手を抜くなら RMS なり分散なりを使う... かなぁ?

bach663877
質問者

お礼

やはりそうですか。 まず音量以外の方法でもいいので音を認識したかどうか区別できる手段はないものでしょうか。 アドバイスおねがいします。

関連するQ&A