如何在 swift 中使用 AudioKit 生成重复声音
How to generate repeating sound with AudioKit in swift
我正在尝试制作重复播放声音 (BPM) 和 with/without 每个音调音量的节拍器应用程序。我试图通过 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 和 with/without 每个大头音音量生成或重复声音?
您可以尝试使用 Sequencer 或 AppleSequencer 并将音符分配为 Midi。 AppleSampler 的一个已知缺点是第一个音符播放的延迟。您可以在 Github.
上的 AudioKit/Cookbook 的 Shaker 示例中看到 MusicToy 和 Sequencer 中的 AppleSequencer 示例
我正在尝试制作重复播放声音 (BPM) 和 with/without 每个音调音量的节拍器应用程序。我试图通过 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 和 with/without 每个大头音音量生成或重复声音?
您可以尝试使用 Sequencer 或 AppleSequencer 并将音符分配为 Midi。 AppleSampler 的一个已知缺点是第一个音符播放的延迟。您可以在 Github.
上的 AudioKit/Cookbook 的 Shaker 示例中看到 MusicToy 和 Sequencer 中的 AppleSequencer 示例