首页
百科分类
排行榜
帮助
注册
登录
您正在编辑:
MIDI-文件结构
正文
MIDI文件结构
标准MIDI文件结构
MIDI文件包含一个或更多MIDI块与每个事件的时间信息。它支持歌曲、序列和音轨结构,拍子和拍号信息。音轨名字和其他描述信息也可以与MIDI信息一同存储。这个格式支持多条音轨、多个序列。这种格式可以允许用户从一个音轨移向另一个
音轨
。
用于MIDI文件的8位二进制的数据块可以在一个高效率的传输的MIDI二进制文件中,分解可以存储为7位数据,或被转换成其他的ASCII或者被翻译为一个文本文件。
1、MIDI文件结构序列文件块组成
每个块4个字节,有32位长度。MIDI文件结构数据通过在文件的数据叉,或者在剪贴板上进行传输。(在Macintosh这个格式的文件类型是“Midi”)块结构允许被忽略跳过。
MIDI文件结构定义了块的二种类型:
文件
头块和音轨块。文件头块提供关于整个MIDI文件的最小数量信息。音轨块包含的MIDI数据序列也许包含16条MIDI通道的信息。使用多个音轨块,就可以用多条音轨、多个MIDI序列、谱式和
歌曲
。MIDI文件总是以文件头块开始,紧随其后的是一个或多个音轨块。
MThd
MTrk
MTrk…
MIDI文件结构音轨数据格式(MTrk块类型)
MTrk块类型是存放实际歌曲数据的地方。它是MIDI事件(和非MIDI事件)的序列。在MTrk块的有些数字是以叫可变长的数量的形式进行存储的。这些数字首先每个字节用7位,最高位不是有效位。除最后一位之外的所有字节,最高位设为1;最后一个字节最高位设为0。如果数字在0和127之间,它能正确地表示为一个字节。这作为可变长的数量代表的数字的有些例子:
数字(
十六进制
)变长表示法(十六进制)
0000000000
0000004040
0000007F7F
000000808100
00002000C000
00003FFFFF7F
0000400081800000
100000C08000
001FFFFFFFFF7F
0020000081808000
08000000C0808000
0FFFFFFFFFFFFF7F
允许的大数是0FFFFFFF,这是以可变长表示法表示的32位的最大数字。理论上,大数是有可能的,但是实际中不必要。
MIDI文件结构MTrk块的句法:“经过的时间”被作为一个可变长的量存储。它代表以下事件之前所要经过的时间。如果在音轨的第一个事件发生在音轨的开始,或者,如果二个事件同时发生,使用Δt的零。Δt总是存在。Δt的具体时间单位,在文件头块上指定。
<元event>
是所有MIDI通道消息。使用连续状态时:状态位也许在第一个事件以后被省去。在文件的第一个事件必须指定状态。Δt没有被认为是事件:它是格式的整体部分。
MIDI文件结构<元event>指定非MIDI信息
FF所有阶事件从FF开始,然后有事件类型(总是少于128),然后有作为一个可变长的数量被存放的数据的长度,然后是数据。如果没有数据,长度是0。
使用指定MIDI系统专属消息,或者作为“escape”指定将被传送的任何任意字节。一些合成器制造者指定他们的系统专属消息将被作为小包传送。每个小包作为一则整个语法系统专属消息的部分,但是他们被传送的时间是很重要的。这样的例子是在CZ补丁传送的字节或者FB-01's“系统独家新闻”中,可以传送部分数据。为了能处理像这样的情况,两个形式的
被提供了:
F0<长度><
数据
>
F7<长度><数据>
在两种情况下,长度被作为一个可变长的数量存放,等于跟随它的字节数,不包括本身或消息类型(F0或F7),但是包括跟着的所有字节,包括所有在意欲被传送的信息末端的F7。绝大多数的系统专属消息将使用F0格式。例如,被传送的消息F043120007F7在MIDI文件将被存储为F00543120007F7。所有信息要求在末端包含F7,以便MIDI文件的处理程序知道它读了全部的信息。对于特别的情况,当一则唯一的系统专属信息被分开成多段,分到不同的时间传送时,小包除了最后一个都以F7结束。不能在多个小包之间传递任何其他的系统专属信息。例如:
假设字节431200将首先被传送到F0,紧随着200个时间单位的延迟,再紧随着由字节431200431200组成的数据,再紧随着100各时间单位的延迟,再紧随着由字节431200F7组成的数据,这在MIDI文件是这样的:
F0034312008148
200个单位的Δt
8148F70643120043120064
100个单位的Δt
64F704431200F7
F7事件也许也使用作为“escape”传送任何字节,包括实时字节、歌曲名或者MIDI时间代码,在这个规格通常没有被规定。
2、MIDI文件结构文件头块
在文件初的文件头块指定在文件中关于数据的一些基本信息。数据部分包含三个16位的字段,首先被存放高位字节(当然)。这里有完整的块的句法:
<块类型><块长度><格式><音轨数><分区>
块类型是四个ASCII字符“MThd”;随后的长度是一个6(高位优先的32位数字表示法)。格式,是指定文件的整体组织。
格式的只有三种值,指定三种格式:
0文件包含一条唯一的多通道音轨
1文件包含一个或更多同时的音轨
2文件包含一个或更多独立的音轨,相继进行播放
音轨数,是文件中音轨块的数量。
分区,是在文件的Δt之中1代表的是一秒的多少分之一。
格式0,多通道的音轨,是最容易转换的数据。应用格式1的MIDI文件可以很容易转换成这种格式。声音是最重要的东西,格式并不重要。这种转换是非常应该的,这可以化繁为简。
MIDI文件有可以表达的节奏和拍号的信息。对于0的文件格式,节奏,将分散的存储;对于格式1,节奏必须(在0.04版起)一起储存,作为第一条音轨。这个规定是合理的。
所有的MIDI文件,应指定节奏和拍号。如果他们不这样做,拍号假设为4/4,节奏和节拍120每分钟。在格式0中,这些元事件应该在开头。在格式1中,这些元事件应包含在第一个音轨中。在格式2中,每一独立的音轨,应至少包含一条拍号和节奏的信息。
3、MIDI文件结构元事件
不是每个程序,都必须支持每一个元事件。MIDI文件结构元事件最初的定义包括:
序列数
FF0002ssss
这一类事件,必须发生在音轨的开头,在任何非零时间后发生的事件或可传送的MIDI信息之前,用于指定序列的数目。序列数对应在这条音轨的序列数。在一个格式0或1MIDI文件,其中只包含一个序列,这个数字应包含在第一个音轨。
文字事件
FF01长度文字
任何数量描述任何事情的文字。在音轨开头放上这条音轨的相关的所有信息是很好的,这有助于日后查看。文本事件也可能发生在其他时间,被用来作为歌词。在此事件中文本应用可打印的ASCII字符进行书写。
元事件类型01到0F的是预留给各种类型的文本使用的,但使用的目的各不相同:
版权
公告
FF02长度文本
载有版权声明,作为打印
ASCII
文本。文本中应包含字符(c),版权所有的时间,版权所有者。如果几段音乐是在同一个MIDI文件中,所有的版权声明应放在一起,把它放在文件的开头。这个事件应该是第一个事件,在时间0放在第一条音轨块。
序列/音轨的名称
FF03长度文本
MIDI文件结构
乐器
名称:
FF04长度文本
说明该类型的乐器将用于在这一条MIDI文件结构音轨中使用。
MIDI文件结构歌词:
FF05长度文本
写明歌词。每个音节将是一行单独的歌词,应该写清时间
标记
FF06长度文本
通常在一个格式0的音轨,或在格式1的第一个音轨。
注释点
FF07长度文本
描述一些在这一点上发生在电影或视频
屏幕
或舞台的动作或事件
MIDI文件结构音轨终止
FF2F00
此事件必须的,以便确定的结束点。
设定速度,以毫秒(ms)为单位,是四分音符的时值
FF5103tttttt
这个事件可以精确的写清楚这条音轨的速度。用每拍所占的时间而不是单位时间内的拍数表示速度,使得依据一个基于时间的同步协议(例如SMPTE时间代码或MIDI时间代码)实现时间的绝对同步成为可能。这种准确性使四分钟左右的曲子在每分钟的120拍下结束时,时间误差在500微秒之内。
SMPTE时间同步
FF5405hrmnsefrff
这一事件,如果存在的话,将指定某一个特定事件开始的SMPTE时间。它应出现在MIDI文件结构音轨的开头,在任何非零时间后发生的事件或可传送的MIDI信息之前。
MIDI文件结构拍号标记:
FF5804nnddccbb
MIDI文件结构拍号表示为四个数字。nn和dd代表分子和分母。分母指的是2的dd次方,例如,2代表4,3代表8。cc代表一个四分音符应该占多少个MIDI时间单位,bb代表一个四分音符的时值等价于多少个32分音符。
因此,完整的6/8拍号应该表示为
FF580406032408
这是,6/8拍号(8等于2的三次方,因此,这里是0603),四分音符是32个MIDI时间间隔(十六进制24即是32),四分音符等于8个三十二分音符。
MIDI文件结构谱号信息:
FF5902sfmf
sf指明乐曲曲调中升号、降号的数目。例如,A大调在五线谱上注了三个升号,那么sf=03。又如,F大调,五线谱上写有一个降号,那么sf=81。 也就是说,升号数目写成0x,降号数目写成8x
mf指出曲调是大调还是小调。大调mf=00,小调mf=01
对于序列器的元数据
FF7F长度数据
特殊要求,尤其是时序可能会使用此事件类型:第一个字节或字节的数据是一个制造商的ID。
作为一个例子,把一个MIDI文件摘录如下所示。内容的MIDI流所代表的这个例子,细分在这里:
Δt(
十进制)
事件号(
十六进制
)其他数据(十进制)说明
0FF580404022408
0FF5103500000
0C05通道1,
音色
5
0C146通道2,音色46
0C270通道3,音色70
0924896通道3开始弹奏C2,用力
0926096通道3开始弹奏C3,用力
96916764通道2开始弹奏G3,用力
96907632通道1开始弹奏E4,钢琴
192824864通道3停止弹奏C2,标准
0826064通道3停止弹奏C3,标准
0816764通道2停止弹奏G3,标准
0807664通道1停止弹奏E4,标准
0FF2F00结束
整个格式0的MIDI文件的内容
MIDI文件结构文件头块:
4D546864MThd
00000006块长度
0000格式0
0001一个音轨
0060一个MIDI时间间隔等于96分之一秒
MIDI文件结构音轨块,
4D54726BMTrk
0000003B音轨长度(59字节)
MIDI文件结构时间事件:
00FF580404021808拍号4/4
00FF510307A120速度
00C005
00C12E
00C246
00923060
003C60
60914340
60904C20
8140823040
003C40
00814340
00804C40
00FF2F00终止
类似的,可以把这个文件写成1格式。
MIDI文件结构在
网络
传送中,通常采用7位数据传送方式,这样可以大大提高传输速度。
MIDI文件结构由于体积很小,非常便于传送;而且,由于它很有利于创作
音乐
,是很多作曲家在创作初期的首选。
MIDI文件结构由于其特殊的记录方式,受
硬件
影响较大。
MID文件结构不是音频文件结构,它的作用只相当于一个文本文档,记录了音乐该如何进行。MIDI回放音色完全取决于
声卡
。
摘要
For the people talking about situs slot game, judi slot online terpercaya, agen togel play, bermain slot, slot mudah menang, deposit via pulsa telkomsel, situs mudah menang, macam macam situs slot onl
标签
[多个标签使用分号"; ;"或空格隔开]
参考资料
[0]
编辑
|
删除
名称:
网址:
验证码:
看不清图片
保存
保存
重置
修改原因
[必填]
全文编辑
新增内容
修正错误
新增图片
设置目录
增加内链
调整页面
其他原因
验证码
[必填]
看不清图片
了解更多百科编辑技巧