压缩乐器指令数字化接口文件的方法

文档序号:7628330阅读:766来源:国知局
专利名称:压缩乐器指令数字化接口文件的方法
技术领域
本发明涉及一种压缩MIDI(乐器指令数字化接口)文件的方法。本发明涉及的是那些只有有限的存储器容量和计算能力的设备(通常是便携式设备)。这一限制可能是由于与将MIDI文件重现为声音所需的资源相比设备的总体体积比较小而造成的。但也可能是由于设备为将MIDI文件重现为声音所能够分配的资源的数量造成的。这里所说的设备包括移动电话和电子管理器。本发明的目标是提高上述领域中设备的声音性能。本发明的另一个目标是简化由该领域中的设备播放的复杂旋律的创建和修改过程。
具有单声道声音重现功能的移动电话在本领域中已众所周知。移动电话中作为振铃或在其他情况下发出的旋律是有特定的持续时间和频率的连续声音。但是,同样的音质会被保留下来。纯正弦波馈入对其进行重现的电声设备中。得到的金属性或电子声音通常会与用作该旋律的模型的作品相去甚远。
显然,要解决上述问题,可将移动电话需要播放的旋律存储在其存储器中,存储时利用光盘上所使用的格式。与这一解决方案相关联的问题是存储空间的问题。取样格式会占用相当多的存储空间。此外,当前还有一种趋势,那就是在移动电话中提供越来越多的旋律。这种趋势也是无可厚非的,因为随着移动电话使用量的增加,人们必须能够辨认出是哪个电话的铃声在响。于是,便出现了显而易见的解决方案与技术需要之间的对立。
除此之外,修改取样文件也十分困难。在文件中,录音中的所有声音都混合在一起,无法分辨。如果选择上述解决方案,那么普通的移动电话用户便无法选择自己喜爱的旋律。
可通过让移动电话播放MIDI文件来解决上述问题。许多MIDI文件的生成都很容易,且只要具备一些基础音乐知识的用户便可以轻松操作。期望能够在一个移动电话中存储尽可能多的MIDI文件,以使用户能够有尽可能大的选择余地。但是,MIDI文件所要求的存储容量以及处理器能力比在便携式设备中可用的存储容量及处理器能力高。本发明通过压缩MIDI文件来解决这一问题。
更具体地说,本发明提供了一种压缩MIDI文件的方法,其特征是包括一个如下所述的EVENT步骤-扫描MIDI文件以搜索开始事件及与其相关联的结束事件,以及-用在时间上受限的单个事件替换找到的(事件)对。
单个事件与(事件)对具有完全相同的效果,但其大小要小于(事件)对的大小。就声音输出而言,原始MIDI文件的这种变换是完全可逆的。
特别地,本方法的特征在于起始事件是由MIDI标准定义的“NoteOn”事件,与其相关联的结束事件是由MIDI标准定义的“NoteOff事件。
本方法的优势特征在于它还包括一个如下的POLY步骤-针对存储器和计算能力方面,定义在给定的乐器上演奏一个音符所必需的资源,-定义用于播放MIDI文件的重现装置的资源,-构造一个存储表来定义乐器的相对优先级,-在MIDI文件中检测超出重现装置的能力范围的复调音乐的实例,-确定重现一个音符所必需的资源,以及-根据需要从检测到的复调音乐实例中去除尽可能多的音符(这些音符与构成复调音乐的乐器中相对优先级最低的乐器相对应),以使复调音乐降到重现装置可以接受的程度。
本方法的优选特征在于它还包括一个如下所述的BAND步骤-确定设备可以重现的带宽,以及-去除超出设备的重现能力范围的音符。
EVETN、POLY和BAND步骤可以以任何顺序实现。
通过对照附图阅读下列说明后,将会对本发明有更深入的了解。附图只作为示例提供,不对本发明构成限制。在附图中

