c语言读取midi文件举例子,从MIDI文件获取音符数据
Nik Reisman - 对不起,但我不同意你......在C#中解析midi,C++是大约400行代码的东西......它没有什么困难,也没有困难。
在简短的描述解析器将如何工作:
1)打开midi字节模式
2)阅读标题块,其中有关于大小,轨道数量和重要文件格式的信息!
- 有3种格式:0,1,2(类型2实际上是“有价值的”,只有少数这种类型的midi文件,所以如果存在类型2,则不需要读取midi)
- 如果没有写:"MThd" (0x4D546864),结束错误(这是一个糟糕的MIDI文件)
3)阅读音轨块
- 如果没有写:"MTrk" (0x4D54726B)结束,错误(这是一个糟糕的MIDI文件)
4)阅读midi活动.. - 有很多活动,您可以使用if-else命令阅读所有活动,或者只能阅读您想知道的活动,例如NOTE ON,NOTE OFF - 有时在一些midi文件中不是NOTE NOTE..This事件是chang ed NOTE ON和速度0
在网站上的一切都很好地解释。如果你以字节模式打开midi文件,你将只有几个方法,一切都只是关于if-else命令,并且你将捕获现在存储的内容。
理解VARIABLE LENGTH很重要,但在网站上也有解释。这并不难。您也可以在谷歌的许多网站中使用一些图片和示例来解释VARIABLE LENGTH。所以我不认为在这里很难解释它。
如果你想多一点建议,写信给我,我会试试看。但是解析midi并不像看起来那么困难。如果你有一些问题,请写信给我。