【问题标题】:AKMIDICallbackInstrument - callback NOT calledAKMIDICallbackInstrument - 未调用回调
【发布时间】:2019-09-16 10:16:03
【问题描述】:

如何复制

  • 我将“Callback Instrument”游乐场(有效)复制到了一个新项目中。通过 pod 安装 AudioKit(4.8 版)
  • 我删除了回调的实现,只放了一个print() 语句。
  • 打开工作区并运行项目。
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()
    }
}

会发生什么

  • 未调用回调(未打印打印日志)
  • 我可以听到添加音符的声音。
  • 此代码适用于示例 Playground。

【问题讨论】:

    标签: audiokit


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 2018-01-09
    • 2014-05-30
    • 2014-12-31
    • 2019-02-12
    相关资源
    最近更新 更多