首页 > 乐器声学 专利正文
电子乐器、电子乐器的控制方法及存储介质与流程

时间:2022-02-15 阅读: 作者:专利查询

电子乐器、电子乐器的控制方法及存储介质与流程

1.本发明涉及一种被配置为响应于对诸如键盘的操作器的操作而再现乐器声音的电子乐器、电子乐器的控制方法和存储介质。


背景技术:

2.随着电子乐器的普及,用户可以享受各种乐器声音的演出。例如,即使是初学者用户也可以通过跟随和触摸发光键或者通过跟随显示在显示器上的演奏的操作指南来轻松地享受一段音乐的演出。用户弹奏的音符的音高、持续时间、音符开启定时、节拍重音等取决于用户的演出技能。
3.引文清单
4.专利文献
5.专利文献1:jp

h09

050287a


技术实现要素:

6.技术问题
7.特别是在用户是初学者的情况下,当在乐器上演奏各种乐曲的乐句时,用户设法跟随乐谱中每个音符的音高。然而,很难再现专业演奏者对乐句中每个音符的音符开启定时、持续时间、节拍重音等的对于乐器合适的、精美演出。
8.问题解决方案
9.根据本发明的一个方面的电子乐器包括:
10.多个演出操作器,每个演出操作器与不同的音高数据相关联;
11.存储器,其存储通过对以下各项执行机器学习而获得的经训练的声学模型:
12.训练乐谱数据集,包括训练音高数据;以及
13.通过演奏者演奏乐器而获得的训练演出数据集;以及
14.至少一个处理器,
15.其中所述至少一个处理器用于:
16.根据对演出操作器中的一个的用户操作,将与对所述演出操作器中的一个的用户操作对应的音高数据输入到经训练的声学模型中,以使经训练的声学模型输出与输入的音高数据对应的声学特征数据,以及
17.以数字方式合成并输出推理乐音数据,所述推理乐音数据包括演奏者的推理演出技巧
18.所述推理乐音数据基于由经训练的声学模型根据输入的音高数据输出的声学特征数据,并且
19.所述推理乐音数据在所述用户操作中没有演奏。
20.发明的有益效果
21.通过实施本发明,可以提供一种电子乐器,该电子乐器被配置为根据对演出操作
器的用户操作来产生如同由专业演奏者演奏一样的声音。
附图说明
22.图1示出了电子键盘乐器的实施例的外观示例。
23.图2是示出电子键盘乐器的控制系统的实施例的硬件配置示例的框图。
24.图3是示出循环器lsi的配置示例的框图。
25.图4是循环记录/回放处理的第一实施例的时序图。
26.图5图示了量化处理。
27.图6是示出声音训练单元和声音合成单元的配置示例的框图。
28.图7图示了统计声音合成处理的第一实施例。
29.图8图示了统计声音合成处理的第二实施例。
30.图9是示出根据循环记录/回放处理的第二实施例的电子乐器的控制处理示例的主流程图。
31.图10a是示出初始化处理的详细示例的流程图。
32.图10b是示出节奏改变处理的详细示例的流程图。
33.图11是示出切换处理的详细示例的流程图。
34.图12是示出滴答时间中断处理的详细示例的流程图。
35.图13是示出踏板控制处理的详细示例的流程图。
36.图14是示出循环器控制处理的详细示例的第一流程图。
37.图15是示出循环器控制处理的详细示例的第二流程图。
38.图16是循环记录/回放处理的第二实施例的第一时序图。
39.图17是循环记录/回放处理的第二实施例的第二时序图。
具体实施方式
40.以下,将参照附图详细描述本发明的实施例。
41.图1示出了电子键盘乐器100的实施例的外观示例。电子键盘乐器100包括:作为演出操作器(多个演出操作器101)的键盘101,其包括多个键;以及用于各种设置的第一开关面板102,各种设置例如音量控制和循环记录的节奏设置;第二开关面板103,用于选择电子键盘乐器100的声音模块的音色、需要合成声音的乐器等;液晶显示器(lcd)104,被配置为显示各种设置数据等。用于循环记录和回放的脚踏踏板105(踏板操作器105)通过电缆连接到电子键盘乐器100。此外,虽然没有特别示出,但是电子键盘乐器100包括扬声器,其被配置为产生由在背表面、侧表面或后表面等上提供的演出产生的乐音。
42.图2示出了图1的电子键盘乐器100的控制系统200的实施例的硬件配置示例。在图2的控制系统200中,连接到系统总线209的是:中央处理单元(cpu)201;rom(只读存储器/大容量闪存)202;ram(随机存取存储器)203;声音模块大规模集成(lsi)204;声音合成lsi 205(处理器205);循环器lsi 220;键扫描器206,图1的键盘101、第一开关面板102、第二开关面板103和踏板105连接到键扫描器206;以及lcd控制器208,图1的lcd 104连接到该lcd控制器208。另外,用于控制循环器lsi 220中的循环记录/回放处理的定时器210连接到cpu 201。从声音模块lsi 204输出的乐音输出数据218和从循环器lsi 220输出的循环回放推理
乐音数据222在混合器213中混合,并且然后由数模转换器211转换为模拟输出信号。模拟输出信号在放大器214中放大,并且然后从扬声器(未示出)或输出终端(未显示)输出。
43.cpu 201被配置为通过以ram 203作为工作存储器执行存储在rom202中的控制程序来执行图1的电子键盘乐器100的控制操作。rom 202存储控制程序和各种固定数据以及稍后描述的机器学习的训练结果的模型参数等。
44.本实施例中使用的定时器210在cpu 201上实现并且例如被配置为管理电子键盘乐器100中的循环记录/回放的进度。
45.声音模块lsi 204例如被配置为从波形rom(未示出)加载乐音输出数据218并根据来自cpu 201的声音产生控制数据将其输出到混合器213。声音模块lsi 204能够同时产生多达256个声音。
46.声音合成lsi 205预先从cpu 201接收表示乐器的数据和作为每个乐句的音高序列的音高数据215。然后,声音合成lsi 205以数字方式合成乐句的推理音乐数据217,其包括演出表达声音(演奏者的推理演出技巧),演出表达声音表示与用户未演出的演出技巧相对应的声音,例如包括连奏的发音,连奏是西方乐谱中的符号。声音合成lsi 205被配置为将数字合成的推理乐音数据217输出到循环器lsi 220。
47.响应对图1的踏板105的操作,循环器lsi 220循环记录由声音合成lsi 205输出的推理乐音数据217以及重复回放的循环回放声音。循环器lsi220将最终获得的循环回放推理乐音数据222重复输出到混合器213。
48.为了通过中断cpu 201来传达状态变化,键扫描器206被配置为扫描:图1的键盘101的键按下/释放状态;第一开关面板102和第二开关面板103的开关状态;以及踏板105的踏板状态。
49.lcd控制器208是被配置为控制lcd 104的显示状态的集成电路(ic)。
50.图3是示出图2的循环器lsi 220的配置示例的框图。循环器lsi 220包括:第一循环存储区301和第二循环存储区302,用于存储要重复回放的重复部分的循环回放推理乐音数据222;循环记录单元303,被配置为将从声音合成lsi 205输出的推理乐音数据217通过混合器307记录在循环存储区中的一个上;循环回放单元304,被配置为将存储在循环存储区的一个中的推理乐音数据217作为循环回放声音310进行回放;乐句延迟单元305,被配置为将循环回放声音310延迟一个乐句(一小节);混合器307,被配置为将从乐句延迟单元305输出的循环回放声音延迟输出311与从声音合成lsi 205输入的推理乐音数据217混合,并将混合数据输出到循环记录单元303;以及节拍提取单元306,被配置为从循环回放单元304输出的循环回放声音310中提取节拍定时,作为节拍数据221,并将其输出到声音合成lsi 205。
51.在本实施例中,例如,在图1的电子键盘乐器100中,随着按照已知技术产生并从声音模块lsi 204输出的自动节奏或伴奏声音,用户顺序地触摸键盘101上的与一段乐谱中乐句的音高序列相对应的键。用户要触摸的键可以通过已知技术的键盘101上的发光键来引导。用户不必遵循音符键的按下定时或按下持续时间。用户只需要至少跟随音高来触摸键,即,例如仅通过跟随具有光的按键来触摸键。每当用户完成对乐句中的键的按下时,图2的cpu 201向声音合成lsi 205输出通过检测键的按下获得的乐句中组合键的音高序列。结果,延迟一个乐句,声音合成lsi 205可以根据用户简单演奏的乐句的音高序列生成乐句的
推理乐音数据217,就好像它是由用户指定的乐器的专业演奏者演奏的一样。
52.在以这种方式使用从声音合成lsi 205输出的推理乐音数据217的实施例中,推理乐音数据217可以用于图2的循环器lsi 220的循环记录/回放处理。具体地,例如,可以将从声音合成lsi 205输出的推理乐音数据217输入到循环器lsi 220进行循环记录,附加产生的推理乐音数据217可以在重复回放的循环回放声音上叠加,并且这样得到的循环回放声音可以用于演出。
53.图4是循环记录/回放处理的第一实施例的时序图,它是在图3的循环器lsi 220中执行的循环记录/回放处理的基本操作。在循环记录/回放处理的第一实施例中,为了易于理解,将描述用户以一个乐句一小节执行循环记录/回放处理的情况的概要操作。
54.首先,当用户踩在图1的踏板105上时,循环器lsi 220执行以下循环记录/回放处理。在循环记录/回放处理中,执行第一用户操作(演出),其中用户使用图10的键盘101指定要被重复回放(循环回放)的一个乐句的音高序列。音高序列包括具有不同定时的多个音高。例如,在图4的(a)中从时间t0(第一定时)到时间t1(第二定时)的乐句中,乐句的音高序列(在下文中,称为“第一乐句数据”)经由键扫描器206和cpu 201从键盘101输入到声音合成lsi 205中作为音高数据215(在下文中,此输入称为“第一输入”)。
55.当声音合成lsi 205预先从cpu 201接收到指示乐器的数据和第一输入(包括乐句的音高序列的音高数据215)时,例如,从图(b)中的时间t1到时间t2,声音合成lsi 205相应地合成乐句的推理乐音数据217,并且将其输出到循环器lsi 220。声音合成lsi 205基于从稍后将在图6中描述的经训练的声学模型单元606输出的声学特征数据617输出该乐句的推理乐音数据217(以下称为“第一乐句推理乐音数据217”),该推理乐音数据217包括演出表达声音,该演出表达声音表示与用户未演出的演出技术对应的声音。用户未演出的演出技术是指,例如,演奏者在乐器上再现乐句演出(以下称为“第一乐句演出”)(包括连奏)的发音演出技术。
56.在图3的循环器lsi 220中,从图4的(b)中的时间t1到时间t2,循环记录单元303例如在第一循环存储区301(area1)中依次记录(存储)从声音合成lsi 205基于从图4的(a)中的时间t0到时间t1的乐句的第一输入而输出的乐句的第一乐句推理乐音数据217。
57.在图3的循环器lsi 220中,例如,循环回放单元304输出(在下文中,该输出被称为“第一输出”)第一乐句推理乐音数据217(第一声音数据,或图4的(c)中的“第一数据”),第一乐句推理乐音数据217记录在第一循环存储区301(area1)中作为循环回放声音310从图4的(c)中的时间t1到时间t2、从时间t2到时间t3、从时间t4到时间5,等等重复。从图2的循环器lsi 220重复输出作为循环回放推理音乐数据(第一声音数据)222的第一输出经由混合器213、数模转换器211和放大器214从扬声器(未示出)输出。
58.接着,在如图4的(c)所示重复第一输出的回放时,用户再次踏上在图1的踏板105上,例如,在乐句的开始定时(例如,图4中的时间t4,或第三定时)。在踏上踏板105之后,用户执行第二用户操作(演出)以指定另一乐句的音高序列以使用图1的键盘101循环回放。音高序列包括具有不同定时的多个音高。例如,对于图4的(d)中的从时间t4(第三定时)到时间t5(第四定时)的乐句,乐句的音高序列(在下文中,称为“第二乐句数据”)经由键扫描器206和cpu 201从键盘101输入到声音合成lsi205中作为音高数据215(在下文中,此输入称为“第二输入”)。
59.当声音合成lsi 205预先从cpu 201接收到指示乐器的数据和第二输入(包括乐句的音高序列的音高数据215)时,例如,从图4的(e)中的时间t5到时间t6,声音合成lsi 205相应地合成乐句的推理乐音数据(第二声音数据)217并将其输出到循环器lsi 220。与第一乐句推理乐音数据217一样,声音合成lsi 205基于从稍后图6中描述的经训练的声学模型单元606输出的声学特征数据617而输出乐句的推理乐音数据217(以下称为“第二乐句推理乐音数据217”),其包括演出表达声音,该演出表达声音表示与用户未演奏的演出技术相对应的声音。不由用户演出的演出技术是指例如再现演奏者在乐器上的另一乐句演出(以下称为“第二乐句演出”)包括连奏的发音演出技术。
60.换句话说,基于从经训练的声学模型单元606输出的声学特征数据617,即使不检测与演出技术对应的用户演奏操作,电子乐器100的处理器201也被配置为输出应用了与各种演出技术相对应的效果的乐音217。
61.在图3的循环器lsi 220中,从图4的(e)中的时间t5到时间t6,混合器307将根据在图4的(d)中的时间t4到时间t5输入的第二乐句而从声音合成lsi 205输出的乐句的第二乐句推理乐音数据217与从图4的(c)中的时间t4到时间t5的第一乐句推理乐音数据的第一输出进行混合,该第一输出是从循环回放单元304经由乐句延迟单元305作为循环回放声音延迟输出311输入到混合器307的循环回放声音310。然后,从图4的(e)中的时间t5到时间t6,循环记录单元303例如在第二循环存储区302(area2)中顺序地记录(存储)如上所述的叠加的第一输出和第二输出。
62.在图3的循环器lsi 220中,循环回放单元304输出(在下文中,该输出被称为“第二输出”)叠加在第一乐句推理乐音数据(第一声音数据)217上的第二乐句推理乐音数据(第二声音数据)217,第二乐句推理乐音数据记录在第二循环存储区302(area2)中作为循环回放声音310,例如,从图4的(f)中的时间t5到时间t6,从时间t6到时间t7,从时间t7到时间t8,等等。从图2的循环器lsi 220输出的其中叠加第一输出和第二输出的的重复声音序列通过混合器213、数模转换器211、放大器214从扬声器(未示出)输出作为循环回放推理乐音数据222。
63.如果要进一步叠加乐句的循环记录,可以针对新的第一输入(曾经是第二输入)和新的第二输入执行类似的处理。
64.以此方式,根据循环器lsi 220进行的循环记录/再现处理的第一实施例,仅通过用户输入一个乐句来指定音高序列作为第一乐句数据并且另外作为第二乐句数据且第二乐句数据叠加在第一乐句数据上,第一乐句数据和第二乐句数据可以被转换成每个推理乐音数据217,以使用声音合成lsi205再现演奏者在乐器上的乐句演出。因此,循环乐句声音序列可以作为循环回放推理乐音数据222输出,该循环乐句声音序列包括演出表达声音,该演出表达声音表示与用户未演奏的演出技术相对应的声音(诸如包括连奏的发音)。
65.在循环记录/回放处理的实施例中,当第一乐句推理乐音数据(第一声音数据)217和第二乐句推理乐音数据(第二声音数据)217叠加时,每个叠加乐句的节拍可以不同步。因此,在根据图3所示的本实施例的循环器lsi 220中,节拍提取单元306被配置为从循环回放单元304输出的循环回放声音310中提取节拍定时作为节拍数据221,以将节拍数据221输出到声音合成lsi 205,从而执行量化处理.
66.图5图示了量化处理。在图5的(a

1)中,从时间t0到时间t1的乐句中的四个填充块
代表第一乐句数据(图4的(a)中的“第一输入”),即四个音符的音高序列,用户从时间t0到时间t1对乐句中每个音符的按键时序用图4的(a)中的键盘101中的相应键示意性地示出。节拍时序在图4中显示为四个垂直虚线。另一方面,如图5的(b

1)所示的通过将第一乐句数据输入到声音合成lsi 205作为音高数据215而从声音合成lsi 205输出的第一乐句推理乐音数据(第一声音数据)。a1、a3、a5和a7对应于在节拍中演奏的音符,而a2、a4和a6示意性地显示了连奏的音符,这些音符没有在原始用户演出中。
67.考虑到演奏者的演出技巧被再现,a1、a3、a5和a7的音符开启定时并不总是与每个节拍一致。
68.在图5的(a

2)中,从时间t4到时间t5一个乐句中的四个填充块代表第二乐句数据(图4的(d)中的“第二输入”),即四个音符的音高序列,用户从时间t4到时间t5在乐句中的每个音符的按键时序用在图4的(d)中的键盘101中的对应键示意性地示出了。节拍时序在图4中显示为四个垂直虚线。当将通过将第二乐句数据输入到声音合成lsi 205中而产生的第二乐句推理乐音数据217叠加在图4中描述的循环记录/回放处理中的第一乐句推理乐音数据217上时,由于两个音高序列通常彼此不同,所以两个推理乐音数据217的节拍可能不同步。
69.因此,在根据图3所示的本实施例的循环器lsi 220中,节拍提取单元306被配置为从循环回放声音310中提取节拍定时,循环回放声音310由图5的(b

1)中的第一乐句推理乐音数据217生成,具有节拍数据221的图5的(b

1)中的a1、a3、a5和a7的音符开启定时。例如,可以通过检测循环回放声音310的波形的四个功率峰值来实现该提取。节拍数据221表示从循环回放声音310中提取的乐句中的节拍,并且输入到将在后面描述的图6的声音合成lsi 205中的声音模型单元608中的振荡产生单元609。在后述的图6中,振荡产生单元609执行所谓的量化处理,其中,例如在生成以包括在声源数据619中的基本频率(f0)周期性地重复的脉冲序列时,根据节拍数据221调整各脉冲。
70.在这样的控制下,稍后将描述的图6的声音合成lsi 205中的声音模型单元608在图4的(e)中的从时间t5到时间t6的乐句期间生成第二乐句推理乐音数据217,使得第二乐句推理乐音数据217的节拍中的音符的音符开启定时可以与第一乐句推理乐音数据217的a1、a3、a5和a7的音符的音符开启定时同步,如图5的(b

1)和(b

2)中所示。因此,从稍后将描述的图6的声音模型单元608输出的推理乐音数据217可以与循环器lsi 220中已经产生的循环回放声音310同步,从而循环回放声音310即使在加录时不协调会更少。
71.即,处理器205通过将第一声音数据中的第一音符的音符开启定时与第二乐句数据中的第二音符的音符开启定时同步来产生第二声音数据,其中第一音符的音符开启定时并不总是与节拍一致,或者通过将第一声音数据中第一音符的持续时间与第二乐句数据中第二音符的持续时间匹配来产生第二声音数据。
72.图6是示出本实施例中的声音合成单元602和声音训练单元601的配置示例的框图。声音合成单元602作为由图2的声音合成lsi 205执行的功能被内置到电子键盘乐器100中。
73.基于稍后描述的节奏设置识别每个乐句(小节),声音合成单元602通过根据图1的键盘101中的键触摸经由图2的键扫描器206接收包括从cpu201指示的音高序列的音高数据215来合成并输出推理乐音数据217。响应于对键盘101中的键(操作器)的操作,声音合成单
元602的处理器将音高数据215输入到在经训练的声学模型单元606中用户选择的乐器的训练声学模型中,所述音高数据215包括与键相关联的乐句的音高序列。声音合成单元602的处理器执行输出推理乐音数据217的处理,该处理根据输入基于经训练的声学模型单元606输出的频谱数据618和声源数据619再现乐句的乐器演奏声音。
74.例如,如图6所示,声音训练单元601可以实现为由设置在图1的电子键盘乐器100外部的服务器600执行的功能。替换地,虽然未在图6中示出,但是如果图2的声音合成lsi 205具有备用处理能力,则声音训练单元601可以作为由声音合成lsi 205执行的功能,被内置到电子键盘乐器100中。
75.例如,基于以下引用的非专利文献1“statistical parametric speech synthesis based on deep learning(基于深度学习的统计参数语音合成)”来实现图2的声音训练单元601和声音合成单元602。
76.非专利文献1:kei hashimoto和shinji takaki,“statistical parametric speech synthesis based on deep learning(基于深度学习的统计参数语音合成)”,journal of the acoustical society of japan(日本声学学会杂志),第73卷,第1期(2017年),第55

