2017-05-23 5 views
0

mp3形式の音楽ファイルの周波数特性に関する情報を取得しようとしました。mp3の周波数

C++でmp3ファイルから周波数を取得するにはどうすればよいですか?そして、fftwライブラリはどのようなデータを扱うのですか?

+0

のような処理ライブラリを通知するためのデータは多くの場合、最も簡単な方法は、MP3ファイルをWAVに変換することであることを供給することによって、あなたが望む結果を得るために、このようなPortAudioなどのオーディオライブラリを使用することができます'sox'のようなものです。 WAVはC++から読みやすいです。 – MSalters

答えて

2

これは2段階のプロセスです。まず、mp3ファイルをC++プログラムの好みのデータ構造に読み込む必要があります。ほとんどのmp3ファイルはステレオ形式で、各チャンネルに1つずつ、2つの配列/ベクトルを持つことになります。 FFTWは2つのステップでも動作します。まず、データ、FFTポイント数、逆方向/順方向FFT方向などを記述するプランを作成します。次のステップでは、このプランと入力データを使用して周波数変換を計算します。結果として生じたfloat/double complex配列の大きさ応答をFFTWから取り出すことができます。 FFTWチュートリアルへのリンクhttp://www.fftw.org/fftw2_doc/fftw_2.html

これらの手順を手作業で行う必要はありません。Marsyasのように、これを行うことができるオープンソースの音楽情報検索ライブラリがたくさんあります。また、既存のツールを使用して、オーディオデータを取得し、openvsipまたはLiquidDSP

+0

あなたの答えをありがとう。私は正しい瞬間を正しく理解していますか?mp3形式のaudiodataは圧縮されており、周波数に関する正しい情報を得るには、fftwを使用する前に.wavに変換することが望ましいでしょうか、それとも重要ではありませんか? – cranberry

+0

MP3は損失の多いデータ圧縮方式です。つまり、FFTをMP3フレーム(データ部分)に直接適用すると、元の周波数スペクトルに若干の違いがありますが、まだかなり近いはずです。 Wav形式に変換すると、おそらくオーディオデータを処理する可能性がさらに広がります。しかし、これが自己学習や割り当てのためのものでなければ、私が以前に言ったように、MP3を読むことをサポートするオーディオライブラリを使用するべきです – fsheikh