【发布时间】:2011-07-13 02:24:50
【问题描述】:
我正在尝试使用 Lua 读取 .MID 文件,然后将其解析为包含所有注释(即 {“A”、“B#”、“Cb”等})的表格,但我无法做到正确读取文件。我使用 io.open 和 file:lines() 但是将这些相同的行写入另一个 midi 文件会导致一个不工作的 midi 文件。
有没有更简单的方法来使用 Lua 读取和解析 .MID 文件?
【问题讨论】:
我正在尝试使用 Lua 读取 .MID 文件,然后将其解析为包含所有注释(即 {“A”、“B#”、“Cb”等})的表格,但我无法做到正确读取文件。我使用 io.open 和 file:lines() 但是将这些相同的行写入另一个 midi 文件会导致一个不工作的 midi 文件。
有没有更简单的方法来使用 Lua 读取和解析 .MID 文件?
【问题讨论】:
Standard MIDI File 格式是二进制,而不是文本。所以你不能指望把它读成“线条”。相反,您需要使用 read 函数来获取字节并检查它们。您最好为 MIDI 文件找到一个 C 库并将其绑定到 Lua。
【讨论】:
.MID 文件(可能是标准 MIDI 格式)是二进制文件,而不是文本文件。用file:lines() 阅读它们是行不通的。您需要使用file:read("*a") 将整个内容读入“字符串”(Lua 字符串可以保存任意字节的数据);这会将整个文件读入一个字符串。您还需要确保以二进制模式打开文件(对于有影响的平台)。
【讨论】:
似乎有一个名为MIDI.lua 的框架用于解析MIDI 数据。不过,不确定它处理 MIDI 文件的能力如何。
【讨论】: