可以将 MIDI 可变长度数量强制为四个字节的长度吗?

Posted

技术标签:

【中文标题】可以将 MIDI 可变长度数量强制为四个字节的长度吗?【英文标题】:Can MIDI variable-length quantities be forced to four bytes' length? 【发布时间】:2021-03-13 01:10:06 【问题描述】:

在这个 TB 时代,我发现可变长度的数量令人厌烦。凭借我的新手能力,我正在努力编写一个 C 程序来编写 MIDI。我不想使用现有的图书馆,因为我不想归功于任何人。

我的想法是强制输出文件中的所有 VLQ 为四个字节。我想如果我坚持最高有效位的规范,就不应该有任何东西使我的文件无效。

那么,对于 MIDI 变长数量规则,这些数字 1 的写法是等价的吗?

00000001

10000000 10000000 10000000 00000001

还是我遗漏了一些细微差别?

【问题讨论】:

【参考方案1】:

从技术上讲,这将是一个合法的 MIDI 文件。 我有一个例子https://github.com/jazz-soft/test-midi-files/blob/main/midi/test-vlq-4-byte.mid Microsoft Media Player 播放正确,但其他 MIDI 播放器可能会出现问题。

【讨论】:

以上是关于可以将 MIDI 可变长度数量强制为四个字节的长度吗?的主要内容,如果未能解决你的问题,请参考以下文章

SAS - 导入不带分隔符的可变长度二进制记录

BLE MIDIMIDI 文件格式分析 ( MIDI 轨道分析 | MIDI 轨道头 | MIDI 轨道长度 | delta-time 间隔 )

BLE MIDIMIDI 文件格式分析 ( MIDI 轨道分析 | MIDI 轨道头 | MIDI 轨道长度 | delta-time 间隔 )

如何将可变长度记录的长度增加到 32760 以上?

可变长度整数的编码

使用 Oracle SQL 将可变长度分隔字符串拆分为列