[英]How to generate repeating sound with AudioKit in swift
我正在嘗試制作可以重復播放聲音(BPM)和有/沒有每個大頭釘音量的節拍器應用程序。 我試圖用Timer
和GCD Timer
來實現這一點:
let interval = TimeInterval(Double(60) / Double(bpm))
timer = Timer.scheduledTimer(timeInterval: interval,
target: self,
selector: #selector(playTackt),
userInfo: nil,
repeats: true
@objc func playTackt(){
if shouldPlaySoundTackts{
audioPlayer.volume = 1
playedSoundTackts += 1
if playedSoundTackts == soundTackts{
shouldPlaySoundTackts = false
playedSoundTackts = 0
}
}else{
audioPlayer.volume = 0
playedMuteTackts += 1
if playedMuteTackts == muteTackts{
shouldPlaySoundTackts = true
playedMuteTackts = 0
}
}
audioPlayer.play()
}
但問題是 Timer 有一些以毫秒為單位的滯后。 然后我嘗試使用audioPlayerDidFinishPlaying
方法重播聲音,但它會在聲音完成播放后約 0.5 秒后調用。 那么是否有另一種方法可以使用 bpm 和使用/不使用每個大頭釘音量來生成或重復聲音?
您可以嘗試使用 Sequencer 或 AppleSequencer 並將音符分配為 Midi。 AppleSampler 的一個已知缺點是播放第一個音符時會有延遲。 您可以在 Github 上的 AudioKit/Cookbook 的 Shaker 示例中看到 MusicToy 中的 AppleSequencer 示例和 Sequencer 示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.