首页 > 解决方案 > Audiokit AKSampler 不播放声音

问题描述

目前正试图让我的 AKSampler 播放我发送的声音,但没有太多运气让音频输出。我的 AKMidiCallbackInstrument 正在正确记录播放的音符(尽管我看到每个音符的打印两次..)但是,对我的采样器的调用没有产生任何音频,我不知道为什么。

class Sequencer {
    
    var sampler: AKSampler
    var sequencer: AKAppleSequencer
    var mixer: AKMixer
    
    init() {
        sampler = AKSampler()
        sequencer = AKAppleSequencer()
        mixer=AKMixer(sampler)
        let midicallback = AKMIDICallbackInstrument()
        let url = Bundle.main.url(forResource: "UprightPianoKW-20190703", withExtension: "sfz")!;
        let track = sequencer.newTrack()
        track?.setMIDIOutput(midicallback.midiIn)

        sampler.loadSFZ(url: url)
   
        //generate some notes and add thtem to the track
        generateSequence()
        
        midicallback >>> mixer
        AudioKit.output = mixer
        AKSettings.playbackWhileMuted = true
        AKSettings.audioInputEnabled = true


        midicallback.callback = { status, note, vel in
            guard let status = AKMIDIStatus(byte: status),
                let type = status.type,
                type == .noteOn else { return print("note off: \(note)") }
            print("note on: \(note)")
            self.sampler.play(noteNumber: note, velocity: vel)        }

    }
    
    
    func play() {
        try? AudioKit.start()

        sequencer.rewind()
        sequencer.play()
        try? AudioKit.stop()
    }
    
    func stop() {
        sequencer.stop()
    }

标签: audiokit

解决方案


您需要将采样器连接到混音器:

sampler >>> mixer

Fwiw, midicallback >>> mixer不是必须的AKAppleSequencer/AKMIDICallbackInstrument尽管它会是AKSequencer/AKCallbackInstrument


推荐阅读