专利名称:对压缩的音乐演奏数据进行解码的仪器的制作方法
技术领域:
本发明是关于音乐数据记录方法和再现仪器,当相同的数据被传送和进而传送的数据是存储在存储介质内时,该记录方法和再现仪器能够减少传输率和数字化音乐演奏数据的存储容量。
背景技术:
一般而言,MIDI(音乐乐器数字接口)广范地被使用作为演奏音乐的音乐演奏数据的传送装置。这里,MIDI是规定连接到声源仪器(即合成器,电子钢琴等)的硬件和软件的工业标准,以可互换地使用各种音乐演奏数据。更详细而言,当MIDI被使用时,演奏员通过键盘输入的音乐数据被转换为MIDI数据和然后通过传送路径加以输出。另一方面,声源仪器配置有这样的功能用以接收MIDI数据和实际地产生音乐声音。因此,当声源仪器连接到传送路径时,接收的MIDI数据能被翻译以产生音乐声音。
上述的MIDI数据粗略地由下边数据组成(1)铵键(键被压)指示声音的开始或释放键(键不被压下)指示声音停止的音乐音调(note)数据(以后参考为音调数据)。进而,音调数据包括通过键数指定的声音强度(音调数)的数据。
(2)在MIDI情况下,伴随音调数据被传送或被接收的指示声音速度的重音数据。
(3)传送音调(intonation)表示(例如渐强,音调数的音乐抖动)到声源仪器的控制数据。在实际中,当演奏员使用踏板或杆时,由于杆位置的变化也被配置在演奏员侧的MIDI转换器所检测,杆的位置数据也被传送。
进而,由于音乐演奏数据在音乐演奏过程中瞬时地被传送,在混合的情况下,音乐演奏数据流包括上述的数据。
这里,由于所有MIDI数据被数字化,通过使用计算机仪器(即,合成器)和存储介质使得数据能被记录,编辑和再现。换言之,MIDI数据能作为数据文件存储在存储介质中。这里SMF(标准MIDI文件)广泛地被使用作为数据文件格式。然而,由于MIDI数据真实的时间数据,当各自的数据成分(以后称为MIDI事件)例如声音开始或声音停止被记录在SMF时,MIDI数据被记录在这样的条件下,就是时间数据分别附着在MIDI数据上。进而,由于为了记录产生MIDI事件的顺序,音调数据和控制数据以混合的形式被记录。
此外,由于对SMF没有限制,当数据文件被存储时,由于这里存在着存储介质容量的限制,最好数据被压缩。因此,在当MIDI数据被压缩的情况下,一般而言,这里早已使用了在程序例如LHA或ZIP下的所采用的称为LZ(Lempel-zif)方法的模式匹配的压缩技术。该数据压缩原理简单地解释如下。
当压缩的文件在原始文件的基础上形成时,在原始文件的处理位置从文件头开始,从处理位置读出的数据被复制在压缩的文件上。这里,当在原始文件中存在着两个相同的数据区时,在处理位置达到两个相同数据区的第二数据区的头时,数据不是简单地被复制。作为替代,从第一数据区到处理位置的距离和匹配数据区的长度二者被记录在压缩文件内,进而,在原始文件的处理位置被移动到第二数据区的结束,这样,继续处理,在做此事时,在第二数据区的数据并不复制。以此相反,仅仅数据长度和数据距离被加到压缩的数据。
作为对上述描述的理解,在这种压缩方法中,该压缩率随着两个相同数据存在的增加数据区而增加。在处理位置之前存在的数据区的基础上,当存在于处理位置之后的数据模式被检索,当两个相同的数据区相互相邻时,压缩率能被增加。这里由于要被的检索的区域大小的限制。
作为使用音乐演奏数据文件例如SMF的乐器的实例,这里存在着通讯伴奏乐器(在日本的卡拉OK,这里暗指无管弦乐队)。在无存储类型的通讯伴奏乐器的情况下,从分配中心传送的MIDI音乐演奏数据文件通过公共线路被终端装置接收,接收的数据文件通过终端装置再现作为音乐或歌的伴奏。因此,无论何时用户选取歌,相应所选音乐的音乐数据从中心侧被传送。在这种情况下,当音乐演奏数据文件在分配中心被压缩和然后被传输,用于传输时间能被缩短和因此更经济,这就有可能减少传输线的租费。
进而,在存储类型通讯伴奏乐器的终端装置的情况下,大容量的存储介质(例如硬盘)装在其中,过去传送的音乐演奏数据文件被存储以便被更新。在这种情况下,当音乐演奏数据文件在压缩的情况下被存储,这里存在着优点,使得存储介质上存储大量的各种歌曲。
另一方面,在上述的存储类型伴奏乐器中,为了满足用户的各种音乐要求,这就需要在有限的存储介质内存储尽可能多的歌曲。因此,最好音乐数据文件数据被压缩。在音乐数据例如SMF的情况下,和通常的文本文件相比,相对高压缩率能被获得,这是因为在音乐演奏数据的情况下,按其自然性质,相同的数据经常被重复地记录。
近来,然而,由于用户的要求越来越不一样,这里存在着存储更大量歌曲的要求。这里,当存储介质的容量简单地被增加了,不仅被存储介质的费用增加了,由于从中心分配歌曲数目的增加,传输线的徂用费用也增加了。
为了克服这些问题,这就可能通过简单地减少音乐演奏数据来减少数据量和分配的费用,使得较少数据容量的音乐数据文件能被传送。在这种情况下,然而,由于音乐演奏的质量显著地变差,这种方法是不实际的方法。其结果是,这里存在着减少数据量和音乐演奏数据传送的要求,但不减少音乐演奏数据的质量。
发明内容
本发明的目标是提供在高压缩密度下记录音乐数据而不使音乐数据变坏的方法和再现使用该方法记录的音乐数据的乐器。
本发明提供了一种记录顺序音乐演奏数据的文件的方法,该每一个数据包括时间数据、在所述时间数据指示的瞬间指示音调和音调的音乐声音开始或音乐音停止的音调数据、以及指示声音速率的重音数据,所述方法包括步骤顺序地读出音乐演奏数据;依照时间数据在第一个记录区域记录时间数据、音调、或音乐声音开始或者音乐声音停止;在第二记录区域记录重音数据,第二记录区域和第一记录区域相互分开;组合在第一和第二区域记录的数据以获得另一个文件;和,在记录介质上记录另一个文件。
文件可以由每一个包括时间,音调和重音数据的大量音乐演奏数据和每一个包括控制数据的另一个大量音乐演奏数据所组成。在这种情况下,当判别被做出,在第一个记录区记录时间数据,音调数据,或音乐声音开始或音乐声音停止,和在第二记录区的重音数据;当判别没有做出时,在第三记录区记录控制数据,第三记录区和第一和第二记录区相分开;和组合在第一,第二和第三区域内的记录数据以获得另一个文件。
进而,本发明提供一种再现压缩的顺序音乐演奏数据的仪器,包括对存储在压缩的文件存储介质的压缩顺序音乐演奏数据进行解码的解码装置,每一个音乐演奏数据包括时间数据、在时间数据指示的瞬间指示音乐声音开始或音乐声音停止的音调数据、指示声音速率的重音数据和控制数据,音调,重音和控制数据分别记录在第一存储介质内的彼此相分开的第一、第二和第三记录区域临时存储解码的顺序音乐演奏数据的音乐数据存储介质;控制再现临时存储在音乐数据存储介质内的解码的顺序音乐演奏数据,使得音调和重音数据在控制数据之前被再现的控制装置;和,在控制装置的控制下再现顺序音乐演奏数据和根据再现顺序音乐演奏数据产生音乐声音的声源。
进而,本发明提供了压缩连续音乐演奏数据的仪器,它包括分离音乐演奏数据为至少音调数数据,声音速率数据,声音间隔数据,和控制数据的分离装置;压缩每一种分离的数据以形成压缩的音乐演奏数据的压缩数据。
进而,本发明提供了对压缩音乐演奏数据进行解码的仪器,它包括对用Lempel-Zif方法压缩的音乐演奏数据进行解码的解码装置;通过第一解码装置解码的音乐演奏数据进行解码以再现至少音调数数据,声音速率数据,声音间隔数据和控制数据的第二解码装置。
图1示出了具有时间数据的MIDI事件的实例;图2示出了当图1所示事件以SMF实际描述时所获得的数据串;图3示出了依照本发明第一实施例描述事件时所获得的数据串;图4以更抽象的形式示出了图3所示的数据串;图5示出了MIDI事件的实例,其中类似于第一实施例的音乐演奏数据按照另一个表现方法被格式化;
图6示出了当图5所示事件以SMF实际描述时所获得的数据串;图7示出了当事件依照本发明第二实施例描述时获得的数据串;图8以更抽象的形式示出了在图7示出的数据串;图9是形成图7所示的数据串的流程图;图10的框图示出了依本发明的再现仪;图11的流程图示出了由图11所示再现仪执行再现过程;图12示出了表现音调的SMFΔ时间和本实施例间隔之间的关系;图13示出了SMF的格式;图14框图示出了依本发明的音乐演奏数据压缩仪的实例;图15详细的方框图示出了图14所示初级编码产生器的实例;图16示出了在图15所示讯道分离器形成的讯道图;图17的流程图用于辅助解释图15所示分析器的处理;图18示出了由图15所示分析器形成的音调表;图19示出了由图15所示分析器形成的控制器表;图20的流程图用于辅助解释图15所示音调Δ编码产生器的处理;图21示出了由图15所示音调Δ编码产生器形成的音调Δ编码;图22的流程图用于辅助解释图15所示间隔编码产生器的处理;图23示出了由图15所示间隔编码产生器形成的间隔编码;图24示出了由图15所示音调数编码产生器形成的音调数编码;图25示出了由图15所示速率编码产生器形成的速率编码;图26示出了由图15所示控制器编码产生器形成的控制器编码;图27示出了SMF连续事件块;图28示出了本发明的连续事件编码;图29示出了图28所示连续事件码的效果;图30示出了图15所示编码安排器安排的初级编码;图31的方框图示出了音乐演奏数据解码仪;图32的流程图用于解释图31所示第二编码器的处理;图33详细的流程图用于辅助解释图31所示初级编码解码器的处理;图34详细的流程图用于辅助解释图33所示轨迹解码处理的处理;
图35详细的流程图用于辅助解释图34所示音调事件解码处理的处理;图36示出由图35音调事件解码处理解码的音调-开事件;图37示出了由图35所示的音调事件解码处理解码的音调-关排队。
图38详细的流程图辅助解释图34所示控制器事件解码处理;图39示出了由图38所示处理解码的控制器事件。
具体实施例方式
详细地参照附图解释依本发明的音乐演奏数据记录方法和音乐演奏数据再现仪器的实施例。
依照本发明的方法的特点如下在此情况下,包括指示音乐声音开始和停止的音调数据与至少指示声音速率的重音数据和指示音调的控制数据之一相混合的音乐演奏数据被记录,音调数据,重音数据和控制数据分别地被采集和然后独立地记录在不同的区域。为什么依照音乐数据类别被分别记录在不同区域的理由如下从音乐自然特性观点来看,音调的数据模式在曲调重复的音乐部分经常相互匹配;在另一方面,重音数据模式和控制数据在曲调重复的音乐部分并不必要相互匹配。
参照图1将要解释音乐演奏数据的例子,其中表示了时间数据,音调数据和重音数据,为简洁起见而没有表示控制数据,在这个实例中描述了MIDI(乐器数字接口)的事件(数据元素)图1音乐演奏数据的实例示出了[do,re,mi,do,re,mi,do,re,mi],它们的音量逐渐地增加。在SMF(标准音乐MIDI文件)中,具有图1所示时间数据的MIDI事件将被串联地记录在文件中。
这里,当音乐数据的一般描述被表示为(DT,A,B,C)时,该DT是指示先前事件相对时间的事件时间数据。
进而,(A,B,C)是MIDI事件,它们每一个的意义如下A指示MIDI事件种类的识别数据ON声音开始事件OFF声音停止事件当上述编码A是声音开始事件或声音停止事件时,编码B和C的内容如下B键盘数(音调数)C重音(音量)数据,数字值C的增加暗示该键被使劲地压下。声音停止事件的重音数据是没有意义的,所以固定的值被记录。
进而,DT,A和B构成了音调数据。
在上述的例子中,记录的音乐数据是以这样方式被记录的,每一个声音[do,re,mi,do,re,mi,do,re,mi]的间隔是时间10;声音间隔(音调间隔)是8;和重音(音量)是逐渐地从40增加到80。
图2示出了在SMF中的真实的数据串,其中数据是沿着从上级数据串到下级数据串记录的。换言之,具有图1所示时间数据的MIDI事件数据是简单地按事件的顺序和时间顺序被记录的,其中音调数据和重音数据是相互混合被记录的。在这个例子中,由于相同数据模式的产生率是非常低的,数据压缩率是非常低的。
在本发明中,因此,具有时间数据的MIDI事件按照数据的种类被记录在不同的区域,这如图3所示。在图3中,首先重音数据从每一个具有时间数据的事件数据中取出,和仅仅音调数据按时间顺序被记录。在此之后,重音数据以这样的方式在事件数据之后被记录,使得两者记录区域相互分开。更详细一点,前级是音调区域1,那里记录音调数据;随后的尾级是重音区域2,那里记录重音数据,图4以更抽象的方式示出了这些区域的划分。在这种情况下,通过记录相对于记录重音数据的重音区域2头位置2A的数据作为在整个文件头区域的重音开始位置数据3使得两个区域的边界相互加以区分。
当上述的数据串基于模式匹配的压缩方法被压缩时,和SMF简单的压缩相比,这就可能显著地改善压缩效率。这是因为在数据大小和数据长度上音调数据区1是相同的数据模式。
在图3所示例的情况下,从第一个串的第一个[ON]到同一个串的最后一个[mi]的模式与从第二个串的第一个[ON]到同一个串的最后一个[mi]的模式和从第三串的第一个[ON]到同一串的最后一个[mi]的模式分别相同,这样,这些串能够被压缩。
在第一个实施例中,虽然不包括控制数据的音乐数据已经解释过了,包括控制数据的音乐数据的记录方法将作为第二个实施例加以解释。
在图5所示的MIDI事件中,音乐数据是以这样方式被记录的,使得虽然键盘的按压强度是恒定的,但在演奏开始后音量控制杆被立即移动以逐渐地增加音量。
这里,和第一个实施例的情况一样,当音乐数据一般描述为(DT,A,B,C)这里DT是指示先前事件相对时间的事件时间数据。
进而,(A,B,C)是MIDI事件,它们每一个的意义如下A指示MIDI事件种类的识别数据CL控制事件,当A是控制事件时,B和C如下B指示控制种类的识别数据EX音量控制C音量数据即当A是控制事件,(DT,A,B,C)均是控制数据图6示出了在SMF内的实际数据串,其中数据按顺序从上级数据串到下级数据串被记录。换言之,具有图5时间数据的MIDI事件是简单地控制按时间顺序和事件顺序被记录的,其中重音数据和控制数据相互混合地被记录的。在这个实例中,由于相同数据模式的产生率非常低,数据压缩效率也非常低。
在本发明中,因此,具有时间数据的MIDI事件的记录区域不同于三类数据的区域,这如图7所示。在图7中,重音数据(即[64])从不同于控制事件中的事件数据中取出,和仅仅剩下的音调数据按时间顺序被记录(从上级到第三级)。在此之后,仅仅取出的重音数据被连续地记录(在第四级)。进而,随后的重音数据,控制事件的控制数据按时间的顺序被记录,其结果是,三种数据能分别地录在不同的记录区内。
图8示出了这些区域的划分。在这种情况下,前级是记录音调数据的音调区域1,顺着前级的中级是记录重音数据的重音区域2;和随着中级的尾级是记录控制数据的控制区域4。
这里,下述点应当注意由于仅仅控制事件从SMF的第一事件串中被提取出来,并且一块安排在文件的另一个区域,这就需要计算在提取事件串和保留事件串的两串当中的事件之间的相对时间。在本发明中,控制事件的时间数据被重写为前一控制事件的相对时间。换言之,控制事件之间的相对时间通过加除了安排在中间的控制事件之外事件时间被收集在一块和重写,即加时间2和时间8。
在图8所示的该例中,在记录音调数据的音调区域1之后,立即安排了记录重音数据的重音区域2,记录控制数据的控制区域4安排在重音区域2之后的区域。因此,相关于重音区域2和控制区域4的头位置2A和4A的数据记录在文件的头部区域作为重音开始位置数据3和控制开始位置数据5,这样,各自区域的边界能够被区分。
进而,在该实施例中,由于音量数据包括在控制数据中和音量数据由此受到控制,当格式化时记录在重音区域2的重音数据仅仅是必需的。因此,这些数值在程序中可以设置为任何值,而在音乐演奏中并没有任何意义。
因此,当这些数值被设置为图7当中的相同值时(例如,[64]),这就可能增加数据压缩效率。
当在上所述的数据串的数据依照模式匹配的压缩方法被压缩时,由于音调区域1和重音区域2在数据大小和数据长度上是相同的数据模式,这就可能显著地改善数据压缩效率,这和第一实施例的情况相同。
在图7所示实施例的情况下,从第一串的第一个[ON]到同一串的最后一个[mi]的模式分别和从第二串的第一个[ON]到相同字串的最后一个[mi]的模式和从第三串的第一个[ON]到同一字串的最后一个[mi]的模式相同。进而,由于重音区2均是[64],因此是相同模式,这个串能被压缩。
因此,在文件中的音调区域1和重音区域2在数据尺寸和数据长度是相同的模式,和这里,当数据文件被压缩时,和SMF简单压缩相比较,这就可能显著地增加压缩效率。
在依照本发明的记录音乐数据的方法中,从SMF文件到第二实施例的文件格式的转换数据的方法将参照图9流程图加以描述。
首先,在步S1,要被转换的SMF被打开,处理位置被设置在文件头。进而AT,AT1和AT2被初始化为“0”。
这里,AT是事件音乐头的绝对时间;AT1是写在过去步S4的事件的音乐头的绝对时间;和AT2是写在过去步S5事件音乐头的绝对时间。进而,在图5,当音乐头被确定为绝对时间“0”时,通过加被DT累记的在左端记录的时间数据可以获得每个事件的绝对时间。
顺序地,在步S2,每一个具有时间数据的事件(DT,A,B和C)从SMF处理单元中读出。进而,相对时间DT被加到事件时间数据DT以获得现在读出事件的绝对时间。
进而,在步S3,处理根据A值进行分枝。即,当A=ON(声音开始事件)或A=OF(声音停止事件),YES被确定;和当A=CL(控制事件)NO被确定。这里,在从SMF文件到没有控制事件的第一实施例的文件格式的转换数据的情况下YES总是被确定。
进而,在步S4,当在步S3中A=ON或A=OF时,事件内容写入记录音调区的音调区1和记录重音数据的重音区域2,这如图8所示,在这时间,由于写入音调区域1的DT是在最接近的过去写入音调区域1事件的相对时间,DT被再次计算和然后被记录。达时,该AT的值被写为AT1。
进而,在步S5,当在步S3中的A不是ON或OF,即,当A=CL(控制事件),事件内容被写入记录控制数据的控制区域4。在这时,由于现在写入控制区域4的DT是在最近的过去写入控制区域4的事件的相对时间,DT被再次计算和然后加以记录。换言之,在先前事件和当前事件之间的时间差被获得。在这时,该AT的值作为AT2被写入。
进而,在步S6,SMF的处理位置前进了一个事件(在步S2读出的数据内容)。
在步S7,SMF的处理位置被鉴别是否位于在文件的端部,如果YES;即,这里没有数据被处理,程序前进到步S8。然而如果NO;即,这里还存在着要被处理的数据,程序返回到步S2以重复上述的类似的处理。
进而,在步S8,存储音调数据的音调区1,存储重音数据的重音区2,和存储控制数据的控制区域4均相互组合以获得图7所示的目标文件。这样获得的目标文件通过已知的记录方法记录在存储介质上。
再现依照上述本发明音乐数据记录方法压缩的音乐演奏数据的再现仪器将在下面描述。
如图10所示,再现仪器主要配置有记录压缩文件的压缩文件存储介质11(其中按上述记录方法获得的音乐数据文件按照模式匹配方法加以压缩);对该文件进行解码以获得初始数据的解码器12;用于瞬间存储解码的音乐数据的音乐数据存储介质13;顺序地处理解码的音乐数据再现控制器14;和再现和产生处理的输出数据作为真实声音的MIDI声源。
压缩的文件存储介质11是记录通过传输线(例如电话线)传输的压缩的文件的大容量的盘(例如硬盘)。进而,音乐数据存储介质13是高响应速度读/写存储器(即RAM)以应付MIDI数据的再现速度。进而,解码器12和再现控制器14均装在微处理器16内以依照软件执行音乐数据的算术处理。
参看图11将在下面描述音乐数据的再现处理。记录在存储介质11内的压缩的文件被解码器所解码,使得去压缩的音乐数据能被获得。这样获得的音乐数据依照例如图8的记录格式存储在音乐数据存储介质13内。
再现控制器14依照如图11所示的处理程序处理音乐数据文件以再现MIDI数据和使用MIDI声源15产生音乐声音如下首先,在步S11,从记录在音乐数据存储介质13的音乐数据文件的头位置,如图8所示的重音开始位置数据3和控制开始位置数据5被读出以使数据从音调区域1,重音区域2和控制区域4的每一个头能被读出。这里音调区域11的头位于邻近控制开始位置数据5的位置。进而,两个标志,标志1和标志2被准备。第一标志flag1假设去指示从音调区和重音区的再现状态,和第二标志flag2假设为指示从控制区的再现状态,在再现前,两个标志初始化为“没结束”状态。进而,两个其它的标志oflag1和oflag2被准备。第一个标志oflag1指示每一个从音调区1和重音区2读出的MIDI事件的输出状态,和第二标志oflag2指示从控制区域4读出的每一个MIDI事件的输出状态。这两个标志oflag1和oflag2初始化为“输出结束”状态。
进而,在步S12,这要鉴别是否为再现所有的内容均从音调区读出了。如果下一次要从音调区1读出的内容已经没有了(YES),程序进行步S13以设置标志1“结束”。另一方面,如果下次从音调区1要被读出的内容存在(NO),流程前进到步S14去检测标志oflag1的状态,即,去检测从音调区域1和重音区域2读出的每一个MIDI的输出状态。这里,如果NO;即,如果已经输出了,流程进到步S15。这里,如图1解释的数据(DT1,A1,B1)被读出,和进而,重音数据(C1)从重音区域2读出。进而,读出的数据(DT1,A1,B1)和数据C1被重构为新的数据(DT1,A1,B1,C1)以被输出到MIDI声源15作为MIDI事件(A1,B1,C1)。进而,标志flag1被设置为“没有一输出”状态。当读时,虽然数据按从每一个区域头开始的顺序被读出,鉴别是否所有被读出的内容仅被音调区域执行。因为音调数据(DT1,A1,B1)和重音数据(C1)彼此一一对应,和进而读所有内容同时在音调区域和重音区域内完成。
顺序地,和在步S12,S13,S14和S15相同的处理在步S16,S17,S18和S19内为控制区域4所执行。更详细而言,如果所有的内容还没有从控制区域4中读出(NO),标志oflag2的状态被检测(在步S18)。如果NO(已经输出了),在步S19,如参考图5所解释的控制数据(DT2,A2,B2,C2)从控制区4中被读出,和标志oflag2被设置为“不一输出”状态。进而,当所有的内容均在步S16读出(YES),标志flag2被设置为“结束”(在步S17)。这里,附在每个数据成分的数字用于鉴别在音调数据和重音数据基础上重新构成的数据(DT1,A1,B1,C1)。
随后,流程进行到步S20以检测是否所有的内容从音调区1,重音区2和控制区4中读出。这可以通过鉴别是否两个标志flag1和flag2分别指示“结束”。结果两个标志flag1和flag2指示“结束”(YES),流程前进到步S21以完成所有的再现处理。如果NO,在另一方面,流程前进到步S22。
在步S22,流程检测标志flag1的状态。如果标志flag1指示“结束”(YES),流程跳过相对数据输出的顺序的处理,和分枝到步S25。这是因为从音调区1和重音区2的再现MIDI事件已经被完成了。如果标志flag1指示“未-结束”(NO),由于读出但还未输出的MIDI事件(A1,B1,C1)被呈现,在步S23的输出处理被执行。更详细地说,在步S23,指示事件时间数据的DT1的值被检测。这里DT1指示时间直到数据(A1,B1,C1)被输出。因此,如果DT1=0(YES),由于这指示,当前时间是数据(A1,B1,C1)将被输出到MIDI声源15的时间,流程分枝到步S24。在步S24,MIDI事件(A1,B1,C1)被输出到MIDI声源部分15,和标志oflag1被设置为“输出结束”。在步S23,如果DT1不是0(NO),是必须输出数据的时间(A1,B1,C1)。因此,在步S23,DT1再次被检验。在步S28,DT1变化为小于1的值。在步S28,执行等待单位时间。
进而,在类似于在步S22,S23,S24处理的步S25,S26和S27中,类似的处理被执行,这是为已经被读出但还没有被输出的MIDI事件执行的。即,在步S25和S26,标志flag2的状态被检测。如果DT2=0(YES),在步S27,MIDI事件输出给MIDI声源15,和标志flag2被设置为“输出-结束”。
如果流程前进到步S28,这里存在着已经被读出但还没有输出的MIDI事件(A1,B1,C1)或(A2,B2,C2)的至少一个。为了在正确的时间输出这些事件,在步28,DT1和DT2两者均被减1,在单位时间已经被等到以后流程前进到步S22。
如上所述,在上述的每一个实施例中,虽然SMF已经被解释为通常的音乐演奏数据文件。但并仅仅限制于此,然而,只要音乐演奏数据文件包括音调数据,重音数据和控制数据中的至少一种,和进而这些数据按发生顺序加以记录,通过依本发明的方法有效地压缩音乐数据这就可能减少数据容量。
依照本发明的压缩音乐演奏数据的仪器的实施例将在下面描述。
首先,要被压缩仪器压缩的文件是例如图12和图13所示的SMF数据(标准的MIDI文件)。SMF的格式是由Δ时间,状态,音调数和速率所构成。这里,Δ时间表示两个相邻事件之间的相对时间,和事件包括各种音乐数据例如音调-开始状态,音调-停止状态,音调数,速率,等等。这里音乐演奏数据包括各种音乐数据例如声音速率,在音乐演奏的调子,拍子,声源种类,重置控制等等和附加上由音调,声音间隔表示音调数。进而,在SMF中,通过按时间顺序安排各种音乐数据形成了音轨。
进而,当在音乐的页上表示时当两个曲调是相同时,这里存在着许多情况,当用SMF数据表示时,该两个曲调并不是完全相同。图13示出的两个类似曲调1和2的SMF数据作为例子,它们当中的每一个是由Δ时间,状态,音调数,和速率组成。在这个情况下,尽管两个曲调在音乐上是相同的,但在两个曲调之间Δ时间和速率是不同的,以避免单调的重复和/或加上转调。
在本说明书中,[声音开始事件]以后称为[音调-开始事件],和[声音停止事件]以后称为[音调-停止事件]。进而,[音调-开始事件]和[音调-停止事件]合起来称[音调事件],除了[音调事件]之外的[事件]表示[控制器事件]。
在图14中,SMF格式的输入数据100被初级编码发生器200所分析以分音乐数据为最后的音调数,速率,间隔和其它数据,作为结果,在不同区域安排的初级编码300能独立地被形成。初级编码300在每个区域使用第二级编码产生器400依照LZ(Lempel-Zip)方法被压缩以形成第二级编码500。
没有压缩的初级编码300和第二级编码500提供给开关600,编码300和500通过开关600被选择地输出。
如图15所示的更加详细,初级编码形成装置200配置有讯道分离器110,分析器120,音调Δ编码产生器130,控制器Δ编码产生器140,间隔编码产生器150,音调数编码产生器160,速率编码产生器170,控制器编码产生器180,和编码产生器190。进而,在图15所示的该实例中,指示一音调,控制器Δ编码,间隔编码,音调数编码,速率编码和控制器编码的六类音调Δ编码的初级压缩编码被编码安排器190安排,和作为初级编码300输出到第二级编码产生器,以进行继续的二级压缩。
讯道分离器110检测是否大量的讯道事件包括在SMF格式输入数据100中的一个音轨内。当大量讯道事件被包括时,音轨被如此地划分,使得仅仅一个讯道能被包括在一个音轨内。进而讯道分离器100形成如图16所示指示音轨和讯道之间对应关系的讯道图。因此,在此之后,处理以音轨为单元进行。这里,虽然几乎所有的SMF事件包括讯道数据,通过划分音轨和进一步形成讯道图,这就有可能省略每一事件的讯道数据。这就形成了底数据量。
分析器120执行如图17的示的处理,以形成图18所示的音调表和图19所示的控制器表。在图17,首先,Δ时间和事件按顺序从SMF中被读出(在步S10),从音轨头来的事件时间在读出Δ时间的基础上加以计算(在步S20)。进而,事件被分析,和然后分类为[音调-开始事件],[音调-结束事件]和[控制器事件]三类。
在[音调-开始事件]的情况下,音调数和速率被寄存在图18所示的音调表内(步S30至S40)。在[音调-停止事件]的情况下,间隔被计算和然后寄存在音调表内(步S50至S60)。进而,在控制器事件]的情况下,控制器事件被寄存在如图19所示的控制器表内(步S70)。进而,这里存在继续的数据,Δ时间和事件被读出(步S80至S10)。如上所述,音调表和控制器表能形成每个音乐数据。
这里,每个音轨的音调事件按时间的顺序安排在音调表中,这如图18所示。进而,每个音轨的控制器数据(除了音调数据之外)也按时间的顺序安排在控制器表内,这如图19所示。进而,在[事件-开始事件]的情况下,当音调数和速率被写入的情况下,事件时间被写到音调表预定列中,和进而音调表的[见音调-停止]列被设置为初始值
。
进而,如果事件是音调-停止,音调表被从头扫描以选取具有事件早于音调-停止事件时间的音调,相同的音调数和[见音调-停止]被置
,以对应音调-开始事件。进而,对应音调-开始时间Ton和音调-停止时间Toff之间的差别(Toff-Ton)被记录在音调表的[间隔]列作为[音调间隔],和进而[见音调-停止]被置为[1]。
这里,虽然,[间隔]概念并不存在在SMF中,当这概念被使用时,由于音调-停止事件能被省略,数据容量能被减少。在SMF中,一个音调能被一对音调-开始事件和一个音调停止事件表示,这如图12所示。进而,在音调-停止事件之前的Δ时间对应着一个间隔。进而,音调停止事件的音调数甚至是必要的,以确保音调开始事件的对应。然而,当间隔的概念被使用时以确保音调-开始事件和音调-停止事件之间的对应时,音调-停止事件能被去掉。进而,音调停止事件的速率几乎没有被接收MIDI数据的声源所使用。因此,当速率被省略时,这并不出现问题。因此,当音调-停止事件(三个字节)被省略时,虽然这里存在着Δ时间的数据量增加,由于省略事件-停止事件的效果是大的,这就有可能最大为每一个音调减少3个字节。其结果是,由于单个音乐经常包括10,000音调,在这种情况下,这就有可能最大减少30k字节,所以压缩效率能被增加。
当事件是除了音调-开始事件和音调停止事件之外的事件时,事件时间和事件内容均寄存在控制器表内。如上所述,事件的NA-单元寄存在音调表内,和事件的NB-单元寄存在控制器表内。
这里,音调Δ编码产生器130和控制器Δ编码产生器140两者均在图15中示出并且在下面给于解释。由于两个Δ编码产生器的处理内容是相同的,仅仅音调Δ编码产生器以示例的方式加以解释。如图20所示,音调Δ编码产生器130为寄存在音调表内的每一个事件计算当前时间T[i]和先前时间T[i-1]之间的差别[步S110]如下ΔT[i]=T[i]-T[i-1]这里i=1至NA,T
=0这样计算的值被写入在音调表的预定的列。换言之,在音调事件之间每一个相对时间能被获得。
这里,在SMF中,由于Δ时间由一个拍的小数确定的基本单元的可变长度编码所示的,字节的数目随着Δ时间减小值而减小。例如Δ时间值小于127,一个字节就够了。然而,当Δ时间值是在128和16383之间,两个字节是必需的。虽然当Δ时间的基本单元是小的时候,音乐的表现能力(power)能被增加,必要的字节数增加了。另一方面,在音乐中实际使用的Δ时间被检测,象基本单元的一个滴答声那么短的时间信号是不经常使用的。因此,在很多情况下,Δ时间值必须要大得多的存储容量的存储介质加以记录。
因此为了获得实际使用的时间精度,计算寄存在音调表内的所有相对时间ΔT(i)的最大公约数ΔTs和输出作为音调Δ编码(步S120)。如果获得最大公约数很困难,那么适当的约数可以确定作为最大公约数ΔTs。然后,环路控制变量[i]被设置为1(步S130),然后寄存在音调表内的相对时间ΔT[i]从中读出(步S140)。在此之后,ΔT[i]被ΔTs除以输出音调Δ编码ΔTa[i](步150)。随后,环路控制变量[i]和音调表事件的NA数加以比较(步S160)。如果[i]<NA,则[i]被加1(步S170),流程返回到步S140。如果[i]不小于NA(步S160),流程结束。因此,音调Δ编码能由最大公约数ΔTs和ΔTa[i](i=1到NA)的NA-单元构成,如图21所示。
这里,依本发明的音乐数据压缩仪压缩的编码在恢复时,通过读ΔTa[i]和用ΔTs乘读出的ΔTa[i]来恢复到初始的ΔT[i]。因此,这有可能减少数据量而不丧失在SMF的音乐表达能力。例如,在Δ时间的基本单元是1/480拍的情况下(通常使用)和在SMF中TS=10,二字节被需要来表示一拍间隔ΔT=480或半拍间隔ΔT=240。另一方面,在本发明中,由于ΔTs用除加以表示,ΔT=48或ΔT=24的表示是足够了,使得仅仅一个字节被使用作为每一个ΔT的表示。进而,由于对应一拍或半拍的Δ时间经常被使用,当减少到一个字节表示每个Δ时间时,这就有可能在整个音乐中减少可观量的数据。
图15所示控制器Δ编码产生器140执行完全类似于音调Δ编码产生器130过程的过程,除了处理表不是音调表而是控制器表。进而,格式化的控制器编码的格式基本上与图21所示音调编码的格式相同,除了编码数从NA变为NB。
图15所示间隔编码产生器150粗略地与音调Δ编码产生器130相同,使得产生器150执行依照图22所示程序的处理。首先,寄存在音调表上的各自的间隔的最大公约数Ds被记算和被输出作为间隔编码(步S210)。如果这很困难去获得最大公约数,适当的约数能被确定作为最大公约数Ds。随后,环路控制变量[i]被设置为1(步S220)。和然后寄存在音调表中的间隔D[i]被从中读出(步S230)。此后,D[i]被Ds除以输出间隔编码Da[i](步S240)。随后,环路控制变量[i]和音调表中事件数NA相比较(步S250)。如果[i]<NA,[i]的值加1(步260),和然后处理返回到步S230。如果[i]>NA(在步S250),处理结束。通过最大公约数Ds和Da[i](i=1至NA)的NA单元构成间隔编码,如图23所示。这里,如已经所解释的,由于间隔对应着在SMF中音调-开始和音调停止之间的Δ时间,当和SMF的数据量相比较时,这就可能减少数据量,这和在音调Δ编码产生器130中解释的理由相同。
在图15所示的音调数编码产生器160中,为寄存在音调表中的音调数执行如下的处理,以形成音调数编码。这里,使用函数f()和余数α[i]表示音调数num[i],每一个余数α[i]是函数f()表示的音调数和真实音调数之差,依照下述的公式(1),这里函数f()的变量是在先的音调数的S单元如下num[i-1],num[i-2],...,和num[i-S]其中,num[i-1]表示在num[i]之前的音调数1;和num[i-2]是在num[i]之前的音调数2。
如图24所示,通过按时间顺序安排i≤S事件的音调数和i>S事件的余数α[i]来构成音调数编码。因此,因在压缩和恢复(去压缩)的情况下使用相同的函数f()时,num[i]在余数α[i]的基础上能恢复为num[i]=f(num[i-1],num[i-2],...,num[i-S])+α[i](1)这里如果事件数是NA,i=(S+1),(S+2),...,NA这里,虽然各种函数f()能被考虑,当相同的余数值α[i]能重复地出现的函数被选取时,这就可能增加如图14所示的第二编码产生器400的效率。这里当公式(2)所示函数所获得的效率将作为实例加以解释。在这种情况下,S=1和前一个音调的差是α[i],然而,如果i=1,音调数本身被输出作为音调数编码。
num[i]=num[i-1]+α[i](2)这里如果事件数是NA,i=2,3,...,NA这里,在通常音调的情况下,这里经常存在着被音调数移动的曲调线,这里的音调数具有相同的和谐音和基音的平行的移动率。例如当这里的曲调是[do,do,mi,sol,mi]在{C}测量中,这里经常存在的曲调线比第一个曲调高2度,例如在[D]测量的[re,re,#fs,la,re],它的基(root)音高2度。
因此,当各自的曲调线由SMF的音调数本身表示为[60,60,64,67,60]和[62,62,66,69,62],在两线之间这里并不存在着共同的数据模式。然而,当用上述的α[i]表示时,在第二个和之后的声音中两者的记忆线是
,这样,相同的模式能被获得。如上所述,这就有可能把在SMF内彼此不同的两个数据模式转换为依本发明的方式的相同的模式。
在LZ方法中,由于压缩率能随着相同数据模式的数目的增加而增加,这是显而易见的,压缩率能随着使用上述音调数表示方法而增加。进而,在公式(1)中,如果S=0,num[i]=α[i]这样,音调数本身能被编码。进而,这里最好准备大量函数f()类型,和为编码选取最佳函数。在这种情况下,指示函数被使用的数据最好被编码。
图15所示速率编码产生器170基本上和音调数产生器160的相同。
这里,寄存在音调表中的音调的速率vel[i]使用下边的公式[3]并且函数g()和余数β[i]表示,这里函数g()的变量是音调速率在先T-单元为vel[i-1],vel[i-2],...,和vel[i-T]其中vel[i-1]表示在vel[i]之前的速率1,vel[i-2]是在vel[i]之前的音调数2。
如图25所示,通过按时间顺序安排i≤T事件的速率和i>T事件的余数β[i]构成速率编码。因此,当相同的函数g()使用在压缩和恢复情况时,在余数β[i]的基础上vel[i]能被恢复为vel[i]=g(vel[i-1],vel[i-2],...,el[i-T])+β (i)(3)这里如果事件数是NA,i=(T+1),(T+2),...,和NA进而,当适当的函数g()被选取,由于相同数据模式的β[i]能重复地呈现,当LZ方法被使用时,这就有可能增加压缩率。
图15所示的控制器编码产生器18将在下面描述。如图26所示,通过按时间顺序安排寄存在图19所示控制器表的事件数据可以获得控制器编码,每个控制器编码由指示事件种类和参数(数据字节)的标志F所构成。依照事件的种类,参数的数目是不同的,事件的种类可以粗分为两类,[一般事件]和[连续事件]。编码指定给标志[F]和参数以鉴别这两种不同的事件。例如,每一个标志[F]的最高位被设置为[1]和每一参数的最高位被设置为
。因此,这就可能完成表示和SMF运行状态相同的运行状态(当事件种类和先前事件相同时,标志F可以省略)。
这里,在SMF中,一个字节的MIDI状态被用来表示在SMF事件中的种类。一般被使用的该数值是8n(hex),9n(hex),An(hex),Bn(hex),Cn(hex),Dn(hex),En(hex),Fo(hex)和FF(hex)中的任何一个,这里n=0至F(hex)和n是讯道数。[一般事件]是排除音调-开始8n(hex)和音调-停止9n(hex)的MIDI状态。在本发明中,然而,如前所译由于这并不需要表示讯道数,[一般事件]的标志的种类是七类。因此,相同标志的概率的可能性比MIDI状态要高,当采用LZ方法时,压缩率能够被增加。通过安排排除SMF的MIDI状态一字节的数据形成[一般事件]的编码。
进而,在SMF中,这里存在许多部分,其中特定类的事件呈现得连续超过恒定的值和进而各自事件的参数值(数据字节)在粗略恒定规则下变化,例如在[强度轮变化]的部分事件被使用。通过精细地变化音调数,该事件被使用以增加音乐表现力。在这种情况下,参数彼此不同的大量事件经常从自然的观点被使用。这此事件被称为[连续事件],而该部分被称为[连续事件块]。
在下述的例子中,虽然[强度轮变化]被取出作为[连续事件]的例子,但该[连续事件]并不局限于此。图27示出了SMF[连续事件块]的实例。在这情况下,由于每一事件的参数彼此不同。SMF的相同模式的长度总共两个字节(一字节Δ时间,一字节状态)。在这程度的模式长度的情况下,依LZ方法的压缩效果很难获得。
在[强度轮变化]呈现连续地在控制器表内超过一个恒定值和参数值在粗略恒定的规则下变化的区域内通过执行下述的处理形成控制器编码。当[强度轮变化]的数目小于一恒定值时,这被编码为[一般事件]。
这里,在连续事件块的事件参数P[i]依照下列公式(4)使用函数h()和余数r[i]来表达,这里,函数h()的变量是呈现在以前的事件参数值的在先U-单元为P[i-1],P[i-2],...,和P[i-U]这里P[i-1]表示在P[i]之前的事件参数值;和P[i-1]是在P[i]之前的事件参数值2。
如图28所示,通过安排指示连续强度轮变化的呈现的标志,第1到第U事件的参数值,和(U+1)事件和此后的余数r(i)构成了连续事件的编码。编码指定给标志[F]和参数以鉴别它们。因此,在压缩和恢复时使用相同的函数h()在余数r[i]的基础上P[i]能恢复为P[i]=h(P[i-1],P[i-2],......
P[i-U])+γ[i] (4)这里连续事件块的事件数是NC,i=(U+1),(U+2),......,和NC这里,虽然各中函数h()能被考虑,当选出相同的余数值γ[i]能重复呈现的函数时,这就有可能增加如图14所示的第二编码产生器400的压缩效率。这里,当公式(5)所示函数获得的效率将作为例子加以解释。在这种情况下,U=1和先前音调数的差是γ[i]。
P[i]=P[i-1]+[i] (5)这里,如果连续事件的事件数是NC,i=2,3γ,......,和NC依照上述的方法,图27所示区域能够被转换为图29所示的控制器编码。在这种情况下,由于所有第二和之后事件数据和[1]相同,LZ方法的压缩率能被增加。进而,由于Δ时间不包括在控制器编码中,甚至当每一事件的Δ时间不同,LZ方法的压缩率不被显著的减少。进而,取而代之上述的公式(4),这也可以使用公式(6)表示下边的函数e(),其中事件的时间数据被使用作为变量,t[i]表示获得参数的事件时间,t[i-1]表示在先事件时间,P[i]=e(P[i-1],P[p-2],......,P[i-U]t[i],t[i-1],......,t[i-U])+γ[i](6)
这里如果连续事件块的事件数是NC,i=(U+1),(U+2),......,和NC图15所示编码安排器190在图30所示区域内分别安排上述各自的编码,以形成图14所示的初级编码300。每一个编码的头包括管理数据例如开始地址和编码长度和上述的讯道图。如前所述,如SMF相比较,虽然各的编码有这样的性质,相同数据呈现时间的次数是大的,相同数据模式的数据长度是长的。在这种情况下,然而,安排以这样的方式被设计出来,使得相同的数据模式能呈现较短的距离。首先,由于相同数据串呈现的可能性在相同类型的编码中是高的,相同类型的编码是按音轨次序安排的。进而,由于音调Δ编码,控制器Δ编码和间隔编码均是时间相关的数据,和因此由于相同数据串呈现可能性是高于不同性质的音调数编码和速率编码,这些时间相关的数据被安排的相互靠近。
这里,返回到图13,多长的相同数据模式能被减少将被检验。这里作出假设,每一个曲调是50单元的音调-开始事件和50单元的音调停止事件构成的;所有的Δ时间均产一个字节;所有的事件均是三个字节。那末,如已经讲述过的,对于每一个曲调来说所有的音调数是相同的。
因此,在SMF中每一个曲调的数据量是(1+3)×50×2=400字节当所有Δ时间和每个曲调的速率是相同的,相同数据模式长度是400字节。然而,如果在两个曲调之间所有的Δ时间和音调-开始速率相互不同,在SMF中相同数据模式的最大长度在音调停止状态,音调数和速率的安排中是三个字节。在这种程度的压缩下,使用LZ方法并不存在什么效果。
另一方面,在本发明中,由于Δ时间,音调数和速率均分别地编码,在音调数编码中至少呈现50字节的相同数据模式。进而,如以前所阐述的,甚至SMF的速率彼此完全不同,相同的数据模式经常呈现在速率编码中,因此,使用LZ方法的压缩率能被明确地改善。按如上所理解的,在图14所示的初级编码300中,数据量能被减小但完全没有减少包括在SMF内的音乐数据量,进而这里存在着性质,和SMF相比较相同数据模式的长度是长的;相同数据呈现时间的数目是大的;相同数据呈现在最短的距离。因此这就有可能有效地通过第二级编码产生器400压缩数据。进而,由于初级编码数据量已经很好地被压缩了,初级编码300能被直接输出。
在第二级编码产生器400,初级编码产生器200的输出300被使用LZ方法进一步地压缩。LZ方法已广泛地使用在例如gzip,LHZ等等压缩程序中。在这个方法中,相同的数据模式从输入数据中被检索。当相同的数据模式存在时,通过使用数据(即,相关于在先相同数据模式的距离的数据,模式长度,等等)代替相同的数据模式使相同数据模式的数据量被减少。例如,在数据“ABCDEABCDEF”中,由于“ABCDE”被重复,“ABCDEABCFEF”被“ABCDE(5,5)F”所取代,这里,压缩码(5,5)表示返回5个字符,复制5个字符。
处理将在这里被描述。图14所示第二编码产生器500顺序移动处理位置,从初级编码300的头开始。当处理位置的数据模式与在先固定区域的数据模式相匹配时,从处理位置到数据模式的距离和匹配的数据模式的长度两者被输出作为第二级编码500。进而,处理位置移动到第二数据模式的端部,继续类似的处理。这里,如果在处理位置的数据模式并不与在先固定区域的数据模式相匹配,初级编码300被复制和然后被输出作为第二级编码500。
作为上述描述的理解,压缩率能随着相同数据的数据区的增加而增加。进而,相同数据区之间的距离是在固定的范围,这是必需的,在前面解释的音乐中,虽然类似地曲调被重复地使用,在SMF初始数据的情况下,完全相同的数据串经常不能重复;换言之,数据的一部分经常彼此不同,例如如下虽然音调数是相同的,但是速率延彼此不同。
换言之,依据本发明,执行这样的处理,使得相同性质的数据被收集和分别记录在不同的区域;在每一个区域中的相同数据如此地被处理,使得尽可能经常地呈现性质接近的数据被安排在尽可能接近的区域内,这就可能增加LZ方法的压缩率,其结果是,最终的第二级编码500的容量能有效地减少。进而,上述的格式和处理过程仅为一例加以描述。格式和过程可以各种方式加以修改而不脱离本发明的精神。进而,虽然SMF被解释作为音乐数据的例子,但绝不仅限制于SMF,本发明能应用到其它类似的音乐演奏数据,去有效地减少数据容量。
解码图14所示的初级编码300和第二级编码500的音乐演奏数据解码仪将在下面描述。
在图31中,和压缩处理相对,被使用LZ方法压缩的输入数据210被分为音调数,声音速率,声音间隔,和其它数据,即被第二级编码解码器230分成为初级编码300,和通过初级编码解码器240被进一步恢复为初始的音调(输出数据250)。控制器260控制开关220如下当输入数据210是图14所示的第二级编码500时,第二级编码解码处理和随后的初级编码解码处理能被执行。进而,当输入数据210是图14所示的初级编码300时,仅仅初级编码解码处理能被执行。
这里,通过由操作者操作的输入/输出器件(未示出),(即,键盘,鼠标,显示等等)指定指示数据种类的数据或附加指示压缩数据编码方法种类的数据使得当解码时附加的数据能被鉴别以便能执行是否编码是第二级编码500或被级编码300的鉴别。
参看图32,在下面将描述第二级编码解码器2 3的解码处理。首先,输入数据(第二级编码500)从头中读出(步S101)。然后,鉴别是否读出的数据是非压缩数据部分(例如ABCDE(5,5)的[ABCDE]或是压缩数据部分(即,ABCDE(5,5)的(5,5))(在步S102)。
进而,在是压缩数据的情况下,在过去呈现是相同的模式被检索,复制和输出(步S103)。另一方面,在非压缩数据情况下,按数据原样输出数据(步S104),在此之后,上述的处理被重复直到所有的输入数据(第二级编码500)能被解码(步S105到S101)。作为结果,这就是可能对图30安排的初级编码进行解码。
参看图33和图30所示初级编码300,图31所示初级编码解码器240的解码处理将在下面解释。首先,初级编码300的头将被读出(步S111)。在读头时,在记录时,由于各种数据例如整个音轨数N,从音调Δ编码到控制编码的各自编码区的头地址,讯道图,时间分辨等等被记录,在这些数据的基础上SMF头被形成和然后被输出(步S112)。
进而,音轨数[i]被设置为[1](在步S113),和图34所示轨道解码处理的细节被执行(步S114)。进而,音轨数被检测是否音轨数[i]是小于全部音轨数N(步S115)。如果小于N,音轨数[i]加1(步S116),返回到步S114以重复音轨解码处理。进而,在步S115,当音轨数[i]不小于整个音轨数N,初级编码解码处理结束。
在图34所示详细的音轨解码处理中,首先,处理使用的变量被初始化(步S121)。在实践上,指示现在被处理的音调事件数的变量[i]被设置为[1];指示现在被处理的控制器事件数的变量[k]也被设置为[1],指示紧靠着的在先事件被输出的时间的变量Tb被设置为
;音调结束标志和控制器结束标志两者被清0。这里,音调结束标志指示,处理的音轨的所有音调事件已经被完成,和控制器结束标志指示,处理的音轨的所有控制器事件已经被完成。
进而,音调Δ编码的最大公约数ΔTsn,控制器Δ编码的最大公约数ΔTsc和处理的音轨数[i]的间隔编码的最大公约数Ds均被读出(步S122)。进而,第j音调Δ编码ΔTan[j]和第k控制器Δ编码ΔTac[k]被读出,和进一步分别被最大公约数ΔTsn和ΔTsc相乘以获得ΔTn[j]和ΔTc[k]步(S123)如下ΔTn[j]=ΔTan[j]×ΔTsnΔTc[k]=ΔTac[k]×Tsc(7)进而,以音轨头作为它们的参考,ΔTn[j]和ΔTc[k]被转换为时间Tn[j]和Tc[k],(步S124)如下Tn[j]=Tn[j-1]+ΔTn[j]Tc[k]=Tc[k-1]+ΔTc[k](8)这里Tn
-Tc
=0进而,在步S123和S134,当音调结束标志被设置时。ΔTn[j]和Tn[j]并不计算。进而,当控制器结束标志被设置时,ΔTc[k]和Tc[k]并不计算。
进而,检测要被输出音调-停止事件的存在和缺少(步S125)。在要被输出数据存在的情况下,音调-停止甚至被输出作为SMF(步S126)。进而,步S125和S126两者将进一步在以后描述(图35的步144)。进而,解码处理被选取。首先,控制器结束标志被检测(步S127),当控制器结束标志被设立时,以后参看图35详细描述被执行的音调事件解码处理(步S128)。当控制器结束标志没有被设置时,音调结束标志被检测(步S129)。当该音调结束标志被设置时,执行以后参看图38详细描述的控制器事件解码处理(步S130)。当两者标志均未设置,Tn[j]和Tc[k]相互比较(步S131)。当Tn[j]小于Tc[k],音调事件解码处理被执行(步S128)。当Tn[j]不少于Tc[k],控制器事件解码处理被执行(步S130)。
在音调事件解码处理之后,就检测是否在先音轨[i]的所有音调事件已经被处理了(步S132)。如果处理结束,设置音调结束标志(步S133),过程前进到S138。如果不是,变是[j]被加1(步S134),返回到步S123。进而,在控制器事件解码处理之后,检测是否在先音轨[i]的所有控制器事件已经被处理了(步S135)。如果处理结束,控制器结束标志被设置(步S136),处理前进到步S138。如果没有,变是[k]加1(步S137),返回到步S123。
在步S138,检测是否音调结束标志和控制器结束标志被设置。如果两者标志被设置,当前音轨的音轨解码处理结束。如果没有,处理返回到步S123,去重复上述的解码处理。
在图35详细示出的音调事件解码处理中,首先,第j音调数编码α[j]被读出,使用在压缩处理中所使用的函数f()和根据下述公式(9)计算音调数num[j](步S141)。
num[j]=f(num[j-1],num[j-2],......,num[j-s]+α[j](j>S)num[j]=α[j] (j≤S)(9)这里S是函数f()的变量数以上述相同的方式,第j速率编码β[j]被读出,使用在压缩处理时使用的函数g()和依照下述公式(10)计算速率vel[j](步S142)。
Vel[j]=g(vel[j-1],vel[j-2],......,
Vel[j-s])+β[j](j>T)vel[j]=β[j] (j≤T)(10)这里T是函数g()的变量数进而,在Tn[j],unm[j]和vel[j]的基础上,图36所示的音调-开始事件被输出(在步S143)。依照下列公式(11),和使用在Tn[j]之前紧靠着事件Tb可以获得SMF的Δ时间ΔT,和输出ΔTΔT=Tn[j]-Tb (11)在图36所示音调开始事件中,状态字节的高四位表示音调-开始[9(hex)],低四位表示通过讯道图所获得的数字。进而,随在该状态字节后的是音调数和速率字节。进而,时间Tb被重写Tn[j]以进行更新(步S144)。
进而,在图35,音调-停止事件被寄存(步S145)。在实际上,间隔编码Da[j]被读出;依照下列公式(12)计算音调-停止事件的时间Toff;该时间Toff和音调数num[j]被寄存在图37所示音调-停止排队中。
Toff[j]=Da[j]×Ds+Tn[j] (12)在该音调停止排队中,现在被使用的登录的数目被保持,进而,音调停止时间Toff是如此管理,使得从最小的一个开始的顺序管理的。
在图34所示的步S125内,小于Tn[j]和Tc[k]之间数的值Tm按顺序和音调停止排队的头Toff[n](n=1至N N全部登录的数)相比较。如果这里存在着登录项例如Toff[n]<Tm,处理前进到步S126,去输出音调-停止事件。在步S126,在ΔT依照下列的公式(13)加以计算和输出,Tb被重写Toff[n]以更新,和上述的音调停止事件作为SMF被输出。
ΔT=Toff[n]-Tb (13)控制器事件解码处理将参照图38在下面详细地描述。在这个处理中,在图39中由Δ时间,状态和参数组成的控制器事件被解码。首先,依照下述公式(14)通过使用紧靠着Tc[K]之前输出的事件的时间Tb获得Δ时间ΔT(步S150)。
ΔT=Tc[K]-Tb (14)Tb重写Tc[K]以更新(在步S151)。
然后,指示事件种类的事件标志F[K]从控制器编码区域中读出,和该标志被鉴别是否F[K]是[一般事件]或[连续事件]或[运行状态](步S152)[运行状态]是指一状态,在该状态中,标志F[K]被省略而事件的参数(数据字节)被直接写入。这很容易检测[运行状态],因为指定编码给标志位F和参数(数据字节)去鉴别它们之间,以后标志位F[K]被省略或不存在的状态被表示为“F[K]是在[运动状态]”。这里,在图28所示的连续事件块内,第二个和以后的事件是在[运行状态下]被记录。
如果F[K]是[一般事件],指示处理事件的连续块的顺序的变量[m]被重置为
(步153),和,然后,参考讯道图形成SMF的状态字节,和形成的讯道图被输出(步S154)。进而,事件种类必需的字节数从控制器编码区域中读出,读出的字节值作为SMF的参数(数字字节)被输出(步S155)。
如果F[K]是[连续事件],指示处理事件连续块次序的变量[m]被置为[1](步S156),然后,参考讯道图形成SMF的状态字节,和形成的讯道图被输出(步S157)。进而,当m≥2,当m=[1]获得的状态字节被使用作为m≥2的状态字节。进而,在[连续事件]的情况下,参数编码γ[m]被读出,使用和在压缩处理所使用的相同函数h()和依照下述公式(15)形成参数P[m],和形成的参数被输出(步S158)。
P[m]=h(p[m-1],P[m-2],......,P[m-U])+
γ[m](m>U)(m≤U)P[m]=γ[m](15)这里U是函数h()的变量数进而,当F[k]是[运行状态]时,变量[m]的数被检测(步S159)。如果[m]是大于0,[m]增加1,因为它是连续事件块第二个或之后的事件(步S160)程序前进到[连续事件]侧的步S157。另一方面,如果[m]是
,流程前进到[一般事件]侧的步S154。
如上所述,在依本发明的音乐数据记录方法和音乐数据再现仪器当中,能获得下述的出色的效果。
例如音调数据的音乐数据依照数据的种类被区分和分别记录在独立的区域。这就可能以这样的方式收集数据,使得相同数据模式出现的概率增加了。
因此,音乐数据文件依照模式匹配方法压缩时,这就可能显著地增加压缩效率,和这样当压缩的数据被存储介质或通过传输线传输时,压缩的数据的容量能被显著地减少。作为结果,能使用小容量的存储介质。进而,由于传输线的服务时间能被减少,这就可能节约传输线的租用费。
进而,在依本发明的音乐数据再现仪器中,这就可能从通过上述方法压缩数据而获得的文件中再现音乐。进而,这就可能减少记载压缩文件的文件存储介质的容量。
进而,在依照本发明的音匀数据压缩和解码的仪器内,在依照LZ方法对音乐数据压缩之前,音乐数据事先以这样的方式被分为音调数,速率,和其它数据,使得相同数据模式的长度能被延长;相同数据模式呈现的数目能被增加;相同数据模式的呈现距离能被缩短,进而,各自的音乐数据分别独立地安排在独立的区域以形成初级编码,和形成的初级编码依照LZ方法能被压缩。其结果是,这就可能有效地压缩音乐数据。
进而,初级编码的音乐数据为编码至少分为四个区域,音调数区域,音调速率区域,音调间隔区域,和其它区域。因此,这就可能显著地减少数据容量而不丧失初始音乐数据的音乐演奏质量。其结果是,小容量的存储介质能被使用去记录音乐数据,使得存储介质的费用能被减少。进而,当音乐数据通过传输线传送时,由于传输时间能被减少,传输费用能被节约。当应用到使用大量音乐数据例如音匀数据库,通讯伴奏仪器的系统时,本发明的方法和仪器特别有效。
权利要求
1.一种对压缩的音乐演奏数据进行解码的仪器,包括对用Lempel-Zif方法压缩的音乐演奏数据进行解码的第一解码装置;和对由第一解码装置这样解码的音乐演奏数据进行解码以再现至少音调数据、声音速率数据、声音间隔数据,和控制数据的第二解码装置。
2.根据权利要求1所述的仪器,其特征在于,还包括判别是否音乐演奏数据是Lempel-Zif方法压缩的数据,如果是,音乐演奏数据提供给第一解码装置,如果不是,音乐演奏数据直接提供给第二解码装置以再现至少音调数数据、声音速率数据、声音间隔数据,和控制数据。
全文摘要
一声源文件的每一个音乐演奏数据包括时间数据,在时间数据指示的瞬间指示音乐声音开始或音乐声音停止的音调数据,和指示声音速率的重音数据,时间数据,音调,或音乐声音开始或音乐声音停止根据时间数据记录在第一记录区域内。重音数据记录在第二记录区,第二记录区与第一记录区分开,在第一和第二区域内记录的数据组合以获得目标文件。
文档编号G10H1/00GK1492392SQ0215262
公开日2004年4月28日 申请日期1996年10月30日 优先权日1995年10月30日
发明者宍户一郎, 黑岩俊夫, 夫, 户一郎 申请人:日本胜利株式会社