首页> 中国专利> 用乐器为演唱者伴奏的自动演奏器和自动演奏器乐器

用乐器为演唱者伴奏的自动演奏器和自动演奏器乐器

摘要

一种自动演奏器钢琴,包括:语音识别器(10)和钢琴控制器(50);当用户演唱歌曲时,语音识别器(10)分析代表歌唱音调的语音信号,以便确定每个歌唱音调的响度和音高,并且将各自表示音符开事件、最接近于歌唱音调的音高的键编号(Kn)和速度(vel)的乐曲数据代码(J(v))、以及各自表示音符关和键编号(Kn)的乐曲数据代码(J(v))与从存储在存储器中的一组乐曲数据代码复制的乐曲数据代码一起提供给钢琴控制器(50);并且钢琴控制器(50)利用基于所述乐曲数据代码(J(v))产生的驱动信号(uk(t))有选择地驱动黑键和白键(31a/31b),以便演奏该歌曲的伴奏。

著录项

  • 公开/公告号CN1828719A

    专利类型发明专利

  • 公开/公告日2006-09-06

    原文格式PDF

  • 申请/专利权人 雅马哈株式会社;

    申请/专利号CN200610007126.7

  • 发明设计人 大场保彦;古川令;

    申请日2006-02-09

  • 分类号G10F3/00(20060101);G10F1/02(20060101);G10K15/04(20060101);G10H1/38(20060101);

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人邸万奎;黄小临

  • 地址 日本静冈县

  • 入库时间 2023-12-17 17:42:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-03-06

    未缴年费专利权终止 IPC(主分类):G10F3/00 授权公告日:20101013 终止日期:20170209 申请日:20060209

    专利权的终止

  • 2010-10-13

    授权

    授权

  • 2006-10-25

    实质审查的生效

    实质审查的生效

  • 2006-09-06

    公开

    公开

说明书

技术领域

本发明涉及一种自动演奏器和自动演奏器乐器,用于在没有人类演奏者的任何手指弹奏的情况下顺着乐曲的节(passage)产生音调。

背景技术

“卡拉OK(karaoke)”受到乐迷们的喜爱。卡拉OK用顺着乐曲的节产生乐器音调的电气或电子音调生成器来为演唱者伴奏,并在显示板上产生文字。换句话说,演唱者在卡拉OK的伴奏下演唱歌曲。所述乐器音调不依赖于人类的语音(voice),并且演唱者需要控制他或她的发音。

现有技术卡拉OK识别演唱者的语音音调,并且电子地产生用于和声(harmony)的语音音调。在日本专利申请公开第Hei 8-234771中公开了现有技术卡拉OK的典型示例。在该日本专利申请公开中公开的现有技术卡拉OK通过麦克风拾取人类的语音,并分析从在麦克风中产生的模拟信号转换的数字信号,以便确定所述音调的音高。现有技术卡拉OK将该音调的音高从检测值转换为用于和声的某些值,并产生代表电子语音音调的数字信号。将代表电子语音音调的数字信号与代表人类语音音调的数字信号相混合,并从中输出数字混合信号。然而,电子的人类语音不能使对音乐具有敏锐听力的乐迷满意。

自动演奏器钢琴可用于伴奏。自动演奏器钢琴是原声钢琴和自动演奏器的组合。自动演奏器分析以乐曲数据代码存储的乐曲数据,并在没有人类演奏者的任何手指弹奏的情况下有选择地引起原声钢琴中的键运动。原声钢琴音调使乐迷满意。然而,演唱者必须为伴奏准备表示乐曲节的一个声部(part)的一组乐曲数据代码。在市场上不销售这组乐曲数据代码的情况下,演唱者必须通过具有内置记录系统的自动演奏器钢琴来顺着乐器节的这一声部记录他或她的演奏。此外,通过自动演奏器钢琴进行的重放独立于演唱者的主旋律歌曲。即使演唱者为了他或她的艺术表现而希望改变节拍,自动演奏器钢琴也将伴奏保持为原始节拍。因此,在现有技术卡拉OK的伴奏和自动演奏器钢琴的伴奏之间存在折衷选择。

发明内容

因此,本发明的一个重要目的是提供一种自动演奏器,其与演唱者协调一致地在原声乐器上演奏乐曲节的一个声部。

本发明的另一重要目的是提供一种其中合并了自动演奏器的自动演奏器乐器。

为了达到所述目的,本发明提出利用表示内部声音的音高的乐曲数据来驱动原声乐器,所述内部声音的音高与通过声音识别确定的外部声音的期望音高有关。

根据本发明的一个方面,提供一种用于在原声乐器上演奏乐曲的一个声部的自动演奏器,包括:声音识别器,至少分析在所述原声乐器的外部产生的外部声音的音高,基于外部声音的音高确定期望音高,并产生至少表示与外部声音的期望音高有关的内部声音的音高的乐曲数据;多个致动器,与所述原声乐器的操纵器相关联,并且响应驱动信号,以独立地驱动相关联的操纵器,用于在没有人类演奏者的任何动作的情况下以给定音高产生内部声音;以及控制器,连接于声音识别器和所述多个致动器,并将所述驱动信号提供给与要被驱动的操纵器相关联的致动器,用于以由所述乐曲数据表示的音高产生内部声音。

根据本发明的另一方面,提供一种用于演奏乐曲的至少一个声部的自动演奏器乐器,包括:原声乐器,其包含被驱动用于指定内部声音的音高的操纵器,和连接于操纵器、并以通过操纵器指定的音高产生内部声音的音调生成器;以及自动演奏器,其被与所述原声乐器相关联地提供,并且包含:声音识别器,至少分析在所述原声乐器的外部产生的外部声音的音高,基于外部声音的音高确定至少期望音高,并产生至少表示与期望音高有关的内部声音的音高的乐曲数据,用于演奏所述乐曲的所述声部;多个致动器,与所述操纵器相关联,并且响应驱动信号,以便独立地移动相关联的操纵器,从而使音调生成器在没有人类演奏者的任何动作的情况下产生内部声音;以及控制器,连接于声音识别器和所述多个致动器,并将所述驱动信号提供给与要被驱动的操纵器相关联的致动器,用于以由所述乐曲数据表示的音高产生内部声音。

附图说明

根据结合附图进行的以下描述,将更清楚地理解自动演奏器和自动演奏器乐器的特征及优点,其中

图1是示出根据本发明的自动演奏器钢琴的结构的侧视图,

图2是示出合并在自动演奏器钢琴中的自动演奏器的系统配置的方框图,

图3是示出要在自动演奏器中处理的乐曲数据代码的格式的视图,

图4A和4B是示出在语音识别器上运行的计算机程序的流程图,

图5A和5B是示出在钢琴控制器上运行的计算机程序的流程图,

图6是示出根据本发明的另一自动演奏器钢琴的结构的侧视图,

图7A和7B是示出在根据本发明合并于另一自动演奏器钢琴中的语音识别器上运行的计算机程序的流程图,以及

图8A和8B是示出根据本发明在另一自动演奏器钢琴中采用的用于语音识别的计算机程序的流程图。

具体实施方式

实施本发明的自动演奏器乐器主要包括原声乐器和自动演奏器。自动演奏器在原声乐器上演奏乐曲,而没有人类演奏者的任何手指弹奏。当用户指示自动演奏器用原声乐器为他或她的歌曲伴奏时,自动演奏器分析由音频信号代表的外部声音中的歌唱(vocal)音调的音高,并提供表示包含在内部声音中的音调音高的乐曲数据以演奏伴奏。

原声乐器包括操纵器和连接到该操纵器的音调生成器。人类演奏者或自动演奏器有选择地驱动操纵器,使得音调生成器以由演奏者通过操纵器指定的音高产生音调。

自动演奏器包括声音识别器、多个致动器和控制器。控制器连接到声音识别器和多个致动器,并且所述多个致动器与操纵器相互关联,以便有选择地驱动操纵器以指定要产生的音调的音高。

当演唱者开始演唱歌曲时,歌唱音调被连续地转换为音频信号,并且该音频信号被提供给声音识别器。声音识别器通过对音频信号的分析来确定每个音调的音高和响度,并且由于演唱者有时无意地以略微不同于乐谱上的音符音高的音高发出音调,而假定演唱者期望的音调的音高。

随后,声音识别器确定要产生用于伴奏的音调的音高。要产生的音调的音高可以和歌唱音调的期望音高相同。在演唱者指示自动演奏器产生一系列和弦以进行伴奏的情况下,声音识别器确定形成每个和弦的音调的音高。声音识别器产生表示要产生用于伴奏的音调的乐曲数据,并将该乐曲数据提供给控制器。

控制器指定要驱动用于产生音调的操纵器,并将驱动信号提供给与要驱动的操纵器相关联的致动器。致动器被驱动信号激励,并引起相关联的操纵器的运动。作为结果,音调生成器以进行伴奏的音高产生音调。

如将理解的那样,根据本发明的自动演奏器用原声乐器为演唱者伴奏,使得演唱者可以练习歌曲,仿佛他或她站在音乐厅里的舞台上一样。

在以下描述中,术语“前面”表示比用术语“后面”修饰的位置更靠近演奏者的位置,所述演奏者正坐着用手指弹奏。在前面位置和对应的后面位置之间画的线沿“纵向”延伸,并且“横向”以直角与纵向相交。“上下”方向垂直于由纵向和横向定义的平面。在没有任何外力的情况下,组成部件停留在各自的“静止位置”,并且在运动的终点到达各自的“终点位置”。

                        第一实施例

参考附图的图1,实施本发明的自动演奏器钢琴主要包括自动演奏器1、原声钢琴30和静音系统35。尽管还将记录系统合并在自动演奏器钢琴中,但是该记录系统对于本领域技术人员来说是众所周知的,并且为简单起见而在上文中没有合并进一步的描述。

自动演奏器1安装在原声钢琴30中,并且在没有人类演奏者的任何手指弹奏的情况下在原声钢琴30上演奏乐曲。自动演奏器1响应存储在一组乐曲数据代码中的乐曲数据,以便与现有技术的自动演奏器相似地在原声钢琴30上重演原始演奏。在此实例中,以MIDI(乐器数字接口)协议定义乐曲数据代码的格式。

根据本发明的自动演奏器1识别顺着乐曲的节发音的人类语音,并确定要产生用于伴奏的音调。由自动演奏器1识别的人类语音的属性至少是音高和响度,使得自动演奏器可以确定要通过原声钢琴产生的音调的音符编号和速度。自动演奏器1产生表示要产生的音调的MIDI乐曲数据代码,并驱动原声钢琴30产生用于伴奏的音调。这样,自动演奏器1通过以实时方式对人类语音进行数据处理而及时地产生用于伴奏的音调。

静音系统35包括弦槌阻挡器(stopper)35a和电动机61,并且通过电动机61在自由位置和阻挡位置之间改变弦槌阻挡器35a。当弦槌阻挡器35a停留在自由位置时,弦槌阻挡器35a不是弦槌运动的障碍物,使得原声钢琴30照常产生原声音调。当弦槌阻挡器35a被改变到阻挡位置时,弦槌阻挡器35a被移动到弦槌轨迹上,以便在撞击之前中断弦槌运动。这样,在阻挡位置处,在原声钢琴30中不产生任何原声音调。

原声钢琴

原声钢琴30包括具有黑键31a和白键31b的键盘31、弦槌32、动作单元33、弦34、制音器36、钢琴箱体37和踏瓣系统PD。黑键31a和白键31b沿横向布置,并以众所周知的模式放置。在此实例中,88个键31a/31b形成该众所周知的图案。键盘31安装在钢琴箱体37的前部,并被暴露给人类演奏者。动作单元33、弦槌32、弦34和制音器37装在钢琴箱体37中,并通过利用盖板(未示出)打开和关闭的钢琴箱体的上部开口而被暴露到环境中。

在黑键和白键31a/31b后部的上方提供动作单元33,并且其分别与相关联的黑键和白键31a/31b相链接。出于此原因,利用彼此独立的相关联的黑键和白键31a/31b来驱动动作单元33。弦槌32被保持与形成动作单元33的一部分的顶杆33a相接触,并由动作单元33上方空间中的被驱动的动作单元33驱动以进行旋转。

弦34在弦槌32的上方拉紧,并且弦槌32在旋转的终点与相关联的弦34碰撞。然后,弦34振动,并且通过振动的弦34产生原声钢琴音调。然而,当弦槌阻挡器35a停留在阻挡位置时,弦槌32在撞击弦34之前在弦槌阻挡器35a上回弹。这样,弦槌阻挡器35a防止弦34与弦槌32撞击,并且不允许弦34产生原声钢琴音调。

制音器36在其下端与黑键和白键31a/31b的后部相链接。当黑键和白键31a/31b停留在静止位置时,制音器36被保持与弦34相接触,并且禁止弦34与其它振动的弦34谐振。当演奏者开始按下黑键和白键31a/31b时,被按下的键31a/31b的前部开始向下的运动。黑键和白键31a/31b的后部引起制音器36的向上运动,并且使制音器36与弦34隔开。这样,在相关联的黑键和白键31a/31b的键轨迹上的中间点处,制音器36允许弦34振动。

踏瓣系统PD包括延音踏瓣Pd、弱音踏瓣Ps、选择踏瓣(未示出)和用于这些踏瓣Ps/Ps的链接构件Lw。如本领域技术人员所公知的那样,延音踏瓣Pd通过保持制音器36被隔开来使原声钢琴音调被延长,并且弱音踏瓣Ps通过减少与弦槌32撞击的弦的数目来使钢琴音调的音量较小。

当人类演奏者在键盘31上用手指弹奏一首乐曲时,被按下的键31a/31b使相关联的动作单元33被驱动,并且被驱动的动作单元33使相关联的弦槌32被驱动以进行旋转,使得弦槌32在旋转的终点撞击弦34。振动的弦34顺着这首乐曲产生原声钢琴音调。这样,原声钢琴30表现得像本领域技术人员公知的原声钢琴一样。

自动演奏器

自动演奏器1包括语音识别器10、麦克风21、声音系统22、钢琴控制器50、具有内置活塞传感器59a的电磁控制的(solenoid-operated)键致动器59、具有内置活塞传感器60a的电磁控制的踏瓣致动器60。钢琴控制器50具有用于伴奏以及自动演奏的数据处理能力,并且语音识别器11具有用于对歌唱进行语音识别的数据处理能力。

钢琴控制器50连接到电磁控制的键致动器59、内置活塞传感器59a、电磁控制的踏瓣致动器60和内置活塞传感器60a。钢琴控制器50与电磁控制的键致动器59和用于黑键和白键31a/31b的内置活塞传感器59a一起形成伺服控制环,并且与电磁控制的踏瓣致动器60和内置活塞传感器60a一起形成另一个伺服控制环。

