【问题标题】:Reading and Parsing a .MID file with Lua?使用 Lua 读取和解析 .MID 文件?
【发布时间】:2011-07-13 02:24:50
【问题描述】:

我正在尝试使用 Lua 读取 .MID 文件,然后将其解析为包含所有注释(即 {“A”、“B#”、“Cb”等})的表格,但我无法做到正确读取文件。我使用 io.open 和 file:lines() 但是将这些相同的行写入另一个 midi 文件会导致一个不工作的 midi 文件。

有没有更简单的方法来使用 Lua 读取和解析 .MID 文件?

【问题讨论】:

    标签: parsing file-io lua midi


    【解决方案1】:

    Standard MIDI File 格式是二进制,而不是文本。所以你不能指望把它读成“线条”。相反,您需要使用 read 函数来获取字节并检查它们。您最好为 MIDI 文件找到一个 C 库并将其绑定到 Lua。

    【讨论】:

    • 但是 io.open 中用于读取二进制文件的“b”参数呢?
    • 当然,使用它可能是个好主意,但这并不意味着您可以读出“行”。您仍然需要将文件视为二进制文件,从根本上说,“行”功能正在寻找换行符,这意味着 MIDI 中的“换行”以外的其他内容。
    【解决方案2】:

    .MID 文件(可能是标准 MIDI 格式)是二进制文件,而不是文本文件。用file:lines() 阅读它们是行不通的。您需要使用file:read("*a") 将整个内容读入“字符串”(Lua 字符串可以保存任意字节的数据);这会将整个文件读入一个字符串。您还需要确保以二进制模式打开文件(对于有影响的平台)。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-23
        • 2023-03-07
        • 1970-01-01
        • 2017-01-22
        • 2013-05-27
        • 2016-03-14
        • 1970-01-01
        • 2020-07-13
        相关资源
        最近更新 更多