CN110216677B - 一种机械灵巧手弹琴动作序列的生成及其优化方法 - Google Patents
一种机械灵巧手弹琴动作序列的生成及其优化方法 Download PDFInfo
- Publication number
- CN110216677B CN110216677B CN201910546388.8A CN201910546388A CN110216677B CN 110216677 B CN110216677 B CN 110216677B CN 201910546388 A CN201910546388 A CN 201910546388A CN 110216677 B CN110216677 B CN 110216677B
- Authority
- CN
- China
- Prior art keywords
- note
- playing
- hand
- piano
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000009471 action Effects 0.000 title claims abstract description 36
- 230000000875 corresponding effect Effects 0.000 claims abstract description 39
- 230000033001 locomotion Effects 0.000 claims abstract description 21
- 230000033764 rhythmic process Effects 0.000 claims abstract description 20
- 238000004458 analytical method Methods 0.000 claims abstract description 16
- 230000002068 genetic effect Effects 0.000 claims abstract description 14
- 210000003811 finger Anatomy 0.000 claims description 55
- 230000008569 process Effects 0.000 claims description 20
- 210000004247 hand Anatomy 0.000 claims description 14
- 241000238876 Acari Species 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 13
- 230000000694 effects Effects 0.000 claims description 10
- 230000035772 mutation Effects 0.000 claims description 10
- 230000008030 elimination Effects 0.000 claims description 8
- 238000003379 elimination reaction Methods 0.000 claims description 8
- 210000004932 little finger Anatomy 0.000 claims description 8
- 230000003044 adaptive effect Effects 0.000 claims description 3
- 238000011156 evaluation Methods 0.000 claims description 3
- 238000010606 normalization Methods 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000004321 preservation Methods 0.000 claims description 2
- 210000000056 organ Anatomy 0.000 claims 1
- 238000005457 optimization Methods 0.000 description 4
- 241000282414 Homo sapiens Species 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 210000003813 thumb Anatomy 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000005057 finger movement Effects 0.000 description 1
- 210000005224 forefinger Anatomy 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 208000015181 infectious disease Diseases 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J11/00—Manipulators not otherwise provided for
- B25J11/003—Manipulators for entertainment
- B25J11/004—Playing a music instrument
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1664—Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
- B25J9/1666—Avoiding collision or forbidden zones
Landscapes
- Engineering & Computer Science (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Multimedia (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
本发明公开了一种机械灵巧手弹琴动作序列的生成及其优化方法。第一步:解析midi格式钢琴曲;第二步:确定弹琴时灵巧手双手运动的防碰撞及避让策略;第三步:根据解析得到的每个音符的音高信息,将其对应到琴键位置,根据合适的选择策略,在不发生碰撞的前提下确定该音符由左手或者右手来演奏;第四步:分析每小节内音符的节奏密度,规划弹琴动作序列依次执行的节奏;第五步:根据三、四步规划的结果,确定演奏每一个音符所用的手指,生成对应的动作序列;第六步:基于精英保留策略的遗传算法进行弹琴时的灵巧手的位置及其手指动作序列优化,得到弹琴动作的最优序列;第七步:将演奏动作信息编码成硬件驱动的指令帧,驱动硬件设备进行演奏。
Description
技术领域
本发明涉及自动弹奏技术领域,具体涉及一种机械灵巧手弹琴动作序列的生成及其优化方法。
背景技术
音乐艺术是人类最古老的艺术形式之一,具有节奏性和抒情性,是反映人类现实情感的重要方式之一。随着机器人技术、人工智能、计算机计算能力以及传感设备的传感能力的发展,机器人技术逐渐向人类的生活领域扩展,音乐机器人和舞蹈机器人等表演机器人也慢慢走向了大众的视野。现有的表演机器人多数为直接播放录制的音乐,随着音乐进行表演,然而机械灵巧手自动准确地完成歌曲演奏,再现了音乐的实际产生过程,使得娱乐性得到进一步提高,表演效果大大增加。
将机械灵巧手弹琴动作序列的自动生成及其优化方法用于灵巧手的自动弹琴,作为表演机器人的一种具体实现方式,将为人们带来耳目一新的表演效果,愈发能提升音乐艺术的感染力,增加音乐演奏的互动效果,使人们能够享受别具一格的艺术体验。同时,灵巧手自动弹琴将可以运用于相关的教学课程,作为音乐艺术教学手段的改进,或者与现有的教学方式互补,可以大大激发学习兴趣,真正实现寓教于乐,提高教学效果,甚至将能够在音乐分析和创作中发挥应有的作用。灵巧手自动准确地完成曲子演奏,具有较强的实用性、娱乐性和观赏性。
发明内容
针对以上问题,本发明提供了一种机械灵巧手弹琴动作序列的生成及其优化方法,主要包括以下几个步骤:
一种机械灵巧手弹琴动作序列的生成及其优化方法,包括以下步骤:
第一步:解析midi格式钢琴曲,提取曲子的节拍信息和每个音符的音高以及对应的时值(即每个音符发音的持续时间);
第二步:确定弹琴时灵巧手双手运动的防碰撞及避让策略;
第三步:根据解析得到的每个音符的音高信息,将其对应到琴键位置,根据合适的选择策略,在不发生碰撞的前提下确定该音符由左手或者右手来演奏;
第四步:分析每小节内音符的节奏密度,规划弹琴动作序列依次执行的节奏;
第五步:根据第三步和第四步规划的结果,确定演奏每一个音符所用的手指,生成对应的动作序列;
第六步:基于精英保留策略的遗传算法进行弹琴时的灵巧手的位置及其手指动作序列优化,得到弹琴动作的最优序列;
第七步:将演奏动作信息编码成硬件驱动的指令帧,驱动硬件设备进行演奏。
进一步的,所述的第一步具体步骤为:
首先解析文件头块的信息,midi文件开头的四个ASCII字符“MThd”用来标识该文件是midi文件,随后依次读取之后的四个字节,得到文件格式类型、音轨数以及四分音符的tick数;
然后解析数据描述部分,数据描述部分由若干结构相同的子数据构成,同一类别的数据存储在同一个音轨中,每个音轨在文件中标识为“MTrk”后接4个字节表示其类型,对音轨信息的解析包括从全局音轨中获取音乐的节拍、调号、调性以及每四分音符的绝对时间,以及从主音轨中获取弹奏每一个音符的音高、持续时间以及对应的力度,创建三元组note=<Pitch,Duration,Dynamic>进行记录并存储,其中Pitch为音符的音高,Duration为每个音符对应键位按下的持续时间,Dynamic为对应的力度信息;得到的解析结果中时间相关的信息为tick数,将相关的时间信息转换为绝对时间,其中,每一小节的绝对时间长度计算方式如(1)所示:
其中,BeatLong为每小节的绝对时长,Ticks为每四分音符包含的tick数,BeatNum为节拍信息的分子,BeatDen为节拍的分母;
每个音符按下时持续的绝对时间计算如(2)所示:
其中,Duration为每个音符持续的绝对时间,NoteTicks为文件记录的每个音符的持续tick数,TicksAbs为每个四分音符的绝对时间,Ticks为每个四分音符的Tick数。
进一步的,所述的第二步具体步骤为:
当需要移动某一只手的位置时,首先查询当前左手和右手的位置以及下一时刻左手和右手的位置,计算下一时刻左手和右手的间隔,若间隔大于阈值,即不会发生碰撞,正常移动即可;否则,查看下一时刻另一只手是否有手指在演奏,若另一只手空闲则进行避让,否则左右手同时切换位置,通过选择合适的手指进行演奏,从而避免碰撞。
进一步的,所述的第三步中所述左手和右手的在琴键上的覆盖区域分为左测部分、右侧部分和中间部分:左侧部分的音符均由左手来演奏,右侧部分的音符由右手来演奏,中间部分位置对应的音符,由演奏时最靠近该区域的手来完成演奏。
进一步的,所述的第四步中曲谱解析完毕后,计算每一节拍内的音符密度,将归一化处理后的值作为演奏时双手移动的速度所占最大速度的百分比,进而将得到演奏过程中不在同音符间切换时双手的移动速度;
音符密度的特征计算方式如(3)所示:
其中:Xdensity即为节奏密度,n为该节拍中的音符总数,BeatLong为每一小节的绝对时间长度。
进一步的,所述第五步:每个音符不论由左手或者右手来完成演奏,都将对应四种可能的手指动作,分别为食指、中指、无名指和小拇指中的任意一个按下,到达持续时间后抬起,根据第三步已经确定了的每个音符由左手或者右手完成演奏的结果,第四步确定了演奏的节奏,将可以生成对应的动作序列,即演奏每一个音符的动作信息包括该音符的位置、由左手或者右手演奏该音符、演奏时所用的手指以及演奏时的速度,可用一个四元组表示,记为<noteIndex,nhand,nfinger,speed>,其中noteIndex为音符的位置,nhand表示左手或者右手演奏该音符,nfinger表示演奏时所用的手指,speed表示演奏时的速度。
进一步的,所述第六步步骤如下:
步骤6.1:初始化种群大小,交叉概率,变异概率,最大进化代数,淘汰比例以及新生种群中保留的精英比例;
步骤6.2:确定编码方式;
步骤6.3:产生初始群体;
步骤6.4:确定适应度计算准则;
步骤6.5:适应度排序:根据适应度计算准则,依次计算出种群中的个体适应度,根据种群个体的适应度按照从大到小的顺序进行排序,以便进行后续的遗传操作。
步骤6.6:选择精英保留和淘汰低适应度个体,根据初始化时确定的要保留的精英比例、淘汰比例和种群规模,计算出要保留的精英个体数量和将被淘汰的个体数量,根据适应度选择满足数目要求的精英个体并完整复制到下一代,同时淘汰对应数量的个体;
步骤6.7:交叉运算;
步骤6.8:变异运算;
步骤6.9:生成新的种群后,计算新种群的适应值,迭代次数加一,进行新种群的遗传操作,直到达到迭代次数,输出最佳运动序列。
进一步的,所述的步骤6.2采用十进制编码的方式进行编码,依次记录食指到小拇指的标记为1~4,从而曲谱生成的手指序列将依次由1~4内的数字序列构成,对应于演奏每一个音符所使用的手指;
所述步骤6.3初始群体产生方法为初始群体中的每一个个体即为记录该乐曲中的每个音符由小拇指到食指的四个手指其中之一来完成演奏所生成的数字序列,生成每一个个体时,采用产生随机数的方式,对应每一个音符,在符合第三步所述的碰撞避让准则下,产生1~4的随机数,记录下该序列,采用同样的方式生成满足种群大小要求的个体,形成初始的种群;
所述步骤6.4的适应度准则为在演奏过程中,为保证演奏的流畅度和观赏效果,应该使得整个演奏过程中,左右手尽可能地移动路径较短,所以个体的适应度的评价函数即为演奏该乐曲过程中左右手移动的距离总和,计算方式如(4)所示:
进一步的,所述的步骤6.7交叉运算的方法为使用均匀交叉算子来选择父代个体进行等位交叉得到新的个体,并检验是否满足第二步所述的碰撞避让准则,如果不满足,放弃该个体并重新交叉生成新的个体,最终保证种群的个体数量满足要求。
进一步的,所述的步骤6.8变异运算为对新一代种群个体中的除精英个体外,根据变异概率选择变异个体和变异发生的位置,修改该位置为新的1~4随机数,代表该音符由其新生产的随机数表示的手指来进行演奏,并检查是否满足第三步的防碰撞要求。
本发明的优势和有益效果在于:
机械灵巧手弹琴,再现了音乐的实际产生过程,使得娱乐性得到提高,表演效果大大增加。midi文件作为乐器数字接口,是编曲界最广泛的音乐标准格式,可称为“计算机能理解的乐谱”,从midi文件解析即可生成手指运动序列,不用为了解析得到乐曲信息而采用特殊的数据存储方式来存储乐曲,使得音乐文件解析系统的通用性大大提高。
解析midi文件得到演奏所需要的信息后,自动规划生成手指动作序列,避免演奏过程中的左右手碰撞,并对演奏的动作序列进行优化,使得左右手在尽可能移动较短路径的情况下完成准确演奏,提高表演效果,增加观赏性。
用于机械灵巧手弹琴时从曲子文件自动生成弹琴动作序列,并对该序列进行优化,保证整个演奏过程中,双手在尽可能少移动的情况下准确地完成演奏,保证演奏的效果,可运用于服务业、教学和音乐创作中。
附图说明
图1:本发明工作流程图;
图2:midi文件解析系统流程图;
图3:基于精英保留策略的遗传算法进行弹琴时的灵巧手位置及其手指动作序列优化流程图;
图4:手指序列遗传算法规划结果对比图。
具体实施方式
下面结合说明书附图对本发明的技术方案作进一步说明。本发明提供一种机械灵巧手弹琴动作序列的自动生成及其优化方法,用于机械灵巧手弹琴时从midi文件自动生成动作序列,并对动作序列进行优化。具体实施时,设计并装配了硬件平台,开发对应的上位机控制软件。将灵巧手安装在电机驱动的滑台上进行演奏,滑台由plc进行控制,完成曲子的信息提取,自动生成弹琴动作序列并进行优化运动,根据优化结果规划演奏节奏,最后将规划结果编码成对应的指令帧,下发至硬件并驱动,完成演奏。具体步骤如图1所示:
第一步:建立midi文件解析系统,导入midi文件,解析midi格式文件,使音乐得到量化,从文件中提取出演奏需要的信息。Midi音乐文件作为电子乐器设备与计算机的标准化接口,是数字化的乐谱。Midi文件属于二进制文件,具有“文件头+数据描述”的基本结构。Midi文件的解析流程为:首先解析文件头块的信息,midi文件开头的四个ASCII字符“MThd”用来标识该文件是midi文件,随后依次读取之后的四个字节,得到文件格式类型、音轨数以及四分音符的tick数(Ticks);然后解析数据描述部分,数据描述部分由若干结构相同的子数据构成,同一类别的数据存储在同一个音轨中,每个音轨在文件中标识为“MTrk”后接4个字节表示其类型,对音轨信息的解析包括从全局音轨中获取音乐的节拍(节拍的分子BeatNum,节拍的分母BeatDen)、调号、调性以及每四分音符的绝对时间(TicksAbs),以及从主音轨中获取弹奏每一个音符的音高、持续时间(NoteTicks)以及对应的力度,创建三元组note=<Pitch,Duration,Dynamic>进行记录并存储,其中Pitch为音符的音高,Duration为每个音符对应键位按下的持续时间,Dynamic为对应的力度信息。Midi文件解析系统附图2。得到的解析结果中时间相关的信息为tick数,需要将相关的时间信息转换为绝对时间。
其中,每一小节的绝对时间长度计算方式如(1)所示:
其中,BeatLong为每小节的绝对时长,Ticks为每四分音符包含的tick数,BeatNum为节拍信息的分子,BeatDen为节拍的分母。
每个音符按下时持续的绝对时间计算如(2)所示:
其中,Duration为每个音符持续的绝对时间,NoteTicks为文件记录的每个音符的持续tick数,TicksAbs为每个四分音符的绝对时间,Ticks为每个四分音符的Tick数。
第二步:确定弹琴时灵巧手双手运动的防碰撞及避让策略。在演奏的过程中,当相邻音符的音高不同时,对应的琴键位置也不同,为了准确演奏对应的音符,灵巧手需要移动至对应的位置,为避免双手移动导致碰撞,需要设定左右手的间隔阈值。演奏过程中,当需要移动某一只手的位置时,首先查询当前左手和右手的位置以及下一时刻左手和右手的位置,计算下一时刻左手和右手的间隔,若间隔大于阈值,即不会发生碰撞,正常移动即可;否则,查看下一时刻另一只手是否有手指在演奏,若另一只手空闲则进行避让,否则左右手同时切换位置,通过选择合适的手指进行演奏,从而避免碰撞。
第三步:根据每个音符的音高信息,在保证不发生碰撞的前提下,确定该音符由左手或者右手的手指来完成演奏。音符的音高信息,在钢琴上对应着不同的琴键位置。midi文件解析得到了每个音符的音高,即每个音符对应的琴键已经确定,确定左右手在琴键上的覆盖区域,即可确定每个音符由是左手还是右手来完成演奏。以61键琴为例,为了达到拟人化的效果,凡是位于左侧15个琴键位置的音符均由左手来演奏,位于右侧15个琴键位置的音符由右手来演奏,中间6个位置对应的音符,由演奏时最靠近该区域的手来完成演奏。
第四步:自动生成弹琴的动作序列,分析每小节内音符的节奏密度,规划弹琴时左右手动作的节奏,即演奏不同音符时左右手进行不同位置间移动的速度。节奏密度与音乐的感染力和表现力息息相关,能表现出曲子轻快与紧张、快乐与忧伤。为了使音乐更具表现力,完美地还原音乐的节奏感和感染力,需要规划弹琴时候的节奏感,具体表现为节奏的松紧,若音乐节奏宽松,即单位时间内音符时值短而数量多,需要完成演奏的音符数量多,给人“快速”的感觉,相反地,若音乐节奏舒缓,即单位时间内音符时值长而数量少,需要完成演奏的音符数量少,给人“慢速”的感觉。
音符密度的特征计算方式如(3)所示:
其中:Xdensity即为节奏密度,n为该节拍中的音符总数,BeatLong为每一小节的绝对时间长度。
曲谱解析完毕后,计算每一节拍内的音符密度,将归一化处理后的值作为演奏时双手移动的速度所占最大速度的百分比,进而将得到演奏过程中不在同音符间切换时双手的移动速度。
第五步:分析每一节拍的节奏密度,规划弹琴的节奏;每个音符不论由左手或者右手来完成演奏,都将对应四种可能的手指动作,分别为食指、中指、无名指和小拇指中的任意一个按下,到达持续时间后抬起(由于灵巧手机械结构限制,大拇指无法进行演奏)。根据第三步已经确定了的每个音符由左手或者右手完成演奏的结果,第四步确定了演奏的节奏,将可以生成对应的动作序列,即演奏每一个音符的动作信息包括该音符的位置(noteIndex)、由左手或者右手演奏该音符(nhand)、演奏时所用的手指(nfinger)以及演奏时的速度(speed),可用一个四元组表示,记为<noteIndex,nhand,nfinger,speed>。
第六步:基于精英保留策略的遗传算法进行弹琴时的灵巧手左右手位置及其手指动作序列优化。基于精英保留策略的遗传算法附图3。
初始化种群大小,交叉概率,变异概率,最大进化代数,淘汰比例以及新生种群中保留的精英比例。
确定编码方式:第三步已经确定每一个音符将由左手或者右手来演奏,第四步确定了手指序列的生成方法,采用十进制编码的方式进行编码,即依次记录食指到小拇指的标记为1~4,从而曲谱生成的手指序列将依次由1~4内的数字序列构成,对应于演奏每一个音符所使用的手指。
产生初始群体:初始群体中的每一个个体即为记录该乐曲中的每个音符由小拇指到食指的四个手指其中之一来完成演奏所生成的数字序列。生成每一个个体时,采用产生随机数的方式,对应每一个音符,在符合第三步所述的碰撞避让准则下,产生1~4的随机数,记录下该序列。采用同样的方式生成满足种群大小要求的个体,形成初始的种群。
确定适应度计算准则:在演奏过程中,为保证演奏的流畅度和观赏效果,应该使得整个演奏过程中,左右手尽可能地移动路径较短,所以个体的适应度的评价函数即为演奏该乐曲过程中左右手移动的距离总和。计算方式如(4)所示:
适应度排序:根据适应度计算准则,依次计算出种群中的个体适应度,根据种群个体的适应度按照从大到小的顺序进行排序,以便进行后续的遗传操作。
选择精英保留和淘汰低适应度个体:根据初始化时确定的要保留的精英比例、淘汰比例和种群规模,计算出要保留的精英个体数量和将被淘汰的个体数量,根据适应度选择满足数目要求的精英个体并完整复制到下一代,同时淘汰对应数量的个体。
交叉运算:使用均匀交叉算子来选择父代个体进行等位交叉得到新的个体,并检验是否满足第二步所述的碰撞避让准则,如果不满足,放弃该个体并重新交叉生成新的个体,最终保证种群的个体数量满足要求。
变异运算:对新一代种群个体中的除精英个体外,根据变异概率选择变异个体和变异发生的位置,修改该位置为新的1~4随机数,代表该音符由其新生产的随机数表示的手指来进行演奏,并检查是否满足第三步的防碰撞要求。
生成新的种群后,计算新种群的适应值,迭代次数加一,进行新种群的遗传操作,直到达到迭代次数,输出最佳运动序列。
采用以上方法,图4为对《命运交响曲》的midi文件解析后自动生成的弹琴动作序列进行优化的结果。解析得到2360个音符,进行遗传算法优化,调试了三组参数,参数一:种群规模150,迭代次数200,选择复制到下一代的精英个体数1,交叉概率0.8,变异概率0.5;参数二:种群规模,200,迭代次数175,选择复制到下一代的精英个体2,交叉概率0.8,变异概率0.5;参数三:种群规模400,迭代次数400,选择复制到下一代的个体数4,交叉概率0.8,变异概率0.5。从附图看出,结果三组参数下最终结果都能达到收敛,且不同参数下收敛结果基本一致,但是收敛速度不同,明显可以看出,在参数二下,较快达到了收敛。
第七步:将演奏信息编码成硬件驱动指令帧,包括对应的琴键位置、灵巧手需要按下的手指以及双手在不同音符间切换时候的切换速度,从而驱动硬件设备进行演奏。
任意给定一首midi格式的钢琴曲,该方法将自动完成曲子的解析,生成灵巧手弹琴时需要的手指动作序列,并对该序列进行优化,最后将优化后的规划结果封装成硬件驱动的指令帧,驱动硬件准确无误地完成演奏。
Claims (10)
1.一种机械灵巧手弹琴动作序列的生成及其优化方法,其特征在于包括以下步骤:
第一步:解析midi格式钢琴曲,提取曲子的节拍信息和每个音符的音高以及对应的时值(即每个音符发音的持续时间);
第二步:确定弹琴时灵巧手双手运动的防碰撞及避让策略;
第三步:根据解析得到的每个音符的音高信息,将其对应到琴键位置,根据合适的选择策略,在不发生碰撞的前提下确定该音符由左手或者右手来演奏;
第四步:分析每小节内音符的节奏密度,规划弹琴动作序列依次执行的节奏;
第五步:根据第三步和第四步规划的结果,确定演奏每一个音符所用的手指,生成对应的动作序列;
第六步:基于精英保留策略的遗传算法进行弹琴时的灵巧手的位置及其手指动作序列优化,得到弹琴动作的最优序列;
第七步:将演奏动作信息编码成硬件驱动的指令帧,驱动硬件设备进行演奏。
2.根据权利要求1所述的一种机械灵巧手弹琴动作序列的生成及其优化方法,其特征在于所述的第一步具体步骤为:
首先解析文件头块的信息,midi文件开头的四个ASCII字符“MThd”用来标识该文件是midi文件,随后依次读取之后的四个字节,得到文件格式类型、音轨数以及四分音符的tick数;
然后解析数据描述部分,数据描述部分由若干结构相同的子数据构成,同一类别的数据存储在同一个音轨中,每个音轨在文件中标识为“MTrk”后接4个字节表示其类型,对音轨信息的解析包括从全局音轨中获取音乐的节拍、调号、调性以及每四分音符的绝对时间,以及从主音轨中获取弹奏每一个音符的音高、持续时间以及对应的力度,创建三元组note=<Pitch,Duration,Dynamic>进行记录并存储,其中Pitch为音符的音高,Duration为每个音符对应键位按下的持续时间,Dynamic为对应的力度信息;得到的解析结果中时间相关的信息为tick数,将相关的时间信息转换为绝对时间,其中,每一小节的绝对时间长度计算方式如(1)所示:
其中,BeatLong为每小节的绝对时长,Ticks为每四分音符包含的tick数,BeatNum为节拍信息的分子,BeatDen为节拍的分母;
每个音符按下时持续的绝对时间计算如(2)所示:
其中,Duration为每个音符持续的绝对时间,NoteTicks为文件记录的每个音符的持续tick数,TicksAbs为每个四分音符的绝对时间,Ticks为每个四分音符的Tick数。
3.根据权利要求1所述的一种机械灵巧手弹琴动作序列的生成及其优化方法,其特征在于所述的第二步具体步骤为:
当需要移动某一只手的位置时,首先查询当前左手和右手的位置以及下一时刻左手和右手的位置,计算下一时刻左手和右手的间隔,若间隔大于阈值,即不会发生碰撞,正常移动即可;否则,查看下一时刻另一只手是否有手指在演奏,若另一只手空闲则进行避让,否则左右手同时切换位置,通过选择合适的手指进行演奏,从而避免碰撞。
4.根据权利要求1所述的一种机械灵巧手弹琴动作序列的生成及其优化方法,其特征在于所述的第三步中所述左手和右手的在琴键上的覆盖区域分为左侧部分、右侧部分和中间部分:左侧部分的音符均由左手来演奏,右侧部分的音符由右手来演奏,中间部分位置对应的音符,由演奏时最靠近该区域的手来完成演奏。
6.根据权利要求1所述的一种机械灵巧手弹琴动作序列的生成及其优化方法,其特征在于所述第五步:每个音符不论由左手或者右手来完成演奏,都将对应四种可能的手指动作,分别为食指、中指、无名指和小拇指中的任意一个按下,到达持续时间后抬起,根据第三步已经确定了的每个音符由左手或者右手完成演奏的结果,第四步确定了演奏的节奏,将可以生成对应的动作序列,即演奏每一个音符的动作信息包括该音符的位置、由左手或者右手演奏该音符、演奏时所用的手指以及演奏时的速度,可用一个四元组表示,记为<noteIndex,nhand,nfinger,speed>,其中noteIndex为音符的位置,nhand表示左手或者右手演奏该音符,nfinger表示演奏时所用的手指,speed表示演奏时的速度。
7.根据权利要求1所述的一种机械灵巧手弹琴动作序列的生成及其优化方法,其特征在于第六步步骤如下:
步骤6.1:初始化种群大小,交叉概率,变异概率,最大进化代数,淘汰比例以及新生种群中保留的精英比例;
步骤6.2:确定编码方式;
步骤6.3:产生初始群体;
步骤6.4:确定适应度计算准则;
步骤6.5:适应度排序:根据适应度计算准则,依次计算出种群中的个体适应度,根据种群个体的适应度按照从大到小的顺序进行排序,以便进行后续的遗传操作;
步骤6.6:选择精英保留和淘汰低适应度个体,根据初始化时确定的要保留的精英比例、淘汰比例和种群规模,计算出要保留的精英个体数量和将被淘汰的个体数量,根据适应度选择满足数目要求的精英个体并完整复制到下一代,同时淘汰对应数量的个体;
步骤6.7:交叉运算;
步骤6.8:变异运算;
步骤6.9:生成新的种群后,计算新种群的适应值,迭代次数加一,进行新种群的遗传操作,直到达到迭代次数,输出最佳运动序列。
8.根据权利要求7所述的一种机械灵巧手弹琴动作序列的生成及其优化方法,其特征在于所述的步骤6.2采用十进制编码的方式进行编码,依次记录食指到小拇指的标记为1~4,从而曲谱生成的手指序列将依次由1~4内的数字序列构成,对应于演奏每一个音符所使用的手指;
所述步骤6.3初始群体产生方法为初始群体中的每一个个体即为记录乐曲中的每个音符由小拇指到食指的四个手指其中之一来完成演奏所生成的数字序列,生成每一个个体时,采用产生随机数的方式,对应每一个音符,在符合第三步所述的碰撞避让准则下,产生1~4的随机数,记录下该序列,采用同样的方式生成满足种群大小要求的个体,形成初始的种群;
所述步骤6.4的适应度准则为在演奏过程中,为保证演奏的流畅度和观赏效果,应该使得整个演奏过程中,左右手尽可能地移动路径较短,所以个体的适应度的评价函数即为演奏该乐曲过程中左右手移动的距离总和,计算方式如(4)所示:
9.根据权利要求7所述的一种机械灵巧手弹琴动作序列的生成及其优化方法,其特征在于所述的步骤6.7交叉运算的方法为使用均匀交叉算子来选择父代个体进行等位交叉得到新的个体,并检验是否满足第二步所述的碰撞避让准则,如果不满足,放弃该个体并重新交叉生成新的个体,最终保证种群的个体数量满足要求。
10.根据权利要求7所述的一种机械灵巧手弹琴动作序列的生成及其优化方法,其特征在于所述的步骤6.8变异运算为对新一代种群个体中的除精英个体外,根据变异概率选择变异个体和变异发生的位置,修改该位置为新的1~4随机数,代表该音符由其新生产的随机数表示的手指来进行演奏,并检查是否满足第三步的防碰撞要求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910546388.8A CN110216677B (zh) | 2019-06-21 | 2019-06-21 | 一种机械灵巧手弹琴动作序列的生成及其优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910546388.8A CN110216677B (zh) | 2019-06-21 | 2019-06-21 | 一种机械灵巧手弹琴动作序列的生成及其优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110216677A CN110216677A (zh) | 2019-09-10 |
CN110216677B true CN110216677B (zh) | 2022-04-01 |
Family
ID=67814471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910546388.8A Active CN110216677B (zh) | 2019-06-21 | 2019-06-21 | 一种机械灵巧手弹琴动作序列的生成及其优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110216677B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110861086A (zh) * | 2019-11-20 | 2020-03-06 | 珠海格力智能装备有限公司 | 机器人弹奏钢琴的控制方法、装置、存储介质和机器人 |
CN111179385B (zh) * | 2019-12-31 | 2021-04-02 | 网易(杭州)网络有限公司 | 一种舞蹈动画的处理方法及装置、电子设备、存储介质 |
CN111627410B (zh) * | 2020-05-12 | 2022-08-09 | 浙江大学 | 一种midi多轨序列表示方法和应用 |
CN114347070B (zh) * | 2022-03-18 | 2022-07-12 | 之江实验室 | 基于仿人臂爪机器人的弹琴动作控制方法、系统及装置 |
CN116728419B (zh) * | 2023-08-09 | 2023-12-22 | 之江实验室 | 弹琴机器人的连续弹琴动作规划方法、系统、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2469506A1 (en) * | 2010-12-24 | 2012-06-27 | National Taiwan University of Science and Technology | Chord-playing robot system and method for controlling the same |
CN102615648A (zh) * | 2011-01-28 | 2012-08-01 | 范钦雄 | 机器人系统及利用该机器人系统弹奏和弦的方法 |
CN108705540A (zh) * | 2018-04-27 | 2018-10-26 | 中国地质大学(武汉) | 一种双臂扬琴机器人的敲击避碰方法、设备及存储设备 |
CN108789418A (zh) * | 2018-08-03 | 2018-11-13 | 中国矿业大学 | 柔性机械臂的控制方法 |
CN109202935A (zh) * | 2018-10-30 | 2019-01-15 | 希格斯动力科技(珠海)有限公司 | 弹奏机器人的手部步进电机控制方法及装置 |
-
2019
- 2019-06-21 CN CN201910546388.8A patent/CN110216677B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2469506A1 (en) * | 2010-12-24 | 2012-06-27 | National Taiwan University of Science and Technology | Chord-playing robot system and method for controlling the same |
CN102615648A (zh) * | 2011-01-28 | 2012-08-01 | 范钦雄 | 机器人系统及利用该机器人系统弹奏和弦的方法 |
CN108705540A (zh) * | 2018-04-27 | 2018-10-26 | 中国地质大学(武汉) | 一种双臂扬琴机器人的敲击避碰方法、设备及存储设备 |
CN108789418A (zh) * | 2018-08-03 | 2018-11-13 | 中国矿业大学 | 柔性机械臂的控制方法 |
CN109202935A (zh) * | 2018-10-30 | 2019-01-15 | 希格斯动力科技(珠海)有限公司 | 弹奏机器人的手部步进电机控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110216677A (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110216677B (zh) | 一种机械灵巧手弹琴动作序列的生成及其优化方法 | |
CN1728232B (zh) | 使踏瓣准确到达半程点的自动演奏器及其乐器和使用方法 | |
Chen et al. | Automatic composition of guitar tabs by transformers and groove modeling | |
CN111554255B (zh) | 基于循环神经网络的midi演奏风格自动转换系统 | |
Lee et al. | Automatic synchronization of background music and motion in computer animation | |
Weinberg et al. | Robotic musicianship: embodied artificial creativity and mechatronic musical expression | |
CN110861086A (zh) | 机器人弹奏钢琴的控制方法、装置、存储介质和机器人 | |
Berndt et al. | Modelling musical dynamics | |
CN114347070B (zh) | 基于仿人臂爪机器人的弹琴动作控制方法、系统及装置 | |
CN116959391A (zh) | 一种机械手演奏钢琴模拟方法及系统 | |
Luo et al. | Detection of Common Mistakes in Novice Violin Playing. | |
Okumura et al. | Laminae: A stochastic modeling-based autonomous performance rendering system that elucidates performer characteristics. | |
Lo | Evolving cellular automata for music composition with trainable fitness functions | |
Fonteles et al. | User experience in a kinect-based conducting system for visualization of musical structure | |
Nikolaidis et al. | Playing with the masters: A model for improvisatory musical interaction between robots and humans | |
Yamamoto et al. | Livo: Sing a song with a vowel keyboard | |
JP3735969B2 (ja) | 指揮動作判定方法および指揮動作判定装置 | |
JP2019109357A (ja) | 音楽情報の特徴解析方法及びその装置 | |
Solis et al. | Implementation of expressive performance rules on the WF-4RIII by modeling a professional flutist performance using NN | |
Srivatsan et al. | Checklist models for improved output fluency in piano fingering prediction | |
Schankler et al. | Emergent formal structures of factor oracle-driven musical improvisations | |
Gentry | Dancing cheek to cheek: Haptic communication between partner dancers and swing as a finite state machine | |
Shi et al. | Optimized Fingering Planning for Automatic Piano Playing Using Dual-arm Robot System | |
Chew et al. | Performing music: Humans, computers, and electronics | |
Raphael et al. | Orchestral accompaniment for a reproducing piano |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |