AudioKit:通过AKPlayer循环注入静音/淡入淡出的方法吗?

时间:2019-01-09 00:34:01

标签: ios audiokit

在我的应用中,我为用户提供了播放一小帧音频(来自较大的音频文件)的选项,以便一遍又一遍地聆听以进行手动转录。 AKPlayer使这个琐碎。现在,由于音频帧很小,因此一遍又一遍地听到这种循环的声音非常强烈(在古典意义上有点发疯)。我想通过循环淡入淡出/使其淡入,或者只是在循环再次开始之前注入500毫秒的静默。我不知道从哪里开始,这是当前的工作代码:

public func playLoop(start: Double, end: Double) {
        self.chordLoopPlayer.isLooping = true
        self.chordLoopPlayer.buffering = .always
        self.chordLoopPlayer.preroll()
        let millisecondsPerSample : Double = 1000 / 44100
        let startingDuration : Double = (((start * millisecondsPerSample) / 1000) / 2)
        let endingDuration : Double = (((end * millisecondsPerSample) / 1000) / 2)
        print("StartinDuration:\(startingDuration) | EndingDuration:\(endingDuration)")
        self.chordLoopPlayer.loop.start = startingDuration
        self.chordLoopPlayer.loop.end = endingDuration

        self.chordLoopPlayer.play(from: startingDuration, to: endingDuration)

非常感谢<3

1 个答案:

答案 0 :(得分:1)

您只需要在调用play()函数之前为淡入/淡出设置.fade值。每当进入和退出循环时,AudioKit都会执行它们。因此,假设您需要2秒的淡入淡出和2秒的淡入淡出(根据您的喜好进行调整),您的代码应如下所示:

public func playLoop(start: Double, end: Double) {
    self.chordLoopPlayer.isLooping = true
    self.chordLoopPlayer.buffering = .always
    self.chordLoopPlayer.preroll()
    let millisecondsPerSample : Double = 1000 / 44100
    let startingDuration : Double = (((start * millisecondsPerSample) / 1000) / 2)
    let endingDuration : Double = (((end * millisecondsPerSample) / 1000) / 2)
    print("StartinDuration:\(startingDuration) | EndingDuration:\(endingDuration)")
    self.chordLoopPlayer.loop.start = startingDuration
    self.chordLoopPlayer.loop.end = endingDuration

    // add fade in/out values to fade in or fade out during playback; reset to 0 to disable.
    self.chordLoopPlayer.fade.inTime = 2 // in seconds
    self.chordLoopPlayer.fade.outTime = 2 // in seconds

    self.chordLoopPlayer.play(from: startingDuration, to: endingDuration)
}

在这方面,我发现AudioKit文档有些令人沮丧,因为如果您还不知道要查找的内容,或者如果您不知道如何使用它们,要找到这些属性并不是一件容易的事。还没有遇到示例代码,所以我希望这对于碰巧在SO上搜索此主题的其他人来说是一个有用的示例。无论如何,与AudioKit的.fade属性关联的子属性的列表在此处:https://audiokit.io/docs/Classes/AKPlayer/Fade.html