Java与ALSA中的MIDI技术详解
1. MIDI文件基本信息
MIDI文件包含多个轨道(Track),每个轨道有不同的事件信息,以特定的节拍分辨率(Resolution)进行组织,这里的分辨率是每拍480个tick。以下是各轨道的详细信息:
| 轨道 | 事件信息 |
| — | — |
| Track 0 | tick 0: 时间签名4/4,每节拍器节拍的MIDI时钟数为24,每24个MIDI时钟对应8个1/32音符;调号为C大调;SMTPE偏移为32:0:0.0.0;设置速度为145.0 bpm;结束轨道 |
| Track 1 | tick 0: 序列/轨道名称为amy winehouse - rehab;乐器名称为GM Device;tick 40: 系统专用消息F0 7E 7F 09 01 F7;结束轨道 |
| Track 2 | tick 0: MIDI通道前缀为1;序列/轨道名称为amy winehouse - rehab;乐器名称为GM Device 2;后续有一系列控制变化、音高轮变化、程序变化等事件 |
2. 播放MIDI文件
要播放MIDI文件,需要按照以下步骤进行:
graph LR A[创建Sequence对象] --> B[创建Sequencer对象] B --> C[Sequencer输出MIDI消息] D[获取Synthesizer对象] --> E[获取Receiver对象] C --> F[Sequencer发送MIDI消息到Receiver]