Вам просто нужно установить .fade
значения для вашего постепенного появления / исчезновения до вызова функции play (). 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