AKMIDICallbackInstrument - 未调用回调

AKMIDICallbackInstrument - callback NOT called

如何复制

import UIKit
import AudioKit

class ViewController: UIViewController {

    var sequencer = AKAppleSequencer()
    var tempo = 120.0
    var division = 1

    var callbacker = AKMIDICallbackInstrument { statusByte, note, _ in
        print("Callback called")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        let clickTrack = sequencer.newTrack()
        for i in 0 ..< division {
            clickTrack?.add(noteNumber: 80,
                            velocity: 100,
                            position: AKDuration(beats: Double(i) / Double(division)),
                            duration: AKDuration(beats: Double(0.1 / Double(division))))
            clickTrack?.add(noteNumber: 60,
                            velocity: 100,
                            position: AKDuration(beats: (Double(i) + 0.5) / Double(division)),
                            duration: AKDuration(beats: Double(0.1 / Double(division))))
        }

        clickTrack?.setMIDIOutput(callbacker.midiIn)
        clickTrack?.setLoopInfo(AKDuration(beats: 1.0), numberOfLoops: 10)
        sequencer.setTempo(tempo)

        sequencer.play()
    }
}

会发生什么

如果您听到声音,但尚未将音轨连接到音频生成输出,那么您可能听到的是默认采样器。在 'Background Modes' 中,如果您没有启用音频,就会发生这种情况。如果您查看控制台输出,您应该会看到一条消息,指示您确保它已启用 - MusicSequence/AKAppleSequencer.

是必需的