音楽ファイルを再生する小さなアプリケーションを作成したいと思います (形式はあまり関係ありません)。難しいのは、同時に、低周波 (低音)、中周波、高周波の現在の振幅を表示したいということです。
したがって、再生機能と一緒に、ある種の単純なスペクトル分析が必要になります。手間をかけずにこれを行うことができる C# オーディオ ライブラリはありますか?
このプロジェクトの目的は、最近自分の部屋に設置した RGB-LED 照明システムを駆動することです ;-)
NAudio : http://naudio.codeplex.com/ (オープンソース)
Bass and Bass.Net: http://www.un4seen.com/ (非営利目的は無料)
Fmod 例: http://www.fmod.org/index.html (非商用利用も無料)
Bass を使用して必要なことを行うのは非常に簡単です。
string filepath ="";
Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero, null);
int handle = Bass.BASS_StreamCreateFile(filepath, 0, 0, BASSFlag.BASS_SAMPLE_FLOAT);
Bass.BASS_ChannelPlay(handle,false);
次に、スペクトルを取得します。
float[] buffer = new float[256];
Bass.BASS_ChannelGetData(handle, buffer, (int)BASSData.BASS_DATA_FFT256);
そこから、特定の周波数の帯域を簡単に平均化できます