无法将 .wav 文件加载到新的 AKSampler

Can't load .wav file to the new AKSampler

我正在尝试用新的 AKSampler 替换 AKMidiSamplerAKPlayer,但是出于某种原因,新采样器无法播放旧采样器播放的 AKAudioFiles

这是一个使用所有三个采样器的小代码示例:AKMidiSamplerAKPlayer 和新的 AKSampler 。 全部加载相同的 AKAudioFile。 如果运行原样,则不会播放任何声音。

取消注释时

player.play()

try auSampler.play(noteNumber: 60, velocity: 127, channel: 0)

会有声音

我的猜测是我没有正确使用 AKSampleDescriptor, 我用它作为例子 here.

import Foundation
import AudioKit

class Conductor {
    var sampler   = AKSampler()
    var auSampler = AKMIDISampler()
    var player    = AKPlayer()
    var mixer     = AKMixer()

    init() {
        do {
            let akfile = try AKAudioFile(readFileName: "Drums.wav")



            let descriptor = AKSampleDescriptor(noteNumber: 60,
                                                noteFrequency: Float(AKPolyphonicNode.tuningTable.frequency(forNoteNumber: 60)),
                                                minimumNoteNumber: 0,
                                                maximumNoteNumber: 127,
                                                minimumVelocity: 0,
                                                maximumVelocity: 127,
                                                isLooping: true,
                                                loopStartPoint: 0.0,
                                                loopEndPoint: 1.0,
                                                startPoint: 0.0,
                                                endPoint: 0.0)

            sampler.loadAKAudioFile(from: descriptor, file: akfile)
            try auSampler.loadAudioFile(akfile)
            player = akfile.player

            [player, sampler, auSampler] >>> mixer
            AudioKit.output = mixer
            try AudioKit.start()


//            player.play()
//            try auSampler.play(noteNumber: 60, velocity: 127, channel: 0)
            sampler.play(noteNumber: 60, velocity: 127)



        }
        catch {
            print("ehhhh...")
        }

    }


}

解决方案很简单,我只需添加以下行:

sampler.buildKeyMap()

加载示例后。 现在一切正常。