Midi文件解码方法和系统的制作方法

文档序号:9305391阅读:1186来源:国知局
Midi文件解码方法和系统的制作方法
【技术领域】
[0001]本发明涉及解码技术领域,尤其涉及一种MIDI文件解码方法和系统。
【背景技术】
[0002]MIDI (Musical Instrument Digital Interface,乐器数字接口)文件存储的信息是事件,而不是具体的音频内容,所以一个MIDI文件相对的压缩比往往很高,方便使用。
[0003]现有的MIDI文件,为了录制的方便,各个轨道是相互独立的,只需要修改文件头中的轨道信息,就可以插入或者删除各个轨道。但是对于小系统,没有足够的Buf (缓冲区)来缓存各个轨道的事件,如果不预先缓存事件,则需要文件跳着获取事件,对事件进行处理,而跳着获取事件则会带来数据的速度的浪费。即,若不丢弃上一个轨道还未使用的数据,则需要Buf来缓存;若丢弃上一个轨道还未使用的数据,则需要回跳后重新读取,浪费系统时钟,而且按照MIDI文件的压缩比来看,对数据的重读量会是极大的。上述情况会导致MIDI文件的解码成本较高。

【发明内容】

[0004]基于此,有必要提供一种成本较低的MIDI文件解码方法。
[0005]—种MIDI文件解码方法,包括以下步骤:
[0006]按照MIDI文件的各个轨道的时间信息参数对MIDI文件进行排序;
[0007]将排序后的所述MIDI文件进行解码。
[0008]在其中一个实施例中,所述按照MIDI文件的各个轨道的时间信息参数对所述MIDI文件进行排序步骤包括:
[0009]检测所述MIDI文件的各个轨道的时间信息参数;
[0010]在所述时间信息参数表示当前轨道所处理的事件结束时,跳转到当前轨道的文件位置,进行事件读取处理,并写入所述MIDI文件;
[0011]重复上述过程,直至对所述MIDI文件的排序完成。
[0012]在其中一个实施例中,所述将排序后的所述MIDI文件进行解码步骤包括:
[0013]检测所述MIDI文件的各个轨道的时间信息参数;
[0014]在所述时间信息参数表示当前轨道处理完当前事件时,将下一个事件由所述当前轨道进行解码处理;
[0015]重复上述过程,直至解码完成。
[0016]在其中一个实施例中,所述时间信息参数为所述MIDI文件的各个轨道所包含的delta。
[0017]在其中一个实施例中,所述方法还包括:事件通讯设备将接收到的事件传入到文件写入系统时,按照时间顺序将接收到的事件排序到所述MIDI文件中。
[0018]在其中一个实施例中,所述方法还包括:插入新轨道数据时,按照时间顺序将所述新轨道数据插入所述MIDI文件中。
[0019]本发明还提供一种MIDI文件解码系统,包括排序模块和解码模块;
[0020]所述排序模块,被配置以按照MIDI文件的各个轨道的时间信息参数对MIDI文件进行排序;
[0021]所述解码模块,被配置以将排序后的所述MIDI文件进行解码。
[0022]在其中一个实施例中,所述排序模块包括第一时间信息检测单元和读取写入单元;
[0023]所述时间信息检测单元,被配置以检测所述MIDI文件的各个轨道的时间信息参数;
[0024]所述读取写入单元,被配置以在所述时间信息参数表示当前轨道所处理的事件结束时,跳转到当前轨道的文件位置,进行事件读取处理,并写入所述MIDI文件。
[0025]在其中一个实施例中,所述解码模块包括第二时间信息检测单元和解码单元;
[0026]所述第二时间信息检测单元,被配置以检测所述MIDI文件的各个轨道的时间信息参数;
[0027]所述解码单元,被配置以在所述时间信息参数表示当前轨道处理完当前事件时,将MIDI文件的下一个事件由所述当前轨道进行解码处理。
[0028]在其中一个实施例中,所述时间信息参数为所述MIDI文件的各个轨道所包含的deltaD
[0029]在其中一个实施例中,所述系统还包括录入排序模块,所述录入排序模块被配置为在事件通讯设备将接收到的事件传入到文件写入系统时,按照时间顺序将接收到的事件排序到所述MIDI文件中。
[0030]在其中一个实施例中,所述系统还包括新轨道排序模块,所述新轨道排序模块被配置为在插入新轨道数据时,按照时间顺序将所述新轨道数据插入所述MIDI文件中。
[0031]上述MIDI文件解码方法和系统,按照MIDI文件的各个轨道的时间信息参数对MIDI文件进行排序,并将排序后的MIDI文件进行解码,不需要跳着获取各个轨道的事件,也不需要预解各个轨道的所有事件,能够降低解码资源,节省MIDI文件的解码成本。
【附图说明】
[0032]图1为本发明MIDI文件解码方法一个实施例的流程示意图;
[0033]图2为本发明MIDI文件解码方法一个实施例中的按照时间顺序对MIDI文件进行排序的流程示意图;
[0034]图3为本发明MIDI文件解码方法一个实施例中的将按照时间顺序排序后的MIDI文件进行解码的流程示意图;
[0035]图4为本发明MIDI文件解码系统一个实施例的结构示意图;
[0036]图5为本发明MIDI文件解码系统一个实施例中的排序模块的结构示意图;
[0037]图6为本发明MIDI文件解码系统一个实施例中的解码模块的结构示意图。
【具体实施方式】
[0038]为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明MIDI文件解码方法和系统的【具体实施方式】进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0039]参见图1,一个实施例中,本发明MIDI文件解码方法包括以下步骤:
[0040]S100,按照MIDI文件的各个轨道的时间信息参数对MIDI文件进行排序。
[0041]—般的,现有的MIDI文件编码方法是按照轨道为单元进行排序的,方便不同轨道的单独录制。但是实际的播放过程是各个轨道的声音加权叠加后合成的结果。而本发明MIDI文件解码方法,按照MIDI文件的各个轨道的时间信息参数对MIDI文件进行排序,不需要跳转文件,也不会有Buf预存的限制。
[0042]参见图2,一个实施例中,步骤SlOO具体可以包括以下步骤:
[0043]SI 10,检测MIDI文件的各个轨道的时间信息参数。
[0044]在MIDI文件的各个轨道中,均包含有一个时间信息参数,该时间信息参数表示对应的轨道中的事件的持续时间长度。因此,可以通过该时间信息参数对MIDI文件进行排序。
[0045]具体的,可以检测各个轨道的时间信息参数,当检测到某一轨道的时间信息参数表示该轨道所处理的事件结束时,执行步骤S120。其中,可以设置成:某一轨道的时间信息参数的时间计数递减至零时,表示该轨道所处理的当前事件结束。各个轨道的时间信息参数所表示的该轨道所处理的事件的剩余时间会随着时间递减,直至为零。
[0046]S120,在时间信息参数表示当前轨道所处理的事件结束时,跳转到当前轨道的文件位置,进行事件读取处理,并写入MIDI文件。
[0047]其中,可以逐一检测各个轨道的时间信息参数,当检测到某一轨道的时间信息参数表示该轨道所处理的事件结束时(例如时间信息参数的时间计数为零),则说明该轨道所处理的当前事件结束。跳转到该轨道的文件位置,然后进行时间读取处理,并写入新文件。
[0048]重复步骤SllO和S120,直至对MIDI文件的排序完成。
[0049]以下通过一详细实例,对步骤SlOO进行进一步说明。每个轨道中均有一个包含时间信息参数的delta,因此可以通过检测各个轨道的delta
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1