iOS で (ワンショット) オーディオ効果を (ループする) バックグラウンド ミュージックのビートと同期させるのが好きです。
そのタスクにどのようにアプローチすればよいですか?
編集: 詳細を説明するために、バックグラウンド ミュージックが 4 小節にわたってループするとします。次の 8 番目 (または 16 番目または 4 番目...) の音符で (オーディオ エフェクトの) 別のオーディオ ファイルの再生を開始できるようにしたいと考えています。
単純。それらを同じタイムライン (オーディオ再生コールバックなど) に配置し、入力テンポを使用して、サンプル (または MIDI イベントを使用する場合はティック) のメトリック間隔を決定します。
アップデート
double SamplesPerBeat(const double audioSampleRate,
const double beatsPerMinute) {
assert(8000.0 <= audioSampleRate && 192000.0 >= audioSampleRate);
assert(20.0 <= beatsPerMinute && 500.0 >= beatsPerMinute);
return audioSampleRate / beatsPerMinute;
}
uint32_t StartPosition(const double audioSampleRate,
const double beatsPerMinute,
const uint32_t beatNumber) {
const double samplesPerBeat = SamplesPerBeat(audioSampleRate, beatNumber);
return (uint32_t)floor(samplesPerBeat * beatNumber);
}