语音识别器10连接到麦克风21、声音系统22和钢琴控制器50。麦克风21将表示歌曲的人类语音转换为语音信号,并且,通过放大器(未示出)将该语音信号提供给语音识别器10。语音识别器10分析该语音,并确定要产生用于伴奏的歌唱音调。语音识别器10将表示该歌唱音调的乐曲数据存储在乐曲数据代码中,并将该乐曲数据代码与从表示这首乐曲的这组乐曲数据代码中复制的乐曲数据代码一起提供给钢琴控制器50。语音识别器10将语音信号提供给声音系统22。作为结果,与伴奏同步地从声音系统22放出歌曲。

电磁控制的键致动器59悬挂于中盘(key bed)37a,并且具有各自的活塞59b,所述活塞59b的顶端位于处于静止位置的相关联的黑键和白键31a/31b的后部的下表面附近。当钢琴控制器50利用驱动信号uk(t)激励电磁控制的键致动器59时,活塞59b开始向上伸出,以便推动黑键和白键31a/31b的后部。当从电磁控制的键致动器59移除驱动信号uk(t)时,动作单元33的自重使黑键和白键31a/31b返回静止位置。这样,利用电磁控制的键致动器59而不是人类演奏者来弹奏黑键和白键31a/31b。内置活塞传感器59a监控活塞59b,并产生代表等于当前键位置的当前活塞位置的活塞位置信号xk。

在三个踏瓣Pd/Ps和链接构件Lw之间提供电磁控制的踏瓣致动器60,并且其具有各自的活塞60b,所述活塞60b的顶端处于这三个踏瓣Pd/Ps的上表面附近。当钢琴控制器50利用驱动信号up(t)激励这三个踏瓣Pd/Ps时,活塞60b开始向下伸出,并向下推动踏瓣Pd/Ps。由于与活塞60b相关联地提供了复位弹簧(未示出),因此活塞60b在没有驱动信号up(t)时返回其静止位置。内置活塞传感器60a监控相关联的踏瓣Pd/Ps,并且产生代表等于距静止位置的踏瓣行程的当前活塞位置的活塞位置信号xp。这样,利用电磁控制的踏瓣致动器60而不是人类演奏者来压下这三个踏瓣Pd/Ps。

转到附图的图2,语音识别器10包括被简写为“CPU”的中央处理单元11、计时器12、被简写为“ROM”的只读存储器13、被简写为“RAM”的随机存取存储器14、操纵板15、具有用于麦克风21的模拟-数字转换器16的信号接口、通信接口17、存储单元18、音调生成器19、数字-模拟转换器23和共享总线系统20。这些系统组件11、12、13、14、15、16、17、18、19和23连接到共享总线系统20,使得中央处理单元11能够通过共享总线系统20与其它系统组件11至19和23通信。音调生成器19连接到声音系统22,并且,通过声音系统22将音频信号转换为电子音调。

中央处理单元11是语音识别器10的数据处理能力的源,并且顺次执行指令代码以便完成给定任务。所述指令代码形成在中央处理单元11上运行的计算机程序,并被存储在只读存储器13中。在用于语音识别的数据处理期间读出的其它参数也被存储在只读存储器13中。

计算机程序被分解为主例程和子例程。当用户激励语音识别器10时,中央处理单元11顺次开始执行主例程的指令代码,并首先将语音识别器10初始化。当中央处理单元11重复主例程时,用户可与中央处理单元11通信,并向中央处理单元11给出用户的指令。所述子例程之一被分配给语音识别,而另一个子例程被分配给从模拟-数字转换器16的数据取出。主例程通过计时器中断有选择地周期性分支到这些子例程。这样,中央处理单元11获得语音数据、分析该语音数据、产生乐曲数据并将该乐曲数据传送给钢琴控制器50。

随机存取存储器14向中央处理单元11提供充当临时数据存储区(storage)、标志和寄存器的大量可寻址存储位置。语音数据、所分析的数据和表示要产生用于伴奏的电子音调的乐曲数据被存储在这些临时数据存储区中。若干标志被分配给用户的指令。

计时器12测量从开始语音识别起的时间经过以及用于计数器中断的时间间隔。当子例程在中央处理单元11上运行以进行语音识别时,计时器中断周期性地发生,并且中央处理单元11从模拟-数字转换器16中提取(fetch)语音数据。该语音数据被存储在随机存取存储器14中的临时数据存储区内。

各种开关、键、指示器和显示窗布置在用于用户和中央处理单元之间的通信的操纵板15上。用户通过这些开关和键向中央处理单元11给出他们的指令。用户还通过操纵板15向钢琴控制器50给出他们的指令,并且中央处理单元11通过通信接口17将用户的指令传送给钢琴控制器50。中央处理单元11通过指示器和显示窗向用户报告当前状态,并且通过显示窗将提示消息传达给用户。

模拟-数字转换器16周期性地采样关于语音信号的离散值,并将该离散值转换为语音数据代码。如在上文中结合随机存取存储器14所述,语音数据代码被存储在临时数据存储区中,并随后由中央处理单元11进行分析。

语音识别器10通过通信接口16连接到钢琴控制器50,并且,将表示要产生用于伴奏的电音调的乐曲数据J、以及表示用户的指令和要在钢琴控制器50内部完成的任务的控制数据CTL从中央处理单元11通过通信接口17传送给钢琴控制器50。所述控制数据之一表示对伴奏的请求,并被存储在控制数据代码中。

当用户演唱歌曲时,中央处理单元11通过对语音信号的分析来产生乐曲数据J,并将乐曲数据J与从存储在随机存取存储器中的乐曲数据代码复制的乐曲数据J一起提供给通信接口16。

存储单元18以非易失的方式具有大量数据保存能力。在此实例中,利用硬盘驱动器单元来实现存储单元18。然而,可以将诸如例如闪速存储器的另一种类的非易失性存储器用于语音识别器10。表示多首乐曲的多组乐曲数据代码被存储在存储单元18中。以MIDI协议定义乐曲数据代码的格式,并且要产生的音调和要衰减的音调被表示为音符开(note-on)事件和音符关(note-off)事件。术语“事件”代表音符开事件和音符关事件二者。

可以将计算机程序存储在存储单元18而不是只读存储器13中,使得在系统的初始化期间将计算机程序从存储单元18传送到随机存取存储器14。多组乐曲数据代码被存储在存储单元18中。当用户指示中央处理单元11重演一首乐曲时,中央处理单元11通过通信接口17将表示这首乐曲的一组乐曲数据传送给钢琴控制器50。另一方面,当用户指示中央处理单元11用原声钢琴30来为他或她的歌曲伴奏时,中央处理单元通过对语音信号的分析来产生表示要由用户演唱的旋律上的音调的乐曲数据J,并且从一组乐曲数据中复制表示其它声部上的音调的乐曲数据J。这样,所述多组乐曲数据代码充当乐曲数据J以及语音信号的源。当然,用户可以请求中央处理单元11仅仅将用于所述旋律上的音调的乐曲数据J传送到通信接口17。

音调生成器19响应乐曲数据代码,以便从波形数据电子地产生音频信号,并且将该音频信号从音调生成器19提供给声音系统22。中央处理单元11将语音数据代码传送给数字-模拟转换器23,并且通过数字-模拟转换器23将该语音数据代码转换为模拟信号。还将该模拟信号从数字-模拟转换器23提供给声音系统22,并且顺着歌曲的旋律从声音系统22发出电音调。

