AKSequencer 和 AKSampler 链接没有声音

No sound with AKSequencer and AKSampler chaining

我正在使用 AudioKit 4.9.5。 我正在尝试使用 AKSequencer 演奏音阶。

以下是我使用 AudioKit 的方式。 初始化:

    AKAudioFile.cleanTempDirectory()
    AKSettings.bufferLength = .medium
    AKSettings.playbackWhileMuted = true
    AKSettings.audioInputEnabled = true

    tracker = AKFrequencyTracker(mic)
    silence = AKBooster(tracker, gain: 0)

    try? AKSettings.setSession(category: .playAndRecord,
                               with: [.defaultToSpeaker, .mixWithOthers])

    mixer = AKMixer(silence, conductor.sampler)
    AudioKit.output = mixer

接下来,我正在初始化导体:

init() {
    let info = ProcessInfo.processInfo
    let begin = info.systemUptime

    let soundsFolder = Bundle.main.bundleURL.path

    AKSettings.bufferLength = .medium
    AKSettings.enableLogging = true

    // Signal Chain
    sampler = AKSampler()
    sampler.loadSFZ(path: soundsFolder, fileName: "Sax.sfz")

    sampler.attackDuration = 0.01
    sampler.decayDuration = 0.1
    sampler.sustainLevel = 0.8
    sampler.releaseDuration = 0.5

    sequencer = Sequencer(name: "Scale", targetNode: sampler)

    let elapsedTime = info.systemUptime - begin
    print("Time to setup sampler \(elapsedTime) seconds")
  }

最后,我的自定义音序器:

    self.name = name
    self.targetNode = targetNode
    self.track = AKSequencerTrack(targetNode: targetNode) //target node is my sampler
    self.sequencer = AKSequencer(targetNode: targetNode) //target node is my sampler

这就是我创建曲目的方式:

   let newTrack = AKSequencerTrack(targetNode: targetNode)
    for step in track.steps {
      for note in step.notes {
        newTrack.add(noteNumber: MIDINoteNumber(note.rawValue), position: step.position, duration: step.duration)
      }
    }

    self.track = sequencer.addTrack(for: newTrack)

    sequencer.tempo = tempo.bpm
    sequencer.length = newTrack.length

    sequencer.loopEnabled = loopEnabled

不知道为什么没有声音。也许我在节点链接上遗漏了什么?

只需要轨道位于信号链中,就像我在这里的回答:How to play MIDI with AudioKit's new AKSequencer

这是一个工作的伪造者示例:

let sequencerMixer = AKMixer()
let sampler = AKSampler()
...
sequencer = AKSequencer(targetNode: sampler)
...
let newTrack = sequencer.addTrack(for: sampler)
newTrack >>> sequencerMixer
...
AudioKit.output = AKMixer(sequencerMixer, sampler)