【发布时间】:2018-08-10 07:16:43
【问题描述】:
我正在尝试使用 AudioKit 的 AKPlayer 同步播放 4 个 mp3 文件,并且非常成功。不过,作为我 Swift 研究的一部分,我想使用数组(或者我还没有学过的东西)来简化我的代码,因为我觉得我的代码中有一些多余的东西,只是将玩家代码复制了四次。下面是我写的代码:
let file1 = try? AKAudioFile(readFileName: "mixing_1_vocal.mp3")
let file2 = try? AKAudioFile(readFileName: "mixing_2_drums.mp3")
let file3 = try? AKAudioFile(readFileName: "mixing_3_synth.mp3")
let file4 = try? AKAudioFile(readFileName: "mixing_4_bass.mp3")
let player1 = AKPlayer(audioFile: file1!)
let player2 = AKPlayer(audioFile: file2!)
let player3 = AKPlayer(audioFile: file3!)
let player4 = AKPlayer(audioFile: file4!)
let startTime = AVAudioTime.now() + 0.25
let mixer = AKMixer()
player1 >>> mixer
player2 >>> mixer
player3 >>> mixer
player4 >>> mixer
player1.isLooping = true
player1.buffering = .always
player2.isLooping = true
player2.buffering = .always
player3.isLooping = true
player3.buffering = .always
player4.isLooping = true
player4.buffering = .always
AudioKit.output = mixer
try? AudioKit.start()
player1.start(at: startTime)
player2.start(at: startTime)
player3.start(at: startTime)
player4.start(at: startTime)
就是这样!有四个不同的轨道(单独的乐器),它们应该同时播放,无限循环。如果有人可以帮助我改进我的代码,那将非常有帮助。是否有更好的方法来执行相同的工作?
【问题讨论】: