Мне интересно, как лучше всего иметь AKSequencer (на самом деле AKMusicTrack), выводить его MIDI на внешнее устройство.
Я получил его на работу, но я чувствую, что, вероятно, естьболее эффективный способ.
Способ, которым я это сделал:
Я создал подкласс AKPolyphonicNode ("MyPolyphonicNode")
Я использовал это для инициацииподкласс AKMIDINode ("MyMIDINode"),
class MyMIDINode:AKMIDINODE {
init(...) {
...
let myPolyphonicNode = MyPolyphonicNode()
super.init(node: myPolyphonicNode, midiOutputName: "myMIDIOutput")
...
}
//etc
}
и setMIDIoutput вывода AKMusicTrack в midiIn подкласса AKMIDINode:
track.setMIDIOutput(myMIDINode.midiIn)
Затем в подклассе MyPolyphonicNode, IПереопределено:
override func play(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, frequency: Double) {
myDelegate.myDelegateFunction(noteNumber:MIDINoteNumber, velocity:MIDIVelocity, channel:myChannel)
}
И в его делегате:
let midi:AKMIDI //set in the init
enableMIDI(midi.client, name: "midiClient") //also in the init
func myDelegateFunction(noteNumber:MIDINoteNumber, velocity:MIDIVelocity, channel:MIDIChannelNumber) {
midi.sendEvent(AKMIDIEvent(noteOn: noteNumber, velocity: velocity, channel: channel))
}
Это работает, но я думаю, что, вероятно, есть способ напрямую указать AKMusicTracks на внешний вывод без выполнения всех действий.это?