钢琴控制器50包括通信接口51、信号接口51a、也被简写为“CPU”的中央处理单元52、计时器53、也被简写为“ROM”的只读存储器54、也被简写为“RAM”的随机存取存储器55、被简写为“PWM”的脉冲宽度调制器56/57、电动机驱动器58和共享总线系统64。这些系统组件51、51a、52、53、54、55、56、57和58连接到共享总线系统64,使得中央处理单元52可以通过共享总线系统64与其它系统组件51、51a和53至58通信。

中央处理单元52是钢琴控制器50的数据处理能力的源,并且计算机程序和参数被存储在只读存储器54中。中央处理单元52从只读存储器54中顺次取出计算机程序的指令代码,并完成由该指令代码表示的任务。在随机存取存储器55中定义临时数据存储区、标志和寄存器。

计时器53测量从开始自动演奏起的时间经过,以及用于计时器中断的时间间隔。通信接口51连接到通信接口17,并从语音识别器10接收乐曲数据代码和控制数据代码。信号接口51a包括模拟-数字转换器,其被有选择地连接到内置活塞传感器59a和60a。信号接口51a周期性地采样关于键位置信号xk的离散值和关于踏瓣位置信号xp的离散值,并且,将所述离散值存储在键位置数据代码和踏瓣位置数据代码中。中央处理单元52周期性地取出乐曲数据代码、控制数据代码、键位置数据代码和踏瓣位置数据代码,并且,将其存储在随机存取存储器55中。

脉冲宽度调制器56和57响应从中央处理单元52通过共享总线系统64提供的控制数据代码,以便将驱动信号uk(t)和up(t)调整为占空比的目标值,并将驱动信号uk(t)和up(t)提供给电磁控制的键致动器59和电磁控制的踏瓣致动器60。这样,钢琴控制器50利用驱动信号uk(t)up(t)有选择地激励电磁控制的键致动器59和电磁控制的踏瓣致动器60,以便在没有人类演奏者的任何手指弹奏和脚踏(footwork)的情况下引起键运动和踏瓣运动。

电动机驱动器58连接到电动机61,并且响应从中央处理单元52通过共享总线系统64提供的控制数据代码,以便双向地旋转弦槌阻挡器35a。这样,钢琴控制器50在自由位置和阻挡位置之间改变弦槌阻挡器35a。

主例程和子例程形成在中央处理单元52上运行的计算机程序。所述子例程之一被分配给用于重演原始演奏的自动演奏,并且另一子例程被分配给用于实时伴奏的自动演奏。再一子例程被分配给从通信接口51和信号接口51a的数据取出,并且乐曲数据代码、控制数据代码和活塞位置数据代码被存储在随机存取存储器55中的临时数据存储区内。主例程通过计时器中断周期性地分支到子例程。

当主例程开始在中央处理单元52上运行时,中央处理单元52首先将钢琴控制器50初始化。主例程周期性地分支到用于数据取出(data fetch)的子例程。当中央处理单元52进入用于数据取出的子例程时,中央处理单元52检查通信接口51和信号接口51a,以查看控制数据、乐曲数据和位置数据中的任何一个是否到达通信接口51。如果任何控制数据都没有到达通信接口51,则中央处理单元52返回主例程。当中央处理单元52发现控制数据时,中央处理单元52解释该控制数据,并有选择地增大或减小所述标志。另一方面,中央处理单元52将乐曲数据和位置数据传送到随机存取存储器55,并将它们写入分配给它们的临时数据存储区。

当中央处理单元52进入用于自动演奏的子例程时,中央处理单元52检查随机存取存储器55中的标志,以查看用户是否已经请求重演演奏。如果发现所述标志被减小,则中央处理单元52返回主例程。当答案给出为肯定时,中央处理单元52请求中央处理单元11将表示要重演的乐曲的一组乐曲数据代码从存储单元18通过通信接口17传送到通信接口51。通过用于数据取出的子例程将该乐曲数据代码从通信接口51传送到随机存取存储器55。当这组乐曲数据代码被积存在随机存取存储器55中时,中央处理单元52顺次读出该乐曲数据代码,以便有选择地驱动电磁控制的键致动器59和电磁控制的踏瓣致动器60。这样,黑键和白键31a/31b以及踏瓣Pd/Ps被有选择地按下和释放,使得钢琴控制器50在原声钢琴30上重演这首乐曲。

当中央处理单元52进入用于伴奏的子例程时,中央处理单元52首先检查随机存取存储器55中的标志,以查看用户是否已经请求了伴奏。如果答案给出为否定,则中央处理单元52返回主例程。当中央处理单元52发现标志已经被增大时,中央处理单元52访问临时数据存储区,并读出表示要产生用于伴奏的原声钢琴音调的乐曲数据代码。中央处理单元分析存储在所读出的乐曲数据代码中的乐曲数据,并有选择地驱动电磁控制的键致动器59和电磁控制的踏瓣致动器60以进行伴奏。

返回附图的图1,示出了语音识别器10的功能和钢琴控制器50的功能。这些功能是通过执行上文所述的计算机程序来实现的。在下文中,将由于所述歌曲而要发生的事件称为“歌唱事件J(v)”,并且将从乐曲数据代码复制的事件称为“顺序(sequential)事件J(s)”。

语音识别器10实现被称为“音量分析”、“音高分析”、“音名(pitch name)分析”、“数据准备”和“顺序事件搜索”的功能23、24、25、26和27。语音识别器10通过功能23分析音量信号的音量或响度,并确定演唱者的语音响度。语音识别器10还通过功能24分析音量信号的语音的音高,并确定该语音的音高。当确定了音高时,语音识别器10通过功能25确定在平均律中什么音名N最接近该语音的音高,并随后通过功能26来准备表示被分配了音名N的音调的乐曲数据。将该乐曲数据存储在表示歌唱事件J(v)的乐曲数据代码中,并且将该乐曲数据从语音识别器10提供给钢琴控制器50。语音识别器10还通过功能27准备用于一个或多个顺序事件J(s)的一个或多个乐曲数据代码(如果有的话),并将所述一个或多个乐曲数据代码提供给钢琴控制器50。

方框62和63代表钢琴控制器50的功能,钢琴控制器50确定黑/白键31a/31b的基准轨迹、即一系列目标键位置值,并通过功能62改变平均电流量,以便强迫黑/白键31a/31b在基准轨迹上行进。如果乐曲数据代码表示歌唱事件J(v),则钢琴控制器50在没有任何延迟的情况下将驱动信号uk(t)/up(t)调整为所述平均电流量。由于这一原因,电磁控制的键致动器59或电磁控制的踏瓣致动器60在乐曲数据代码到达之后立即开始移动黑/白键31a/31b或踏瓣Pd/Ps。

另一方面,如果乐曲数据代码表示顺序事件J(s),则钢琴控制器50通过功能63将延迟时间引入驱动信号uk(t)或up(t)到平均电流量的调整中。这是由于活塞59a上的负载不同的事实。活塞59a上的大部分负载归因于随着分配给黑/白键31a/31b的音名一起变化的动作单元33和弦槌32的自重。出于此原因,基于音名和速度来确定延迟时间。在只读存储器54中准备延迟表,并且中央处理单元52访问用于顺序事件j(s)的延迟表。所述平均电流量等效于驱动信号的占空比,并且通过脉冲宽度调制器56/57来进行所述调整。这样,钢琴控制器50通过电磁控制的键致动器59或电磁控制的踏瓣致动器60引起键运动或踏瓣运动,好像人类演奏者用原声钢琴30为歌曲伴奏一样。由于人类演唱者一次只产生一个音调,因此将连续发生歌唱事件J(v)。当然,多于一个顺序事件J(s)同时发生是有可能的。

当自动演奏器1用原声钢琴30为歌曲伴奏时,顺序事件J(s)被延迟。然而,歌唱事件J(v)不会被延迟,以便使钢琴音调与歌曲良好地同步。

图3示出了用于事件、即歌唱事件和顺序事件二者的乐曲数据代码的格式。用于事件的乐曲数据代码包括数据字段FL1、FL2、FL3和FL4,所述数据字段被分别分配给类别数据、事件种类即音符开或音符关、音符编号Kn和速度vel。类别数据表示歌唱事件J(v)或顺序事件J(s),并且音符开和音符关分别代表音调的生成和音调的衰减。音符编号Kn表示将以其产生音调的音名,并且等于音名N。用于音符开事件J(v)的速度vel与语音的响度成比例,并且用于音符关事件J(v)的速度vel被调整为缺省值。另一方面,从乐曲数据代码中复制事件种类、音符编号Kn和用于顺序事件J(s)的速度vel。

在下文中,参考图4A、4B、5A和5B对所述计算机程序进行描述。

图4A和4B示出了用于语音识别的子例程。中央处理单元11周期性地进入用于语音识别的子例程,顺序执行工作,并返回主例程。换句话说,在每个计时器中断处,中央处理单元11重复进入子例程,执行工作和返回主例程。

假设用户指示自动演奏器1用原声钢琴30为他或她的歌曲伴奏。该伴奏将由用户所演唱的声部的音调以及通过从一组乐曲数据代码中选择的乐曲数据代码表示的另一声部的音调构成。

当确认了用户的指令时,中央处理单元11将“-1”写入在随机存取存储器14中创建的音符寄存器。值“-1”表示无声状态,即用户尚未开始演唱歌曲、以及音调之间的过渡(transit)状态。中央处理单元11开始测量时间的经过,并确定主例程将分支到子例程的定时。尽管中央处理单元11在预定时间周期的执行之后返回主例程,但是在下文中将子例程中的任务描述为好像中央处理单元11连续地重复子例程一样。

当中央处理单元11进入子例程时,中央处理单元11首先从队列的前部读出语音数据代码,并且确定由该语音数据代码表示的语音的响度,如步骤S401,其中语音数据代码通过用于数据取出的子例程周期性地进入该队列。

随后,中央处理单元11将响度值与阈值相比较,以查看该语音是否超过了预定的响度,如步骤S402。如果用户尚未开始演唱歌曲,则乐曲数据代码仅表示噪声,其响度低于阈值,并且答案给出为否定“否”。然后,中央处理单元11进行到步骤S411,并检查音符寄存器以查看音名V是否由“-1”表示。在用户开始演唱歌曲之前,步骤S411处的答案给出为肯定“是”。

对于步骤S411处的肯定答案,中央处理单元11进行到步骤S410,并在这组乐曲数据代码中搜索当前要处理的乐曲数据代码。如果中央处理单元11没有发现任何当前要处理的乐曲数据代码,则中央处理单元11返回步骤S401。另一方面,当中央处理单元11发现一个或多个乐曲数据代码时,中央处理单元11从所述一个或多个乐曲数据代码中将键编号Kn和速度vel复制到图3示出的一个或多个乐曲数据代码,并将该一个或多个乐曲数据代码提供给钢琴控制器50。当完成步骤S410处的工作时,中央处理单元11返回步骤S401。因此,中央处理单元11重复由步骤S401、S402、S411和412组成的循环,直到步骤S402处的答案改变为肯定“是”为止。

假设用户开始演唱歌曲。所述响度超过了阈值,并且步骤S402处的答案改变为肯定“是”。对于肯定答案“是”,中央处理单元11确定歌唱音调的音高,如步骤S403。尽管用户试图演唱由乐谱上的音符表示的歌曲,但是语音的音高并不总是与音符的音高一致。出于此原因,中央处理单元11将该语音的音高与候选(者)音高相比较,以查看用户希望发出什么音调,并确定最接近该语音的音高的音名N,如步骤S404。所述候选者是被分配给所有黑/白键31a/31b的音名。

随后,中央处理单元11检查音符寄存器,以查看该音名N是否与存储在音符寄存器中的音名V相同,如步骤S406。如果已经以音名N产生了音调,则该音名N被写入音符寄存器,并且答案给出为肯定“是”。在此情形中,用户在采样时间周期内连续地以音高N发出歌唱音调。出于此原因,中央处理单元11丢弃该语音数据代码,并进行到步骤S410。步骤S410处的工作已经被描述过。

然而,如果尚未产生音调N,则步骤S405处的答案给出为否定“否”。然后,中央处理单元11检查音符寄存器,以查看是否已经将“-1”写入了音符寄存器,如步骤S406。当发现音调N处于乐曲节的前部时,答案给出为肯定“是”。类似地,当用户进入一音调和另一音调之间的过渡状态时,步骤S406处的答案也给出为肯定“是”。然而,当用户将歌唱音调改变为音名N时,先前的音名V被存储在音符寄存器中,并且步骤S406处的答案给出为否定“否”。

假设步骤S406处的答案给出为肯定。对于肯定答案“是”,中央处理单元11进行到步骤S408。中央处理单元11产生表示被分配了音名N的键31a/31b的歌唱音符开事件J(v)的乐曲数据代码,并通过通信接口17将该乐曲数据代码提供给钢琴控制器50。中央处理单元在音名和响度的基础上确定键编号Kn和速度vel,并将表示歌唱事件J(v)的代码、表示音符开的代码、键编号Kn和速度vel分别存储在数据字段FL1、F12、FL3和FL4中。当完成步骤S408处的工作时,中央处理单元11将音名N写入音符寄存器,如步骤S409。这样,通过原声钢琴30产生的音符的音名被作为音名V寄存在音符寄存器中。

当用户将音调从音高V改变为音高N时,步骤S406处的答案给出为否定“否”,并且中央处理单元11产生表示被分配了音名V的键31a/31b的歌唱音符关事件的乐曲数据代码,以便请求钢琴控制器50衰减音高V的音调,如步骤S407。表示歌唱事件J(v)、音符关、键编号Kn和预定速度vel的代码被分别存储在数据字段FL1、FL2、FL3和FL4中。随后,中央处理单元11请求被分配了音名N的键31a/31b的歌唱音符开事件J(v),如步骤S408,并将音符寄存器从音名V重写为音名N,如步骤S409。当完成步骤S409处的工作时,中央处理单元11进行到步骤S410,并在这组乐曲数据代码中搜索要复制用于顺序事件J(s)的乐曲数据代码。

因此,当用户演唱歌曲时,中央处理单元11重复由步骤S401至S410组成的循环,并将表示歌唱事件J(v)和顺序事件J(s)的乐曲数据代码发送给钢琴控制器50。

假定用户进入乐谱上的音符之间的休止符。响度被减小到阈值以下,并且在音符寄存器中发现了先前音调的音名V。在此情形中,步骤S402处的答案给出为否定“否”,并且步骤S411处的答案也给出为否定“否”。然后,中央处理单元11产生表示被分配了音名V的键31a/31b的歌唱音符关事件J(v)的乐曲数据代码,如步骤S412,并将该乐曲数据代码发送给钢琴控制器50,使得被分配了音名V的音调被衰减。随后,中央处理单元11将音符寄存器从音名V重写为-1,如步骤S413。作为结果,当用户从休止符中退出时,中央处理单元11通过具有肯定答案“是”的步骤S402和S406前进到步骤S408,并产生表示被分配了音名N的音调的歌唱音符开事件(v)的乐曲数据代码。

如将从前面的描述理解的那样,语音识别器10从语音信号产生表示歌唱事件J(v)的乐曲数据代码、以及通过从所述乐曲数据代码的复制产生表示顺序事件J(s)的乐曲数据代码,并将该乐曲数据代码提供给钢琴控制器50。

图5A和5B图示了用于伴奏的子例程。当用户指示自动演奏器1用原声钢琴30为歌曲伴奏时,中央处理单元11将表示用户指令的控制数据代码通过通信接口17提供给钢琴控制器50。中央处理单元52增大表示伴奏的标志,并将-1写入在随机存取存储器55中创建以便指示歌唱事件J(v)的键编号Kn的寄存器VoKey。中央处理单元52启动计时器53以测量时间的经过。主例程通过计时器中断周期性地分支到用于伴奏的子例程。主例程还分支到用于数据取出的子例程,并且中央处理单元52将乐曲数据代码传送到随机存取存储器55,以便使该乐曲数据代码进入临时数据存储区中的队列尾部。

当中央处理单元52进入用于伴奏的子例程时,中央处理单元52首先从队列前部读出乐曲数据代码,并检查该乐曲数据代码,以查看歌唱识别器10是否请求钢琴控制器50产生歌唱事件J(v),如步骤S501。如上文所述,所述事件被划分为两组,即歌唱事件J(v)和顺序事件J(s)。如果要产生顺序事件J(s),则步骤S501处的答案给出为否定“否”,并且中央处理单元52进行到步骤S502。另一方面,如果要产生歌唱事件J(v),则步骤S501处的答案给出为肯定“是”,并且中央处理单元52进行到步骤S506。

首先,假设乐曲数据代码表示顺序事件J(s)。中央处理单元52进行到步骤S502,并且分析表示顺序事件J(s)的乐曲数据。中央处理单元52确定基准键轨迹,即一系列目标键位置值、以及到达第一目标键位置值将需要的平均电流量。如果乐曲数据代码表示顺序音符开事件J(s),则基准键轨迹将黑/白键31a/31b引导到终点位置。另一方面,如果乐曲数据代码表示顺序音符关事件,则基准键轨迹将被按下的键31a/31b引导到静止位置。这样,中央处理单元52确定用于被按下或被释放的、被分配了键编号Kn的键31a/31b的目标占空比,如步骤S502。

随后,中央处理单元52访问延迟表,并从延迟表读出用于被分配了键编号Kn的黑/白键31a/31b的延迟时间。中央处理单元52启动计时器53,并将表示目标占空比的控制数据保存在寄存器中,直到延迟时间到期为止。这样,中央处理单元52将延迟引入由乐曲数据代码表示的工作的执行中,如步骤S503。

随后,中央处理单元52检查寄存器VoKey,以查看用于顺序事件J(s)的键编号Kn是否与当前存储在寄存器VoKey中的键编号相同,如步骤S504。

如果已经为歌唱事件J(v)移动了被分配了键编号Kn的黑/白键31a/31b,则中央处理单元52必须忽略用于顺序事件J(s)的乐曲数据代码,并且步骤S504处的答案给出为肯定“是”。然后,中央处理单元52停止执行顺序事件J(s)将需要的工作,并且立即返回主例程。这样,顺序事件J(s)不会干扰用于歌唱事件J(v)的键运动。

另一方面,当被分配了键编号Kn的黑/白键31a/31b不同于存储在寄存器voKey中的键编号和-1时,在乐谱的另一声部中发现要产生的音调,并且步骤S504处的答案给出为否定“否”。然后,如步骤S505,中央处理单元52在1和0之间改变寄存器fSeKey[Kn],所述寄存器fSeKey[Kn]表示被分配了键编号Kn的黑/白键31a/31b的当前状态。寄存器fSeKey[Kn]充当分别被分配给88个黑键和白键31a/31b的标志。当乐曲数据代码表示歌唱音符开事件时,寄存器FSeKey[Kn]被改变为1。另一方面,如果乐曲数据代码表示歌唱音符关事件,则寄存器FSeKey[Kn]被改变为0。这样,寄存器FSeKey[Kn]代表关于顺序事件J(s)的黑/白键31a/31b的当前键状态。

当完成步骤S505处的工作时,中央处理单元52将表示目标占空比的控制数据代码提供给脉冲宽度调制器56,使得伺服控制环开始强迫黑/白键31a/31b在基准键轨迹上行进,如步骤S512。由于如步骤S503中央处理单元52已经引入了延迟,因此原声钢琴音调被延迟。

当乐曲数据代码表示顺序音符开事件J(s)时,黑/白键31a/31b在基准键轨迹上向终点位置行进,并且使弦槌32在自由旋转的终点撞击弦34。原声钢琴音调被以相当于速度vel的响度产生。另一方面,当乐曲数据代码表示顺序音符关事件J(s)时,黑/白键31a/31b在基准键轨迹上向静止位置行进,并且使原声钢琴音调被衰减。

另一方面,当乐曲数据代码表示歌唱事件J(v)时,步骤S501处的答案给出为肯定“是”,并且中央处理单元52检查乐曲数据代码,以查看歌唱事件J(v)是否表示音符开,如步骤S506。

当为黑/白键31a/31b请求歌唱音符开事件J(v)时,步骤S506处的答案给出为肯定“是”,并且中央处理单元52将键编号Kn写入音符寄存器VoKey,如步骤S507。中央处理单元52检查寄存器fSeKey[Kn],以查看被分配了键编号Kn的黑/白键31a/31b是否已经被移动,即被改变为“1”,如步骤S508。

如果已经为顺序音符开事件J(s)移动了被分配了键编号Kn的黑/白键31a/31b,则中央处理单元52指示脉冲宽度调制器56使黑/白键31a/31b立即返回静止位置,如步骤S509,并等待到达静止位置,如步骤S510。当等待时间到期时,中央处理单元52进行到步骤S511。这样,自动演奏器1使伴奏与歌曲同步。

当寄存器fSeKey[Kn]中的键编号与存储在乐曲数据代码中的键编号Kn不同时,被分配了键编号Kn的黑/白键31a/31b仍然停留在静止位置,并且步骤S508处的答案给出为否定“否”。然后,中央处理单元52在不经步骤S509和S510处的任何执行的情况下进行到步骤S511。

当中央处理单元52到达步骤S511时,中央处理单元52确定黑/白键31a/31b的基准键轨迹,并向脉冲宽度调制器56通知第一目标占空比值。伺服控制环开始强迫被分配了键编号Kn的黑/白键31a/31b在基准键轨迹上向终点位置行进,如步骤S512。黑/白键31a/31b使弦槌32向弦34旋转,以便产生原声钢琴音调。

假设乐曲数据代码表示歌唱音符关事件J(v)。步骤S506处的答案给出为否定“否”。对于否定答案“否”,中央处理单元52确定被释放的键31a/31b的基准键轨迹,如步骤S513,并将寄存器VoKey改变为-1,如步骤S514。

在步骤S512,中央处理单元52将表示目标占空比的控制数据代码提供给脉冲宽度调制器56,使得伺服控制环强迫黑/白键31a/31b在基准键轨迹上向静止位置行进。

如将理解的那样,钢琴控制器50将歌唱事件J(s)列入优先地位,使得自动演奏器1不提前或延迟伴奏。自动演奏器1响应人类演唱者的歌唱音调,以便用诸如钢琴30的原声乐器为歌曲伴奏。因此,人类歌唱者在没有用原声乐器伴奏的任何人类演奏者的情况下练习歌曲。