62页。
77.如图6所示,作为例如外部服务器600执行的功能的图2的声音训练单元601包括训练声学特征提取单元604和模型训练单元605。
78.在声音训练单元601中,例如,通过在乐器上演奏某一流派的音乐片段所获得的声音记录被用作训练演出数据集612,并且音乐片段的乐句的音高序列的文本数据用作训练乐谱数据集611,这是训练音高数据集。
79.训练声学特征提取单元604被配置为加载并分析通过麦克风等记录的训练演出数据集612,例如通过专业演奏者在乐器上演奏训练乐谱数据集611中包括的乐句的音高序列,加载训练乐谱数据集611中包括的乐句的音高序列的文本数据。然后,训练声学特征提取单元604提取并输出训练声学特征序列614,其表示训练演出数据集612中的声音特征。
80.模型训练单元605被配置为使用机器学习来估计声学模型,使得给定训练乐谱数据集611和声学模型的训练声学特征序列614的条件概率根据如下非专利文献1中所述的等式(1)最大化。换言之,作为文本数据的乐器声音特征序列与作为声音的声学特征序列之间的关系使用称为声学模型的统计模型来表达。
81.[数学表达式1]
[0082][0083]
在等式(1)中,arg max指的是如下操作,其返回写在它下面的参数,使得写在右边的函数的值最大化。
[0084]
以下符号表示训练乐谱数据集611。
[0085]
[数学表达式2]
[0086]
l
[0087]
以下符号表示声学模型。
[0088]
[数学表达式3]
[0089]
λ
[0090]
以下符号表示训练声学特征序列614。
[0091]
[数学表达式4]
[0092]
o
[0093]
以下符号表示将生成训练声学特征序列614的概率。
[0094]
[数学表达式5]
[0095]
p(o|l,λ)
[0096]
以下符号表示声学模型,使得训练声学特征序列614将被生成的概率被最大化。
[0097]
[数学表达式6]
[0098][0099]
模型训练单元605被配置为输出模型参数作为训练结果615,该模型参数代表使用机器学习根据等式(1)计算出的声学模型。
[0100]
例如,如图6所示,在图1的电子键盘乐器100发货之前,学习结果615(模型参数)存储在电子键盘乐器100的图2所示的控制系统的rom202中。当打开电子键盘乐器100时,训练结果615可以从图2的rom202加载到声音合成lsi205中的稍后描述的经训练的声学模型单元606中。或者,例如,如图6所示,响应于在电子键盘乐器100的第二开关面板103上的用户操作,训练结果615可以通过网络接口219从因特网(未示出)或使用通用串行总线(usb)电缆等的网络下载到稍后在声音合成lsi205中描述的经训练的声学模型单元606中。
[0101]
声音合成单元602是声音合成lsi205执行的功能,包括经训练的声学模型单元606和声音模型单元608。声音合成单元602被配置为执行统计声音合成处理,其中通过使用经训练的声学模型单元606中的称为声学模型的统计模型进行预测,推理乐音数据217对应于包括乐句的音高序列的文本数据的音高数据215。
[0102]
经训练的声学模型单元606接收乐句的音高数据215,并输出相应预测的声学特征序列617。换言之,经训练的声学模型单元606被配置为估计声学特征序列617的估计值,使得给定经由键扫描器206和cpu201从键盘101输入的音高数据215和利用模型训练单元605中的机器学习被设置为学习结果615的声学模型的情况下作为声学特征数据的声学特征序列617的条件概率根据如下非专利文献1所述的等式(2)最大化。
[0103]
[数学表达式7]
[0104][0105]
在等式(2)中,以下符号表示通过键扫描器206和cpu201从键盘101输入的音高数据215。
[0106]
[数学表达式8]
[0107]
l(2

1)
[0108]
以下符号表示使用模型训练单元605中的机器学习设置为学习结果615的声学模型。
[0109]
[数学表达式9]
[0110]
[0111]
以下符号表示作为声学特征数据的声学特征序列617。
[0112]
[数学表达式10]
[0113]
o(2

3)
[0114]
下面的符号表示将生成作为声学特征数据的声学特征序列617的概率。
[0115]
[数学表达式11]
[0116][0117]
下面的符号表示声学特征序列617的估计值,使得作为声学特征数据的声学特征序列617将被生成的概率被最大化。
[0118]
[数学表达式12]
[0119][0120]
声音模型单元608接收声学特征序列617并产生与包括由cpu201指定的音高序列的音高数据215相对应的推理乐音数据217。推理乐音数据217被输入到图2的循环器220中。
[0121]
由训练声学特征序列614和声学特征序列617表示的声学特征包括频谱数据以及声源数据,该频谱数据对乐器的声音产生或共振的机制进行建模,该声源数据对乐器的振荡机制进行建模。作为频谱数据(频谱参数),可以采用梅尔频率倒谱、线频谱对(lsp)等。作为声源数据,可以采用表示乐器声音的音高频率的基频(f0)和功率。声音模型单元608包括振荡产生单元609和合成滤波器单元610。振荡产生单元609对乐器的振荡机制进行建模。振荡产生单元609依次接收从经训练的声学模型单元606输出的声源数据619的序列,并产生声音信号,例如由以包括在声源数据619中的基频(f0)和功率(在浊音音符的情况下)周期性重复的脉冲序列、具有包括在声源数据619中的功率的白噪声(在清音音符的情况下),或者它们的混合物构成。合成滤波器单元610模拟乐器的声音产生或共振的机制。合成滤波器单元610顺序地接收从经训练的声学模型单元606输出的频谱数据618的序列,并形成数字滤波器以对乐器的声音产生或共振的机制进行建模。然后,合成滤波器单元610以从振荡产生单元609输入的声音信号作为振荡器信号,生成并输出作为数字信号的推理乐音数据217。
[0122]
训练演出数据集612的采样率例如是16khz。如果采用梅尔频率倒谱分析处理得到的梅尔频率参数作为训练声学特征序列614和声学特征序列617中包括的谱参数,得到的第1到第24个mfcc,例如帧移5毫秒,25毫秒的帧大小,并使用布莱克曼窗作为窗函数。
[0123]
从声音合成单元602输出的推理乐音数据321被输入到图2的循环器220中。
[0124]
接着,将说明图6的声音训练单元601和声音合成单元602进行的统计声音合成处理的第一实施例。在统计声音合成处理的第一实施例中,使用在下面引用的非专利文献1和非专利文献2中描述的隐马尔可夫模型(hmm)作为由设置在经训练的声学模型606中的训练结果615(模型参数)表示的声学模型。
[0125]
非专利文献2:shinjisako、keijirosaino、yoshihikonankaku、keiichitokuda和tadashikitamura,“atrainablesingingvoicesynthesissystemcapableofrepresentingpersonalcharacteristicsandsingingstyles”,informationprocessingsocietyofjapan(ipsj)technicalreport,musicandcomputer(mus),第2008卷,第12期(2008年),第39

