2012-10-23 32 views
6

オーディオファイルから振幅などの音楽情報をどのように取得できるのでしょうか?オーディオファイルの波形をJavaで取得する

生のオーディオファイルがあるとします。ファイルからデータを抽出して、私がhttp://www1.icsi.berkeley.edu/Speech/mr/nearfar.htmlのようなカーブを生成できるようにしたいとします。私はこの曲線を取得したら、私はFFTを実行します、など

enter image description here

私は、Javaサウンドのソリューションを検索しようとしているが、何私は今のところ知っていることは、私はにデータを注ぐことができるということですされていますbyte[]AudioInputStreamを使用してください。 しかし、byte[]double[]に変換するにはどうすればよいですか?この場合、double[]の値は振幅を表します。

誰でもJavaでこの問題を解決するソリューションを提供できますか?

答えて

5

典型的なwavファイルを使用すると、各二つの連続バイト、B1とB2を取り、次のように振幅を得ることができるので、16ビットリトルエンディアンです:

(double) (b2 << 8 | b1 & 0xFF)/32767.0; 

入力がステレオであれば、最初の2つのバイトです左チャンネル、右チャンネルの2バイトです。

+0

もちろん、最初にヘッダーを読み取る必要があります。 –

+2

@BjornRoche:OPは「AudioInputStream」の使用について話しましたが、ヘッダをスキップして有効なPCMバイトのみを返します。 –

+0

あなたは正しいです、申し訳ありません。 –

関連する問題