質問: アンドロイドのアプリ開発でmp3の音楽データをフーリエ変換し、ドラムなどが鳴っている低音域のデータだけを数値として取得したいのですが、androidのアプリ開発経験がなく、困っています。 プログラムの作成順として音楽データを取得してからどのようにフーリエ変換を行ったら良いのでしょうか? 曖昧な質問ですが、よろしくお願い致します。
回答: API level9であればSDKにFFTライブラリーが含まれているそうです。 AndroidでFFT(高速フーリエ変換) これを使えばFFTは行えそうですね。 > > 低音域のデータだけを数値として取得 > > > 「低音域のデータ」というのが周波数スペクトルであると仮定すればFFTの結果そのものです。ある周波数幅をもったスペクトルを集約したデータということなら以下の質問の回答にヒントがあるように思います。 リアルタイムでマイクから拾った音の音域を取得するには 追記: 興味があるのが人間の可聴域だとするとFFT区間を1分にとるのは処理が重いというより「有意なデータを計算するには無駄な区間長」だと思います。可聴域の最低は20Hzぐらいですからサンプリング周波数がfだとするとf/20程度の区間でよいと思います。FFTの計算量はN log Nのオーダーなので長い区間の分析をするとしても、N=W*Mの区間を一度に計算するよりN=Wの区間をM回計算した方が計算量が少なくなると思います。