gpt4 book ai didi

AudioKit 节拍器与时间音调的音频循环同步

转载 作者:行者123 更新时间:2023-12-02 22:10:31 31 4
gpt4 key购买 nike

我正在制作一个使用节拍器播放同步音频循环的应用程序。例如,我可能有 3 个这样的文件:

  • bass_60bpm.m4a
  • drums_60bpm.m4a
  • guitar_60bpm.m4a

还有节拍器声音 tick.m4a,我用 AKSamplerMetronome 播放它。

我需要以任意速度播放它们,因此我在 AKAudioFile 上使用 AKTimePitcher(因此以 90bpm 播放,我会播放 bass_60bpm。 m4a 1.5x)。

这几乎可以工作,但是在 3-5 个循环之后,节拍器与音频循环不同步。我想我明白为什么会发生这种情况(audio_sample_length * float_point_number 不等于 AKSamplerMetronome 的节奏计算),但我不知道如何解决它。

我怀疑我需要做的是手动重新实现部分或全部 AKSamplerMetronome,但根据 AKTimePitcher 的输出播放节拍器滴答声,但我不能从 API、文档和示例中拼凑足够的信息来实现这一目标。

最佳答案

另一种方法可能是使用 AKSequencer 而不是 AKSamplerMetronome。音序器轨道的 MIDI 输出可以发送到 AKCallbackInstrument,音序器的事件可以获取回调函数来触发时间拉伸(stretch)样本和节拍器刻度(作为奖励,您还可以从那里触发同步 UI 事件) 。这将保证它们保持同步。

Apple 的 MusicSequence(AKSequencer 在后台使用的就是它)在调用播放后立即计时有点不稳定,但在那之后就非常稳定了。如果您在其循环点之前启动音序器(即,如果您有一个 1 小节循环,请在第一个小节结束之前的十六分之一音符处启动它),那么您可以在实际循环开始之前通过该片状声音。

关于AudioKit 节拍器与时间音调的音频循环同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51228198/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com