c语言读取midi文件举例子,使用AudioKit从MIDI文件中读取音符

Tony Fung Choi Fung

8

ios

swift

audiokit

我正在尝试构建一个从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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值