我想用Lua讀取一個.MID文件,然後將它解析成一張包含所有註釋(即{「A」,「B#」,「Cb」等)的表格但我無法讀取該文件正確。我使用io.open和file:lines(),但是將這些相同的行寫入另一個midi文件會導致非工作的MIDI文件。用Lua讀取和解析.MID文件?
有沒有更簡單的方法來讀取和解析.mid文件與Lua?
我想用Lua讀取一個.MID文件,然後將它解析成一張包含所有註釋(即{「A」,「B#」,「Cb」等)的表格但我無法讀取該文件正確。我使用io.open和file:lines(),但是將這些相同的行寫入另一個midi文件會導致非工作的MIDI文件。用Lua讀取和解析.MID文件?
有沒有更簡單的方法來讀取和解析.mid文件與Lua?
Standard MIDI File格式是二進制文件,而不是文本。所以你不能指望把它看作是「線條」。相反,您需要使用read
函數獲取字節並檢查它們。爲MIDI文件找到一個C庫並將其綁定到Lua可能會更好。
.MID文件(推測爲標準MIDI格式)是二進制文件,而不是文本文件。用file:lines()
讀取它們將不起作用。你需要用file:read("*a")
來將整個事件讀入一個「字符串」(Lua字符串可以保存任意字節的數據)這會將整個文件讀入一個字符串。您還需要確保以二進制模式打開文件(對於這種情況有所影響的平臺)。
似乎有一個叫做MIDI.lua的框架來解析MIDI數據。但不知道它處理MIDI文件的效果如何。
但是io.open中讀取二進制文件的「b」參數呢? – user809559
當然,使用它可能是一個好主意,但這並不意味着你可以讀出「線條」。您仍然需要將該文件視爲二進制文件,並且從根本上來說,「行」功能正在尋找換行符,這意味着除MIDI中的「新行」之外的其他內容。 –