gpt4 book ai didi

ios - 使用 AudioKit 从 MIDI 文件中读取音符

转载 作者:IT王子 更新时间:2023-10-29 05:52:17 25 4
gpt4 key购买 nike

我正在尝试构建一个音序器来渲染来自 midi 文件的音符。

目前我正在使用 AudioKit 进行音乐数据处理。想知道如何使用 AudioKit 从 midi 文件中获取音符数据/事件。

我尝试使用 AKSequencer 并输出到 AKMIDINode 来监听 MIDI 事件,但似乎无法从中得到任何东西。

class CustomMIDINode: AKMIDINode {

override init(node: AKPolyphonicNode) {
print("Node create") // OK
super.init(node: node)
}

func receivedMIDINoteOff(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel) {
print("midi note off") // Not printed
}

func receivedMIDISetupChange() {
print("midi setup changed") // Not printed
}

override func receivedMIDINoteOn(_ noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel) {
print("receivedMIDINoteOn") // Not printed
}
}

func setupSynth() {
oscBank.attackDuration = 0.05
oscBank.decayDuration = 0.1
oscBank.sustainLevel = 0.1
oscBank.releaseDuration = 0.1
}


let seq = AKSequencer(filename: "music")
let oscBank = AKOscillatorBank()
var midi = AKMIDI()
let midiNode = CustomMIDINode(node: oscBank)

setupSynth()

midi.openInput()
midi.addListener(midiNode)
seq.tracks.forEach { (track) in
track.setMIDIOutput(midiNode.midiIn)
}
AudioKit.output = midiNode
AudioKit.start()
seq.play()

最佳答案

您是否看过任何可供下载的示例音频套件项目?它们对于排除 AK 故障非常有用。实际上,我发现示例比文档更好(因为没有很好地解释实现)。

关于您的问题,您可以向事件添加一个 MIDI 监听器,Analog Synth X 中有此代码的示例。项目available here .

let midi = AKMIDI()
midi.createVirtualPorts()
midi.openInput("Session 1")
midi.addListener(self)

对于更有效的代码,您可以 refer to this尽管部分代码可能已过时。

关于ios - 使用 AudioKit 从 MIDI 文件中读取音符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47988257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com