【问题标题】:Unrecognized status byte in Midi fileMidi 文件中无法识别的状态字节
【发布时间】:2017-03-09 07:19:57
【问题描述】:

我研究 Midi 文件已经有一段时间了,但我一直停留在某种状态字节上。根据标准的 Midi 文件格式没有这样的东西。那么,有人能说出这 3 个字节的信息“00 a040”是什么吗?我知道“00”是代表增量时间的字节,0xa0 应该是状态字节,如果我理解正确的话。位于第 18 行的最后 3 个字节是我目前唯一不明白的部分。在这 3 个字节之后,是由“00 ff01”引导的文本元事件字节。

Midi 文件第 18 到 19 行:

ff 51 03 09 cc 90 00 c0 00 00 b0 07 64 00 0a 40 00 ff 01 20 62 64 63 61 34 32 36 64 31 30 34 61

【问题讨论】:

    标签: midi smf


    【解决方案1】:

    SMF specification 说:

    使用运行状态:如果前面的事件是具有相同状态的 MIDI 通道消息,则可以省略 MIDI 通道消息的状态字节。

    所以这些字节可以解码如下:

    ff 51 03 09 cc 90:元事件:设置速度,每四分音符 9CC90h = 642192 µs
    00:增量时间
    c0 00:在通道 0 上设置程序 0(钢琴)
    @987654325 @:增量时间
    b0 07 64:将控制器7(音量)设置为值100
    00:增量时间
      0a 40:运行状态(重复B0h);将控制器 10(表达式)设置为值 64
    00:增量时间
    ff 01 20 ...:元事件:文本:“bdca426d104a...”

    【讨论】:

    • 现在我明白了。我对这些字节感到很困惑。因此,如果通道消息具有与前一个相同的状态,将写入没有状态字节。谢谢!
    猜你喜欢
    • 2020-09-01
    • 2016-10-09
    • 2019-01-19
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多