簡體   English   中英

如何在 swift 中使用 AudioKit 生成重復聲音

[英]How to generate repeating sound with AudioKit in swift

我正在嘗試制作可以重復播放聲音(BPM)和有/沒有每個大頭釘音量的節拍器應用程序。 我試圖用TimerGCD 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM