自动演奏乐器以及合并在其中的自动演奏系统的制作方法

文档序号:2837212阅读:657来源:国知局
专利名称:自动演奏乐器以及合并在其中的自动演奏系统的制作方法
技术领域
本发明涉及一种自动演奏乐器,并且更具体地涉及一种能够通过半行程键再现音调的自动演奏乐器、以及形成该自动演奏乐器的一部分的自动演奏系统。
背景技术
在以下描述中,术语“前面”表示比用术语“后面”修饰的位置更靠近坐在凳子上用手指弹奏的演奏者的位置。在前面的点和对应的后面的点之间画的线沿“纵向”延伸,并且横向以直角与纵向相交。
术语“轨迹”是指随着时间一起变化的一系列点值。当用术语“前向”修饰键轨迹时,该键轨迹,即“前向键轨迹”表示在朝向终点位置的向下方向上的键运动中的一系列键位置值。另一方面,术语“反向键轨迹”表示在朝向静止位置的向上方向上的键运动中的一系列键位置值。
术语“全行程”是用于在静止位置和终点位置之间移动键的钢琴技术,并且术语“半行程”是钢琴家在前往静止位置或终点位置的途中改变键运动方向的另一种钢琴技术。
自动演奏器钢琴是自动演奏乐器的典型示例,并且是原声钢琴和自动演奏系统之间的组合。自动演奏系统包括在黑键和白键后部的下方提供的电磁控制的键致动器、以及控制单元,并且该控制单元具有数据处理能力。控制单元依序处理根据MIDI(乐器数字接口)协议定义的乐曲数据代码,并且,对于要移动以产生钢琴音调的黑键和白键中的每一个确定基准键轨迹。控制单元将驱动信号提供给与要移动的黑键和白键相关联的电磁控制的键致动器,并且通过电磁控制的键致动器来强迫黑键和白键在基准键轨迹上行进。
由于钢琴家在他们的演奏中通过半行程以及全行程来产生钢琴音调,因此期望自动演奏系统再现半行程和全行程二者。如果自动演奏系统不能再现半行程,则用户觉得重放不真实。因此,在通过自动演奏系统进行的重放中,半行程的再现是一个重要因素。
在日本专利第3541411号中公开了现有技术半行程再现技术。在该现有技术半行程再现技术中,控制单元分析表示键的音符开(note-on)事件的乐曲数据代码以及表示键的音符关(note-off)事件的乐曲数据代码,以查看前向键轨迹是否在终点位置之前与反向键轨迹相交。当答案给出为肯定时,控制单元确定要通过半行程来产生钢琴音调。
钢琴家在键的重复中重复半行程。在钢琴家以高速重复半行程时,自动演奏系统不能再现该高速重复,并且易于遗漏一个或多个音调。在日本专利第3551507号中提出了对策。用于音符开事件的乐曲数据代码具有表示键速度的乐曲数据,并且用于音符开事件和音符关事件的乐曲数据代码伴随有表示从先前的事件起经过的时间(lapse of time)的持续时间数据代码。在日本专利第3551507号中公开的现有技术自动演奏系统中,当控制单元发现用于重复的乐曲数据代码时,控制单元增大键速度或者缩短所述经过的时间。这样,现有技术控制单元通过使键加速或者使所述时间间隔缩短来防止重放在重复时出现一个或多个遗漏音调。
然而,由于另一原因而出现一个或多个遗漏音调。对于乐迷来说众所周知的是已经设计了多种类型的钢琴。直立式(Upright)钢琴和大(grand)钢琴是不同类型钢琴的典型示例。直立式钢琴和大钢琴之间的差异决不限于外观。直立式钢琴具有在结构上与大钢琴的动作单元不同的动作单元,并且大钢琴的动作单元通常响应高速重复,而与直立式钢琴的动作单元不同。据说直立式钢琴的动作单元能够以8Hz驱动弦槌。另一方面,大钢琴的动作单元以13Hz良好地响应所述重复。而且,直立式钢琴具有不同的型号,并且大钢琴也具有不同的型号。一种型号的直立式钢琴或大钢琴配备有与另一型号的动作单元不同的动作单元。
在此情形下,假设演奏者将他或她在大钢琴上的演奏记录在一组乐曲数据代码中。可以将这组乐曲数据代码加载到被合并在自动演奏器直立式钢琴内的控制单元中,以便进行重放。如果在大钢琴上的原始演奏中包含高速的节(passage),则由于合并在直立式钢琴中的动作单元的较差灵敏性(promptness)而有可能在重放时出现一个或多个遗漏音调。
还可由于另一原因而出现一个或多个遗漏音调。很多音乐家在计算机程序的协助下在其个人计算机系统上创作乐曲曲调。音乐家可能将极高速度的节插入他们的乐曲曲调中。如果用户获得这组乐曲数据代码以便在自动演奏器直立式钢琴上重放,则由于动作单元的较差灵敏性,该自动演奏系统不能再现该极高速度的节。
对于在日本专利第3541411号中公开的现有技术自动演奏器钢琴,没有考虑记录系统和重放系统之间的差异。
尽管在所述日本专利中对钢琴类型的差异进行了描述,但是用户觉得通过自动演奏再现的乐曲曲调较为奇怪。这是因为以下事实对于在高速重复中再现的音调,修正表示原始音调的乐曲数据。因此,在所述日本专利中公开的现有技术自动演奏器钢琴不能克服由于动作单元响应特性的差异而导致的问题。

发明内容
因此,本发明的一个重要目的是提供-种自动演奏乐器,其以高保真度再现乐曲的节,而与乐器的响应特性无关。
本发明的另一重要目的是提供一种自动演奏系统,其形成所述自动演奏乐器的一部分。
本发明人考虑到现有技术中固有的问题,并且注意到在键运动突然改变时易于出现遗漏音调。本发明人研究了重复中的键运动,并且发现键在键轨迹的一部分上以高速运动,而在另一部分上以低速运动。简而言之,键在键轨迹上不匀速行进。即使键开(key-on)事件的频率落在低于该型号的动作机构的临界频率的范围内,在迅速地使相关联的键加速的条件下,动作单元也不能驱动弦槌,并且音调遗漏。本发明人认为在重复时键运动的匀速有效地避免了遗漏音调。
为了达到所述目的,本发明提出使得在重复时至少一个键开事件是均匀的。
根据本发明的一个方面,提供了一种自动演奏乐器,用于顺着具有重复的乐曲小节产生音调,该自动演奏乐器包括乐器和自动演奏系统,该乐器包含多个操纵器,其被有选择地移动以便指定要产生的音调;和音调生成器,其连接到所述多个操纵器,并且产生利用为了所述音调而被移动的操纵器所指定的所述音调,所述自动演奏系统包含多个致动器,其被与所述多个操纵器相关联地提供,并且响应驱动信号,以便移动相关联的操纵器以指定所述音调;和控制单元,其连接到所述多个致动器,以便有选择地将所述驱动信号提供给所述多个致动器,并且包含搜索器,其在表示乐曲小节的一组乐曲数据中搜索表示对于所述多个操纵器之一的至少一个重复的音调产生事件;修正器,其连接到所述搜索器,并且修正表示所述音调产生事件的性质的事件数据,以便使所述音调产生事件的性质中的至少一个均匀;以及信号调节器,其连接到所述修正器,并且在所述事件数据的基础上将驱动信号调节到最佳幅度,以便在音调产生事件的性质中的前述至少一个性质均匀的条件下,通过所述操纵器的运动来使音调生成器产生音调。
根据本发明的另一方面,提供了一种自动演奏系统,用于在乐器上演奏乐曲的节,该自动演奏系统包括多个致动器,其被与乐器的多个操纵器相关联地提供,并且响应驱动信号,以便移动相关联的操纵器,以指定要利用连接到所述多个操纵器的乐器的音调生成器产生的音调;以及控制单元,其连接到所述多个致动器,以便有选择地将所述驱动信号提供给所述多个致动器,并且包含搜索器,其在表示乐曲小节的一组乐曲数据中搜索表示对于所述多个操纵器之一的至少一个重复的音调产生事件;修正器,其连接到所述搜索器,并且修正表示所述音调产生事件的性质的事件数据,以便使所述音调产生事件的性质中的至少一个性质均匀;以及信号调节器,其连接到所述修正器,并且在所述事件数据的基础上将驱动信号调节到最佳幅度,以便在音调产生事件的性质中的前述至少一个性质均匀的条件下,通过所述操纵器的运动来使音调生成器产生音调。


