前提・実現したいこと
現在、UnityとC#で譜面を自動生成するプログラムを作ろうとしております。
今までは、曲の波形データからBPMと曲全体の音の大きさから曲の平均の音の大きさを調べて曲の各BPMのタイミングで「音の大きさが曲全体の音の大きさを超えてたら」譜面を生成するといった流れてやっておりましたが明らかに曲とあっていないように感じ周りの方からも全然合ってないと指摘されてしまいました。
私自身音声工学について知見がなく周りにも詳しい方がいないので、一般的にはどのように自動で譜面を生成されているのかご教授頂きたいです。。。
一応、次にこれから試そうとしているのは自分で調べたBPM自体は実際の曲のBPMと一致していたので、平均の音の大きさでやっていることが違うのかなと思い、音を周波数毎に分類して各BPMのタイミングで一番大きい周波数を注目して曲全体のその周波数の平均の大きさで生成するタイミングを決めた方がいいのかと思いました。
周波数取得までの流れは、AudioClipのGetDataで曲の波形データを取得して、C#のMathNet.Numericsを使って取得した波形データを先頭から2のべき乗(今回は2048)個ずつFFT処理を行い、渡した配列の秒数毎(サンプリング周波数44100Hz、チャンネル数2chなら0.023219954648526秒毎)に周波数を調べていく予定です。(今回リアルタイムではなく予め、譜面を生成したいのでAudioSouceのGetSpectrumDataは使わない予定です。)
長文で申し訳ないのですがどうか回答よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
MacBook Pro (15-inch, 2016)
プロセッサ : 2.6 GHz Intel Core i7
メモリ : 16 GB 2133 MHz LPDDR3
OS : macOS Mojave
Unityバージョン : Unity 2018.2.2f1
.Net バージョン : 4

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。