图1显示了实现本发明的方法的装置。
图2显示了本发明的方法的步骤。
图3显示了有两个乐器的复调音乐的示例。
图1显示了诸如个人微计算机之类的设备101。计算机101包括实现本发明的压缩方法的装置。计算机101包括一个与总线103相连的微处理器102。在下列说明中,“总线”一词指传送地址信号、数据信号、控制信号、中断信号和/或时钟信号的一系列导线或磁道。
图1还显示计算机101包括一个程序存储器104。存储器104与总线103相连并包括一个区域104a,该区域包含在执行本发明的方法时控制微处理器102的指令代码。存储器还包括一个第二区域104b,这一区域存储在执行其他任务时控制微处理器102的指令代码。区域104b还包括一个存储临时变量的工作存储区域。计算机101还包括一个存储单元105用于存储文件,特别是那些由本发明的方法生成的文件。单元105与总线103相连。
图1还显示计算机101包括一个设备存储器106、一个乐器优先级定义存储器107以及一个定义播放音符所必需的装置的存储器108。存储器106到108均与总线103相连。这些存储器可以在彼此分离,也可以作为一个更大的存储器的组成部分。
存储器106有一个表结构。存储器106的每一行对应一个设备。在本示例中,存储器106有四个列。第一个列106a包含对设备的引用。第二个列106b包含具有第一个列中的引用的设备为将MIDI文件重现为声音而能够分配的最大存储空间。第三个106c包含具有第一个列中的引用的设备为将MIDI文件重现为声音而能够分配的最大微处理器功率。最后,第四个列106d包含由具有第一个列中的引用的设备进行声音重现的带宽。表106用于从MIDI文件生成压缩文件,压缩文件须与要播放它的设备的能力相兼容。
存储器107是一个表,在其中,可用在压缩文件中的乐器按照旋律重要性升序排列。存储器107用于处理超出设备(要生成的压缩文件就准备用于该设备)重现能力范围的复调音乐。
表1乐器的优先级随数字增大而降低在表1中,优先级最高的乐器是钢琴。
存储器108有一个包含三个列的表结构。第一个列108a包含音符的标识符,第二个列108b包含一些重现该音符所必需的存储器,第三个列108c包含重现该音符所需的微处理器功率。因此,存储器108可以确定重现一个音符所需的功率。存储器108同时也用作存储器106。实际上,表108不一定包含可以演奏的所有音符。可将公式用作一个乐器与该音符的函数来确定演奏一个音符所需的功率。实际上,优选情况是使用公式,因为这样可以节约存储空间。但是,为了便于阐述本发明,使用表进行说明会更简单些。
图1还显示计算机101有一个端109使计算机101通过电缆111与设备110相连。端口109与总线103相连。在实际中,端口109可以是使用任何RS232、USB或其他格式的端口。但是,端口109也可以被无线装置所替代,例如,蓝牙模块。这时,设备110也必须配备蓝牙装置。由电缆111提供的连接用于将通过本发明的方法获得的文件从计算机101传送到设备110。在本说明中,设备110是一个移动电话。在实际中,它可以是能够使用本发明的方法将一个文件重现为声音的任何设备。
电话110包含一个与总线103相连的微处理器112。电话110还包括一个存储单元114,使其能够存储通过本发明的方法生成的文件。电话110还包括一个存储器115、用于将使用本发明的方法生成的文件重现为声音的装置116以及一个模数转换器117。单元114到117均与总线113相连。转换器117与电声设备118相连。在本说明中,电声设备118是一个扬声器。存储器115包括工作存储区域,同时还包含控制微处理器112的指令代码。
装置116可以是将通过本发明的方法生成的文件重现为声音的指令代码或专用电路。在本说明中,通过本发明的方法生成的文件叫做SEQ文件。在本发明的优选实施例中,装置116是指令代码。指令代码可由单个处理器执行,也可以由微处理器(如,微处理器112)执行。然后,指令代码116可以分成几个子例程。第一个子例程116a称为序列发生器。序列发生器扫描SEQ文件并对该文件中的指令解码。序列发生器根据SEQ文件中指令来为乐器116b和116c分配存储空间。例如,如果在文件扫描期间序列发生器读到一条指令,要求将乐器I1分配给某个信道,那么序列发生器分配存储空间116b来执行与该乐器相对应的指令代码。对于与乐器I2相对应的存储空间116c,情形相同。然后,序列发生器继续扫描SEQ文件,并将它在那里读到的指令发送给专门(ad hoc)乐器。然后,乐器生成样本,发送给混合器116d。混合后的样本再发送给转换器117,转换器将其转换为模拟信号并由扬声器118进行重现。必须理解,当一个程序(例如,序列发生器116a)向另一个程序(例如,乐器I1)发送指令时,序列发生器会以指令作为参数调用子例程。
如果设备110的引用出现在表106中,与设备110相对应的列106b包含存储器116的大小,但忽略序列发生器和混合器的大小。列106c包含微处理器112为执行来自存储器116的指令代码而能够分配的功率。存储器106d包含转换器117和扬声器118二者组合的带宽。设备110中可以存储的旋律数量受限于单元114的大小。因此,使用适当的压缩格式存储旋律且之后在重现该压缩文件时不需要过多的计算是至关重要的。这可通过由本发明的方法生成的文件的格式来实现。
图2显示了本发明的方法的一个实施例的步骤。在阐述本方法时,认为它由计算机101来执行。但是,也可以在包括专门装置在内的任何硬件平台上执行本方法。例如,移动电话就是一个这样的平台。本方法生成一个文件,该文件必须传送给需要它的设备。
本发明的方法处理一个MIDI文件,它是包含一系列可以由设备(包括翻译机)执行的命令的文件。
MIDI文件可以有不同的格式,称为格式0、格式1和格式2(参看MIDI Manufacturer Association specification 1.0,Level 2,1999年11月)。格式0最简单。格式0文件包括一个头标,其后有单个磁道。头标包括该文件的时基。单个磁道包括采用MIDI格式的命令。格式0与其他格式的主要区别在于磁道的个数不同。从格式1或2转换为格式0(步骤201)是通过本领域中已知的方式以及本领域内可用的算法来实现的。MIDI文件主要包括一些命令,其中每个命令都带有执行日期。
在图2所示的方法的实施例中,假设MIDI文件是格式1或2文件,且实现了将格式1或2的MIDI文件转换为格式0文件的初始格式转换步骤201。转换的原则是将格式1或2文件的所有磁道的所有命令都组合到格式0文件的单个磁道上。但是,也可以略去转换步骤而分别处理格式1或2的MIDI文件的每个磁道。
在给出的实施例中,在实现转换之后,下一步是用于减少乐器数量的可选步骤202。这可以提供更高的压缩率。MIDI文件包括分配乐器的命令。由一个字段来分配乐器,其取值在0到127之间。因此,在一个MIDI文件中,有128种可能的乐器。这128种乐器属于16个系列。因此,通过在每个系列中选择一个代表的方式即可减少乐器的数量。然后,一个系列中的每种乐器便由该系列的代表替换。替换将依照下表来实现
表2在本发明的方法的最佳实施例中,还对乐器进行了重编号。也就是说,每个系列代表均与一个数字(对应于要获得的文件的格式)相关联。由于有16种乐器,该数字可以使用四位编码,而原始的乐器数量128则需要七位数字。这一方法的唯一缺点是,这样获得的文件(在步骤202之后)便不能再与一般的MIDI标准完全兼容。但是,使用表2可轻松地撤消这些更改,即使得到的文件与原始文件不同也没有关系。
依照本发明,MIDI文件主要通过EVENT步骤(搜索事件对并用单个事件对其进行替换)进行压缩。在给出的实施例中,此步骤应用于NoteOn和NoteOff事件。EVENT步骤203搜索与每个音符相关联的NoteOn和NoteOff事件。NoteOn事件是以三个字节编码的MIDI命令。该命令包括NoteOn指令代码、MIDI信道的标识、音量信息和音符编号。在一般MIDI标准中,共有16个信道,每个信道与一个乐器动态关联。一个信道-乐器指令包括一个关联指令代码、一个信道标识符和一个乐器标识符。乐器标识符由表2定义。信道通过MIDI命令与乐器相关联。NoteOff事件分配的信道和音符都与其相关联的NoteOn事件分配的相同,这也是使得一个NoteOn事件能与一个NoteOff事件构成事件对的原因。在实际中,只有音量这个参数可以区分NoteOn事件与NoteOff事件。NoteOff事件就是音量为零的NoteOn事件。一旦NoteOn-NoteOff事件对被识别出来,便会由一个用四字节编码的PlayNote指令所替代。PlayNote指令包括信道、音量、音符和持续时间信息。
在SEQ文件中,音符的持续时间被编码为一个黑键持续时间的分数,这个分数称为RTB(相对时基)。因此,用持续时间乘以RTB再乘以文件的时基(在文件的头标中编码),即可得到一个音符的实际持续时间。正如在原始文件中那样,SEQ文件包括一个用于对文件时基编码的头标。RTB可通过扫描文件获得。RTB是文件中音符的持续时间的最常用因素。还会用与此完全相同的过程对Δtime时间延迟进行编码。
在原始MIDI文件中,每个事件前都有一个时间延迟Δtime。时间延迟Δtime对在执行下一个MIDI命令之前必须经过的时间进行编码。每个MIDI命令前都有一个时间延迟Δtime,即使它等于0也不例外。在序列文件中,PlayNote命令前也有时间延迟Δtime命令。但是,由于去除了NoteOff命令,由在NoteOff命令之前的时间延迟Δtime占用的空间也得以节约下来。
在SEQ文件中,时间延迟Δtime等于0的实例也被去除掉。因此,那些必须同时执行的命令会随即执行,而不会被等于0的时间延迟Δtime隔离开来。
这样,在完成步骤203之后,与原始文件相比,可节约30%到40%的空间。
下一个步骤204将确定重现特征。它可由计算机101实现。在这一步骤中,计算机101的屏幕可以显示引用列于存储器106中的所有电话。然后,用户只需要选择对其电话的引用,便可以定义重现特征。如果用户的电话没有列出,或者如果用户希望使用其他参数,那么他们也可以使用自己的参数。在实际中,对于一个给定的电话,参数就是可用于将SEQ文件重现为声音的存储器空间、可用于将SEQ文件重现为声音的处理器功率以及电话音频系统的带宽。在图1中,音频系统包括转换器117和扬声器118。用户可以访问的另一个参数是乐器在表107中的排列顺序。根据默认,优先级最高的乐器是钢琴,其后是吉他(见表1)。如果用户更喜欢吉他,那么也可以使吉他具有比钢琴更高的优先级。用户通过修改存储器107中乐器的顺序,即可实现这一目标。
用这种方法选择的参数将用作本发明的方法中其余部分的参数。
下一步是可选的步骤205,用以使音符重新回到中心位置。如果要压缩的文件包括由于转换器117和扬声器118带宽的缘故而无法被重现设备重现的音符,则步骤205非常有用。这时,会移动音符,以使其位于所选设备的带宽内。例如,低于该带宽的所有音符均被可以演奏的最低八度音阶所替代,高于该带宽的所有音符均被可以演奏的最高八度音阶所替代。
这显示了带宽参数的重要性,它会随着设备的不同而变化。因此,取决于所选的设备不同,同一个SEQ文件并不总能被重现出来。
下一步是可选的步骤206,用于分析要压缩的文件中复调音乐的实例。图3显示了这一步骤。乐器I1是钢琴,乐器I2是吉他。应用表1中的优先级。电话110用于重现SEQ文件的最大功率为5MIPS(每秒钟执行百万条指令),存储器为2千字节。此外,乐器I1演奏每个音符需要1.5MIPS和500字节,乐器I2演奏每个音符需要1MIPS和1千字节。图3表明,乐器I2在时间t1时开始演奏音符N1。因而,在时间t1和t2之间,需要1MIPS和1千字节,这小于电话110可以分配的容量。于是,时间t1和t2之间的所有乐谱均可以演奏。在时间t2时,乐器I1在音符N1演奏的同时演奏音符N2。这样,所需的功率是2.5MIPS和1.5千字节,还是可以满足设备110的要求。在时间t3时,乐谱中加入了由乐器I1演奏的第三个音符N3。那么在时间t3时,所需的功率是4MIPS和2千字节。
在时间t4时,乐器I1演奏音符N1、N3和第四个音符N4。乐器I2还是演奏音符N1。重现这一组合所需的功率是5.5MIPS和2.5千字节。因此,无论是计算能力还是存储器容量,均超出了可用的功率。乐器I1比乐器I2的优先级高,因而会停止演奏音符N1来满足设备110的需求。
在时间t5时,乐器I1停止演奏音符N2和N3,只继续演奏音符N4。乐器I2继续演奏音符N1,但还开始演奏音符N5。在t5时所需的功率是4.5MIPS和2.5千字节。因此,需要去除一个由优先级低的乐器I2演奏的音符。被去除的是音调最低的音符,即音符N5。在时间t6时,乐器I2停止演奏音符N1。这时便能够同时演奏音符N4和N5。因此,在时间t5和t6之间不演奏音符N5。对文件的分析会以此方式继续下去。
如果检测到复调音乐,即需要同时重现多个音符,将计算重现该复调音乐所需的功率。如果功率不足,则无论是微处理器功率还是存储器容量不足,第一步均是从复调音乐中去除由优先级最低的乐器演奏的音符。如果优先级最低的乐器在复调音乐中演奏多个音符,则先去除音调最低的音符,去除音符的操作将直到剩余的音符可以被设备110的资源重现时为止。这一过程适用于原始文件中音符的每次出现或消失。这个音符去除步骤是步骤207。
文件中复调音乐的实例永远不会超出设备110能够提供的功率也是可能的。这时,不需要额外的压缩,因而压缩过程也被终止。否则,下一步将是步骤207。
在步骤208中,计算机101的用户有一个SEQ格式的文件存储在单元105中。
下一步可以是步骤209,用以在目标上进行记录。这里,目标即是设备110。在步骤209中,计算机101和电话110通过电缆111相连。存储器115和104包括指令代码,使得微处理器112和102能够依照任何协议进行数据通信和数据交换。存储在单元105中的文件被传送到单元114。当传送完成后,设备110又成为自主的,而下一步可以是声音重现步骤210。在步骤210中,电话110的用户从存储在单元114中的旋律中选择一个。该旋律以SEQ文件格式(依据本发明的方法获得)存储在单元114中。然后,由存储器116中的指令代码控制的微处理器112会读取SEQ文件,以生成由转换器117和扬声器118转换为声音的样本。
依据本发明的方法获得的SEQ文件格式还能够进行快速重现。减少同一声音输出的指令数量也可以减少对存储器进行访问的需求以及总线113上的拥塞程度。因而,将SEQ文件重现为声音不再对由微处理器112执行的其他过程造成不利影响。
计算机101用来生成SEQ文件的程序还可用于修改所获得的SEQ文件。可以以乐谱的形式编辑该文件(如图3所示),以便调整这些音符的音调或长度。但是,一旦实现了修改,则须再次确认修改后的文件处于要对其进行存储的设备的规格范围内。
权利要求
1.一种压缩MIDI文件的方法,其特征在于包括一个具有如下内容的EVENT步骤-扫描(203)MIDI文件以搜索开始事件及与其相关联的结束事件,以及-用在时间上受限的单个事件替换(203)找到的(事件)对。
2.根据权利要求1所述的方法,其特征在于起始事件是由MIDI标准定义的“NoteOn”事件,与其相关联的结束事件是由MIDI标准定义的“NoteOff”事件。
3.根据权利要求1或2所述的方法,其特征在于还包括一个具有如下内容的POLY步骤-针对存储器和计算能力方面,定义(204)在给定的乐器上演奏一个音符所必需的资源,-定义(204)用于播放MIDI文件的重现装置的资源,-构造一个存储表(107)来定义乐器的相对优先级,-在MIDI文件中检测(206)超出重现装置的能力范围的复调音乐的实例,-确定(108)重现一个音符所必需的资源,以及-根据需要从检测到的复调音乐实例中去除(207)尽可能多的音符(这些音符与构成复调音乐的乐器中相对优先级最低的乐器相对应),以使复调音乐降到重现装置可以接受的程度。
4.根据权利要求1至3中任意一个所述的方法,其特征在于还包括一个具有如下内容的BAND步骤-确定设备可以重现的带宽,以及-去除超出设备的重现能力范围的音符。
5.根据权利要求1至4中任意一个所述的方法,其特征在于还包括一个具有如下内容的TRANSLATE步骤-确定可以能够进行重现的设备的带宽,以及-对MIDI文件中超出带宽范围的音符进行转换(205),以使这些音符位于该带宽范围内。
6.根据权利要求1至5中任意一个所述的方法,其特征在于如果检测到由单个乐器演奏的复调音乐实例,且对它的重现会超出重现装置的能力范围,则本方法还包括一个LOW步骤,该步骤的开始便是去除音调最低的音符。
7.根据权利要求1至6中任意一个所述的方法,其特征在于还包括一个旨在减少MIDI文件中可能的乐器数量的REDUC步骤。
8.根据权利要求7所述的方法,其特征在于为了减少(202)乐器数量,这些乐器被分为不同的系列,在MIDI文件中,每个乐器均由其所在系列的代表乐器替代。
9.根据权利要求1至8中任意一个所述的方法,其特征在于还包括一个旨在从MIDI文件中去除没有声音输出的命令的SUPPRESS步骤。
10.一种方法,其特征在于包括如下步骤-在第一个设备(101)上执行依据权利要求1至9中任意一个所述的方法,以便生成一个压缩的文件,-将压缩的文件传送给第二个设备(110),-在第二个设备上播放该压缩文件。
11.一种方法,其特征在于包括如下步骤-在一个设备上执行了依据权利要求1至9中任意一个所述的方法,从而生成压缩的文件,以及-压缩的文件在该设备上播放。
全文摘要
要压缩一个MIDI格式的文件,须将其转换(201)为格式0文件。然后,扫描格式0文件以将可能的乐器数量减少(202)为16。接下来,将去除没有声音输出的MIDI命令,并用PlayNote命令替换(203)Note On和Note Off命令。这样可去除Δtime等于0的实例。基于需要播放该压缩文件的设备的特征,会使音符重新回到与设备兼容的带宽的中央位置(205),然后扫描文件来搜索复调音乐的实例。如果复调音乐的实例超出设备的能力范围,则会依照乐器优先级列表和音符音调来减少(207)这些复调中的音符。
文档编号H04M19/04GK1321929SQ01117440
公开日2001年11月14日 申请日期2001年4月28日 优先权日2000年4月28日
发明者丹尼尔·鲍德特, 夏维尔·萨利米金, 休伯特·赫莱恩, 马修·赫伯特, 克里斯托弗·康普斯 申请人:阿尔卡塔尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1