我喜欢在iOS上与(循环)背景音乐的节拍同步(一次性)音频效果。
我该如何处理这项任务?
编辑:所以,要提供更多细节,请说背景音乐循环超过4个小节。我希望能够在接下来的第8个(或第16个或第4个......)音符上开始播放另一个音频文件(音频效果)。
答案 0 :(得分:0)
简单。将它们放在同一时间轴上(例如音频播放回调),并使用输入速度来确定样本中的度量间隔(如果使用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);
}