根据结合附图进行的以下描述,将更清楚地理解所述自动演奏乐器和自动演奏系统的特征及优点,在附图中图1是示出根据本发明的自动演奏器钢琴的结构的示意性侧视图,图2是示出合并在自动演奏器钢琴中的控制单元的系统配置的框图,图3是示出标准MIDI文件的内容的视图,图4A和4B是示出用于自动演奏的子例程的流程图,图5是示出用于将键事件分类的作业序列的流程图,图6是示出键事件块的结构的视图,图7A和7B是示出用于将键事件分组的作业序列的流程图,图8是示出用于修正键事件组中的乐曲数据代码的作业序列的流程图,
图9是示出修正前的键事件组和修正后的键事件组的时序图,图10是示出由运动控制器执行的作业序列的流程图,图11是示出在自动演奏器钢琴中形成的伺服控制环的框图,图12是示出在修正之前和之后的基准键轨迹组的时序图,图13A和13B是示出合并在本发明的另一自动演奏器钢琴的计算机程序中的用于重放的子例程的流程图,图14是示出基准键轨迹数据块的结构的视图,图15A和15B是示出用于形成基准键轨迹组的作业序列的流程图,以及图16是示出用于对基准键轨迹数据的组的内容求平均的作业序列的流程图。
具体实施例方式
实施本发明的自动演奏乐器在没有人类演奏者的任何手指弹奏的情况下顺着乐曲的节产生音调。该乐曲的节包括重复(repetition)。自动演奏乐器主要包括乐器和自动演奏系统。该自动演奏系统与乐器相组合,并且在乐器上演奏乐曲的节。
所述乐器包括多个操纵器和音调生成器,并且所述多个操纵器连接到该音调生成器。所述多个操纵器被有选择地移动,以便指定要产生的音调,并且被移动的操纵器使音调生成器产生所述音调。
自动演奏系统包括多个致动器和控制单元。所述多个致动器被与所述多个操纵器相关联地提供,并且响应驱动信号,以便移动相关联的操纵器以便指定所述音调。控制单元连接到所述多个致动器,并且有选择地将驱动信号提供给所述多个致动器,以便在没有人类演奏者的任何手指弹奏的情况下进行演奏。
控制单元具有被称为搜索器、修正器和信号调节器的功能。可以利用软件来实现所述搜索器、修正器和信号调节器。另外,利用诸如例如硬线(wired)逻辑电路的硬件来实现所述搜索器、修正器和信号生成器。
搜索器在表示乐曲的节的一组乐曲数据中搜索表示在所述多个操纵器之一上的至少一个重复的音调产生事件。在将这组乐曲数据存储在一组MIDI(乐器数字接口)乐曲数据代码中的情况下,将所述音调产生事件称为键开事件和键关(key-off)事件,并且搜索器提取表示从这组MIDI乐曲数据代码重复产生的音调的MIDI乐曲数据代码。
修正器连接到搜索器,使得搜索器向修正器通知表示重复的音调产生事件。音调产生事件通常是不均匀的。与其它音调产生事件相比,一个音调产生事件可以迅速发生。另外,在另一音调产生事件中,可以以大响度产生音调。因此,每个音调产生事件具有各种性质。利用事件数据来表示音调产生事件的性质。在此情形下,修正器修正该事件数据,以便使音调产生事件的至少一个性质均匀。要修正的性质可以是在每个音调产生事件和下一个音调产生事件之间经过的时间、操纵器的速度、速度的增量或减量、操纵器的行程、或者该行程的增量或减量。
信号调节器连接到修正器,并且修正器将事件数据提供给信号调节器。信号调节器在该事件数据的基础上将驱动信号调节到最佳幅度,使得致动器以这样的方式驱动操纵器操纵器在音调产生事件表现出均匀的性质的条件下使音调生成器产生音调。
如将从前面的描述认识到的那样,即使在重复时发生所述性质的突然改变,也会使该突然改变变得均匀或柔和。结果,自动演奏系统在重复期间在不遗漏音调的情况下移动操纵器。
第一实施例首先参照附图的图1,实施本发明的自动演奏器钢琴主要包括直立式钢琴1、自动演奏系统10和记录系统80。人类演奏者在直立式钢琴1上用手指弹奏一首乐曲,并且在直立式钢琴1中顺着乐曲的节产生原声钢琴音调。自动演奏系统10和记录系统80被安装在直立式钢琴1中。通过记录系统80来记录直立式钢琴1上的原始演奏,并且自动演奏系统10在乐曲数据的基础上重演直立式钢琴1上的演奏。通过记录系统80产生所述乐曲数据。另外,所述乐曲数据可以表示大钢琴上的演奏,或者可以在具有合适的计算机程序的个人计算机系统上产生所述乐曲数据。在此实例中,根据MIDI协议来将所述乐曲数据编码。
直立式钢琴1包括具有黑键1b和白键1c的键盘1a、动作单元2、弦槌3、琴弦4、制音器39和钢琴箱体90。在钢琴箱体90中限定了内部空间,并且动作单元2、弦槌3、制音器39和琴弦4占据该内部空间。中盘(key bed)90a形成钢琴箱体90的一部分,并且键盘1a被安装在中盘90a上。在此实例中,键盘1a具有88个黑键和白键1b/1c。
黑键1b和白键1c以众所周知的模式放置,并且平行于纵向而延伸。将音名分别分配给黑键1b和白键1c。平衡键销(balance key pin)P在键架中板(balance rail)1d上向黑键1b和白键1c提供支点。卡定柱(capstan button)30在黑键1b的后部和白键1c的后部直立,并且保持与动作单元2相接触。这样,黑键1b和白键1c分别与动作单元2相链接,以便在从静止位置向终点位置行进期间驱动动作单元2。当没有将任何力施加到黑键1b的前部和白键1c的前部上时,动作单元2的重量被施加在黑键1b的后部和白键1c的后部上,并且黑键1b和白键1c停留在静止位置上。静止位置上的键行程为0。当人类演奏者按下黑键1b的前部和白键1c的前部时,所述前部下降,并且黑键1b和白键1c从静止位置向终点位置行进。在此实例中,当黑键1b和白键1c被发现处于静止位置上时,键行程为0。终点位置与静止位置隔开10毫米。
与弦槌3和制音器39相关联地提供动作单元2,并且被驱动的动作单元2驱动相关联的弦槌3和制音器39以进行旋转。
琴弦4在钢琴箱体90的内部被拉紧,并且弦槌3分别与琴弦4相对。根据键的位置,制音器39与琴弦4隔开和接触。当黑键1b和白键1c停留在静止位置上时,制音器39保持与琴弦4相接触,并且弦槌3与琴弦4隔开。
当黑键1b和白键1c在前往终点位置的途中到达某些点时,制音器39离开琴弦4,并且与琴弦4隔开。结果,制音器39允许琴弦4振动。
在朝向终点位置的键运动期间,动作单元2引起弦槌3的旋转,并且通过脱离而脱离相关联的弦槌3。然后,弦槌3开始旋转,并且在旋转的终点与相关联的琴弦4碰撞。弦槌3在相关联的琴弦4上回弹。这样,弦槌3引起相关联的琴弦4的振动。通过琴弦4的振动,以与分配给相关联的黑键和白键1b/1c的音名相同的音名产生原声钢琴音调。
当人类演奏者释放黑键1b和白键1c时,黑键1b和白键1c开始返回静止位置。在键1b/1c前往静止位置的途中,制音器39与振动的琴弦4相接触,并且禁止琴弦4振动。结果,原声钢琴音调被衰减。
自动演奏系统10包括具有内置活塞传感器8的电磁控制的键致动器5、键传感器6、乐曲信息处理器10a、运动控制器11和伺服控制器12。乐曲信息处理器10a、运动控制器11和伺服控制器12代表通过执行在控制单元91上运行的计算机程序的子例程而实现的功能。
在黑键和白键1b和1c后部下方的中盘90a中形成槽90b,并且槽90b沿横向延伸。电磁控制的键致动器5被排列在槽90b内,并且电磁控制的键致动器5中的每一个具有活塞5b和螺线管5c。螺线管5c并联连接到伺服控制器12,并且被驱动信号DR有选择地激励,以便产生相应的磁场。在磁场中提供活塞5b,使得将磁力施加在活塞5b上。该磁力使活塞5b沿向上的方向伸出,并且,利用相关联的电磁控制的键致动器5的活塞5b来推动黑键和白键1b和1c的后部。结果,黑键和白键1b和1c在没有人类演奏者的任何手指弹奏的情况下上下倾斜。
内置的活塞传感器8分别监控活塞5b,并且将代表活塞速度的活塞速度信号ym提供给伺服控制器12。
键传感器6被提供在黑键和白键1b/1c前部的下方,并且分别监控黑键和白键1b/1c。在此实例中,使用光学位置变换器作为键传感器6。多个发光二极管、多个光检测二极管、光纤和传感器头共同形成键传感器6的阵列。每个传感器头与相邻的传感器头相对,并且在传感器头之间的间隙中移动彼此相邻的黑/白键1b/1c。光从发光二极管通过光纤而传播到传感器头中的所选择的传感器头,并且从这些传感器头将光束辐射到相邻的传感器头上。光束落在相邻的传感器头上,并且入射光从相邻的传感器头传播到光检测二极管。入射光被转换为光电流。由于黑键1b和白键1c打断该光束,因此入射光的量根据键位置而变化。通过光检测二极管将所述光电流转换为电势电平,使得键传感器6输出代表键位置的键位置信号yk。键传感器6具有与完整键行程(即从静止位置到终点位置)一样宽或更宽的可检测范围。键传感器6将代表相关联的黑键和白键1b/1c的当前键位置的键位置信号yk提供给伺服控制器12和记录系统80。如将在下文中描述的那样,在伺服控制序列中使用表示当前键位置的位置数据。在记录系统80中分析所述位置数据,以便产生表示直立式钢琴10上的演奏的乐曲数据。
利用乐曲数据来表示演奏,并且以乐曲数据代码的形式将该乐曲数据提供给乐曲信息处理器10a。在此实例中,根据MIDI协议来将乐曲数据编码为乐曲数据代码。分别将朝向终点位置的键运动和朝向静止位置的键运动称为键开事件和键关事件,并且术语“键事件”是指键开事件和键关事件二者。
将乐曲数据依序提供给乐曲信息处理器10a。如上文所述,一系列目标键位置值形成基准轨迹,并且目标键位置随着时间而变化。基准点是在所述基准键轨迹上发现的。只要相关联的黑键1b或相关联的白键1c通过该基准点,弦槌3就在旋转的终点以目标弦槌速度与琴弦4碰撞。
通过MIDI电缆或公共通信网络将表示演奏的乐曲数据代码从合适的信息存储介质或另一乐器提供给乐曲信息处理器10a。乐曲信息处理器10a首先将该乐曲数据正规化,并且将在MIDI协议中使用的单位转换为在自动演奏器钢琴中采用的单位制。在此实例中,以毫米-秒单位制来表示位置、速度和加速度。这样,通过乐曲信息处理器10a而从所述乐曲数据产生重放数据。
乐曲信息处理器10a检查所述乐曲数据,以便查看是否要驱动黑键1b或白键1c以进行重复。当答案给出为肯定时,乐曲信息处理器10a处理用于重复的乐曲数据,如将在下文中详细描述的那样。根据本发明,用于重复的键事件形成要同时处理的键事件组。
运动控制器11确定在重放时要按下和释放的黑键1b和白键1c的每一个的基准键轨迹ref。换言之,运动控制器11在重放数据的基础上产生基准键轨迹数据。如上文所述,基准键轨迹ref表示按照时间的一系列键位置值。因此,基准键轨迹ref指示黑键1b或白键1c开始在其上行进的时刻。将基准键轨迹数据从运动控制器11提供给伺服控制器12。
伺服控制器12确定驱动信号DR的平均电流量。在此实例中,在伺服控制器12中采用脉宽调制,使得平均电流量随着驱动信号的有效电平中的时间周期而变化。伺服控制器12将驱动信号DR提供给与要在基准键轨迹ref上移动的黑键1b或白键1c相关联的电磁控制的致动器5,并且按照下面所述通过脉宽调制来强迫黑键1b或白键1c在基准键轨迹ref上行进。
当黑键1b或白键1c在基准键轨迹ref上行进时,内置的活塞传感器8和键传感器6将活塞速度信号ym和键位置信号yk提供给伺服控制器12。实际活塞速度近似等于实际键速度。伺服控制器12在一系列目标键位置值的基础上计算目标键速度值,并且将实际键位置和实际键速度与目标键位置和目标键速度进行比较,以便确定位置偏差值和速度偏差值。当发现位置偏差和速度偏差时,伺服控制器12增大或减小驱动信号DR的平均电流量,以便使所述位置偏差和速度偏差最小。这样,伺服控制器12与电磁控制的键致动器5、内置的活塞传感器8和键传感器6一起形成反馈控制环。伺服控制器12重复该伺服控制序列,并且强迫黑键1b和白键1c在基准键轨迹ref上行进。
记录系统80包括键传感器6、弦槌传感器7、记录器13和乐曲数据产生器14。记录器13和乐曲数据产生器14是通过执行在控制单元91上运行的计算机程序的另一子例程实现的。
弦槌传感器7分别监控弦槌3,并且将代表弦槌位置数据的弦槌位置信号yh提供给记录器13。在此实例中,光学位置变换器被用作弦槌传感器7,并且与被用作键传感器6的光学位置变换器相同。
当人类演奏者记录他或她在直立式钢琴1上的演奏时,记录器13周期性地提取键位置数据和弦槌位置数据,并且在该键位置数据和弦槌位置数据的基础上分析键运动和弦槌运动。记录器13确定分配给被按下的键1b/1c和被释放的键1b/1c的键编号、黑键1b和白键1c开始向终点位置行进的时刻、前往终点位置途中的实际键速度、黑键1b和白键1c开始返回静止位置的时刻、前往静止位置途中的键速度、弦槌3与琴弦4碰撞的时刻、以及碰撞之前瞬间的最终弦槌速度。将这些键运动数据和弦槌运动数据从记录器13传递给乐曲数据产生器14。
乐曲数据产生器14将键位置数据和弦槌运动数据正规化,并且在该正规化之后,从所述键运动数据和弦槌运动数据产生MIDI乐曲数据代码。所述键运动数据和弦槌运动数据均被称为“演奏数据”。乐曲数据产生器14通过该正规化来从演奏数据中消除自动演奏器钢琴的个体性。自动演奏器钢琴的个体性起因于传感器位置、传感器特性和组成部件尺寸的差异。这样,自动演奏器钢琴的演奏数据被正规化为理想的自动演奏器钢琴的演奏数据。从理想的自动演奏器钢琴的演奏数据产生乐曲数据,并且将该乐曲数据存储在乐曲数据代码中。
将乐曲数据代码存储在适当的信息存储介质中,或者通过通信网络将其提供给另一乐器或数据存储器。
转到附图的图2,控制单元91包括被简写为“CPU”的中央处理单元20、被简写为“ROM”的只读存储器21、被简写为“RAM”的随机存取存储器22、存储设备23、被简写为“I/O”的信号接口24、被简写为“PWM”的脉宽调制器26、以及共享总线系统20B。中央处理单元20、只读存储器21、随机存取存储器22、存储设备23、信号接口24和脉宽调制器26连接到共享总线系统20B,使得中央处理单元20能够通过共享总线系统20B与只读存储器21、随机存取存储器22、存储设备23、信号接口24和脉宽调制器26通信。尽管电子音调生成器、显示板和操纵板被合并在控制单元91中,但是为简单起见,将它们与图形控制器和开关检测器一起从图2中略去。
“传感器25”代表键传感器6、弦槌传感器7和活塞传感器8。将模拟-数字转换器合并在信号接口24中,并且活塞传感器8、键传感器6和弦槌传感器7连接到信号接口24中的模拟-数字转换器。MIDI接口、用于控制板的接口、用于显示单元的图形接口、连接到公共通信网络的通信接口、以及用于个人计算机系统的适当数字接口被合并在接口24中。
将驱动信号DR从脉宽调制器26有选择地提供给电磁控制的键致动器5的螺线管5c。脉宽调制器26响应从中央处理单元20提供的控制信号,以便改变驱动信号DR的平均电流或占空比。
中央处理单元20是数据处理能力的源,并且计算机程序在中央处理单元20上运行以执行给定任务。
形成所述计算机程序的指令代码被存储在只读存储器21中,并且被中央处理单元20依序提取。该指令代码所表示的任务之一是从信号接口24进行的数据提取,并且周期性地重复该任务。在下文中,将详细描述所述计算机程序。将半导体掩模ROM设备和半导体电可擦除和可编程ROM设备合并在只读存储器21中。还将适当的参数表存储在只读存储器21中,并且中央处理单元20查阅该参数表以进行自动演奏和记录。
随机存取存储器22向中央处理单元20提供工作区,并且,将乐曲数据、键位置数据、弦槌位置数据、活塞速度数据和基准键轨迹数据暂时存储在该工作区中。将存储位置分配给利用软件实现的内部时钟,并且利用该内部时钟来测量从开始重放起经过的时间。将存储区分配给键事件数据,并且对于88个键1b/1c中的每一个收集键事件数据。
存储设备23具有比随机存取存储器22的数据保存能力大得多的数据保存能力,并且作为示例,利用硬盘驱动器、诸如软盘驱动器(其术语“软盘”是商标)的柔性盘驱动器、用于CD-ROM(致密盘只读存储器)、MO(磁光)盘、DVD(数字多用途盘)和zip盘的致密盘驱动器来实现存储设备23。可以将一组乐曲代码从存储设备23传递到随机存取存储器22以用于自动演奏、以及反过来用于记录。通常,在存储设备23中准备多个乐曲数据文件。在此实例中,每组乐曲数据代码形成一个标准MIDI文件。
图3示出了标准MIDI文件之一。该标准MIDI文件分解为首标H和数据块C。数据块C跟随在首标H之后,并且将乐曲数据存储在数据块C中。
所述乐曲数据表示键事件以及从先前的键事件起经过的时间[tt]。将键事件,即键开事件和键关事件存储在音符开事件代码和音符关事件代码中,并且将在一个键事件和前一键事件之间经过的时间[tt]存储在持续时间数据代码中。将在两个事件之间经过的时间[tt]称为“delta(增量)时间”。将音符开事件和音符关事件称为“音符事件”。
利用状态字节和一个或多个数据字节来表示音符事件。状态字节表示音符开消息和信道消息[9n]或音符关消息和信道消息[8n]。信道被表示为“n”。另一方面,数据字节表示音符号[kk](即要产生的音调的音高)和速度[vv]。在配备有88个键的钢琴的情况下,音符号[kk]从二十一变换到一百零八,即21到108。由于这一原因,利用被分别分配给黑键和白键1b/1c的键编号来指定音符号[kk],并且使用词语“键编号[kk]”作为“音符号”的同义词。速度[vv]表示音调的响度,并且具有128级。
由于delta时间表示从前一音符事件起经过的时间,因此通过累加delta时间的值来指示从开始演奏起经过的时间。在以下描述中,将从前一音符事件起经过的时间,即delta时间称为“相对时间周期”,并且将从开始演奏起经过的时间,即累加的delta时间称为“绝对时间周期”。将内部时钟分配用于测量绝对时间周期。
在下文中,对所述计算机程序进行描述。该计算机程序分解为主例程和子例程。当主例程在中央处理单元20上运行时,用户可以通过操纵板(未示出)和显示窗(未示出)与控制单元91通信。在显示窗上产生当前状态和提示消息,并且用户通过操纵板向控制单元91给出他或她的指令。
将子例程之一分配给记录系统80,并且将另一子例程分配给自动演奏系统10。当用户指示记录系统80记录他或她在直立式钢琴1上的演奏时,主例程开始周期性地分支到用于记录的子例程,并且通过执行该子例程来实现记录器13和乐曲数据产生器14。类似地,当用户指示自动演奏系统10再现记录在标准MIDI文件中的演奏时,主例程开始周期性地分支到用于自动演奏的子例程,并且乐曲信息处理器10a、运动控制器11和伺服控制器12被激活。黑键1b和白键1c被有选择地按下和释放,以便顺着乐曲的节产生钢琴音调。
图4A和4B图示了用于自动演奏的子例程。中央处理单元20通过图4A和4B所示的子例程来实现乐曲信息处理器10a、运动控制器11和伺服控制器12。当用户向控制单元91指示自动演奏时,中央处理单元20周期性地进入用于自动演奏的子例程,返回主例程,并且再次进入该子例程,直到接受了终止自动演奏的用户指令为止。
假设用户通过操纵板(未示出)向控制单元91指示自动演奏。在执行主例程期间,中央处理单元20周期性地从信号接口24提取输入数据代码,使得将代表用户指令的指令代码接收到随机存取存储器22中。中央处理单元20检查该指令代码,并且确认对于自动演奏的用户指令,如步骤S1。
中央处理单元20增大指示伺服控制的标志,并且准备好通过伺服控制环来控制黑键和白键1b/1c。换言之,中央处理单元20激活伺服控制器12,如步骤S2。通过执行另一子例程来实现所述伺服控制。
用户通过操纵板(未示出)指定乐曲的名称。然后,中央处理单元20在存储设备23中搜索这首乐曲,并且将一组乐曲数据代码从存储设备23传递到随机存取存储器22,如步骤S3。在存储设备23中没有发现这组乐曲数据代码的情况下,可以通过公共通信网络将该乐曲的标准MIDI文件从合适的数据库下载到存储设备23。
当乐曲数据代码的传递完成时,中央处理单元20进行所述正规化和单位转换,并且随后开始根据键编号[kk]来将由所述乐曲数据代码表示的键事件分类。换言之,中央处理单元20提取黑键和白键1b/1c中的每一个的键事件,如步骤S4。将随机存取存储器22中的多个存储位置分别分配给黑键和白键1b/1c,并且将每个键1b/1c的键事件存储在相关联的一个存储位置中。将在下文中描述用于分类的作业序列。
随后,中央处理单元20在所述存储位置中搜索一个或多个键事件组。如上文所述,键事件组表示黑键1b或自键1c的重复。因此,中央处理单元20试图发现一个或多个键事件组,如步骤S5。本发明的特定特征在于对一个或多个键事件组的数据处理。由于这一原因,在对所述一个或多个键事件组的数据处理之前执行步骤S4和S5处的作业。
尽管中央处理单元20能够针对多个黑键和白键1b/1c同时执行步骤S6至S9处的作业,但是为简单起见,在不同时驱动多个键1b/1c以便在基准键轨迹上行进的假设下进行描述。
中央处理单元20在最早的时候确定要按下和释放的黑键或白键1b/1c的一个或多个基准键轨迹,如步骤S6。换言之,通过步骤S6处的执行来实现运动控制器11。所述基准键轨迹具有至少一个基准前向键轨迹和至少一个基准反向键轨迹,并且被按下的键1b/1c和被释放的键1b/1c分别在基准前向键轨迹和基准反向键轨迹上行进。中央处理单元20将表示不久要被按下的黑/白键1b/1c的基准键轨迹的基准键轨迹数据传递到随机存取存储器22的预定存储位置,并且将该基准键轨迹数据存储在所述预定存储位置中。
中央处理单元20检查内部时钟,以便查看黑键1b或白键1c是否要开始在基准键轨迹上行进,如步骤S7。当步骤S7处的答案给出为否定“否”时,中央处理单元20重复步骤S7处的执行,并且等待答案改变。
当所述时刻到来时,步骤S7处的答案改变为肯定“是”,并且中央处理单元20从随机存取存储器22的预定存储位置读出第一基准键轨迹数据,并将该第一基准键轨迹数据传递给伺服控制器12以进行伺服控制。详细地讲,中央处理单元20确定目标键位置和实际键位置之间的偏差、以及目标键速度和实际键速度之间的偏差,并且通过脉宽调制器26将驱动信号DR调整到用于使所述偏差最小的平均电流值。活塞传感器8和键传感器6向中央处理单元20报告实际键速度和实际键位置。将驱动信号DR从脉宽调制器26提供给电磁控制的键致动器5,以便强迫黑键1b或白键1c在基准键轨迹上行进。
中央处理单元20检查所述预定存储位置,以便查看是否已经处理了最后的基准键轨迹数据。换言之,中央处理单元20确定黑键1b或白键1c是否到达基准键轨迹的终点,如步骤S9。当黑键1b或白键1c仍然在基准键轨迹上行进时,步骤S9处的答案给出为否定“否”。对于否定答案“否”,中央处理单元20返回步骤S7,并且等待要处理下一个基准键轨迹数据的时刻。这样,中央处理单元20重复由步骤S7、S8和S9组成的循环,直到黑键1b或白键1c到达基准键轨迹的终点为止。
当黑键1b或白键1c到达基准键轨迹的终点时,中央处理单元20检查随机存取存储器22,以便查看是否已经处理了所有乐曲数据代码,如步骤S10。当该乐曲正在继续时,步骤S10处的答案给出为否定“否”,并且中央处理单元20返回步骤S6,以便准备下一个黑键1b或下一个白键1c的基准键轨迹。这样,中央处理单元20重复由步骤S6至S10组成的循环,直到演奏完成为止。当演奏完成时,步骤S10处的答案给出为肯定“是”,并且中央处理单元S11减小指示伺服控制的标志。换言之,伺服控制器12停止对黑键和白键1b/1c的伺服控制,如步骤S11。
接下来,参考图5来对步骤S4处的作业序列进行描述。如上文所述,将表示乐曲的一组乐曲数据代码传递到随机存取存储器22,使得与图3所示的数据块C相似,在随机存取存储器22中发现持续时间数据代码[tt]、音符开事件代码[9n kk vv]和音符关事件代码[8n kk vv]。
当进入步骤S4处的作业序列时,中央处理单元20将在步骤S3从存储设备23传递的这组乐曲数据代码存储在随机存取存储器22中,如步骤S12,并且开始依序提取乐曲数据代码并将其分类。详细地讲,中央处理单元20从随机存取存储器22读出第一键事件代码,如步骤S13。中央处理单元20在键编号[kk]的基础上指定黑键和白键1b/1c之一,并且将所述键事件代码写入分配给键编号[kk]的存储位置中,如步骤S14。
随后,中央处理单元20检查这组乐曲数据代码,以便查看是否已经将所有乐曲数据代码分类,如步骤S15。如果中央处理单元20在这组乐曲数据代码中发现至少一个未被处理的键事件代码,则步骤S15处的答案给出为否定“否”,并且中央处理单元20返回步骤S13。这样,中央处理单元20重复由步骤S13至S15组成的循环,以便根据键编号[kk]将表示键事件的乐曲数据代码分类。
在将最后的键事件代码分类之后,步骤S15处的答案改变为肯定“是”,并且中央处理单元20完成所述作业序列。
当完成分类时,为该乐曲创建键事件文件KF,如图6所示。在此实例中,88个键事件块K1至K88形成键事件文件KF,并且被存储在前述存储位置上。键事件编号“i”是从1到“M”的自然数,并且“M”等于键事件的数目。将键事件编号“1”分配给第一键开事件和第一键关事件,并且朝着“M”增大键事件编号。“M”个键事件形成键事件块K1。M取决于要通过自动演奏系统10再现的乐曲的节。另一键事件块可以包括多于或少于M个键事件。
将键开事件“i”处的速度和键关事件“i”处的速度、即音符开速度和音符关速度分别表示为“vpi”和“vni”。将第一音符开速度表示为“vp1”,并且“vn1”代表第一音符关速度。将从开始重放到第一键开事件的相对时间周期表示为“tp1”,并且“tp2”到“tpM”代表从先前的键关事件“1”到“M-1”的相对时间周期。相对时间周期“tn1”到“tnM”指示从先前的键开事件“1”到“M”经过的时间。这样,根据键事件编号“i”将音符开速度“vpi”、相对时间周期“tpi”、音符关速度“vni”以及相对时间周期“tni”依序存储在键事件块K1至K88的每一个中。
在图5所示的作业序列中,中央处理单元20首先写入相对时间周期“tpi”,然后是音符开速度“vpi”,之后,中央处理单元20写入相对时间周期“tni”,并且随后写入音符关速度“vni”。当完成对于“tpi”、“vpi”、“tni”和“vni”的数据写入时,中央处理单元20重复对于“tp(i+1)”、“vp(i+1)”、“tn(i+1)”和“vn(i+1)”的数据写入工作。
更详细地描述步骤S14处的作业。在以下描述中,术语“最新乐曲数据代码”是指在键事件块K1至K88的每一个中的队列末尾的音符开速度代码“vpi”、音符关速度代码“vni”或持续时间数据代码“tpi”/“tni”。
假设中央处理单元20读出表示相对时间周期“tpi”或“tni”的持续时间数据代码。中央处理单元20从所有键事件块K1至K88连续地读出最新乐曲数据代码,并且确定音符开速度代码/音符关速度代码或相对时间周期“tpi”/“tni”是否作为最新乐曲数据代码而被存储在键事件块K1...或K88的每一个中。
当中央处理单元20作为最新持续时间代码而发现表示“tp(i-1)”或“tn(i-1)”的持续时间代码时,中央处理单元20将相对时间周期“tpi”或“tni”加到相对时间周期“tp(i-1)”或“tn(i-1)”上,并且将表示该和数的持续时间数据代码作为最新乐曲数据代码置于所述队列的末尾。这样,在所述队列的末尾累加相对时间周期。
另一方面,如果中央处理单元20在队列末尾发现音符开速度代码“vpi”或音符关速度代码“vni”,则中央处理单元20在该音符开速度代码或音符关速度代码之后写入表示相对时间周期“tpi”或“tni”的持续时间代码“tpi”或“tni”,并且持续时间代码“tpi”或“tni”作为最新乐曲数据代码占据所述队列的末尾。
假设中央处理单元20读出音符开事件代码或音符关事件代码。中央处理单元20从该音符开事件代码或音符关事件代码读取键编号[kk]和速度[vv]。中央处理单元20在该音符开事件代码或音符关事件代码的键编号[kk]的基础上确定键事件块K[kk],并且将速度[vv]作为音符开速度“vpi”或音符关速度“vni”写在所述队列的末尾,作为最新乐曲数据代码。结果,相对时间周期“tpi”或“tni”被固定为已经累加的总和。尽管用于某个键1b/1c的音符开速度代码“vpi”和用于所述某个键1b/1c的音符关速度代码“vni”被写入键事件块K1至K88之一,但是在所有键事件块K1至K88中将相对时间周期“tpi”和“tni”累加,并且,由于这一原因,表示相对时间周期“tpi”或“tni”的最新乐曲数据代码指示从前一键关事件或前一键开事件起经过的时间。
图7A和7B示出了在步骤S5处用于将键事件分组的作业序列。对该作业序列的执行相当于乐曲信息处理器10a的一部分。中央处理单元20将“1”写入表示键编号的索引K,如步骤S16,并且还将“1”写入表示键事件的索引i,如步骤S17。中央处理单元20使索引I等于索引i,如步骤S18。索引I指示在可能的键事件组开头的键事件编号。
中央处理单元20从索引i的值中减去索引I的值,并且使索引j等于差“i-I”,如步骤S19。索引j指示键事件在该组中的位置,并且该位置从0变化到N。换言之,(N+1)个键事件形成该键事件组。由于索引j被定义为“i-I”,因此该键事件组包括被分配了键事件编号I的键事件到被分配了键事件编号(I+N)的键事件。
中央处理单元20将索引i增大1,如步骤S20。结果,索引i指示下一键事件。中央处理单元从与键事件i相关联的持续时间数据代码读出相对时间周期“tpi”,如步骤S21。相对时间周期“tpi”表示从紧接在键开事件i之前的键关事件j起经过的时间。
随后,中央处理单元20检查相对时间周期“tpi”,以查看在从前一键关事件j起的预定时间周期内是否发生键开事件i,如步骤S22。在此实例中,所述预定时间周期是500毫秒,并且被存储在只读存储器21中。
如果键开事件i靠近键关事件j,则演奏者重复地按下被分配了键编号K的键1b/1c,并且步骤S22处的答案给出为否定“否”。另一方面,如果演奏者按下和释放被分配了不同于键编号K的键编号的另一个键1b/1c,则在前一键关事件j和键开事件i之间经过的时间等于或长于所述预定时间周期,并且步骤S22处的答案给出为肯定“是”。
对于步骤S22处的否定答案“否”,中央处理单元20返回步骤S19,并且从索引j中减去索引I的值。由于在步骤S20索引i被增大了1,因此索引j指示该增大之前的键事件。中央处理单元20重复步骤S20和S21处的作业,并且在步骤S22检查在这两个键事件之间经过的时间,以查看是否继续重复。这样,中央处理单元20重复由步骤S19至S22组成的循环,以便形成表示所述重复的键事件组。键事件I到键事件j形成键事件组。
当步骤S22处的答案改变为肯定答案“是”时,中央处理单元20进行到步骤S23,并且修正表示所述键事件组的乐曲数据代码。将在下文中详细描述步骤S23处的作业。
当完成步骤S23处的作业时,中央处理单元20检查利用键编号1标注的键事件块,以查看是否已经检查了所有乐曲数据代码,如步骤S24。
如果至少一个乐曲数据代码仍然未被检查,则步骤S24处的答案给出为否定“否”,并且中央处理单元20返回步骤S18,以便使索引I等于索引i。换言之,改变可能的键事件组的开头处的键编号。中央处理单元20重复由步骤S19至S22组成的循环,以便发现另一键事件组。如果中央处理单元20发现另一键事件组,则中央处理单元20在步骤S23修正该乐曲数据代码,并且在步骤S24检查键事件块以查看是否已经检查了所有乐曲数据代码。
当索引i等于M时,步骤S24处的答案改变为肯定“是”,并且中央处理单元20将索引K增大1,如步骤S25。随后,中央处理单元20检查索引K,以查看是否已经检查了所有键事件块K1至K88,如步骤S26。当正发现索引K从1到88时,中央处理单元20返回步骤S17,并且重复由步骤S17至S26组成的循环,以便发现关于黑键和白键1b/1c的一个或多个键事件组。
即使在步骤S22 tpi短于所述预定时间周期,只要索引i等于M,中央处理单元20就进行到步骤S23,当对键事件块K88的检查完成时,步骤S26处的答案改变为肯定“是”,并且中央处理单元20完成步骤S5处的作业。
在下文中,参考图8来对键事件组中的乐曲数据代码的修正进行描述。在图8中,与图7中的索引“i”相似,索引“i”指示键事件编号。在该键事件组中,索引i从I变化到(I+N)。换言之,该键事件组包括N个键事件。图8所示的指令的执行相当于乐曲信息处理器10a的另一部分。
首先,中央处理单元20确认表示在该键事件组中包含的键事件的数目的索引“j”,并且使变量J等于索引j,如步骤S27。中央处理单元20检查变量J,以查看键事件的数目是否大于0,如步骤S28。如上文所述,索引j为从0到N,并且在只有一个键事件形成所述组的条件下,在步骤S28给出否定答案“否”。对于步骤S28处的否定答案“否”,中央处理单元20返回到图7A和7B所示的作业序列。
另一方面,在超过一个键事件形成所述组的情况下,步骤S28处的答案给出为肯定“是”。该键事件组表示重复。然后,中央处理单元20修正音符开速度、前一键关事件和所述键开事件之间的相对时间周期、键关速度以及前一键开事件和所述键关事件之间的相对时间周期。
在步骤S29,中央处理单元20通过使用等式1来确定音符开速度vpj的平均值vpav。索引j从0变化到J。
vpav=ΣJ=0J(vpj)/(J+1)]]>...等式1在步骤S30,中央处理单元20通过使用等式2来确定音符关速度vnj的平均值vnav。索引j从0变化到J。
vnav=ΣJ=0J(vnj)/(J+1)]]>...等式2随后,中央处理单元20确定从前一键关事件到所述键开事件经过的时间tpj的平均值,如步骤S31。索引j从1变化到J,使得保持该组中的第一经过时间tp0。换言之,中央处理单元20不改变从前一键事件组到所述键事件组开头处的第一键开事件经过的时间,即第一键开定时。平均值tpav表示如下。
tpav=ΣJ=1J(tpj)/(J)]]>...等式3最后,中央处理单元20确定从前一键开事件到所述键关事件经过的时间的平均值tnav,如步骤S32。由于索引j从0变化到(J-1),因此中央处理单元20保持从最后的键关事件到下一键事件组中的键开事件经过的时间,即所述键事件组中的最后的键关定时。结果,经过的时间tpJ不变。平均值tnav表示如下。
tnav=ΣJ=0J-1(tnj)/(J)]]>...等式4这样,中央处理单元20确定平均音符开速度vpav、平均音符关速度vnav、平均经过时间tpav和平均经过时间tnav,而不改变所述组中的第一音符开定时和最后的音符关定时,即tp0和tnJ。
随后,中央处理单元20将所述键事件组中的音符开速度vp0至vpJ的全部、音符关速度vn0至vnJ的全部、经过的时间tp1至tpJ、以及经过的时间tn0至tnJ-1替换为平均音符开速度vpav、平均音符关速度vnav、平均经过时间tpav和平均经过时间tnav,如步骤S33。中央处理单元20使第一经过时间tp0和最后的经过时间tnJ保持不变。
在步骤S33处的执行之后,中央处理单元20返回步骤S24,并且对于所有黑键和白键1b/1c,重复步骤S27至S33处的作业。
图9示出了表示键事件组中的键事件的乐曲数据代码。利用从时间轴t伸出的箭头来表示键开事件,并且利用朝向时间轴t的箭头来表示键关事件。箭头的长度与音符开速度vpi或音符关速度vni成比例,并且利用时间轴t上的两个相邻箭头之间的间隙来表示经过的时间tpi和tni。尽管以实线画出的箭头代表所述组中的键事件,但是利用以虚线画出的箭头来表示其它组中的键事件。
假设原始乐曲数据代码形成键事件I到(I+N)的组,如同在图9中利用“ORIGINAL MUSIC DATA CODES(原始乐曲数据代码)”来标注的原始乐曲数据代码那样。代表音符开速度和音符关速度的箭头长度不同,并且相邻的两个箭头之间的间隙比其它间隙窄或者宽。在时间周期A中,通过步骤S27至S33处的作业来对音符开速度vpi、音符关速度vni、以及经过的时间tpi和tni求平均,使得所述箭头和间隙具有平均长度和平均距离,如同利用“AFTER MODIFICATION(修正之后)”标注的那些一样。然而,不改变经过的时间tp0和tnJ。
接下来,对运动控制器11的行为进行描述。图10示出了运动控制器11的作业序列。当中央处理单元20再现由一组乐曲数据代码表示的演奏时,对于要按下和释放的黑键1b和白键1c重复所述作业序列。
假设在重放中按下和释放黑键1b。中央处理单元20访问被分配给黑键1b的键事件块,并且从该键事件块读出表示音符开速度vpi和经过的时间tpi的乐曲数据代码,如步骤S34。
如上文所述,音符开速度vpi表示要产生的音调的响度。最终弦槌速度VH与该音调的响度成比例。可以说音符开速度vpi表示最终弦槌速度VH。另一方面,由tpi表示的时间周期在要产生所述音调的时刻TH到期。在自动演奏器钢琴的情况下,琴弦4在时刻TH被弦槌3撞击。累加经过的时间tpi和tni,使得将时刻TH置于绝对时间轴上。
随后,中央处理单元20在最终弦槌速度VH和时刻TH的基础上,确定基准前向键速度Vr和基准前向时刻Tr,如步骤S35。基准前向键速度Vr被定义为“被按下的键1b/1c在基准前向点X处的键速度”。在标准原声钢琴中,基准前向点X是在与沿着键轨迹而与静止位置隔开9.0至9.5毫米的键位置上发现的。由于最终弦槌速度VH与基准前向键速度Vr成比例,因此只要将基准前向键速度Vr赋予黑键1b或白键1c,就以目标响度产生音调。基准时刻Tr被定义为“黑键1b或白键1c经过基准点X的时刻”。
基准前向键速度Vr可以通过线性逼近来确定,并且被表示为Vr=α×VH+β ...等式5其中,α和β是通过实验确定的常数。
基准前向时刻Tr被表示为Δt=-(γ/VH)+δ ...等式6其中,Δt是从基准前向时刻Tr到琴弦4被弦槌3撞击的时刻TH经过的时间,并且γ和δ是通过实验确定的常数。中央处理单元20从绝对时刻TH中减去时间周期Δt,并且确定基准前向时刻Tr。
从静止位置开始的时刻TR比基准前向时刻Tr早了键1b/1c在静止位置和基准前向点X之间消耗的经过时间,并且被计算为TR=Tr-X/Vr...等式7假设黑键1b在键轨迹上进行匀速运动。将基准前向键轨迹表示为(Vr×(t-TR)+XR),其中,t是绝对时间,并且XR是静止位置、即键行程为0。中央处理单元20产生表示基准前向键轨迹的基准前向键轨迹数据。
随后,中央处理单元20从被分配给黑键1b的键事件块提取表示跟随在前述键开事件之后的键关事件的乐曲数据代码,如步骤S36,并且读出音符关速度vni和经过的时间tni。音符关速度vni表示被释放的键1b/1c的小于0的键速度VKN,并且相对时间周期tni在该键关事件处到期。在时间轴上定义释放时刻TKN,因此释放时刻TKN是绝对时刻。
随后,中央处理单元20确定小于0的基准反向键速度VrN以及基准反向时刻TrN。基准反向点XN被定义为“制音器39与琴弦4相接触所在的键行程”。基准反向键速度VrN被定义为“被释放的键在基准反向点XN处的速度”,并且基准反向时刻TrN被定义为“在键行程的终点处开始的被释放的键到达基准反向点XN的时刻”。
假设被释放的键1b进行匀速运动。基准反向点XN被表示为XN=VrN×TrN’+XE ...等式8其中,XE是在10毫米的键行程处的终点位置,TrN’是键1b/1c从终点位置XE到基准反向点XN消耗的相对时间周期。在键1b/1c进行匀速运动的假设下,初始键速度等于基准反向键速度VrN和释放键速度VKN。键1b/1c开始反向运动的开始时刻TEN是绝对时刻TrN和相对时间周期TrN’之间的差。满足基准反向键速度VrN和基准反向时刻TrN的基准反向键轨迹被表示为(VrN×(t-TEN)+XE),其中t是绝对时间。中央处理单元20产生表示基准反向键轨迹的基准反向键轨迹数据。
在步骤S38,中央处理单元20将基准前向键轨迹数据、基准反向键轨迹数据、以及表示从时刻TE到时刻TEN的键位置的静止(stationary)数据作为基准键轨迹数据存储在随机存取存储器22中。
将基准键轨迹数据依序提供给伺服控制器12,使得伺服控制器12强迫黑键1b在基准前向键轨迹上行进,在时刻TE和时刻TEN之间停止,以及在基准反向键轨迹上行进。
图11示出了伺服控制器12、键传感器6和活塞传感器8组合形成的伺服控制环。尽管黑键和白键1b/1c、电磁控制的键致动器5、利用键传感器6实现的位置传感器6、利用活塞传感器8实现的速度传感器8、脉宽调制器26、以及被合并在信号接口24中的模拟-数字转换器56a/56b是硬件,但是其它块50、51、52、53、54、55、57a、57b、58、59、60和61代表通过执行用于重放的子例程的一部分实现的功能。通过模拟-数字转换器56a和56b来将模拟活塞速度信号yvma和模拟键位置信号yxka转换为数字活塞速度信号yvmd和数字键位置信号yxkd,使得数字活塞速度信号yvmd和数字键位置信号yxkd也表示当前活塞速度和当前键位置。
框51和52充当比较器或减法器,并且框53和54充当放大器。框55充当加法器。框57a和57b从数字活塞速度信号yvmd和数字键位置信号yxkd中消除自动演奏系统10的个体性,并且将活塞速度的单位和键位置的单位转换为毫米-秒单位制。这样,框51和52将那些数字信号yvmd和yxkd正规化。数字活塞速度信号yvm和数字键位置信号yxk分别表示正规化的当前活塞速度和正规化的当前键位置。正规化的当前活塞速度和正规化的当前键位置也利用“yvm”和“yxk”来标注。
框58在正规化的当前键位置yxk的基础上,通过诸如多项式逼近的微分来计算当前键速度yvk,并且框59在正规化的当前活塞速度yvm的基础上通过积分来确定当前活塞位置yxm。框60和61充当加法器,并且在正规化的当前活塞速度yvm、正规化的当前键位置yxk、当前键速度yvk和当前活塞位置yxm的基础上确定实际键速度yv和实际键位置yx。将实际键速度yv和实际键位置yx分别传递给框51和52。
现在,假设将基准键轨迹数据ref提供给框50,框50确定黑/白键1b/1c在时刻t的目标键位置rx和目标键速度rv,并且将目标键位置rx和目标键速度rv分别提供给框52和51。以每秒厘米为单位来表示目标键速度rv。基准键轨迹以1毫秒的时间间隔到达框50,因此,以该时间间隔来更新目标键位置rx和目标键速度rv。
在此实例中,伺服控制器12和运动控制器11在黑键1b和白键1c进行匀速运动的假设下确定基准键轨迹。因此,目标键速度rv是恒定的。当黑/白键1b/1c在基准前向键轨迹上行进时,目标键速度rv等于基准前向键速度Vr。另一方面,目标键速度rv等于基准反向键轨迹上的基准反向键速度VrN。目标键位置rv是在基准键轨迹上发现的。
将目标键速度rv和目标键位置rx从框50分别传递给比较器51和52,并且将实际键速度yv和实际键位置yx从加法器60和61传递给比较器51和52。比较器51和52确定目标键速度rv和实际键速度yv之间的速度差ev、以及目标键位置rx和实际键位置yx之间的位置差ex。将速度差uv和位置差ux从比较器51和52传递给放大器53和54。
在放大器53中以增益Kv放大速度差uv,在放大器54中以增益Kx放大位置差ux,并且将乘积uv和ux从放大器53和54提供给加法器55。这样,加法器55使所述速度差和位置差相结合(united)。和数u指示目标平均电流量,并且被提供给脉宽调制器26。
脉宽调制器26响应该和数u,以便将驱动信号DR的平均电流ui调整到和数u,并且提供给用于黑/白键1b/1c的电磁控制的键致动器5。驱动信号DR使螺线管5a改变活塞速度ym,从而改变当前键位置yk。这样,伺服控制器12在速度差ev和位置差ex的基础上改变驱动信号DR的平均电流量,并且强迫黑键1b和白键1c在基准键轨迹ref上行进。
如将从前面的描述理解的那样,通过键事件的相对时间周期与预定时间周期之间的比较,将重复与单行程键运动区分开。当在要再现的演奏中发现重复时,修正键开事件和键关事件,以便对键运动求平均。即使演奏者以极高速度的键运动和/或在极短的经过时间内按下黑键1b或白键1c,也通过所述平均而从所述重复中消除了该极高速度的键运动和/或极短的经过时间,从而自动演奏系统10使得有可能在重放时再现所述重复。
第二实施例实现第二实施例的自动演奏器钢琴主要包括直立式钢琴和自动演奏系统,并且该直立式钢琴和自动演奏系统在硬件上与直立式钢琴1和自动演奏系统10相同。由于这一原因,利用指定直立式钢琴1的对应组成部件和自动演奏系统10的对应系统组件的参考标号来标注该直立式钢琴的组成部件和自动演奏系统的系统组件。
除了用于重放的子例程之外,用于第二实施例的计算机程序与用于第一实施例的计算机程序相似。由于这一原因,为简单起见,在下文中不对主例程和其它子例程进行描述。
第一实施例和第二实施例之间的差别在于控制单元91如何使键事件均匀。在第一实施例中,乐曲信息处理器10a如图7A和7B所示的那样形成键事件组,并且如图8所示的那样在每个键事件组中使键事件均匀(uniform)。在第二实施例中,运动控制器11形成表示重复的基准键轨迹组,并且修正每个组中的基准键轨迹。
图12示出了对键事件组的数据处理。时间沿着用“t”标注的方向流逝。黑键1b和白键1c在静止位置XR和终点位置XE之间移动。“XM”指示静止位置XR和终点位置XE之间的中间键位置。朝向终点位置的箭头和朝向静止位置的箭头分别代表基准前向键轨迹和基准反向键轨迹。原始乐曲数据代码组指示基准前向键轨迹和基准反向键轨迹。尽管黑/白键1b/1c被保持在终点位置XE上(参见第三基准前向键轨迹和第三基准反向键轨迹)以及在前往终点位置的途中返回静止位置(参见第四基准前向键轨迹和第四基准反向键轨迹),但是通过所述修正而从基准键轨迹中消除了在终点位置处的停留、以及从中间位置的返回。然而,时间周期A等于时间周期B。换言之,在原始乐曲数据代码组和修正后的乐曲数据代码组之间,重复的时间周期相等。这样,运动控制器11使键开事件和键关事件均匀。
图13A和13B示出了用于重放的子例程。假设用户通过操纵板(未示出)向控制单元91指示自动演奏。中央处理单元20在主例程的执行期间周期性地从信号接口24提取输入数据代码,使得将代表用户指令的指令代码接收到随机存取存储器22中。中央处理单元20检查该指令代码,并且确认对于自动演奏的用户指令,如步骤S40。
中央处理单元20增大指示伺服控制的标志,并且准备好通过伺服控制环来控制黑键和白键1b/1c。换言之,中央处理单元20激活伺服控制器12,如步骤S41。所述伺服控制是通过执行另一子例程来实现的。
用户通过操纵板(未示出)指定乐曲的名称。然后,中央处理单元20在存储设备23中搜索该乐曲,并且将一组乐曲数据代码从存储设备23传递给随机存取存储器22,如步骤S42。
当乐曲数据代码的传递完成时,中央处理单元20进行所述正规化和单位转换,并且随后开始根据键编号[kk]而将由所述乐曲数据代码表示的键事件分类。换言之,中央处理单元20提取关于黑键和白键1b/1c的每一个的键事件,如步骤S43。由于分别将多个存储位置分配给黑键和白键1b/1c,因此与所述存储位置之一相关联地存储关于每个键1b/1c的键事件。
随后,中央处理单元20确定黑键和白键1b/1c的每一个的基准键轨迹,如步骤S44。分别将88个基准键轨迹数据块分配给88个键1b/1c。将黑键和白键1b/1c的每一个的基准键轨迹数据按照从开始重放起的绝对时间的顺序存储在基准键轨迹数据块之一中。在下文中,将详细描述用于一对键开事件和键关事件的基准键轨迹数据。在键事件和基准键轨迹之间可以共享存储位置,以便将键事件与基准键轨迹相关联。假设黑键1b和白键1c进行匀速运动,并且步骤S44处的作业序列与图10所示的作业序列相似。
图14示出了基准键轨迹数据块RT1至RT88。分别将基准键轨迹数据块RT1至RT88分配给被分配了从1至88的键编号的黑键和白键1b/1c。索引K指示键编号[kk],并且索引i指示键事件编号。
同时参考图12和14来描述TPi、VPi、TNi和VNi。TPi表示从黑/白键1b/1c开始在基准前向键轨迹上行进的时刻到黑/白键1b/1c经过基准前向键轨迹上的中间位置XM的时刻经过的时间。VPi表示基准前向键轨迹上的基准前向键速度Vr。TNi表示黑/白键1b/1c开始在基准反向键轨迹上行进的时刻到黑/自键1b/1c经过基准反向键轨迹上的中间位置的时刻经过的时间。VNi表示基准反向键轨迹上的基准反向键速度VrN。
转到图13A和13B,中央处理单元20搜索基准键轨迹数据块,以查看是否一些基准键轨迹形成指示重复的基准键轨迹组。当答案给出为肯定时,这些基准键轨迹被互相关联,并且形成基准键轨迹组。这样,中央处理单元20形成用于黑键和白键1b/1c的每一个的一个或多个基准键轨迹组。
中央处理单元20检查内部时钟,以查看黑键1b或白键1c是否要开始在基准键轨迹上行进,如步骤S46。当步骤S46处的答案给出为否定“否”时,中央处理单元20重复步骤S46处的执行,并且等待答案改变。
当所述时刻到来时,步骤S46处的答案改变为肯定“是”,并且中央处理单元20从随机存取存储器22的基准键轨迹数据块中的相关联的基准键轨迹数据块读出第一基准键轨迹数据,并且将第一基准键轨迹数据传递给伺服控制器12,如步骤S47。对黑键和白键1b/1c的伺服控制与图11所示的伺服控制相似,并且为了避免重复,在下文中不加入进一步的描述。
中央处理单元20检查所述基准键轨迹数据块,以查看是否已经处理了最后的基准键轨迹数据。换言之,中央处理单元20确定黑键1b或白键1c是否已经到达基准键轨迹的终点,如步骤S48。当黑键1b或白键1c仍然在基准键轨迹上行进时,步骤S48处的答案给出为否定“否”。对于否定答案“否”,中央处理单元20返回步骤S46,并且等待要处理下一基准键轨迹数据的时刻。这样,中央处理单元20重复由步骤S46、S47和S48组成的循环,直到黑键1b或白键1c到达基准键轨迹的终点为止。
当黑键1b或白键1c到达基准键轨迹的终点时,中央处理单元20检查随机存取存储器22,以查看是否已经处理了所有乐曲数据代码,如步骤S49。当乐曲正在继续时,步骤S49处的答案给出为否定“否”,并且中央处理单元20返回步骤S46。这样,中央处理单元20重复由步骤S46至S49组成的循环,直到演奏完成为止。当演奏完成时,步骤S49处的答案给出为肯定“是”,并且中央处理单元20减小指示伺服控制的标志。换言之,伺服控制器12停止对黑键和白键1b/1c的伺服控制,如步骤S50。
图15A和15B示出了用于将基准键轨迹分组的作业序列,如步骤S45。中央处理单元20将“1”写入表示键编号的索引K,如步骤S51,并且还将“1”写入表示键事件的索引i,如步骤S52。中央处理单元20使索引I等于索引i,如步骤S53。索引I指示在可能的基准键轨迹组开头处的键事件编号。
中央处理单元20从索引i的值中减去索引I的值,并且使索引j等于差“i-I”,如步骤S54。索引j指示键事件在该基准键轨迹组中的位置。
随后,中央处理单元20从被分配给黑/白键K的基准键轨迹数据块RTK读出键事件j处的基准反向键速度VNj,并且使变量VN等于基准反向键速度VNj,如步骤S55。
中央处理单元20将索引i增大1,如步骤S56。结果,索引i指示下一键事件。中央处理单元20从基准键轨迹数据块RTK读出经过的时间“TPi”,并且使变量TP等于该经过的时间TPi,如步骤S57。从黑/白键1b/1c经过前一基准反向键轨迹上的中间点XM的时刻到黑/白键1b/1c到达基准前向键轨迹上的终点位置XE的时刻测量所述经过的时间TPi。
随后,中央处理单元20计算(TP-10/VN×1000),并且将计算结果与预定时间周期进行比较,以查看计算结果是否等于或长于所述预定时间周期,如步骤S58。(TP-10/VN×1000)的计算结果表示在到达静止位置和朝着终点位置开始之间经过的时间,即黑键1b或白键1c停留在静止位置上的时间周期。在此实例中,所述预定时间周期是100毫秒,并且被存储在只读存储器21中。
如果键事件形成重复的一部分,则所述计算结果比100毫秒短,并且步骤S58处的答案给出为否定“否”。对于否定答案“否”,中央处理单元20返回到步骤S54,并且在基准键轨迹数据块RTK的组中检查下一键事件处的基准键轨迹。中央处理单元20重复由步骤S54至S58组成的循环,以便发现基准键轨迹组。
如果计算结果等于或长于100毫秒,则所述基准键轨迹表示全行程键运动,并且步骤S58处的答案给出为肯定“是”。对于肯定答案“是”,中央处理单元20进行到步骤S59,并且修正所述基准键轨迹组中的经过的时间TPi、基准前向键速度VPi、经过的时间TNi和基准前向键速度VNi,如将参考图16而更详细描述的那样。在索引i等于M的情况下,中央处理单元20无条件地进行到步骤S59。
当完成步骤S59处的作业时,中央处理单元20检查利用键编号K标注的基准键轨迹数据块RTK,以查看是否已经检查了所有基准键轨迹,如步骤S60。
如果至少一个乐曲数据代码仍然未被检查,则步骤S60处的答案给出为否定“否”,并且中央处理单元20返回到步骤S53,以便使索引I等于索引i。换言之,改变在可能的键事件组开头处的键事件编号。中央处理单元20重复由步骤S53至S58组成的循环,以便发现另一基准键轨迹组。如果中央处理单元20发现另一基准键轨迹组,则中央处理单元在步骤S59修正另一组中的基准键轨迹,并且在步骤S60检查基准键轨迹数据块RTK,以查看是否已经检查了所有基准键轨迹。
当索引i等于M时,步骤S60处的答案改变为肯定“是”,并且中央处理单元20将索引K增大1,如步骤S61。随后,中央处理单元20检查索引K,以查看是否已经检查了所有键事件块K1至K88,如步骤S62。当正发现索引K从1到88时,中央处理单元20返回到步骤S52,并且重复由步骤S52至S62组成的循环,以便发现用于黑键和白键1b/1c的一个或多个基准键轨迹组。
当对基准键轨迹数据决RT88的检查完成时,步骤S62处的答案改变为肯定“是”,并且中央处理单元20完成步骤S45处的作业。
在下文中,参考图16来对基准键轨迹组中的基准键轨迹的修正进行描述。图16所示的作业序列相当于步骤S59处的作业。所述组包括与从索引I到索引(I+N)的键事件编号i相对应的基准键轨迹,并且从索引I到索引(I+N)的键事件编号i对应于分别被分配了从0到N的索引j的键事件编号。与图8所示的作业序列中的变量J相似,变量J指示刚刚处理的键事件编号j。
首先,中央处理单元20使变量J等于索引j,如步骤S63。中央处理单元20检查变量J,以查看所述组中的键事件的数目是否大于0,如步骤S64。如上文所述,索引j从0变化到N,并且在用于仅仅一个键事件的基准键轨迹形成所述组的条件下,在步骤S64给出否定答案“否”。对于步骤S64处的否定答案“否”,中央处理单元20返回到图15A和15B所示的作业序列。
另一方面,在用于多于一个键事件的基准键轨迹形成所述组的情况下,步骤S64处的答案给出为肯定“是”。该基准键轨迹组表示重复。然后,中央处理单元20修正音符开速度VPi、经过的时间TPi、音符关速度VNi以及相对时间周期TNi。在此实例中,通过对几何平均的计算来确定音符开速度VPi的平均值和音符关速度VNi的平均值,并且通过对算术平均的计算来确定经过的时间TPi的平均值和经过的时间TNi的平均值。在图12中,利用箭头B来指示要求平均的基准键轨迹数据。
在步骤S65,中央处理单元20通过使用等式9来确定音符开速度VPj的平均值VPav。
VPav={ΠJ=0J(VPj)}1/(J+1)]]>...等式9在步骤S66,中央处理单元20通过使用等式10来确定音符关速度VNj的平均值VNav。索引j从0变化到J。
VNav={ΠJ=0J(VNj)}1/(J+1)]]>...等式10随后,中央处理单元20确定经过的时间TPi的平均值,如步骤867。索引j从1变化到J,使得维持所述组中的第一经过时间TP0。换言之,中央处理单元20不改变从前一事件中的最后的基准键轨迹到在该组开头处的第一基准键轨迹经过的时间。平均值TPav被表示如下。
TPav=ΣJ=1JTPj/(J)]]>...等式11最后,中央处理单元20确定经过的时间TNj的平均值,如步骤S68。由于索引j从0变化到(J-1),因此中央处理单元20维持从最后的基准键轨迹到下一组中的第一基准键轨迹经过的时间。平均值TNav被表示如下。
tnav=ΣJ=0J-1TNj/(J)]]>...等式12这样,中央处理单元20在不改变与前一组和下一组的相对关系的情况下,确定平均音符开速度VPav、平均音符关速度VNav、平均经过时间TPav、以及平均经过时间TNav。
随后,中央处理单元20将音符开速度VP0至VPJ的全部、音符关速度VN0至VNJ的全部、经过的时间TP1至TPJ、以及经过的时间TN0至TNJ-1替换为平均音符开速度VPav、平均音符关速度VNav、平均经过时间TPav和平均经过时间TNav,如步骤S69。中央处理单元20将第一经过时间TP0和最后的经过时间TNJ保持不变。
在步骤S69处的执行之后,中央处理单元20进行到步骤S60,并且对于所有黑键和白键1b/1c,重复步骤S63至S69处的作业。
如将从前面的描述理解的那样,运动控制器11在基准键轨迹数据块RT1至RT88中搜索表示重复的一个或多个基准键轨迹组,并且对所述组或每个组中的基准键轨迹数据求平均。即使演奏者在重复期间在极短的时间周期内按下和释放黑/白键,键运动也会通过所述平均而变得柔和。换言之,运动控制器使键运动匀速。结果,伺服控制器12强迫黑键和白键准确地在基准键轨迹上行进。
尽管已经示出和描述了本发明的特定实施例,但是对于本领域技术人员来说将清楚的是,可以在不背离本发明的精神和范围的情况下进行各种改变和修改。
可以使用速度传感器或加速度传感器作为键传感器。由于可以将位置、速度和加速度中的每一个转换为其它物理量,因此位置变换器和速度传感器不对本发明的技术范围设置任何限制。
中央处理单元20可以检查基准前向键轨迹和基准反向键轨迹,以查看是否在前往终点位置的途中释放了键或者在前往静止位置的途中按下了键。当答案给出为肯定时,中央处理单元20在基准前向键轨迹和基准反向键轨迹的相交时刻强迫键改变运动方向。
匀速运动不对本发明的技术范围设置任何限制。黑键1b和自键1c可以进行匀加速运动、匀速运动和匀加速运动之间的复合运动、或者由某条曲线表示的运动。
500毫秒和100毫秒不对本发明的技术范围设置任何限制。所述预定时间周期取决于键盘1a和相关联的键动作单元2的灵敏性。在其它型号的钢琴中,所述预定时间周期可以比500毫秒或100毫秒更短或更长。
在第一实施例中,如图7A和7B所示,使用在前一组中的最后键事件和第一键事件之间经过的时间作为一个或多个键事件组的标准,并且,在第二实施例中,如图15A和15B所示,参照返回到静止位置之后经过的时间来形成基准键轨迹组。可以采用另一标准来形成一个或多个键事件组和一个或多个基准键轨迹组。例如,可以将重复与单个全行程键运动区分开,以查看在键开事件和键关事件之间经过的时间tni是否短于一预定时间周期。经过的时间tni可以是1秒。在检查基准键轨迹的情况下,等于在键开事件和键关事件之间经过的时间的经过的时间充当所述标准。另一标准可以是键开事件vpi和下一键开事件vp(i+1)之间的音符开速度的差。如结合MIDI协议所述,所述速度具有128级。如果根据MIDI协议来表示响度,则音符开速度的临界差可以是第32级。另外,当音符开速度vpi和音符关速度vni的差大于16级时,中央处理单元20可以判定要开始新的组。可以采用多于一个标准。在检查基准键轨迹的情况下,中央处理单元可以通过基准前向键轨迹和相关联的基准反向键轨迹之间的交点、即基准前向键轨迹是否在键到达静止位置或终点位置之前与基准反向键轨迹相交,来判断所述重复。另外,可以将在静止位置/终点位置上经过的时间是否短于100毫秒用作另一标准。
可以以诸如例如2秒的预定时间间隔将键事件组或基准键轨迹组划分为多个子组。重复中的预定数目的键事件或者重复中的预定数目的基准键轨迹可以形成一个子组,以便使键事件或基准键轨迹均匀。所述预定数目可以是10或小于10的量级。
在图14中,TPi和TNi可以指示在到达静止位置/终点位置和到达终点位置/静止位置之间经过的时间。
尽管在上述实施例中通过对定时tpi/TPi、音符开速度vpi/VPi、定时tni/TNi和音符关速度vni/VNi求平均来修正键事件或基准键轨迹,但是可以从平均按键频率的观点来修正所述键事件或基准键轨迹。在此实例中,当在直立式钢琴中发现平均按键频率超过诸如8Hz的临界频率时,利用临界频率来替换该平均频率,并且在以临界频率按下黑键1b或白键1c的假设下修正键事件。在修正期间,可以从键事件组或基准键轨迹组中略去一些键事件。然而,不改变第一音符开键事件发生的时刻和最后的音符关键事件发生的时刻,以便在边界处保持键事件的连续性。
在另一变型中,可以在线性模型或非线性模型的基础上通过回归分析来分析键事件,以便根据该线性模型或非线性模型来修正所述键事件,如图9和12所示。在图9所示的实例中,在重复期间增大音符开速度,并且缩短相对时间周期。通过使用线性模型,在修正之后维持所述趋势。
在另一变型中,可以通过保持标准偏差来修正乐曲数据或基准键轨迹数据。例如,利用随机数来修正乐曲数据或基准键轨迹数据,使得将波动引入音符开速度。然而,在乐曲数据或基准键轨迹数据中维持所述标准偏差。键事件保持原始演奏中的趋势。
在通过匀加速运动将键从匀速运动改变为匀速运动的假设下,可以将基准键轨迹数据部分地替换为其它基准键轨迹数据。可以在对基准轨迹数据的分析之后确定运动种类。
当对键运动求平均时,可以修正朝向终点位置的键行程,或者可以修正朝向静止位置的键行程。
在自动演奏乐器中,可以采用上述变型中的多于一个变型。控制单元91可以通过显示器向用户提供要修正的对象的菜单。当用户指定一个或多个对象时,控制单元91在对乐曲数据或基准键轨迹数据的分析的基础上修正所选择的一个或多个对象。
用户可以对所述对象划分优先级。当控制单元91通过乐曲的节发现对剩余对象的进一步修正产生不自然的表现(artificial expression)时,控制单元91停止该修正。
可以将在记录时使用的乐器的种类存储在乐曲数据文件中。在此实例中,在记录时使用的乐器的种类与在重放时使用的乐器种类不同的条件下进行数据修正。在采用标准MIDI文件的情况下,以标识码的形式将在记录时使用的乐器种类储存在首标中。中央处理单元20可以在步骤S3或S42处的作业之前判断乐器的种类。
修正乐曲数据或者不修正该乐曲数据可取决于用户的意愿。
中央处理单元20可以在向随机存取存储器22的数据传递完成之前开始步骤S4或步骤S43处的作业。在此实例中,与向随机存取存储器22的数据传递并行地执行步骤S4或步骤S43处的作业。
可以在数据源和随机存取存储器22之间提供合适的数据缓冲器,以便将延迟时间引入数据传送中。该延迟时间可以是500毫秒。在此实例中,中央处理单元20对存储在数据缓冲器中的乐曲数据执行步骤S4或步骤S43处的作业。在此实例中,处理在另一乐器或个人计算机系统中产生的乐曲数据,好像重放以实时的方式进行一样。
可以通过使用音符开速度来表示音符关速度。当音符开速度为0时,音符开数据代码表示音符关事件。在此实例中,中央处理单元可以假定音符关速度以便确定基准反向键轨迹。在该确定之后,中央处理单元20形成一个/多个键事件组或一个/多个基准键轨迹组并且在必要时修正它们。
图11所示的伺服控制环的配置不对本发明的技术范围设置任何限制。可以对诸如例如位置、速度、加速度、力等的一个或多于一个物理量执行另一伺服控制环。还可以将表示偏置电流的常数加到乘积的和数u上。
直立式钢琴1不对本发明的技术范围设置任何限制。本发明属于在大钢琴、诸如例如静音钢琴的混合乐器、以及电子键盘的基础上制造的自动演奏器钢琴。可以在诸如例如钢片琴或管乐器的另一种乐器的基础上制造自动演奏乐器,只要该乐器具有多个用于指定要产生的音调的操纵器即可。
可以利用单芯片微计算机、单芯片微处理器或具有数据处理能力的另一种半导体器件来实现中央处理单元20和其它外围电子电路。可以用有线逻辑电路来代替所述计算机程序的一部分,并且可以将数字信号处理器用于某些作业。
中央处理单元20可以通过对音符开事件代码和音符关事件代码中的键编号的判断来确定重复。如果键的音符开事件和键的音符关事件继续,则中央处理单元20确定键被重复按下和释放。
中央处理单元20可以比较音符开事件代码和音符关事件代码,以便在不进行分类、即步骤S13至S15处的作业的情况下查看所述相对时间周期是否展示了重复。在此实例中,中央处理单元20将注意力集中在键编号之一,以便将相对时间周期与阈值进行比较,而不考虑其它键编号,并且对于其它键编号重复所述比较。
中央处理单元20可以使音符开速度/音符关速度vpj/VPj和vnj/VNj或者相对时间周期tpj/TPj和tnj/TNj均匀。
可以将自动演奏系统10提供给用户。在此实例中,用户通过将自动演奏系统10安装到原声钢琴中来将他们的原声钢琴改型为自动演奏器钢琴。另外,可以将自动演奏系统10作为物理上独立的单元提供给用户。在此实例中,可以在自动演奏之前将自动演奏系统10与各种型号的原声钢琴相组合。
自动演奏器钢琴的组成部件和通过执行所述计算机程序完成的作业与权利要求语言相关如下。
自动演奏器钢琴对应于“自动演奏乐器”,并且直立式钢琴1充当“乐器”。黑键1b和白键1c对应于“多个操纵器”,并且动作单元2、弦槌3、琴弦4和制音器39作为整体构成“音调生成器”。中央处理单元20、只读存储器21、随机存取存储器22、以及步骤S16至S22和S24至S26处的作业或者中央处理单元20、只读存储器21、随机存取存储器22和步骤S51至S58和S60至S62处的作业作为整体构成“搜索器”。中央处理单元20、只读存储器21、随机存取存储器22、以及步骤S27至S33处的作业或者中央处理单元20、只读存储器21、随机存取存储器22、以及步骤S63至S69处的作业作为整体构成“修正器”。键传感器6、活塞传感器8、脉宽调制器26、中央处理单元20、只读存储器21、随机存取存储器22、以及S2和S7至S11处的作业作为整体构成“信号调节器”。
音符开速度vpj或VPj、音符关速度vnj或VNj、相对时间周期tpj或TPj、以及相对时间周期tnj或TNj是“音调产生事件的性质”。表示音符开速度vpi、音符关速度vni、相对时间周期tpi和相对时间周期tni的乐曲数据、或者基准键轨迹数据充当“事件数据”。
被分配给预定时间周期500毫秒或100毫秒的只读存储器21中的存储位置充当“阈值保存器”,并且500毫秒或100毫秒是“阈值”。相对时间周期“tpi”或者黑键1b或白键1c停留在静止位置上经过的时间、即计算结果(TP-(10/VN×1000))充当“某个性质”。中央处理单元20、只读存储器21、随机存取存储器22、以及步骤S13至S15和S16至S26处的作业作为整体构成“比较器”。
中央处理单元20、只读存储器21、随机存取存储器22、以及步骤S13至S14处的作业作为整体构成“分类器”,并且中央处理单元20、只读存储器21、随机存取存储器22、以及步骤S16至S26处的作业作为整体构成“区分器”。
中央处理单元20、只读存储器21、随机存取存储器22、以及步骤S44处的作业作为整体构成“数据生成器”。中央处理单元20、只读存储器21、随机存取存储器22、以及步骤S45处的作业作为整体构成“分类器”,并且中央处理单元20、只读存储器21、随机存取存储器22、以及步骤S51至S62处的作业作为整体构成“区分器”。作为示例,从静止位置到基准点起的键行程被包含在“实验数据”中,并且常数α、β、γ和δ也充当“实验数据”。
权利要求
1.一种自动演奏乐器,用于顺着具有重复的乐曲小节产生音调,该自动演奏乐器包括乐器(1),包含多个操纵器(1b,1c),其被有选择地移动以便指定要产生的音调,和音调生成器(2,3,4,39),其连接到所述多个操纵器(1b,1c),并且产生利用为了所述音调而被移动的操纵器(1b,1c)所指定的所述音调;以及自动演奏系统(10),包含多个致动器(5),其被与所述多个操纵器(1b,1c)相关联地提供,并且响应驱动信号(DR),以便移动相关联的操纵器(1b,1c)以指定所述音调,和控制单元(91),其连接到所述多个致动器(5),用于有选择地将所述驱动信号(DR)提供给所述多个致动器(5),其特征在于所述控制单元(91)包含搜索器(20,21,22,S16-S22;20,21,22,S51-S58,S60-S62),其在表示乐曲小节的一组乐曲数据中搜索表示在所述多个操纵器(1b,1c)之一上的至少一个重复的音调产生事件,修正器(20,21,22,S27-S33;20,21,22,S63-S69),其连接到所述搜索器(20,21,22,S16-S22;20,21,22,S51-S58,S60-S62),并且修正表示所述音调产生事件的性质的事件数据,以便使所述音调产生事件的所述性质中的至少一个均匀,以及信号调节器(6,8,26,20,21,22,S2,S7-S11),其连接到所述修正器(20,21,22,S27-S33;20,21,22,S63-S69),并且在所述事件数据的基础上将所述驱动信号(DR)调节到最佳幅度,以便在所述音调产生事件的所述性质中的所述至少一个性质均匀的条件下,通过所述操纵器(1b,1c)的运动来使所述音调生成器产生音调。
2.如权利要求1所述的自动演奏乐器,其中,所述搜索器(20,21,22,S16-S22;20,21,22,S51-S58,S60-S62)包含阈值保存器(21),用于存储所述音调产生事件的某个性质的阈值,和比较器(20,21,22,S13-S15,S16-S26),其连接到所述阈值保存器(21),并且将所述音调产生事件的所述某个性质与所述阈值进行比较,以查看是否所述音调产生事件中的一个与所述音调产生事件中的另一个一起表示所述重复。
3.如权利要求2所述的自动演奏乐器,其中,所述比较器包含分类器(20,21,22,S13,S14),其按照被分配给所述多个操纵器(1b,1c)的操纵编号将所述乐曲数据分类,并且从所述乐曲数据中提取事件数据,以便有选择地将所述事件数据存储到分别被分配给所述多个操纵器(1b,1c)的数据块(K1-K88)中,和区分器(20,21,22,S16-S26),其连续地从所述数据块(K1-K88)中的每一个读出所述事件数据,并且通过与所述阈值的比较,将表示所述重复的所述音调产生事件的某些事件数据与表示其它表演风格的音调产生事件的其它事件数据区分开。
4.如权利要求2所述的自动演奏乐器,其中,所述某个性质是从所述多个操纵器(1b,1c)中的每一个改变运动方向的时刻到所述多个操纵器(1b,1c)中的所述每一个再次改变所述运动方向的时刻所经过的时间。
5.如权利要求2所述的自动演奏乐器,其中,所述某个性质是所述多个操纵器(1b,1c)中的每一个停止在所述多个操纵器(1b,1c)中的所述每一个的运动的转向点处所经过的时间。
6.如权利要求2所述的自动演奏乐器,其中,所述比较器包含数据生成器(20,21,22,S44),其在所述乐曲数据和实验数据的基础上确定所述多个操纵器(1b,1c)中的每一个的基准轨迹数据,分类器(20,21,22,S45),其按照被分配给所述多个操纵器(1b,1c)的操纵编号将所述基准轨迹数据分类,并且根据所述基准轨迹数据准备事件数据,以便有选择地将所述事件数据存储到分别被分配给所述多个操纵器(1b,1c)的数据块(RT1-RT88)中,和区分器(20,21,22,S51-S62),其连续地从所述数据块(RT1-RT88)中的每一个读出所述事件数据,并且通过与所述阈值的比较,将表示所述重复的所述音调产生事件的某些事件数据与表示其它表演风格的音调产生事件的其它事件数据区分开。
7.如权利要求1所述的自动演奏乐器,其中,所述乐器是钢琴(1),其具有充当所述多个操纵器的黑键(1b)和白键(1c)。
8.如权利要求7所述的自动演奏乐器,其中,所述黑键(1b)和所述白键(1c)连接到制音器(39)以及用于驱动弦槌(3)在旋转的终点撞击琴弦(4)的动作单元(2),并且所述制音器(39)、所述动作单元(2)、所述弦槌(3)和所述琴弦(4)充当所述音调生成器。
9.如权利要求1所述的自动演奏乐器,其中,所述控制单元(91)和所述多个致动器(5)与监控所述多个操纵器(1b,1c)的传感器(6,8)一起形成伺服控制环。
10.如权利要求9所述的自动演奏乐器,其中,所述传感器(8)通过所述多个致动器(5)的可运动部分(5b)的运动来间接地监控所述多个操纵器(1b,1c)。
11.如权利要求10所述的自动演奏乐器,还包括直接监控所述多个操纵器(1b,1c)的其它传感器(6)。
12.一种自动演奏系统(10),用于在乐器(1)上演奏乐曲小节,包括多个致动器(5),其被与所述乐器(1)的多个操纵器(1b,1c)相关联地提供,并且响应驱动信号(DR),以便移动相关联的操纵器(1b,1c),以指定要利用连接到所述多个操纵器(1b,1c)的所述乐器(1)的音调生成器(2,3,4,39)产生的音调;以及控制单元(91),其连接到所述多个致动器(5),以便有选择地将所述驱动信号(DR)提供给所述多个致动器(5),其特征在于所述控制单元包含搜索器(20,21,22,S16-S22;20,21,22,S51-S58,S60-S62),其在表示乐曲小节的一组乐曲数据中搜索表示在所述多个操纵器(1b,1c)之一上的至少一个重复的音调产生事件,修正器(20,21,22,S27-S33;20,21,22,S63-S69),其连接到所述搜索器(20,21,22,S16-S22;20,21,22,S51-S58,S60-S62),并且修正表示所述音调产生事件的性质的事件数据,以便使所述音调产生事件的所述性质中的至少一个均匀,以及信号调节器(6,8,26,20,21,22,S2,S7-S11),其连接到所述修正器(20,21,22,S27-S33;20,21,22,S63-S69),并且在所述事件数据的基础上将所述驱动信号(DR)调节到最佳幅度,以便在所述音调产生事件的所述性质中的所述至少一个性质均匀的条件下,通过所述操纵器(1b,1c)的运动来使所述音调生成器产生音调。
13.如权利要求12所述的自动演奏系统,其中,所述搜索器(20,21,22,S16-S22;20,21,22,S51-S58,S60-S62)包含阈值保存器(21),用于存储所述音调产生事件的某个性质的阈值,和比较器(20,21,22,S13-S15,S16-S26),其连接到所述阈值保存器(21),并且将所述音调产生事件的所述某个性质与所述阈值进行比较,以查看是否所述音调产生事件中的一个与所述音调产生事件中的另一个一起表示所述重复。
14.如权利要求13所述的自动演奏系统,其中,所述比较器包含分类器(20,21,22,S13,S14),其按照被分配给所述多个操纵器(1b,1c)的操纵编号将所述乐曲数据分类,并且从所述乐曲数据中提取事件数据,以便有选择地将所述事件数据存储到分别被分配给所述多个操纵器(1b,1c)的数据块(K1-K88)中,和区分器(20,21,22,S16-S26),其连续地从所述数据块(K1-K88)的每一个中读出所述事件数据,并且通过与所述阈值的比较,将表示所述重复的所述音调产生事件的事件数据与表示其它表演风格的音调产生事件的其它事件数据区分开。
15.如权利要求13所述的自动演奏系统,其中,所述某个性质是从所述多个操纵器(1b,1c)中的每一个改变运动方向的时刻到所述多个操纵器(1b,1c)中的所述每一个再次改变所述运动方向的时刻所经过的时间。
16.如权利要求13所述的自动演奏系统,其中,所述某个性质是所述多个操纵器(1b,1c)中的每一个停止在所述多个操纵器(1b,1c)中的所述每一个的运动的转向点处所经过的时间。
17.如权利要求13所述的自动演奏系统,其中,所述比较器包含数据生成器(20,21,22,S44),其在所述乐曲数据和实验数据的基础上确定所述多个操纵器(1b,1c)中的每一个的基准轨迹数据,分类器(20,21,22,S45),其按照被分配给所述多个操纵器(1b,1c)的操纵编号将所述基准轨迹数据分类,并且根据所述基准轨迹数据准备事件数据,以便有选择地将所述事件数据存储到分别被分配给所述多个操纵器(1b,1c)的数据块(RT1-RT88)中,和区分器(20,21,22,S51-S62),其连续地从所述数据块(RT1-RT88)的每一个中读出所述事件数据,并且通过与所述阈值的比较,将表示所述重复的所述音调产生事件的某些事件数据与表示其它表演风格的音调产生事件的其它事件数据区分开。
18.如权利要求12所述的自动演奏系统,其中,所述控制单元(91)和所述多个致动器(5)与监控所述多个操纵器(1b,1c)的传感器(6,8)一起形成伺服控制环。
19.如权利要求18所述的自动演奏系统,其中,所述传感器(8)通过所述多个致动器(5)的可运动部分(5b)的运动来间接地监控所述多个操纵器(1b,1c)。
20.如权利要求19所述的自动演奏系统,还包括直接监控所述多个操纵器(1b,1c)的其它传感器(6)。
全文摘要
当自动演奏器钢琴重演乐曲曲调时,自动演奏器钢琴有时候由于高速键运动而在重复时遗漏一个或多个音调;控制器(91)在乐曲数据文件中搜索表示重复的一系列键事件,并且在不改变从重复之前的最后键事件到重复之后的第一键事件所经过的时间的情况下使键运动均匀,使得自动演奏器钢琴较不易于遗漏音调。
文档编号G10F1/00GK101046951SQ20071008845
公开日2007年10月3日 申请日期2007年3月27日 优先权日2006年3月27日
发明者藤原佑二 申请人:雅马哈株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1