質問内容
質問を評価する
(0ポイント)
|
質問失礼致します、PCのマイク入力端子経由に接続した マイクからの音声を常時取得し、その音量を常時表示す るプログラムを組みたいのですが上手く動作しません。
getLevel()メソッドを利用し、float型の変数でその数 値を保持したいのですが、値は『-1.0』となってしま い、正常値を返さないのです。(正常であれば0.0〜1.0 の間でfloat型の数値を返すはずなのですが・・)
以下、書いたコードを記載致します。(書いたソースで は常時ではなく、for文で10000回取得するようにしてあ ります)
皆様お忙しい中本当に申し訳ないのですが、どこがいけ ないのか、またどうすれば意図した動作になるのか、ご 教授頂けますでしょうか。
宜しくお願い致します(^-^)
import java.io.*; import javax.sound.sampled.*;
public class MicrophoneIn2 { public static void main(String[] args) {
try { System.out.println("入力開 始"); AudioFormat linearFormat = new AudioFormat(8000,16,1,true,false); // ターゲットデータライン を取得する DataLine.Info info = new DataLine.Info(TargetDataLine.class,linearFormat); TargetDataLine targetDataLine = (TargetDataLine)AudioSystem.getLine(info); // ターゲットデータライン をオープンする targetDataLine.open(linearFormat); targetDataLine.start();
// ボリュームレベルを常時取得し続ける for (int i = 0; i < 10000; i++) {
float x = targetDataLine.getLevel(); System.out.println(x); try { Thread.sleep(10); } catch (InterruptedException e) {}
} targetDataLine.stop(); // ターゲットデータライン をクローズ targetDataLine.close(); System.out.println("取得完 了"); } catch(Exception e) { e.printStackTrace(); } }
}
|