1

I'm using AudioKit 4.9.5. I'm trying to play scales using AKSequencer.

Here's how i'm using AudioKit. The 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

Next to this, I'm initializing the conductor:

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

Finally, my custom sequencer:

    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

And this is how I'm creating the tracks:

   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

I don't know why there's not sound. Maybe I'm missing something on the node chaining?

NikLoy
  • 428
  • 6
  • 15
  • Here is my connections: (0]Local AKSampler <2 ch, 44100 Hz, Float32, non-inter> -> (2]AUMultiChannelMixer) bus: 0 (0]Local AKSampler <2 ch, 44100 Hz, Float32, non-inter> -> (2]AUMultiChannelMixer) bus: 1 (1]Local AKSequencerTrack <2 ch, 44100 Hz, Float32, non-inter> -> (2]AUMultiChannelMixer) bus: 2 (2]AUMultiChannelMixer <2 ch, 44100 Hz, Float32, non-inter> -> (4]AURemoteIO) bus: 0 (3]Local AKSequencerTrack <2 ch, 44100 Hz, Float32, non-inter> -> (2]AUMultiChannelMixer) bus: 3 – NikLoy Apr 03 '20 at 23:04

2 Answers2

0

Just need the tracks to be in the signal chain, like in my answer here: How to play MIDI with AudioKit's new AKSequencer

Aurelius Prochazka
  • 4,510
  • 2
  • 11
  • 34
0

Here's a sample pseudo who work:

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