1

我喜欢在 iOS 上将(单次)音频效果与(循环)背景音乐的节拍同步。

我该如何处理该任务?

编辑:所以,为了提供更多细节,假设背景音乐循环超过 4 个小节。我希望能够在下一个第 8 个(或第 16 个或第 4 个......)音符上开始播放另一个音频文件(音频效果)。

4

1 回答 1

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);
}
于 2012-04-29T18:36:18.507 回答