使用Lua读取和解析.MID文件?

我正在尝试使用Lua读取一个.MID文件,然后将其解析为包含所有音符(即{"A",“B#”,“Cb”等)的表格,但我无法正确读取该文件。我使用io.open和file:lines(),但将这些行写入另一个midi文件会导致该midi文件无法使用。

是否有更简单的方法可以使用Lua读取和解析.MID文件?

原文链接 https://stackoverflow.com/questions/6673401

点赞
stackoverflow用户4323
stackoverflow用户4323

标准MIDI文件格式是二进制的,而不是文本。因此您无法像读取“行”一样来阅读它。相反,您需要使用read函数获取字节并进行检查。您最好找到一个C库来处理MIDI文件并将其绑定到Lua。

2011-07-13 02:30:11
stackoverflow用户734069
stackoverflow用户734069

.MID 文件(应为标准 MIDI 格式)是二进制的,而不是文本。使用 file:lines() 读取不起作用。您需要使用 file:read("*a") 读取整个文件到一个“字符串”中(Lua 字符串可以容纳任意字节的数据); 这将读取整个文件到单个字符串中。您还需要确保在二进制模式下打开该文件(对于需要区分的平台)。

2011-07-13 02:30:41
stackoverflow用户14302
stackoverflow用户14302

似乎有一个名为 MIDI.lua 的框架用于解析MIDI数据。不过不确定它对于MIDI文件的处理效果如何。

2011-07-13 12:44:28