Нет звука с цепочками AKSequencer и AKSampler - PullRequest
1 голос
/ 03 апреля 2020

Я использую AudioKit 4.9.5. Я пытаюсь играть в весы, используя AKSequencer.

Вот как я использую AudioKit. Init:

    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

Я не знаю, почему нет звука. Может быть, я что-то упустил в цепочке узлов?

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Вот пример псевдо, кто работает:

let sequencerMixer = AKMixer()
let sampler = AKSampler()
...
sequencer = AKSequencer(targetNode: sampler)
...
let newTrack = sequencer.addTrack(for: sampler)
newTrack >>> sequencerMixer
...
AudioKit.output = AKMixer(sequencerMixer, sampler)
0 голосов
/ 05 апреля 2020

Просто нужно, чтобы треки были в цепочке сигналов, как в моем ответе здесь: Как играть в MIDI с новым AKSequencer AudioKit

...