此外,尽管歌唱事件J(v)与歌唱音调同时发生,但是将顺序事件J(s)从标准定时延迟。延迟时间与键致动器59上的负载成比例,使得顺序事件J(s)以间隔发生,好像人类演奏者用原声乐器为歌曲伴奏一样。因此,用户觉得该伴奏很自然。

自动演奏器1将歌唱事件J(v)列为优先于顺序事件J(s)。即使用户比记录在一组乐曲数据代码中的歌曲更慢或更快地演唱歌曲,自动演奏器1也会略去与歌唱事件J(v)相同的顺序事件J(s)(参见从步骤S504的路径“是”和步骤S508到S510),使得顺序事件J(s)处的音调跟随歌唱音调。这样,伴奏与演唱良好地同步。

                        第二实施例

转到附图的图6,实施本发明的另一自动演奏器钢琴主要包括自动演奏器1A和原声钢琴30A。原声钢琴30A在结构上与原声钢琴30相似,从而用指示原声钢琴30的对应组成部件的附图标号和标记来标注组成部件。

另一方面,自动演奏器1A在数据处理上与自动演奏器1不同,并且为多个演唱者准备了多个麦克风21a和21b。由于语音信号被并行地输入语音识别器10A,因此对分别从该语音信号采样的多组语音数据进行音量分析23A、音高分析24A、音名分析25A和数据准备26A。

钢琴控制器50A在系统配置上与控制器50相似。然而,用于伴奏的子例程与图5A和5B示出的子例程略微不同。尽管在第一实施例中将歌唱事件J(v)中的键编号Kn存储在音符寄存器VoKey中,但是用标志寄存器fVoKey[Kn]来代替音符寄存器VoKey,所述标志寄存器fVoKey[Kn]的标志被分别分配给黑键和白键31a/31b。当黑/白键31a/31b对于歌唱音符开事件J(v)开始行进时,相关联的标志被增大,即被改变为“1”。如果黑/白键31a/31b停留在静止位置或者被发现位于前往静止位置的途中,则减小所述标志。在初始化中,减小所有标志fVoKey[Kn]。与第一实施例中的事件相似,所述事件被分类为歌唱事件J(v)或顺序事件j(s)。尽管在钢琴控制器50中连续地处理歌唱事件J(v),但是钢琴控制器50A将同时响应请求以产生多于一个的歌唱事件J(v)。在下文中,对用于伴奏的子例程进行描述。

图7A和7B图示了用于伴奏的子例程。步骤S601至S603、S606和S608至S613处的工作与步骤S501至S503、S506和S508至S513处的工作相同,并且为了避免重复而省略描述。

当完成步骤S603处的工作时,中央处理单元52检查标志寄存器fVoKey[Kn],以查看是否已经为歌唱音符开事件J(s)移动了被分配了键编号Kn的黑/白键,如步骤S604。如果与键编号Kn相关联的标志已经被增大或改变为“1”,则答案给出为肯定“是”,并且中央处理单元52立即返回主例程。换句话说,中央处理单元52忽略被分配了键编号Kn的键31a/31b的顺序事件J(s)。

如果中央处理单元52发现与被分配了键编号Kn的黑/白键31a/31b相关联的标志被减小,即为“0”,则步骤S604处的答案给出为否定“否”,并且中央处理单元52将标志fSeKey[Kn]从“0”改变为“1”,或者反之亦然,如步骤S605。更详细地说,当顺序事件J(s)表示音符开时,中央处理单元52增大与键编号Kn相关联的标志,即将该标志改变为“1”。另一方面,如果顺序事件J(s)表示音符关,则中央处理单元52减小该标志,即将其改变为“0”。

当中央处理单元52发现乐曲数据代码表示音符关事件时,步骤S601处的答案给出为肯定“是”,并且中央处理单元52进行到步骤S606。步骤S606处的工作与步骤S506处的工作相同。当中央处理单元52发现歌唱事件J(v)用于音符开时,步骤S606处的答案给出为肯定“是”,并且中央处理单元52将标志寄存器fVoKey[Kn]中的标志改变为“1”,如步骤S607。这样,钢琴控制器50A将分配给已被驱动产生钢琴音调的黑/白键31a/31b的键编号Kn存储在标志寄存器fVoKey[Kn]中。这样,步骤S607处的工作允许中央处理单元52在步骤S604做出决定。

如将从前面的描述意识到的,当演唱者练习二重唱时,自动演奏器1A用原声钢琴30A与歌唱音调良好同步地为二重唱伴奏。实现第二实施例的自动演奏器实现了第一实施例的全部优点。

                        第三实施例

实施本发明的另一自动演奏器钢琴也主要包括原声钢琴和自动演奏器。该原声钢琴在结构上与原声钢琴30类似,并且除了用于语音识别的子例程以外,该自动演奏器与自动演奏器1相似。出于此原因,为简单起见,将描述集中在用于语音识别的子例程上。

语音识别器顺着由人类演唱者演唱的乐曲的节确定和弦,并将表示形成该和弦的音调的乐曲数据代码提供给钢琴控制器。然而,不从存储在存储单元中的MIDI乐曲数据代码复制任何乐曲数据。

图8A和8B图示了用于语音识别的子例程。由于该语音识别器在系统配置上与语音识别器10相似,因此利用与指示语音识别器10的对应系统组件的附图标记相同的附图标记来标注该系统组件。

假设用户指示自动演奏器用原声钢琴为他或她的歌曲伴奏。当确认了用户的指令时,中央处理单元11将“-1”写入在随机存取存储器14中创建的音符寄存器。值“-1”表示无声状态,即用户尚未开始演唱歌曲、以及音调之间的过渡状态。中央处理单元11开始测量时间的经过,并确定主例程将分支到子例程的定时。尽管中央处理单元11在预定时间周期的执行之后返回主例程,但是在下文中将子例程中的工作描述为好像中央处理单元11连续地重复该子例程一样。

当中央处理单元11进入子例程时,如步骤S701,中央处理单元11首先从队列的前部读出语音数据代码,并且确定由该语音数据代码表示的语音的响度,其中语音数据代码通过用于数据取出的子例程周期性地进入该队列。

随后,中央处理单元11将响度值与阈值相比较,以查看该歌唱音调是否超过了预定的响度,如步骤S702。如果用户尚未开始演唱歌曲,则乐曲数据代码仅表示噪声,其响度低于阈值,并且步骤S702处的答案给出为否定“否”。然后,中央处理单元11进行到步骤S711,并检查音符寄存器,以查看音名V和V1是否由“-1”表示。在用户开始演唱歌曲之前,步骤S711处的答案给出为肯定“是”。

对于步骤S711处的肯定答案“是”,中央处理单元11立即返回步骤S701。这样,中央处理单元11重复由步骤S701、S702和S711组成的循环,直到步骤S702处的答案给出为肯定为止。

假设用户开始演唱歌曲。所述响度超过了阈值,并且步骤S702处的答案改变为肯定“是”。对于肯定答案“是”,中央处理单元11确定语音的音高,如步骤S703。尽管用户试图演唱由乐谱上的音符表示的歌曲,但是语音的音高并不总是与音符的音高一致。出于此原因,中央处理单元11将语音的音高与候选(者)音高相比较,以查看用户希望发出什么音调,并确定最接近语音音高的音名N,如步骤S704。所述候选者是被分配给所有黑键和白键31a/31b的音名。