44页。
[0126]
在统计声音合成处理的第一实施例中,当通过用户演出以一个乐句的音高序列给出乐器声音时,根据乐器的声源和声音产生或共振特性的乐器声音的特征参数如何随时间变化对hmm声学模型进行训练。更具体地,hmm声学模型在音符声音(对于乐谱中音符演奏的声音)基础上对从训练乐器数据(图6的训练乐谱数据集611)获得的谱、基频(音高)及其时间结构建模。
[0127]
首先,将描述由图6的声音训练单元601使用hmm模型进行的处理。通过输入训练乐谱数据集611和从训练声学特征提取单元604输出的训练声学特征序列614,声音训练单元601中的模型训练单元605基于等式(1)以最大似然性来训练hmm声学模型。如非专利文献1中所述,hmm声学模型的似然函数由下面的式(3)表示。
[0128]
[数学表达式13]
[0129][0130]
在等式(3)中,以下符号表示帧t中的声学特征。
[0131]
[数学表达式14]
[0132]
o
t
[0133]
t表示帧数。
[0134]
以下符号表示hmm声学模型的状态序列。
[0135]
[数学表达式15]
[0136]
q=(q1,

q
t
)
[0137]
下面的符号表示帧t中hmm声学模型的状态号。
[0138]
[数学表达式16]
[0139]
q
t
[0140]
下面的符号表示从状态q
t
‑1到状态q
t
的状态转移概率。
[0141]
[数学表达式17]
[0142][0143]
以下符号是具有均值向量μ
qt
和协方差矩阵σ
qt
的正态分布,并且表示状态q
t
的输出概率分布。注意,μ
qt
和σ
qt
中的t是q的下标。
[0144]
[数学表达式18]
[0145][0146]
使用期望最大化(em)算法有效地基于最大似然准则来训练hmm声学模型。
[0147]
乐器声音的频谱数据可以使用连续hmm建模。但是,由于对数基频(f0)是一个变维时间序列信号,其在乐器声音的浊音段(存在音高的段)中取连续值,而在清音段(音高不存在的段,例如呼吸音)中不取值,不能直接使用普通的连续或离散hmm建模。因此,使用多空间概率分布hmm(msd

hmm),它是基于与可变维度兼容的多空间概率分布的hmm,用于将梅尔频率倒谱(频谱参数)建模为多元高斯分布,并且将具有对数基频(f0)的乐器声音的浊音建
模为一维空间中的高斯分布,以及同时将乐器声音的清音建模为零维空间中的呈高斯分布。
[0148]
构成乐器声音的音符声音的声学特征(音高、持续时间、开始/结束定时、节拍的重音等)已知会由于各种因素的影响而变化,即使音符(例如,音符的音高)相同。影响音符声音的声学特征的这些因素被称为上下文。在第一实施例的统计声音合成处理中,为了准确地对乐器的音符声音的声学特征建模,可以使用考虑上下文的hmm声学模型(上下文相关模型)。具体地,训练乐谱数据集611不仅可以考虑音符声音的音高,还可以考虑乐句、乐器等中音符的音高序列,等等。在模型训练单元605中,可以使用基于决策树的上下文聚类来有效处理上下文的组合。在这种聚类中,使用二叉树将一组hmm声学模型划分为树状结构,从而将具有相似上下文的hmm声学模型分组为群集。树中的每个节点都有一个用于将上下文分为两组的问题,例如“前一个音符声音的音高是x?”、“下一个音符声音的音高是y?”和“乐器是z?”。每个叶节点具有与特定hmm声学模型对应的训练结果615(模型参数)。对于上下文的任意组合,通过根据节点处的问题遍历树,可以到达叶子节点中的一个,从而可以选择与叶子节点对应的训练结果615(模型参数)。通过选择合适的决策树结构,可以估计出具有高精度和高泛化能力的hmm声学模型(上下文相关模型)。
[0149]
图7是用于说明统计声音合成处理的第一实施例中的hmm决策树的图。对于依赖于上下文的每个音符声音,音符声音的状态例如与由图7的(a)所示的#1、#2和#3这三个状态701组成的hmm相关联。每个状态的传入或传出箭头表示状态转换。例如,状态701(#1)对音符声音的音符开启建模,状态701(#2)对音符声音的中间建模,状态701(#3)对音符声音的音符关闭建模。
[0150]
取决于音符声音的持续时间,图7的(a)中hmm所示的每个状态701(#1)到(#3)的持续时间是使用图7的(b)中的状态持续时间模型确定的。图6的模型训练单元605通过从图6的训练乐谱数据集611中学习来生成状态持续时间决策树702以用于确定状态持续时间,训练乐谱数据集611以乐句为基础对应于大量音符声音序列的上下文,并在声音合成单元602中的经训练的声学模型单元606中将状态持续时间决策树702设置为训练结果615。
[0151]
另外,图6的模型训练单元605通过从训练声学特征序列614中学习来生成梅尔倒谱参数决策树703以确定梅尔倒谱参数,训练声学特征序列614在关于梅尔频率倒谱参数的乐句基础上对应于大量音符声音序列,并且训练声学特征序列614是例如通过图6的训练声学特征提取单元604从图6的训练演出数据集612中提取的。然后,模型训练单元605将生成的梅尔频率倒谱参数决策树703作为训练结果615,设置在声音合成单元602中的经训练的声学模型单元606中。
[0152]
此外,图6的模型训练单元605通过从训练声学特征序列614中学习生成对数基频决策树704,以用于确定对数基频(f0)确定对数基频(f0),所述训练声学特征序列614在关于对数基频(f0)的乐句基础上与大量音符声音序列相对应并且是例如通过图6的训练声学特征提取单元604从图6的训练演出数据集612中提取的。然后,模型训练单元605将生成的对数基频决策树704作为训练结果615设置在声音合成单元602中的经训练的声学模型单元606中。注意,如上所述,通过与可变维度兼容的msd

hmm,具有对数基频(f0)的浊音段被建模为一维空间中的高斯分布,而清音段被建模为零维空间中的高斯分布。这样,生成对数基频决策树704。
[0153]
虽然图7未显示,但是图6的模型训练单元605可以被配置为通过从训练乐谱数据集611中学习来生成决策树以用于确定关于音符声音的重音(例如,节拍的重音)等的上下文,训练乐谱数据集611在乐句基础上对应于大量音符声音序列的上下文。然后,模型训练单元605可以将生成的决策树作为训练结果615设置在声音合成单元602中的经训练的声学模型单元606中。
[0154]
接着,将描述由图6的声音合成部602使用hmm模型进行的处理。经训练的声学模型606在用于乐器的乐器声音的乐句中的音高序列的上下文中加载音高数据215,乐器的乐器声音的乐句是经由键扫描器206和cpu201从键盘101输入的,以通过参考每个上下文的图7的决策树702、703和704等来连接hmm。然后,经训练的声学模型606预测声学特征序列617(频谱数据618和声源数据619),使得使用每个连接的hmm最大化输出概率。
[0155]
此时,经训练的声学模型单元606估计声学特征序列617的估计值(符号(2

5))使得给定通过键扫描器206和cpu 201从键盘101输入的音高数据215(符号(2

1))和使用模型训练单元605中的机器学习根据等式(2)被设置为训练结果615的声学模型(符号(2

2))情况下声学特征序列617(符号(2

3))的条件概率(符号(2

4))被最大化。使用下面由图7的(b)中的状态持续时间模型估计的状态序列(4

1),等式(2)近似为如下非专利文献1所述的等式(4)。
[0156]
[数学表达式19]
[0157][0158]
[数学表达式20]
[0159][0160]
[数学表达式21]
[0161][0162][0163]
上面的等式(4

2)和等式(4

3)的左侧分别是下面状态(4

4)的均值向量和协方差矩阵。
[0164]
[数学表达式22]
[0165][0166]
使用乐器声音特征序列l,通过遍历经训练的声学模型606中的每个决策树集合来计算均值向量和协方差矩阵。根据等式(4),声学特征序列617的估计值(符号(2

5))是使用上面的等式(4

2)的均值向量获得的,该均值向量是不连续的序列,在状态转换时以阶梯状的方式变化。如果合成滤波器单元610从这种不连续声学特征序列617合成推理乐音数据
217,则产生低质量或不自然的乐器声音。因此,在统计声音合成处理的第一实施例中,在模型训练单元605中可以采用用于生成考虑动态特征的训练结果615(模型参数)的算法。如果在帧t中的声学特征序列(下面的等式(5

1))由静态特征和动态特征组成,则声学特征序列(下面的等式(5

2))随时间的变化由下面的等式(5

3)表示。
[0167]
[数学表达式23]
[0168][0169][0170]
o=wc(5

3)
[0171]
在上面的等式(5

3)中,w是一个矩阵,用于从下面的等式(6

4)的静态特征序列中获得包括动态特征的声学特征序列o。
[0172]
[数学表达式24]
[0173][0174]
模型训练单元605求解如上的等式(4),如由下面的等式(6)以上等式(5

3)作为约束所表达的。
[0175]
[数学表达式25]
[0176][0177]
上面等式(6)的左侧是静态特征序列,使得输出概率在动态特征为约束的情况下最大化。通过考虑动态特征,可以解决状态边界处的不连续性以获得平滑变化的声学特征序列617。因此,可以在合成滤波器单元610中产生高质量的推理乐音数据217。
[0178]
接着,说明图6的声音训练单元601和声音合成单元602进行的统计声音合成处理的第二实施例。在统计声音合成处理的第二实施例中,为了从音高数据215预测声学特征序列617,使用深度神经网络(dnn)来实现经训练的声学模型单元606。相应地,声音训练单元601中的模型训练单元605被配置成从乐器声音特征(训练乐谱数据集611)到声学特征(训练声学特征序列614)学习表示dnn中神经元的非线性变换函数的模型参数并将模型参数输出到声音合成单元602中的经训练的声学模型单元606的dnn作为学习结果615。
[0179]
通常,例如宽度为5.1毫秒的每帧计算声学特征,每个音符计算乐器声音特征。因此,声学特征和乐器声音特征的时间单位是不同的。在使用hmm声学模型的统计声音合成处理的第一实施例中,声学特征和乐器声音特征之间的对应关系用hmm的状态序列表示,并且模型训练单元605基于图6的训练乐谱数据集611和训练演出数据集612来自动学习声学特征和乐器声音特征之间的对应关系。相比之下,在使用dnn的统计声音合成处理的第二实施例中,由于在经训练的声学模型单元606中设置的dnn是表示作为输入的音高数据215和作为输出的声学特征序列617之间的一一对应关系的模型,所以无法使用时间单位不同的一对输入和输出数据来训练dnn。为此,在统计声音合成处理的第二实施例中,预先设置以帧为单位的声学特征序列与以音符为单位的乐器声音特征序列的对应关系,并且生成以帧为单位的一对声学特征序列和乐器声音特征序列。
[0180]
图8示出了表示上述对应关系的声音合成lsi205的操作。例如,如果给出乐器音符序列,它是在一首乐曲的乐句中(图8的(a))的“c3”、“e3”、“g3”、“g3”、“g3”、“g3”等音高
序列(字符串)对应的乐器声音特征序列,则乐器声音特征序列以一对多的对应关系(图8中的(a)和(b))与单位为帧的声学特征序列(图8的(b))相关联。注意,由于用作经训练的声学模型单元606中的dnn的输入,乐器声音特征必须表示为数值数据。为此,作为乐器声音特征序列,使用通过级联用于上下文相关问题,(例如“前一个音符是x?”和“当前音符的乐器是y?”)的二进制(0或1)或连续值数据获得的数值数据。
[0181]
在统计声音合成处理的第二实施例中,如图8中虚线箭头801所示。图6的声音训练单元601中的模型训练单元605通过顺序传递训练乐谱数据集611的以帧为单位的对来训练dnn,训练乐谱数据集611是乐句的音符序列(音高序列)并且对应于图8的(a),而乐句的训练声学特征序列614对应于图8的(b),成为经训练的声学模型单元606中的dnn。注意,经训练的声学模型单元606中的dnn包括神经元,如图8中的灰色圆圈所示,由输入层、一个或多个隐藏层和输出层组成。
[0182]
另一方面,当合成声音时,以帧为单位、是乐句的音符序列(音高序列)并且对应于图8的(a)的音高数据215,被输入到经训练的声学模型单元606中的dnn。因此,经训练的声学模型单元606中的dnn输出以帧为单位的乐句的声学特征序列617,如图8中粗实线箭头802所示。因此,同样在声音模型单元608中,包括在乐句的声学特征序列617中并且其单位是帧的声源数据619和频谱数据618被相应地给予振荡产生单元609和合成滤波器单元610,从而执行声音合成。
[0183]
因此,声音模型单元608通过对应于例如图8中粗实线箭头803所示的225个样本的帧输出乐句的推理乐音数据217。由于帧的宽度为5.1毫秒,因此一个样本对应5.1毫秒/225≈0.0227毫秒。推理乐音数据217的采样率因此是1/0.0227≈44khz。
[0184]
根据普通的最小二乘准则,下面的等式(7),使用以帧为单位的乐句的一对声学特征和乐器特征(音高序列和乐器)训练dnn。
[0185]
[数学表达式26]
[0186][0187]
以下符号表示帧t中的声学特征,编号为t。
[0188]
[数学表达式27]
[0189]
o
t
[0190]
以下符号表示帧t中的乐器声音特征(音高和乐器),编号为t。
[0191]
[数学表达式28]
[0192]
l
t
[0193]
以下符号表示经训练的声学模型单元606中dnn的模型参数。
[0194]
[数学表达式29]
[0195][0196]
以下符号表示由dnn表示的非线性变换函数。可以使用反向传播有效地估计dnn的模型参数。
[0197]
[数学表达式30]
[0198]
g
λ
(
·
)
[0199]
考虑到与模型训练单元605在由以上等式(1)表示的统计声音合成中的处理的对
应关系,dnn的训练可以表示为下面的等式(8)。
[0200]
[数学表达式31]
[0201][0202]
在以上等式(8)中,以下等式(9)成立。
[0203]
[数学表达式32]
[0204][0205]
就像在上面的等式(8)和(9)中一样,声学特征和乐器声音特征(音高和乐器)之间的关系可以使用正态分布来表示,如等式(9

1),dnn的输出是均值向量。
[0206]
[数学33]
[0207][0208]
通常,在使用dnn的统计声音合成处理的第二实施例中,使用的是独立于乐器声音特征序列l
t
的协方差矩阵,即所有帧共有的协方差矩阵(下面的等式(9

2))。
[0209]
[数学表达式34]
[0210][0211]
如果上面的等式(9

2)的协方差矩阵是单位矩阵,上面的等式(8)表示等价于以上等式(7)的训练处理。
[0212]
如图8所示,经训练的声学模型单元606中的dnn被配置为独立地每帧预测声学特征序列617。为此,获得的声学特征序列617可能包括降低合成声音质量的不连续性。因此,在本实施例中,可以使用类似于统计声音合成处理的第一实施例的使用动态特征的参数生成算法来提高合成声音的质量。
[0213]
下面使用由图2的声音合成lsi 205输出的推理乐音数据217来详细描述用于实现由图2的循环器lsi 220执行的循环记录/回放处理的第二实施例的图1和图2所示的电子键盘乐器100的更具体的操作。在循环记录/回放处理的第二实施例中,可以将多个连续乐句设置为循环片段。
[0214]
在循环记录/回放处理的第二实施例中,在未执行循环记录/回放处理的状态(以下,称为“模式0(mode0)”)下,当一旦用户踏上图1的踏板105时,循环器lsi 220转移到下面描述的模式1(mode1)的操作。在模式1中,当用户在图1的键盘101上执行为每个乐句指定所需音高序列的演出时,图2的声音合成lsi 205输出推理乐音数据217,推理乐音数据217以具有一个乐句的延迟(在本实施例中为一个小节)的乐句单位输出添加了演出表达声音,该演出表达声音包括与用户未演奏的演出技术相对应的声音,如参考图6至8所描述的。在图2的循环器lsi 220内的图3所示的循环记录单元303执行经由混合器307将推理乐音数据217顺序存储在第一循环存储区301中的处理,推理乐音数据217以乐句为基础根据用户演出的音高序列从如上所述的每个乐句的声音合成lsi 205输出。用户在计算多个乐句(小节)的同时,根据从扬声器(未示出)发出的节奏声音经由例如来自声音模块lsi 204的混合器
213、数模转换器211、放大器214进行上述演出,从而使循环器lsi 220执行模式1的操作。
[0215]
此后,当用户再次踏上踏板105时,循环器lsi 220转换到将在下面描述的模式2(mode2)的操作。在模式2中,图3的循环回放单元304被配置为依次加载第一循环存储区301中存储的多个乐句(小节)的片段(以下称为“循环片段”)的推理乐音数据217,作为循环回放声音310。循环回放声音310被输入到图2的混合器213中,作为图2的循环回放推理乐音数据222,并且通过数模转换器211和放大器214从扬声器(未示出)发出。用户进一步在图1的键盘101上进行如下演出,对于循环片段中的每个乐句,符合循环回放声音310,指定与用户想要循环录制的乐音相对应的期望音高序列并将其叠加在循环回放声音310上。结果,图2的声音合成lsi 205类似于模式1的情况,以具有一个乐句的延迟的乐句单位输出添加了丰富的音乐表达的推理乐音数据217。图3的混合器307被配置为将相对于用户的演出延迟一个乐句的乐句单位从声音合成lsi 205输入的推理乐音数据217与通过将从循环回放单元304输出的循环回放声音310在乐句延迟单元305中延迟一个乐句而获得的循环回放声音延迟输出311混合,并将混合数据输入到循环记录单元303中。循环记录单元303被配置为执行将混合(所谓的加录)推理乐音数据顺序存储到图3的第二循环存储区302的处理。当加录操作到达循环片段的末尾时,循环回放单元304将循环回放声音310的加载源从第一循环存储区301的循环末尾切换到第二循环存储区302的循环的开头。循环记录单元303被配置成将推理乐音数据的记录目的地从第二循环存储区302的末尾切换到第一循环存储区301的开头。另外,当操作到达循环片段的末尾时,循环回放单元304再次将循环回放声音310的加载源从第二循环存储区302的循环的末尾切换到第一循环存储区301的循环开始。循环记录单元303被配置成将推理乐音数据的记录目的地从第一循环存储区301的末尾再次切换到第二循环存储区302的开始。重复切换控制操作,使得用户可以在将基于用户演奏获得的推理乐音数据217依次叠加到循环片段的循环回放声音310的同时,生成循环片段的循环回放声音310。
[0216]
此后,当用户再次踏上踏板105时,循环器lsi 220转换到下面要描述的模式3(mode3)的操作。在模式3中,图3的循环回放单元304被配置为从第一循环存储区301或第二循环存储区302的最后记录区开始在循环片段中重复回放循环回放声音310,并将其作为推理乐音数据222输出。被重复回放的乐音数据217从图2的混合器213经由数模转换器211和放大器214从扬声器(未示出)发出。以这种方式,即使当用户在图1的键盘101上执行以乐句为单位指定每个音符的音高的单调演奏时,可以回放具有经由声音合成lsi 205生成的丰富音乐表现力的循环回放声音310(输出声音的动态可以根据演出而波动,可以添加声音或声学效果,并且可以补充未播放的音符)。此时,当用户进一步进行演出时,从图2的声音模块lsi 204基于演出输出的乐音输出数据在图2的混合器213中与循环回放声音310混合,并且混合的声音可以通过数模转换器211和放大器214从扬声器(未示出)发出,从而可以实现循环回放和用户演出的合奏。
[0217]
此后,一旦当用户在模式3的循环回放状态中再次踏上踏板105时,循环器lsi 220返回到模式2的操作并且可以进一步执行加录。
[0218]
另外,当用户在模式2的加录状态下保持踏板105时,循环器lsi 220取消最后记录的循环记录,转换到模式3,并返回到先前的循环记录状态。此外,一旦当用户再次踏上踏板105时,循环器lsi 220返回到模式2的操作并进一步进行加录。
[0219]
在模式1、模式2或模式3的状态下,当用户迅速踏上踏板105两次时,循环器lsi 220转换到模式0的停止状态以结束循环记录/回放。
[0220]
图9是示出循环记录/回放处理的第二实施例中的电子乐器的控制处理示例的主流程图。该控制处理是执行由图2的cpu 201从rom 202加载到ram 203的控制处理程序的操作。
[0221]
在执行初始化处理(步骤s901)之后,cpu 201重复执行从步骤s902到步骤s907的一系列处理。
[0222]
在重复处理中,cpu 201首先执行切换处理(步骤s902)。cpu 201基于来自图2的键扫描器206的中断来执行与图1的第一开关面板102或第二开关面板103上的开关操作相对应的处理。
[0223]
然后cpu 201基于来自图2的键扫描器206的中断来执行确定和处理图1的键盘101的任何一个键是否被操作的键盘处理(步骤s903)。在键盘处理中,cpu 201根据用户对键进行键按下或释放操作向图2的声音模块lsi 204输出用于指示音符开启或音符关闭的乐音产生控制数据216。另外,在键盘处理中,cpu 201执行将按下的键的音高顺序地存储到作为ram203上的阵列变量的乐句缓冲器中的处理,以在后面描述的ticktime中断处理中以乐句单位向声音合成lsi 205进行音高序列的输出处理。
[0224]
然后cpu 201执行处理数据的显示处理,该处理数据将被显示在图1的lcd 104上,并且通过图2的lcd控制器208在lcd 104上显示数据(步骤s904)。lcd 104上显示的数据例如是与所播放的推理乐音数据217和各种设置内容相对应的乐谱。
[0225]
然后cpu 201执行循环器控制处理(步骤s905)。在该处理中,cpu 201执行作为控制图2的循环器lsi 220的处理的循环器控制处理(稍后描述的图14和图15的流程图的处理)。
[0226]
随后,cpu 201执行声源处理(步骤s906)。在声源处理中,cpu 201在声音模块lsi 204中的声音产生期间执行诸如乐音的包络控制之类的控制处理。
[0227]
最后,cpu 201确定用户是否按下电源关闭开关(未示出)来关闭电源(步骤s907)。当步骤s907中的确定为“否”时,cpu 201返回到步骤s902的处理。当步骤s907中的确定为“是”时,cpu 201结束图9的流程图中所示的控制处理,并且关闭电子键盘乐器100的电源。
[0228]
图10a是示出图9中的步骤s901的初始化处理的详细示例的流程图。图10b是示出在图9中的步骤s902的切换处理中稍后描述的图11的步骤s1102的节奏改变处理的详细示例的流程图。
[0229]
首先,在图10a中示出了图9中的步骤s901的初始化处理的详细示例,cpu 201执行ticktime的初始化处理。在本实施例中,循环演出的进度以存储在ram 203中的ticktime变量的值(以下,将该变量的值称为“ticktime”,其与变量名相同)为单位进行。在图2的rom 202中,预先设置了timedivision常量的值(该变量的值以下称为“timedivision”,其与变量名相同),即四分音符的分辨率。例如,当此值为480时,四分音符的持续时间为480
×
ticktime。注意,timedivision的值也可以存储在ram 203中,并且用户可以改变它,例如通过图1的第一开关面板102上的开关。此外,作为存储在图2的ram 203中的变量,ticktime进行计数:用于确定用户已经演出了了一个乐句的演奏的指针变量的值(后面将描述的phrasepointer值的值;以下将该变量的值称为“phasepointer”,与变量名相同);用于进行
循环演出的记录的指针值的值(后面将描述的recpointer值的值,以下将该变量的值称为“recpointer”,与变量名相同);以及用于进行循环再现的指针变量的值(后面将描述的playpointer值的值;在下文中,将该变量的值称为“playpointer”,与变量名称相同)。1ticktime实际对应的秒数取决于为歌曲数据指定的节奏。如果根据用户设置为ram 203上的tempo变量设置的值为tempo[beat/min],则对应于1个ticktime的秒数由以下等式计算。
[0230]
ticktime[sec]=60/tempo/timedivision(10)
[0231]
因此,在图10a的流程图中例示的初始化处理中,cpu 201首先通过对应于以上等式(10)的计算处理计算ticktime[sec]并将其存储在ram 203上的同名变量中(步骤s1001)。注意,作为为变量tempo设置的tempo的值,可以在初始状态中设置从图2的rom 202中的常数加载的预定值,例如60[beat/sec]。可替代地,可以将变量tempo存储在非易失性存储器中,以便在再次打开电子键盘乐器100的电源时恢复关机时的tempo值。
[0232]
随后,cpu 201通过在步骤s1001中计算的ticktime[sec]针对图2的定时器210设置定时器中断(步骤s1002)。结果,在定时器210中每次经过ticktime[sec]时,关于cpu 201发生用于声音合成lsi 205的乐句进度和循环器lsi 220的循环记录/回放进度的中断(下文中,称为“ticktime中断”)。因此,在由cpu 201基于ticktime中断而执行的ticktime中断处理(稍后描述的图12的流程图)中,每1个ticktime确定一个乐句并进行循环记录/回放的控制处理被执行。
[0233]
随后,cpu 201执行各种初始化处理,例如图2的ram 203的初始化(步骤s1003)。此后,cpu 201结束图10a的流程图举例说明的图9的步骤s901的初始化处理。
[0234]
稍后将描述图10b的流程图。图11是示出图9的步骤s902的切换处理的详细例子的流程图。
[0235]
cpu 201首先确定第一开关面板102中的节奏改变开关是否改变了乐句进度和循环记录/回放进度的节奏(步骤s1101)。当确定为“是”时,cpu201执行节奏改变处理(步骤s1102)。稍后将参考图10b详细描述该处理。当步骤s1101中的确定为“否”时,cpu 201跳过步骤s1102的处理。
[0236]
随后,cpu 201通过图2的键扫描器206确定用户是否用脚等踏上了图1的踏板105用于在循环器lsi 220中循环记录/回放(步骤s1103)。当确定为“是”时,cpu 201执行踏板控制处理(步骤s1104)。稍后将参考图14详细描述该处理。当步骤s1103中的确定为“否”时,cpu 201跳过步骤s1104的处理。
[0237]
最后,cpu 201执行其他切换处理,该其他切换处理对应于在电子键盘乐器100的声音模块音调的选择的情况下,在图1的第二开关面板103上执行其声音要在声音合成lsi 205中被声音合成的乐器等(步骤s1105)。cpu 201在ram 203上(未示出)存储声音模块音调和以变量要进行声音合成的乐器(步骤s1104)。此后,cpu 201结束图11的流程图举例说明的图9的步骤s902的切换处理。
[0238]
图10b是示出图11中的步骤s1102的节奏改变处理的详细示例的流程图。如上所述,当节奏值改变时,ticktime[sec]也会改变。在图10b的流程图中,cpu 201执行与ticktime[sec]的改变有关的控制处理。
[0239]
首先,类似于图9的步骤s901的初始化处理中执行的图10a的步骤s1001的情况,cpu 201通过与以上等式(10)对应的计算处理来计算ticktime[sec](步骤s1011)。注意,对
于节奏值tempo,假设通过图1的第一开关面板102中的节奏改变开关改变之后的值存储在ram 203等中。
[0240]
随后,类似于在图9的步骤s901的初始化处理中执行的图10a的步骤s1002的情况,cpu 201通过在步骤s1011中计算的ticktime[sec]为图2的定时器210设置定时器中断(步骤s1012)。此后,cpu 201结束图10b的流程图举例说明的图11的步骤s1102的节奏改变处理。
[0241]
图12是示出基于图2的定时器210中每ticktime[sec]发生的ticktime中断(参考图10a的步骤s1002或图10b的步骤s1012)执行的ticktime中断处理的详细示例的流程图。
[0242]
首先,cpu 201确定ram 203上的变量recstart(以下将该变量的值称为“recstart”,与变量名称相同)的值是否为1,即是否指示循环记录进度(步骤s1201)。
[0243]
当确定没有指示循环记录进度时(步骤s1201的确定为“否”),cpu 201在不执行步骤s1202至s1205中控制循环记录进度的处理的情况下进行到步骤s1206的处理。
[0244]
当确定指示了循环记录进度时(步骤s1201的确定为“是”),响应于ticktime中断前进1个单位,cpu 201将ram 203上的变量recpointer的值(在下文中,该变量的值称为“recpointer”,与变量名称相同)增加1,用于控制循环片段中以ticktime为单位的时间进度,以便记录在图3的第一循环存储区301或第二循环存储区302上。另外,cpu 201将ram 203上的变量phrasepointer的值(以下,将该变量的值称为“phrasepointer”,与变量名相同)的值增加1,用于控制在乐句片段中以ticktime为单位的时间进度(步骤s1202)。
[0245]
随后,cpu 201确定phrasepointer的值是否变得与由timedivision
×
beat定义的值相同(步骤s1203)。如上所述,timedivision的值基于ticktime,即一个四分音符对应的ticktime数。另外,beat是ram 203上的值(以下将该变量的值称为“beat”,与变量名相同),该值存储表示对于用户将开始演出的一首音乐有多少节拍(在一个小节(一个乐句)中包括多少个四分音符)的值。例如,如果是4拍,则beat=4,而如果是3拍,则beat=3。beat的值可以由用户设置,例如通过图1的第一开关面板102上的开关。因此,timedivision
×
beat的值对应于当前演奏的一首音乐的一个小节的ticktime。具体地,在步骤s1203中,cpu 201确定phrasepointer的值是否变为与由timedivision
×
beat定义的一小节(一个乐句)的ticktime相同。
[0246]
当确定phrasepointer的值达到一个小节的ticktime时(步骤s1203的确定为“是”),cpu 201将基于由用户在图1的键盘101上按下的每个键的音高序列(通过图9的步骤s903的键盘处理将其存储在ram 203上的乐句缓冲器中)与在带有一个小节(一个乐句)的ticktime的片段期间由用户预先指定的声音合成的乐器有关的数据一起(参见图9的步骤s902的切换处理中图11的步骤s1105的其他切换处理的描述)发送到图2的声音合成lsi 205,作为图6中描述的一个乐句的音高数据215。然后,cpu 201根据参考图6至图8描述的统计声音合成处理合成一个乐句的推理乐音数据217,并指示将其输出到循环器lsi 220(步骤s1204)。
[0247]
此后,cpu 201将phrasepointer的值重置为0(步骤s1205)。
[0248]
当确定phrasepointer的值未达到一小节的ticktime时(步骤s1203中的确定为“否”),cpu 201在步骤s1202中仅执行recpointer和phrasepointer的递增处理,而不执行步骤s1204和步骤s1205的处理并且并转移到步骤s1206的处理。
[0249]
随后,cpu 201确定ram 203上的变量playstart的值(以下将该变量的值称为“playstart”,与变量名称相同)是否为1,即指示循环回放进度(步骤s1206)。
[0250]
当确定指示循环回放进度时(步骤s1206的确定为“是”),响应于由一个单元进行的ticktime中断控制,cpu 201将ram 203上的变量playpointer的值(以下,该变量的值称为“playpointer”,与变量名相同)增加1,用于控制图3的第一循环存储区301或第二循环存储区302上的循环回放的循环片段。
[0251]
当确定没有指示循环回放进度时(步骤s1206的确定为“否”),cpu 201结束图12的流程图中所示的ticktime中断处理,而不执行步骤s1207中的playpointer的递增处理并且返回以执行图9的主流程图的任何一个处理。
[0252]
随后,将参考图13至15的流程图和图16和图17的操作来详细描述图2的步骤s902的切换处理中的图11中步骤s1104的踏板控制处理以及在图2的循环器lsi 220中基于图9的步骤s905的循环器控制处理实现的从模式0到模式3的循环记录/回放处理。
[0253]
在图16和图17的操作说明中,图16中的t0至图17中的t22表示以ticktime为基础进行的一小节间隔=一乐句间隔=timedivision
×
beat(参考图12中的步骤s1203的描述)的时间。在下文中,假设像“时间t0”这样的描述意味着时间是基于ticktime的。另外,在以下的说明中,假设“小节”和“乐句”互换使用,并统一为“小节”。
[0254]
图13是示出图9的步骤s902的切换处理中的图11的步骤s1104的踏板控制处理的细节的流程图。首先,假设在电子键盘乐器100的电源刚接通后,例如,图9的步骤s901中的图10a的步骤s1003的杂项初始化处理中,将图13所示的ram 203上的变量mode的值(以下将该变量的值称为“mode”,与变量名相同)、变量prevmode的值(下文中,该变量的值称为“prevmode”,与变量名相同)以及值recstart的值均重置为0。
[0255]
在图13的踏板控制处理中,在图11的步骤s1103中经由图2的键扫描器206检测到踏板105上的操作之后,cpu 201首先检测踏板操作的类型(步骤s1301)。
[0256]
当在步骤s1301中确定用户用脚等踩过踏板105一次时,cpu 201进一步确定当前mode的值。
[0257]
当确定当前模式的值为0时,即没有执行循环记录/回放时,cpu 201执行从图13中的步骤s1303到s1308的一系列处理,用于从模式0到模式1的转换。这是图16中时间t0处的“step on pedal from模式0(从模式0踩上踏板)”状态。
[0258]
cpu 201首先将mode变量的值设置为1,表示模式1,并且还为prevmode变量设置与前一个模式0相对应的mode的值0(步骤s1303)。
[0259]
然后,cpu 201将recstart变量的值设置为1,以在模式1中开始循环记录(步骤s1304)。
[0260]
然后cpu 201在ram 203上存储变量recarea(在下文中,该变量的值被称为“recarea”,与变量名称相同)的指示图3的第一循环存储区301的值area1,用于表示在图3的循环器lsi 220上执行循环记录的循环存储区(步骤s1305)。
[0261]
然后,cpu 201为指示在循环记录的ticktime单位中的存储地址的变量recpointer设置

timedivision
×
beat的值,并且还为变量phrasepointer设置值0(步骤s1306)。如图12中步骤s1203所述,timedivision
×
beat为一小节的ticktime。由于recpointer的值0是开始存储地址,

timedivision
×
beat的值表示前一小节到存储开始的
时间。这是因为在ticktime中断处理中,直到recpointer的值从0开始为止的一个小节的延迟,因为在用户开始一个小节的循环演出之后,有一个小节的延迟,直到声音合成lsi205输出对应于循环演出的推理乐音数据217。
[0262]
然后cpu 201将playstart变量的值设置为0,因为在模式1中不执行循环回放(步骤s1307)。
[0263]
另外,cpu 201将ram 203上的表示循环记录结束的loopend变量的值(下文中,该变量的值被称为“loopend”,与变量名称相同)设置为存储在图2的rom 202中的足够大的数max(步骤s1308)。
[0264]
通过在图9的步骤s902的切换处理中的图11的步骤s1104的踏板控制处理中的图13的步骤s1303到步骤s1308的一系列处理,通过用户在模式0中踏上踏板105一次来设置模式1之后,如上所述,cpu 201在对应于图9的步骤s905的图14的循环器控制处理中执行以下处理。
[0265]
在图14中,cpu 201首先确定recstart值是否为1(步骤s1401)。在状态从模式0转变到模式1的情况下,步骤s1401中的确定为“是”,因为在图13的步骤s1304中已经设置了recstart=1。
[0266]
当步骤s1401中的确定为“是”时,cpu 201确定recpointer值是否变得等于或大于loopend值(步骤s1402)。由于在图13的步骤s1308中为loopend变量存储了足够大的值,步骤s1402中的确定最初为“否”。
[0267]
当步骤s1402中的确定为“否”时,cpu 201确定循环记录当前是否停止并且recpointer值变得等于或大于0(步骤s1410)。
[0268]
在图13的步骤s1306中,对于recpointer值,存储一个小节的负值,即

timedivision
×
beat。为此,在recstart通过图12的ticktime中断处理变为1之后,每当ticktime过去时,recpointer值从

timedivision
×
beat依次递增1(参见图12的步骤s1202)。直到经过一个小节的ticktime并且recpointer值变为0,图14的步骤s1410中的确定才会继续为“否”,并且图15的后续步骤s1412中的关于playstart值是否为1的确定也继续为“否”(参考图13的步骤s1307)。因此,在图14的循环器控制处理中基本上不执行任何操作,而只有时间流逝。
[0269]
当最后经过了一个小节的ticktime并且recpointer值变为0时,cpu201使图2的循环器lsi 220中的图3的循环记录单元303从对应于变量recarea所指示的值area1的图3的第一循环存储区301的变量recpointer所指示的起始地址0开始循环记录操作(步骤s1411)。
[0270]
在图16的操作说明中,在时间t0,随着用户踏上踏板105,状态从模式0转变为模式1。与此相一致,用户通过在图1的键盘101上指定每个小节的音高序列的键按下来开始循环演出,如图16的(a)中时间t0所示。对于图16(a)所示的时间t0之后的循环演出,按键指定经由键扫描器206和cpu 201从键盘101被发送到声音模块lsi 204,从而从声音模块lsi 204输出相应的乐音输出数据218并且对应的乐音通过混合器213、数模转换器211和放大器214从扬声器(未示出)发出。
[0271]
此后,随着时间的流逝,在从时间t0开始经过一个小节的ticktime之后的时间t1,对应于第一小节的推理乐音数据217开始从声音合成lsi205输出,如图16的(b)所示。与此
同步,从声音合成lsi 205依次输出到第一循环存储区301(area1)的小节1之后的推理乐音数据217的循环记录通过步骤s1411的处理在时间t1之后开始,如图16的(c)中所示。此时,对于从小节1到小节4的演出输入,例如,在图16的(a)中的定时处示出,到第一循环存储区301的来自声音合成lsi 205的推理乐音数据217的输出定时和循环记录定时被延迟了一个小节,如图16的(b)和(c)所示。这是由于这样的限制,即声音合成lsi 205输出相对于作为音高数据215而输入的每个小节的音符序列具有一个小节的延迟的推理乐音数据217。由于相对于用户的按键演出延迟了一个小节的推理乐音数据217被输入到循环器lsi 220但不输出到混合器213,不执行相对应的声音产生。
[0272]
在时间t1开始从小节1开始的循环记录直到recpointer的值达到后述的loopend为止,由cpu 201在图14的循环器控制处理中重复步骤s1401中的“是”判断

>步骤s1402中的“否”判断

>步骤s1410中的“否”判断的控制。由此,在时间t1在图14的步骤s1411中,图2的循环器lsi 220中的图3的循环记录单元303继续从recpointer=0(起始地址)开始的循环记录到由recarea=area1指示的图3的第一循环存储区301中。循环记录单元303顺序地循环记录从图16的(b)中的时间t1到图16的(c)所示的后述的时间t5从图2的声音合成lsi 205输出的小节1到小节4的推理乐音数据217。
[0273]
然后假设用户在图16的(a)中所示的循环演出期间,在时间t4、小节4结束时踏上踏板105。结果,在图9的步骤s902的切换处理中对应于图11的步骤s1104的图13的踏板控制处理中,在步骤s1301和步骤s1302中确定当前模式为mode=1的“步进一次”,从而cpu 201执行从步骤s1309到s1314的一系列处理以从模式1转换到模式2。
[0274]
cpu 201首先将mode变量的值设置为2,表示模式2,并且还为变量prevmode设置与前一个模式1相对应的mode的值1(步骤s1309)。
[0275]
然后,cpu 201为表示循环记录的结束的loopend变量设置通过将表示一小节的ticktime的值timedivision
×
beat与当前recpointer值相加而获得的值(步骤s1310)。在图16的例子中,recpointer值指示时间t4。然而,如图16的(b)和(c)所示,作为推理乐音数据217的输出定时和循环记录的定时,时间t4表示小节3的结束并且相对于图16的(a)中的小节4的结束延迟了一个小节。因此,为了继续循环记录到相对于当前recpointer值延迟一个小节的时间t5并完成到小节4的末尾的记录,为指示循环记录的结束的loopend变量设置了通过将表示一个小节的ticktime的值timedivision
×
beat与前recpointer值相加所获得的值。也就是说,loopend值具有四个小节的ticktime。
[0276]
随后,cpu 201将变量playstart的值设置为1,以便通过模式2使循环回放有效以用于加录(步骤s1311)。
[0277]
另外,cpu 201基于ticktime为指示循环回放的地址的playpointer变量设置起始地址0(步骤s1312)。
[0278]
此外,对于变量playarea,cpu 201设置指示循环记录目前为止已经被演出的第一循环存储区301的值area1,变量playarea指示图3所示的第一循环存储区301和第二循环存储区302中的用于循环回放的循环存储区(步骤s1313)。
[0279]
然后,cpu 201使图2的循环器lsi 220中的图3的循环回放单元304从与变量playarea所指示的值area1相对应的图3的第一循环存储区301的变量playpointer所指示的起始地址0开始循环回放操作(步骤s1314)。
[0280]
在图16的操作说明中,在时间t4,用户踏上踏板105,使得状态从模式1转变为模式2。如图16的(d)的时间t4所示,用户再次开始从小节1指定每个小节的音高序列的按键演奏,并且重叠从图2的循环器lsi 220中的到目前为止已经对其进行了循环记录的第一循环存储区301的起始地址(第一小节)开始的循环回放声音310,以及循环回放声音310被发出的循环回放声音,作为经由数模转换器211以及从混合器213到放大器214从扬声器(未示出)的循环回放推理乐音数据222,如图16的(e)中的时间t4所示。关于图16的(d)所示的时间t4后的循环演出,按键指定从键盘101经由键扫描器206和cpu 201被发送到声音模块lsi 204,从而从声音模块lsi 204输出对应的乐音输出数据218,并且相应的乐音经由混合器213、数模转换器211和放大器214从扬声器(未示出)发出。与此同步,如上所述,从循环器lsi 220输出的循环回放推理乐音数据222还通过用户在混合器213中的循环演出与乐音输出数据218混合,然后被发出。以此方式,用户可以在聆听来自循环器lsi 220的紧接在之前记录的循环回放推理乐音数据222的同时通过按下键盘101的键来执行循环演出。
[0281]
注意,如上面关于图13的步骤1310所描述的那样,为变量loopend设置对应于时间t5的值。因此,在对应于图9的步骤s905的图14的循环器控制处理中,在时间t4之后,直到通过图12的ticktime中断处理的步骤s1202每个ticktime顺序递增的recpointer的值到达时间t5时,步骤s1401中的确定变为“是”,步骤s1402中的确定变为“否”,并且步骤s1410中的确定变为“否”,使得cpu 201继续将来自声音合成lsi 205的小节4的推理乐音数据217输入循环器lsi 220,如图16的(b)所示,并且如图16的(c)所示,将小节4的推理乐音数据217循环记录(在步骤s1411开始)到第一循环存储区301(area1)中。
[0282]
此后,当在图12的ticktime中断处理的步骤s1202中每个ticktime顺序递增的recpointer的值到达时间t5时,步骤s1401中的确定变为“是”并且步骤s1402中的确定也变为“是”。另外,由于当前模式是mode=1,因此步骤s1403中的确定变为“否”。结果,cpu 201首先确定为变量recarea设置的值是否是表示图3的第一循环存储区301的area1,即该值是否为表示图3的第二循环存储区302的area2(步骤s1404)。当步骤s1404中的确定为“是”(recarea=area1)时,cpu 201将变量recarea的值改变为area2(步骤s1405)。另一方面,当步骤s1404中的确定为“否”(recarea≠area1,即recarea=area2)时,cpu 201将变量recarea的值改变为area1(步骤s1406)。在图16的操作示例中,在时间t5,recarea的值为area1,如图16的(c)中所示,并且图3的第一循环存储区301设置为循环记录的目标存储区。然而,在时间t5之后,recarea的值变为area2,如图16的(h)所示,使得图3的第二循环存储区302新成为循环记录的目标存储区。
[0283]
此后,cpu 201将recpointer的值设置为起始地址0(步骤s1407)。
[0284]
然后,cpu 201使图2的循环器lsi 220中的图3的循环记录单元303从变量recpointer所指示的起始地址0开始循环记录操作到与由变量recarea指示的值area2相对应的图3的第二循环存储区302中(步骤s1408)。在图16的操作示例中,在图16的(h)中,这对应于时间t5及其后。
[0285]
然后,在图14的步骤s1408之后执行的图15的步骤s1412中,cpu 201确定变量playstart的值是否为1。在图16中的时间t4,由于通过步骤s1311变量playstart的值被设置为1,所以步骤s1412中的确定变为“是”。
[0286]
随后,cpu 201确定变量playpointer的值是否变得等于或大于变量loopend的值
(步骤s1413)。然而,在时间t4,由于变量playpointer的值仍为0(参考图13的步骤s1312),因此步骤s1413中的确定变为“否”。结果,cpu 201结束图14和图15的流程图所示的图9的步骤s905的循环器控制处理。
[0287]
这样,在时间t4开始从小节1开始循环回放直到playpointer的值达到loopend之后,由cpu 201在图15的循环器控制处理中重复步骤s1412的“是”判定

>步骤s1413的“否”判定的循环器控制。由此,在图16的(e)的时间t4在图13的步骤s1314中,在图2的循环器lsi 220中的图3的循环回放单元304继续从由playarea=area1指示的图3的第一循环存储区301中进行从playpointer=0(起始地址)开始的循环回放。然后,循环回放单元304从稍后在图16的(e)中描述的时间t4到时间t8从小节1到小节4依次回放循环回放声音310并将循环回放声音310从扬声器发出。
[0288]
此时,根据从后述的时间t4到时间t8从扬声器发出的从小节1到小节4的循环回放声音,用户通过按下图1的键盘101的键来继续从小节1到小节4的每个小节的循环演出,如图16的(d)所示,从而从声音模块lsi 204发出与演出指定相对应的乐音输出数据218。
[0289]
结果,从小节1到小节4的每个小节的音高序列和乐器通过图12的步骤s1204以小节为基础输入到声音合成lsi 205中。结果,在图16的(f)中稍后描述的从时间t5到时间t9的循环片段中,声音合成lsi 205将添加了丰富的音乐表现力的推理乐音数据217输出到图2的循环器lsi 220,具有一个小节的延迟。
[0290]
另一方面,从图16的(e)中稍后描述的时间t4到时间t8循环回放的图3的循环回放声音310由图3的乐句延迟单元305延迟一个乐句,使得循环回放声音延迟输出311从稍后描述的时间t5到时间t9被输入到混合器307,如图16的(g)中所示。可以看出,如图16的(f)所示的从时间t5到时间t9输入到混合器307的推理乐音数据217和如图16的(g)所示从时间t5到时间t9输入到混合器307的循环回放声音延迟输出311从小节1到小节4具有相同的时序。因此,混合器307将推理乐音数据217和循环回放声音延迟输出311混合并输入到图3的循环记录单元303中。结果,循环记录单元303将混音数据从时间t5的小节1到时间t9的小节4依次加录到由recarea=area2表示的图3的第二循环存储区302中。注意,假设乐句延迟单元305的操作与timedivision
×
beat的值同步。
[0291]
这里,假设图16的(e)中所示的循环回放声音310到达小节4的结束,即对应于循环片段结束的时间t8。在这种情况下,在对应于图9的步骤s905的图14和图15的循环器控制处理中,在图15的步骤s1412中的确定变为“是”之后,因为playpointer的值已经达到loopend的值,所以步骤s1413中的确定变为“是”。另外,由于mode值=2并且prevmode值=1(参考图13的步骤s1309),所以步骤s1414中的确定变为“是”。结果,cpu 201首先确定为变量playarea设置的值是否是表示图3的第一循环存储区301的area1,即该值是否为表示图3的第二循环存储区302的area2(步骤s1415)。当步骤s1415中的确定为“是”(playarea=area1)时,cpu 201将变量playarea的值改变为area2(步骤s1416)。另一方面,当步骤s1415中的确定为“否”(playarea≠area1,即playarea=area2)时,cpu 201将变量playarea的值改变为area1(步骤s1417)。在图16的操作示例中,在时间t8,如图16的(e)所示,playarea的值为area1,并且图3的第一循环存储区301设置为循环回放的目标存储区。然而,在时间t8之后,playarea的值变为area2,从而图3的第二循环存储区302新成为循环再现的目标存储区,如图16的(j)所示。
[0292]
此后,cpu 201将变量prevmode的值设置为2(步骤s1418)。
[0293]
此外,cpu 201将变量playpointer的值设置为起始地址0(步骤s1419)。
[0294]
然后cpu 201使图2的循环器lsi 220中的图3的循环回放单元304从与变量playarea所指示的值area2相对应的图3的第二循环存储区302的变量playpointer所指示的起始地址0开始循环回放操作(步骤s1420)。在图16的操作示例中,在图16的(j)中,这对应于时间t8及其后。
[0295]
另一方面,图16的(h)所示的循环记录在与小节4的结束相对应的时间t9到达循环片段的末尾。在该情况下,与图9的步骤s905相对应的图14和图15的循环器控制处理中,在图14的步骤s1401中的确定变为“是”之后,因为recpointer的值已经达到loopend的值,所以步骤s1402中的确定变为“是”。另外,由于mode值=2,因此步骤s1403中的确定变为“否”。结果,从步骤s1404到步骤s1406,cpu 201执行交换执行了循环记录的循环存储区的处理。结果,在图16的操作示例中,在时间t9,如图16的(h)所示的recarea的值为area2,并且图3的第二循环存储区302设置为循环记录的目标存储区。然而,在时间t9之后,recarea的值变为area1,从而图3的第一循环存储区301新成为循环记录的目标存储区,如图16的(m)所示。
[0296]
此后,cpu 201将recpointer的值设置为0(步骤s1407)。
[0297]
然后cpu 201使图2的循环器lsi 220中的图3的循环记录单元303开始从变量recpointer所指示的起始地址0到与由变量recarea指示的值area1相对应的图3的第一循环存储区301中的循环记录操作(步骤s1408)。在图16的操作示例中,在图16的(m)中,这对应于时间t9及其后。
[0298]
如上所述,在mode=2中,当循环回放和与其同步的加录到达循环片段的末尾时,到目前为止已经执行循环记录的循环存储区和目前为止已经执行循环回放的循环存储区在第一循环存储区301和第二循环存储区302之间交换,从而加录继续进行。由此,用户可以生成循环片段的循环回放声音310,同时将基于用户的演出而获得的推理乐音数据217顺序地加录到循环片段的循环回放声音310。
[0299]
假设在图16的(i)和图17的(i)中的循环演出期间,例如,在mode=2中,用户在小节4结束的任何时刻踏上踏板105,例如在时间t12。结果,在图9的步骤s902的切换处理中对应于图11的步骤s1104的图13的踏板控制处理中,在步骤s1301和步骤s1302中确定当前模式是mode=2为“步进一次”,从而cpu 201执行从图13的步骤s1315到步骤s1321的一系列处理,用于从模式2到模式3的转换。
[0300]
cpu 201首先将mode变量的值设置为表示模式3的3,并且还为变量prevmode设置与前一个模式2相对应的mode的值2(步骤s1315)。
[0301]
然后,cpu 201基于ticktime为指示循环回放地址的playpointer变量设置起始地址0(步骤s1316)。
[0302]
随后,从图13的步骤s1317到步骤s1319,cpu 201执行对执行了循环回放的循环存储区进行交换的处理,类似于图15的从步骤s1415到步骤s1417的一系列处理。结果,在图16和图17的操作示例中,在时间t12,playarea的值是area2,如图17的(j)所示,并且图3的第二循环存储区302被设置为循环记录的目标存储区,但是在时间t12之后,playarea的值变为area1,从而到目前为止一直是加录目标的图3的第一循环存储区301新成为循环回放的目标存储区,如图17的(n)所示。
201为recstart变量设置值0以用于停止循环记录(步骤s1409)。此后,cpu 201转移到图15的步骤s1412。
[0311]
由此,考虑一个乐句的延迟结束循环记录,并执行循环记录(步骤s1412中的“是”确定

>步骤s1413中的“是”确定

>步骤s1414中的“否”确定

>s1419

>s1420)。结果,如图17的(p)所示,在执行循环回放直到时间t20后,循环片段结束,模式转移到模式3,其中从时间t20执行从到目前为止已经执行循环回放的第一循环存储区301开始的循环回放,如图17的(t)所示。
[0312]
假设,虽然未在图17的(n)中示出,图17的(n)中所示的循环回放声音310到达小节4的末尾,即对应于循环片段的结束的时间t16。虽然与图17的(n)的情况不同,如果用户踏上板,则在图15的步骤s1412中的确定变为“是”之后对应于图9的步骤s905的图14和图15的循环器控制处理中,因为playpointer的值已经达到loopend的值,所以步骤s1413中的确定变为“是”。另外,由于mode值=3,所以步骤s1414中的确定变为“否”。结果,cpu 201跳转到步骤s1419并将playpointer的值重置为起始地址0(步骤s1419)。
[0313]
然后cpu 201使图2的循环器lsi 220中的图3的循环回放单元304从与变量playarea所指示的值area1相对应的图3的第一循环存储区301的变量playpointer所指示的起始地址0开始重复循环回放操作(步骤s1420)。无休止地重复类似于图16的(n)中的时间t12到时间t16的从第一循环存储区301开始的循环回放。
[0314]
然后,假设用户在时间t16、小节4的结束处,例如,在图17的(n)中所示的模式3的循环回放期间踩上踏板105。结果,在图9的步骤s902的切换处理中与图11的步骤s1104对应的图13的踏板控制处理中,在步骤s1301和步骤s1302中确定当前模式是mode=3为“步进一次”,从而cpu 201执行从图13的步骤s1322到步骤s1323的一系列处理,用于从模式3到模式2的返回转换。
[0315]
cpu 201首先将mode变量的值设置为表示模式2的2,并且还为变量prevmode设置与前一个模式3对应的mode的值3(步骤s1322)。
[0316]
然后cpu 201将recstart变量的值设置为1以在模式2中开始循环记录(步骤s1323)。
[0317]
然后cpu 201确定为变量playarea设置的值是否是表示图3的第一循环存储区301的area1,即该值是否为表示图3的第二循环存储区302的area2(步骤s1324)。当步骤s1324的确定为“是”(playarea=area1)时,即在模式3中回放至今的循环回放声音310的加载源为第一循环存储区301,为了将其原样用作为循环回放声音310,也在下一个模式2中,并且为了将循环记录的循环存储区设置为第二循环存储区302,表示图3的第二循环存储区302的值area2被存储在指示用于循环记录的循环存储区的变量recarea中(步骤s1325)。另一方面,当步骤s1324中的确定为“否”(playarea≠area1)时,即到目前为止以模式3回放的循环回放声音310的加载源为第二循环存储区302,为了将其原样用作为循环回放声音310,也在下一个模式2中,并将用于循环记录的循环存储区设置为第一循环存储区301,表示图3的第一循环存储区301的值area1存储在指示用于循环记录的循环存储区的变量recarea中(步骤s1326)。
[0318]
然后,cpu 201为指示在循环记录的ticktime单位中的存储地址的变量recpointer设置

timedivision
×
beat的值并且还为变量phrasepointer设置值0(步骤
s1327)。该处理与模式1中的步骤s1306的处理相同。
[0319]
从模式3到模式2的转变处理之后图17的(o)、(p)、(q)、(r)和(s)中的时间t16及其后的操作示例类似于图116的(d)、(e)、(f)、(g)和(h)中的在时间t4以及其后的操作。
[0320]
然后,假设当用户已经演奏到小节2时,例如在图17的(o)、(p)、(q)、(r)中所示的模式2的加录期间,用户在时间t19保持住踏板105。结果,在图9的步骤s902的切换处理中与图11的步骤s1104相对应的图13的踏板控制处理中,在步骤s1301中确定为“保持(hold)”,从而cpu201执行转换到模式3的处理,其中,仅取消加录中的最后一个记录并回放前一个记录。
[0321]
即,cpu 201首先将mode变量的值设置为3(步骤s1327)。
[0322]
然后cpu 201为recstart变量设置值0(步骤s1328)。
[0323]
通过以上处理,在图14的循环器控制处理中,步骤s1401中的确定变为“否”,从而cpu 201立即(在时间t19)停止循环记录操作。另外,在等待playpointer值到达loopend之后,cpu 201离开当前执行循环回放的循环存储区,将playpointer值返回到0并从头开始重复循环回放(图15的步骤s1412中的“是”确定

>步骤s1413中的“是”确定

>步骤s1414中的“否”确定

>s1419

>s1420)。结果,在模式2的操作中,在图17的(q)、(r)和(s)所示的加录在时间t19立即被取消之后,而图17的(p)所示的循环回放被执行直到t20,循环片段的结束,相同的循环回放声音310可以从时间t20通过模式3重复回放。此后,例如,用户可以通过再次踏上踏板105切换到模式2并继续进行加录。
[0324]
最后,用户可以通过在任何时刻踏上踏板105两次来停止循环操作。结果,在图9的步骤s902的切换处理中与图11的步骤s1104相对应的图13的踏板控制处理中,在步骤s1301中确定为“踏上两次”,因此cpu 201首先将mode值重置为0(步骤s1329),并且然后将所有recstart值和playstart值重置为0(步骤s1330)。结果,在图14和图15的循环器控制处理中,步骤s1401和步骤s1412中的确定全部变为“否”,从而cpu 201停止循环控制。
[0325]
通常,很难在循环记录/回放操作的同时演奏乐器。然而,在上述实施例中,通过播放简单乐句重复录音/回放操作,可以容易地获得基于推理乐音数据217的具有丰富音乐表现力的循环记录/回放演奏。
[0326]
作为使用从声音合成lsi 205输出的推理乐音数据217的实施例,已经描述了其中推理乐音数据217用于图2所示的循环器lsi 220的循环记录/回放的实施例。作为使用从声音合成lsi 205输出的推理音乐数据217的另一个实施例,还可以设想这样的实施例,其中将乐句的推理音乐数据217的输出与自动伴奏或节奏一起自动记录以欣赏自动演出。因此,用户可以享受将单调的乐句演出转换为具有音乐表现力的演奏的自动演奏。
[0327]
此外,根据本发明的可实施的各种实施例,通过将用户的乐器声音的演出乐句转换为专业演奏者对乐器声音的演奏乐句,可以输出转换后的乐器声音,并且可以基于乐器声音的输出执行循环演出。
[0328]
根据使用参考图6和图7描述的hmm声学模型的统计声音合成处理的第一实施例,可以在没有拼接失真的情况下以乐器声音的平滑再现特定演奏者、特定风格等的乐句演出特征的精美音乐表达。另外,通过改变训练结果615(模型参数),可以适应其他演奏者并表达各种乐句演出。进一步地,由于hmm声学模型中的所有模型参数可以从训练乐谱数据集611和训练演出数据集612中自动估计,通过使用hmm声学模型学习特定演奏者的特征,可以
自动建立用于合成再现特性的声音的乐器演奏系统。由于乐器声音输出的基频和持续时间取决于乐谱中的乐句,因此可以从乐谱中简单地确定随时间的音高变化和节奏的时间结构。然而,以这种方式合成的乐器声音倾向于单调或机械,并且作为乐器声音的吸引力较小。在实际演奏中,除了基于乐谱的标准化演出外,还可以观察到演奏者或乐器的风格特征,例如,音符的音高或音符开启定时、节拍的重音及其时间结构的变化。根据使用hmm声学模型的统计声音合成处理的第一实施例,因为乐器演奏声音的频谱数据和作为声源数据的音高数据随时间的变化可以用上下文建模,可以再现更接近实际乐句演出的乐器声音。在统计声音合成处理的第一实施例中使用的hmm声学模型是表示与乐器的振动或共振特性等有关的乐器声音的声学特征序列在乐句演出期间如何随时间变化的生成模型。此外,根据统计声音合成处理的第一实施例,通过使用考虑音符和乐器声音之间的“偏差”上下文的hmm声学模型,可以实现能够准确地再现根据演奏者的演出技术以复杂的方式变化的演奏乐器声音合成。通过将使用这种hmm声学模型的统计声音合成处理的第一实施例与例如键盘100上的实时乐句演出相结合,可以再现建模演奏者的乐句演出技术(这是到目前为止不可能的),以实现乐句演出,就好像演奏者实际在电子键盘乐器100上的键盘演奏中演奏一样。
[0329]
在使用参考图6和图8描述的dnn声学模型的统计声音合成处理的第二实施例中,作为乐器声音特征序列和声学特征序列之间关系的表达,dnn代替了统计声音合成处理的第一实施例中取决于基于决策树的上下文的hmm声学模型。这样,可以通过使用决策树来表达的复杂的非线性变换函数来表达乐器声音特征序列和声学特征量序列之间的关系。另外,由于训练数据在依赖于基于决策树的上下文的hmm声学模型中根据决策树进行分类,因此要分配给取决于每个上下文的hmm声学模型的训练数据是有限的。相比之下,在dnn声学模型中,单个dnn从整个训练数据中学习,从而有效地利用了训练数据。因此,与hmm声学模型相比,dnn声学模型可以更准确地预测声学特征序列,从而显著提高要合成的乐器声音的自然度。此外,根据dnn声学模型,可以使用与帧相关的乐器声音特征序列。具体地,由于声学特征序列和乐器声音特征序列在时间上的对应关系在dnn声学模型中是预先确定的,因此可以使用与帧相关的乐器声音特征,例如“与当前音符的持续时间对应的帧数”、“当前帧在音符中的位置”等,这些在hmm声学模型中是难以考虑的。这样,通过使用与帧相关的乐器特征,可以实现更精确的特征建模,以提高要合成的乐器声音的自然度。通过将使用这种dnn声学模型的统计声音合成处理的第二实施例与例如键盘100上的实时演奏相结合,可以以更自然的方式将基于键盘演出等的乐器声音的演出近似于建模演奏者的演出技术。
[0330]
尽管本发明已经应用于上述实施例中的电子键盘乐器,但是它可以应用于诸如电子弦乐器和电子管乐器的其他电子乐器。
[0331]
此外,循环器装置本身可以是电子乐器的实施例。在这种情况下,通过对规定乐句的音高和指定乐器的实施例的循环器装置的用户简单操作,可以实现如同专业演奏者演奏它一样的循环记录/回放演奏。
[0332]
图6的声音模型单元608中的声音合成不限于倒谱声音合成。可以采用另一种声音合成,例如lsp声音合成。
[0333]
尽管已经作为上述实施例描述了使用hmm声学模型的第一实施例和使用dnn声学模型的第二实施例的统计声音合成处理,但是本发明不限于此。可以采用任何种类的统计
声音合成处理,例如组合hmm和dnn的声学模型。
[0334]
尽管在上述实施例中实时给出了由音高序列和乐器组成的乐句,但也可以将其作为自动演出数据的一部分给出。
[0335]
本技术基于2019年5月23日提交的日本专利申请第2019

096779号,其内容通过引用并入本文。
[0336]
附图标记列表
[0337]
100:电子键盘乐器
[0338]
101:键盘(演奏操作器)
[0339]
102:第一开关面板
[0340]
103:第二开关面板
[0341]
104:lcd
[0342]
105:踏板(踏板操作器)
[0343]
200:控制系统
[0344]
201:cpu
[0345]
202:rom
[0346]
203:ram
[0347]
204:声源lsi
[0348]
205:声音合成lsi
[0349]
206:键扫描器
[0350]
208:lcd控制器
[0351]
209:系统总线
[0352]
210:定时器
[0353]
211:数模转换器
[0354]
213、307:混合器
[0355]
214:放大器
[0356]
215:音高数据
[0357]
216:声音制作控制数据
[0358]
217:乐器声音输出数据(推理乐音数据)
[0359]
218:乐音输出数据
[0360]
219:网络接口
[0361]
220:循环器lsi
[0362]
221:节拍数据
[0363]
222:循环再现乐器声音输出数据
[0364]
301、area1:第一循环存储区
[0365]
302、area2:第二循环存储区
[0366]
303:循环记录单元
[0367]
304:循环回放单元
[0368]
305:乐句延迟单元
[0369]
306:节拍提取单元
[0370]
310:循环回放声音
[0371]
311:循环回放声音延迟输出
[0372]
600:服务器
[0373]
601:声音训练单元
[0374]
602:声音合成单元
[0375]
604:训练声学特征提取单元
[0376]
605:模型训练单元
[0377]
606:经训练的声学模型单元
[0378]
608:声音模型单元
[0379]
609:振荡发生单元
[0380]
610:合成滤波器单元
[0381]
611:训练乐谱数据集
[0382]
612:训练乐器声音数据集
[0383]
614:训练声学特征序列
[0384]
615:训练结果
[0385]
617:声学特征序列
[0386]
618:频谱数据
[0387]
619:声源数据