How to get the note and its velocity from MIDI event?
我可以使用
并创建一个包含所有轨道及其事件的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | export class Soundtrack { name: string; duration: number; tracks: Array<Track>; } export class Track { events: Array<MidiEvent>; } export class MidiEvent { data: any; deltaTime: number; metaType: number; type: number; } |
我也有一个可以工作的合成器服务,我希望向其提供以下MIDI音符:
1 2 | synth.triggerAttack(note, null, velocity); synth.triggerRelease(note); |
如何过滤作为音符的MIDI事件?
如何从此类MIDI事件中获取实际音符及其速度?
这是从文件中读取注释的方式:
1 2 3 4 5 6 7 8 9 10 11 | .... MIDI.track[t-1].event[e-1].type = parseInt(statusByte[0], 16);// first byte is EVENT TYPE ID MIDI.track[t-1].event[e-1].channel = parseInt(statusByte[1], 16);// second byte is channel ... switch(MIDI.track[t-1].event[e-1].type){ ... case 0x8: // Note off case 0x9: // Note On MIDI.track[t-1].event[e-1].data = []; MIDI.track[t-1].event[e-1].data[0] = file.readInt(1); MIDI.track[t-1].event[e-1].data[1] = file.readInt(1); |
第一个