音频应用   音频插件联盟,正版插件,欢迎大家选择!

 找回密码
 快速注册

QQ登录

只需一步,快速开始

阅读: 24819|回复: 1

[midi] MIDI连续状态解释

[复制链接]

172

积分

0

听众

2

音贝

音频应用

Rank: 1

积分
172
发表于 2018-4-4 | |阅读模式
音频应用公众号资讯免费发布推广
MIDI连续状态解释
连续状态(Running Status)
    在典型的MIDI讯息流中有一定量的冗余。既定通道上的音符开(Note On)发送时,其后不久跟有对应的音符关(Note Off)讯息。而操作弯音轮会产生大量乃至上百的弯音讯息。因为每个字节都连续发送,而音乐人也会说,时间是非常本质的事情,而“压榨”出冗余数据这显然是有一定帮助的。幸运的是,MIDI协议提供了一种简单而又有效的方法来处理即:连续状态[running status]。
    拿三个音符开(Note On)讯息的例子来说,跟有三个或更多的力度为0的音符——以此替代音符关(Note Off)讯息。为了简化起见,所有这些字节都以十六进制显示,均在通道1上。
    请注意在通道1上的音符开的状态为0x90。这种简单的序列需要18个字节。
    90 3C 40 90 3B 62 90 39 27 ... 90 3C 00 90 3B 00 90 39 00
    因为每个事件的状态字节相同(均为通道1上的音符开),在本例中就有“冗余”的状态字节。而连续状态实际上则是一种压缩数据的形式,这样我们便可以忽略冗余状态字节。
    而在状态字节改变,新讯息类型改变,或是相同类型但换了一个通道时,则必须发送新的状态字节。实际上周期性地更新状态直接是个不错的主意,即使这并不是非常严格地需要。如果接收设备丢失状态字节,则会拒绝产生任何声音,直到状态更新。因此每16或32个事件就更新一次是适当的。
    通过对序列应用运行状态,我们可以将其缩短为13个字节:
    90 3C 40 3B 62 39 27 ... 3C 00 3B 00 39 00
    连续状态只能在通道讯息上使用,在状态字节改变时终止。请注意系统实时讯息对运行状态是视而不见的。
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

151

积分

5

听众

66

音贝

音频应用

Rank: 1

积分
151
发表于 2018-4-5 |
分享,谢谢楼主,好文章,收藏了啊
欢迎厂家入驻,推文!免费!微信:yinpinyingyong
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

音频应用搜索

小黑屋|手机版|音频应用官网微博|音频招标|音频应用 (鄂ICP备16002437号)

Powered by Audio app

快速回复 返回顶部 返回列表