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()
    }

person Scott Johnson    schedule 10.09.2020    source источник


Ответы (1)


вам необходимо подключить семплер к микшеру:

sampler >>> mixer

Fwiw, midicallback >>> mixer не требуется с _3 _ / _ 4_, хотя было бы с _5 _ / _ 6_

person c_booth    schedule 10.09.2020
comment
Благодарность! Я попробую! Разве это не достигается уже с помощью AKMixer (сэмплер)? И хорошо помнить о мидикалбэках, у меня только что было много итераций, когда я чувствую, что все связано с моей сигнальной цепочкой, и я вижу, как ноты воспроизводятся во многих разных итерациях, и не слышал звука ни в одной из своих попыток. - person Scott Johnson; 11.09.2020
comment
Извините, я пропустил AKMixer (сэмплер), этого может быть достаточно, но все же стоит попробовать. Хорошая стратегия отладки - убедиться, что вы можете получить звук независимо от секвенсора (например, запускать кнопкой), возможно, без sfz. Или, в качестве альтернативы, попробуйте секвенсор с AKAppleSampler (с синтезатором по умолчанию), чтобы убедиться, что вы можете получить звук таким образом, и попытайтесь определить, в чем проблема. - person c_booth; 11.09.2020
comment
Спасибо за совет! Переход на AKAppleSampler по умолчанию сработал отлично (хотя я все еще вызываю каждую ноту дважды, думаю, мне нужно правильно настроить ее как проводник) ... теперь я понятия не имею, почему другая не сработала ... - person Scott Johnson; 11.09.2020