随后,中央处理单元11查找存储在只读存储器13中的和弦表,并确定与被分配了音名N的音调一起形成和弦的音调,如步骤S705。利用“N1”来标注所述音调的一个或多个音名。

随后,中央处理单元11检查音符寄存器,以查看音名N和N1是否与存储在音符寄存器中的音名V和V1相同,如步骤S706。被分配了音名V和V 1的音调形成已经为其按下黑键和白键31a/31b的和弦。如果已经或者很快将以音名N和N1产生音调,则音名N和N1作为音名V和V1而被写入了音符寄存器,并且步骤S706处的答案给出为肯定“是”。在此情形中,中央处理单元11确定丢弃用于音名N处的歌唱音符开事件的乐曲数据代码,并立即返回步骤S701。

然而,如果尚未产生被分配了音名N和N1的音调,则步骤S706处的答案给出为否定“否”。随后,中央处理单元11检查音符寄存器,以查看是否已经将“-1”写入了音符寄存器,如步骤S707。当在乐曲节的前部发现要产生的音调N时,答案给出为肯定“是”。类似地,当用户进入一音调和另一音调之间的过渡状态时,步骤S707处的答案也给出为肯定“是”。然而,当用户将歌唱音调改变为音名N时,先前的音名V和V1被存储在音符寄存器中,并且步骤S707处的答案给出为否定“否”。

假设步骤S707处的答案给出为肯定。对于肯定答案“是”,中央处理单元11进行到步骤S709。中央处理单元11产生表示用于和弦,即被分配了音名N和N1的音调的乐曲数据代码,并将该乐曲数据代码通过通信接口17提供给钢琴控制器50。中央处理单元在音名N和响度的基础上确定键编号Kn和速度vel的值,并将表示歌唱事件J(v)的代码、表示音符开的代码、键编号Kn和速度vel分别存储在数据字段Fl1、FL2、FL3和FL4中。当完成步骤S709处的工作时,中央处理单元11将音名N和N1写入音符寄存器,如步骤S710。这样,作为音名V和V1来寄存通过原声钢琴30产生的音调的音名。

当用户将和弦从音名V和V1改变为音名N和N1时,步骤S707处的答案给出为否定“否”,并且中央处理单元11产生表示被分配了音名V和V1的键31a/31b的歌唱音符关事件的乐曲数据代码,以便请求钢琴控制器50衰减音高V和V1的音调,如步骤S708。表示歌唱事件J(v)、音符关、键编号Kn和预定速度vel的代码被分别存储在数据字段FL1、FL2、FL3和FL4中。随后,中央处理单元11请求被分配了音名N和N1的键31a/31b的歌唱音符开事件J(v),如步骤S709,并将音符寄存器从音名V和V1重写为音名N和N1,如步骤S710。当完成步骤S710处的工作时,中央处理单元11返回步骤S701。

因此,当用户演唱歌曲时,中央处理单元重复由步骤S701至S710组成的循环,并将表示和弦的乐曲数据代码发送给钢琴控制器50。

假设用户进入乐谱上的音符之间的休止符。所述响度被减小到阈值以下,并且在音符寄存器中发现了先前和弦的音名。在此情形中,步骤S702处的答案给出为否定“否”,并且步骤S711处的答案也给出为否定“否”。然后,中央处理单元11产生表示被分配了音名V和V1的键31a/31b的音符关事件的乐曲数据代码,如步骤S712,并将该乐曲数据代码发送给钢琴控制器50,使得音名为V和V1的音调被衰减。

随后,中央处理单元11将音符寄存器从音名V和V1重写为-1,如步骤S713。结果,当用户从休止符中退出时,中央处理单元11从步骤S701通过步骤S702、S703、S704、S705、S706和S707前进到步骤S709,并产生表示被分配了音名N和N1的音调的音符开事件的乐曲数据代码。

如将从前面的描述意识到的那样,语音识别器在歌唱音调的基础上产生表示和弦的乐曲数据代码,并使自动演奏器用原声钢琴为歌曲伴奏。

尽管示出和描述了本发明的特定实施例,但是对本领域技术人员来说将清楚的是,在不脱离本发明的精神和范围的情况下,可以进行各种改变和修改。

可以将这组乐曲数据代码从合适的数据源通过公共或专用通信网络加载到钢琴控制器中。在此实例中,该通信网络连接到通信接口17。

乐曲数据代码中的音符编号Kn可以与音名N隔开“三度(third)”或“五度(fifth)”。另外,该间隔可以由用户指定。可以将音符开事件J(v)的速度vel调整为由用户指定的值。另一方面,音符关事件J(v)的速度vel可以根据响度而变化。

可以用除了被分配给黑键和白键31a/31b的键编号Kn以外的另一个值来表示无声状态。在n为88的情况下,可以用89来表示无声状态。

可以为超过两个演唱者准备超过两个麦克风。换句话说,麦克风的数目不对本发明的技术范围设置任何限制。

自动演奏器可以仅以与歌唱音调的音名相同的音名来产生音调,以进行伴奏。

可以与由MIDI乐曲数据代码表示的音调一起产生所述和弦。

在第一和第二实施例中,可以将优选权给予比对应事件更早到达钢琴控制器的事件。在此控制序列中,如果黑/白键31a/31b的顺序事件J(s)比相同键的歌唱事件J(v)更早到达钢琴控制器,则基于顺序事件J(s)来产生音调。图5A和5B示出的计算机程序可被修改用于如下控制序列。在步骤S504处的答案给出为肯定“是”的情况下,中央处理单元11进行与步骤S509和S510处的工作相同的工作,并随后返回主例程。

可以在钢琴30上以及通过音调生成器19演奏所述伴奏。当演唱者不希望打扰邻居时,他或她将弦槌阻挡器35a改变到阻挡位置,并且指示自动演奏器1/1A通过音调生成器19为歌曲伴奏。

钢琴控制器50/50A还可以驱动踏瓣PD。例如,如果速度vel超过阈值,则钢琴控制器PD可以压下延音踏瓣Pd。另一方面,如果速度vel低于另一阈值,则钢琴控制器PD可以压下弱音踏瓣Ps。因此,黑键和白键31a/31b不对本发明的技术范围设置任何限制。

可以为直立式钢琴提供所述自动演奏器。然而,原声钢琴不对本发明的技术范围设置任何限制。自动演奏器可以在例如管风琴和大键琴的另一种类的键盘乐器、例如吉他的弦乐器以及例如钢片琴的打击乐器上演奏所述伴奏。

歌曲不对本发明的技术范围设置任何限制。用户可以在乐器上演奏乐曲,以便提供代表通过该乐器产生的音调的音频信号。

在实施例中描述的自动演奏器钢琴的组成部件与权利要求语言相关如下。

原声钢琴音调对应“内部声音”,并且歌唱音调相当于“外部声音”。原声钢琴30/30A充当“原声乐器”,并且语音识别器10/10A对应于“声音识别器”。语音信号对应于“音频信号”。黑键和白键31a/31b以及踏瓣PD充当“操纵器”,并且电磁控制的键致动器59和电磁控制的踏瓣致动器对应于“多个致动器”。钢琴控制器50/50A充当“控制器”。

表示顺序事件J(s)的乐曲数据或表示另一麦克风上的语音事件J(v)的乐曲数据对应于“附加乐曲数据”。在“附加乐曲数据”充当表示其它麦克风上的语音事件J(v)的乐曲数据的情况下,表示顺序事件J(s)的乐曲数据充当“其它乐曲数据”。

动作单元33、弦槌32、弦34、制音器36、音调生成器19和声音系统22作为整体构成“音调生成器”。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号