发布网友 发布时间:2024-10-02 18:56
共1个回答
热心网友 时间:2024-11-18 04:00
MIDI文件格式是由多个数据子集构成的,每个子数据以特定格式记录音轨信息。在多音轨结构中,只需在文件头部修改轨道数即可增加音轨。全局音轨包含标题、版权、速度和系统码等附加信息。每个音轨或全局音轨以“MTrk”(ASCII字符“MTrk”)开头,后跟四个字节表示其长度(不包括头部)。接下来是时间差与事件数据,其中时间差表示事件之间的时间间隔,以tick为单位,通过二进制编码表示。事件分为音符、控制器和系统信息,分别以种类和参数表示,如音符、力度、控制器号码等。事件中,音符使用00~7F表示,力度使用00~7F表示,控制器号码使用00~7F表示。控制器参数、乐器号码、触后通道值等事件也通过特定编码表示。MIDI文件中的系统码使用动态字节表示,根据记录的整数调整字节长度。控制器事件记录控制器号码和参数,改变乐器事件则记录乐器号码,触后通道值事件记录通道值。滑音音高事件使用低位和高位表示。通过这些结构,MIDI文件可以记录音乐信息,支持多种操作,如音符、力度和控制器参数的调整。
MIDI文件格式的全局音轨包括歌曲的附加信息,如标题、版权等,并以“MTrk”开头,后跟一个表示音轨长度的4字节整数。每个音轨或全局音轨的结构包括时间差和事件数据。时间差表示前一个事件到当前事件的时间间隔,以tick为单位,通过二进制编码表示。事件数据的结构为种类+参数,种类和参数分别表示事件的类型和相关信息。音符事件使用00~7F表示音符,力度使用00~7F表示力度,控制器事件记录控制器号码和参数,改变乐器事件则记录乐器号码,触后通道值事件记录通道值。滑音音高事件使用低位和高位表示音高变化。系统码使用动态字节表示,根据记录的整数调整字节长度。通过这些详细结构,MIDI文件可以实现对音乐事件的精确编码,支持音符、力度和控制器参数等信息的记录和播放。
MIDI文件格式通过其独特的数据结构,为音乐数据的存储和交换提供了便利。每个MIDI文件由一系列数据子集组成,每个子集代表一个音轨或全局信息。全局音轨包含了歌曲的附加信息,如标题、版权等,而音轨数据则详细记录了音符、力度、控制器和系统码等事件。时间差以tick为单位,通过二进制编码表示,而事件数据则以种类和参数的形式呈现,种类表示事件类型,参数提供事件的具体信息。MIDI文件中的系统码使用动态字节表示,长度根据记录的整数变化。控制器事件记录控制器号码和参数,改变乐器事件记录乐器号码,触后通道值事件记录通道值。滑音音高事件使用低位和高位表示音高变化。通过这些结构,MIDI文件能够精确记录和播放音乐,支持音符、力度、控制器参数等音乐事件的编码与播放。
MIDI文件属于二进制文件,这种文件一般都有如下基本结构: 文件头+数据描述 文件头一般包括文件的类型,因为Midi文件仅以。mid为扩展名的就有0类和1类两种,而大家熟悉的位图文件的格式就更多了,所以才会出现文件头这种东西。