AKMIDICallbackInstrument - 未调用回调
AKMIDICallbackInstrument - callback NOT called
如何复制
- 我将 "Callback Instrument" 游乐场(有效)复制到一个新项目中。通过 pod(版本 4.8)安装了 AudioKit
- 我删除了回调的实现,只放了一个
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()
}
}
会发生什么
- 回调没有被调用(print log没有打印)
- 我能听到添加音符的声音。
- 此代码适用于示例游乐场。
如果您听到声音,但尚未将音轨连接到音频生成输出,那么您可能听到的是默认采样器。在 'Background Modes' 中,如果您没有启用音频,就会发生这种情况。如果您查看控制台输出,您应该会看到一条消息,指示您确保它已启用 - MusicSequence
/AKAppleSequencer
.
是必需的
如何复制
- 我将 "Callback Instrument" 游乐场(有效)复制到一个新项目中。通过 pod(版本 4.8)安装了 AudioKit
- 我删除了回调的实现,只放了一个
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()
}
}
会发生什么
- 回调没有被调用(print log没有打印)
- 我能听到添加音符的声音。
- 此代码适用于示例游乐场。
如果您听到声音,但尚未将音轨连接到音频生成输出,那么您可能听到的是默认采样器。在 'Background Modes' 中,如果您没有启用音频,就会发生这种情况。如果您查看控制台输出,您应该会看到一条消息,指示您确保它已启用 - MusicSequence
/AKAppleSequencer
.