我已经用纯 Lua 制作了一个 Midi 文件阅读器,我决定在 love2d 中制作一个可视化器,所以我首先通过循环播放音符并确定打开哪些音符,让它显示当前播放的音符。
效果很好,我一直在 300fps 左右,但后来我决定我想要一个有点像合成程序的预览,但我很难想出一种存储它们的好方法,这样我就不必循环遍历每个音符每个像素决定在未来(或过去)的时间哪些是开启的(这种方法使其以大约 15-30fps 的速度运行)。
我已经尝试制作一个以秒为单位的索引表和带有当前注释的值表,但我似乎无法使其工作。如果有人对我如何快速存储和访问变量中的这些注释有任何建议,我们将非常感谢您的帮助。(我也知道我可以使用 C 或 C++ 或库,但我想用纯 Lua 制作一个)
音符当前存储在一个音符表中,这些音符仅按轨道按时间顺序排列,例如 track1note1、track1note2、track1note3、track2note2 等...
表的结构是这样的
table = {
--{start time(in seconds),end time(in seconds),note,track,velocity}, note1
{0.00043,1.387289,44,1,127},--note2
--etc...
}