AudioKit 4.6 版本:AKMIDICallbackInstrument 不回调
AudioKit 4.6 release: AKMIDICallbackInstrument not calling back
对 4.6 中的所有添加感到非常兴奋!在查看大部分更改后,我没有看到 AKMIDICallbackInstrument
中有任何明显不同,但是,我无法再让呼叫恢复工作。这是我的实现:
var sequencer: AKSequencer = AKSequencer()
var callbackTrack: AKMusicTrack = AKMusicTrack()
var callbackInst: AKMIDICallbackInstrument = AKMIDICallbackInstrument()
---
public func setupSequencerWithBeats(beats: Int, bpm: Double) {
print("Num beats: \(beats) | BPM: \(bpm)")
sequencer.setTempo(bpm)
callbackTrack = sequencer.newTrack()!
callbackTrack.setMIDIOutput(callbackInst.midiIn)
for i in 0 ..< beats {
callbackTrack.add(noteNumber: MIDINoteNumber(60), velocity: 100, position: AKDuration(beats: Double(i)), duration: AKDuration(beats: 1))
}
callbackInst.callback = {status, noteNumber, velocity in
//Using the new AKMIDIStatus object to unwrap the status and check if it's .noteOn
if let midiStatus = AKMIDIStatus(byte: status), midiStatus.type != .noteOn
{
return
}
// just some delegates to other classes
self.sequencerdDelegate?.didRecieveCallbackFromSequencer(beatNumber: self.beatNumber)
self.beatNumber += 1
}
当我调用 sequencer.play()
时,callbackInst
无法再触发回调。我在这里的假设是 setMIDIOutput()
方法有什么变化吗?如果有更好的方法在我的音序器中触发 .noteOn 事件时获得回调,我很想知道。谢谢大家!
感谢 AudioKit 贡献者 oettam 看到 4.6.0 中的一个非常小的变化影响了所有 MIDI 组件!此问题已在 4.6.1 中修复!他的承诺:https://github.com/AudioKit/AudioKit/commit/dcfbbb98058425e43af23b9df69fd9794ecc34d5
对 4.6 中的所有添加感到非常兴奋!在查看大部分更改后,我没有看到 AKMIDICallbackInstrument
中有任何明显不同,但是,我无法再让呼叫恢复工作。这是我的实现:
var sequencer: AKSequencer = AKSequencer()
var callbackTrack: AKMusicTrack = AKMusicTrack()
var callbackInst: AKMIDICallbackInstrument = AKMIDICallbackInstrument()
---
public func setupSequencerWithBeats(beats: Int, bpm: Double) {
print("Num beats: \(beats) | BPM: \(bpm)")
sequencer.setTempo(bpm)
callbackTrack = sequencer.newTrack()!
callbackTrack.setMIDIOutput(callbackInst.midiIn)
for i in 0 ..< beats {
callbackTrack.add(noteNumber: MIDINoteNumber(60), velocity: 100, position: AKDuration(beats: Double(i)), duration: AKDuration(beats: 1))
}
callbackInst.callback = {status, noteNumber, velocity in
//Using the new AKMIDIStatus object to unwrap the status and check if it's .noteOn
if let midiStatus = AKMIDIStatus(byte: status), midiStatus.type != .noteOn
{
return
}
// just some delegates to other classes
self.sequencerdDelegate?.didRecieveCallbackFromSequencer(beatNumber: self.beatNumber)
self.beatNumber += 1
}
当我调用 sequencer.play()
时,callbackInst
无法再触发回调。我在这里的假设是 setMIDIOutput()
方法有什么变化吗?如果有更好的方法在我的音序器中触发 .noteOn 事件时获得回调,我很想知道。谢谢大家!
感谢 AudioKit 贡献者 oettam 看到 4.6.0 中的一个非常小的变化影响了所有 MIDI 组件!此问题已在 4.6.1 中修复!他的承诺:https://github.com/AudioKit/AudioKit/commit/dcfbbb98058425e43af23b9df69fd9794ecc34d5