ビート検出とFFT
私はビート検出付きの音楽を含むプラットフォーマーゲームに取り組んでいます。現在、現在の振幅が履歴サンプルを超えているかどうかを確認することで、ビートを検出しています。これは、かなり安定した振幅を持つロックなどの音楽のジャンルではうまく機能しません。 そこで、さらに調べて、FFTを使用してサウンドを複数の帯域に分割するアルゴリズムを見つけました...そして、Cooley-Tukey FFtアルゴリズムを見つけました 私が抱えている唯一の問題は、私がオーディオにまったく慣れていないことであり、それを使用して信号を複数の信号に分割する方法がわかりません。 だから私の質問は: FFTを使用して信号を複数の帯域に分割する方法 また、興味のある人のために、これはc#の私のアルゴリズムです: // C = threshold, N = size of history buffer / 1024 public void PlaceBeatMarkers(float C, int N) { List<float> instantEnergyList = new List<float>(); short[] samples = soundData.Samples; float timePerSample = 1 / (float)soundData.SampleRate; int sampleIndex = 0; int nextSamples = 1024; // …