一种基于乐器数字接口的虚拟扬琴系统

申请号 CN201710482942.1 申请日 2017-06-22 公开(公告)号 CN107316536A 公开(公告)日 2017-11-03
申请人 华中师范大学; 发明人 王志锋; 刘清堂; 巴深; 赵刚;
摘要 本 发明 公开了一种基于 乐器 数字 接口 的虚拟扬琴系统,包括用户演奏模 块 、自动演奏模块、知识讲解模块;用户演奏模块,主要包含三个部分,第一部分用于 鼠标 点击演奏、 手指 触摸演奏;第二部分用于记录回放用户演奏的乐曲,包含保存乐曲功能、载入乐曲文件功能、清除乐曲功能等;第三部分用于用户演奏评价,包含演奏乐曲的总得分、演奏错误音符信息以及相关建议。自动演奏模块,用于MIDI文件解析、扬琴声音和音符动画触发以及乐曲演奏。知识讲解模块,用于扬琴介绍、扬琴乐理知识讲解、扬琴演奏讲解。本发明将各项功能整合起来,可以单独作为一个独立的教学系统;本发明操作简单,操作界面用户友好性佳;本发明系统 稳定性 高,具有很强的鲁棒性。
权利要求

1.一种基于乐器数字接口的虚拟扬琴系统,其特征在于:包括用户演奏模、自动演奏模块、知识讲解模块;
所述用户演奏模块,用于多模态人机交互、演奏作品存储及回放子、演奏作品评价;
所述自动演奏模块,用于MIDI文件解析、扬琴声音和音符动画触发以及乐曲演奏;
所述知识讲解模块,用于扬琴介绍,扬琴乐理知识讲解、扬琴演奏技巧讲解。
2.根据权利要求1所述的基于乐器数字接口的虚拟扬琴系统,其特征在于:所述用户演奏模块,包括多模态人机交互子模块、演奏作品存储及回放子模块、演奏作品评价子模块;
所述多模态人机交互子模块包括手指触摸演奏子模块和鼠标键盘手指触摸,所述手指触摸演奏子模块用于通过手指触摸进行多触点演奏;所述鼠标键盘手指触摸用于通过鼠标、键盘等设备进行演奏;
所述演奏作品存储及回放子模块包括保存演奏乐曲子模块和回放演奏乐曲子模块;
所述演奏作品评价子模块用于对用户演奏的内容进行评价分析。
3.根据权利要求2所述的基于乐器数字接口的虚拟扬琴系统,其特征在于:所述多模态人机交互子模块,采用WPF中的MediaElement类实现扬琴音色的播放。
4.根据权利要求2所述的基于乐器数字接口的虚拟扬琴系统,其特征在于:所述演奏作品存储及回放子模块,乐曲的记录内容有音符号和时间点信息。
5.根据权利要求2所述的基于乐器数字接口的虚拟扬琴系统,其特征在于:所述演奏作品评价子模块,提取用户演奏的特征序列和模板库中的MIDI特征序列,根据DTW算法计算用户演奏特征序列与MIDI特征序列的相似度。
6.根据权利要求1所述的基于乐器数字接口的虚拟扬琴系统,其特征在于:所述自动演奏模块,包括MIDI文件解析子模块、MIDI文件播放子模块、动画触发子模块。
7.根据权利要求6所述的基于乐器数字接口的虚拟扬琴系统,其特征在于:所述MIDI文件播放子模块,声音触发的实现由DirectX声音组件实现。
8.根据权利要求6所述的基于乐器数字接口的虚拟扬琴系统,其特征在于:所述动画触发子模块,定义通道消息类解析MIDI中的音符事件;在解析MIDI中的音符事件时,不仅需要传MIDI消息传递数据信息,还要传递其状态信息,因此需要为每个MIDI消息类定义对应的MIDI事件参数。
9.根据权利要求1所述的基于乐器数字接口的虚拟扬琴系统,其特征在于:所述知识讲解模块,包括扬琴结构讲解子模块、扬琴乐理知识讲解子模块、扬琴演奏技巧讲解子模块。
10.根据权利要求1所述的基于乐器数字接口的虚拟扬琴系统,其特征在于:所述扬琴演奏技巧讲解子模块,在WPF中播放声音的方法有两种,一种是采用传统的SoundPlayer播放音频,另外一种是WPF专用的MediaPlayer类。

说明书全文

一种基于乐器数字接口的虚拟扬琴系统

技术领域

[0001] 本发明属于虚拟现实人机交互以及教育技术领域,具体涉及一种针对民族乐器教学的基于乐器数字接口的虚拟扬琴系统。技术背景
[0002] 器乐教学是音乐教学的重要组成部分,它对于培养学生高尚的道德情操、良好的审美观念、创新性的思维能具有不可替代的作用。在传统器乐教学中,所需的民族乐器和西洋乐器价格较为昂贵,而且需要有专的音乐教师和教学场地进行教学,使得器乐教学方式较为单一,很难进一步的普及和发展。而随着虚拟乐器、虚拟音乐软件等虚拟现实技术以及电脑音乐制作技术迅猛发展,使得器乐教学不再局限于场地和设备,为器乐教学的发展带来了新的契机。
[0003] 目前现有的虚拟乐器教学软件大都是由美国、日本等西方国家研发出来的,主要针对常见的西洋乐器,例如琴、吉他等。国产的虚拟乐器软件数量较少,专门针对我国民族乐器而设计的虚拟乐器教学软件尤为罕见,这无疑限制了我国民族音乐的传承和发展。

发明内容

[0004] 为了解决上述技术问题,本发明提供了一种基于乐器数字接口的虚拟扬琴系统。
[0005] 本发明所采用的技术方案是:一种基于乐器数字接口的虚拟扬琴系统,其特征在于:包括用户演奏模、自动演奏模块、知识讲解模块;
[0006] 所述用户演奏模块,用于多模态人机交互、演奏作品存储及回放子、演奏作品评价;
[0007] 所述自动演奏模块,用于MIDI文件解析、扬琴声音和音符动画触发以及乐曲演奏;
[0008] 所述知识讲解模块,用于扬琴介绍,扬琴乐理知识讲解、扬琴演奏技巧讲解。
[0009] 本发明的基本原理是:(1)系统界面简洁友好。系统界面是用户进行演奏学习的主要场地,界面的友好性在一定程度上影响用户学习的心情和演奏效果。因此在界面设计时,需要选择舒服的色彩搭配,并在功能按钮颜色样式方面进行合理的设计规划,在保证实用性的同时,尽可能的保持界面的简洁。(2)扬琴乐理知识介绍。对于初学扬琴的学习者来说,对扬琴还没有一定的概念,需要对其进行扬琴知识的培训普及。因此系统中扬琴知识介绍模块的添加非常必要。它可以让学习者了解扬琴的发展、结构特征、乐理知识以及演奏技巧等,为后续的学习奠定基础。(3)多平台多方式演奏。目前,大部分学习者拥有移动终端设备,桌面版的鼠标键盘点击的方式已经不能满足他们的需求。移动设备已经深入到人们生活的方方面面,而且触摸方式的直接交互深得现代人的喜爱,因此,系统需在不同设备终端稳定运行,才能满足现代用户的需求。(4)用户演奏乐曲录制回放。演奏完成后,反复试听自己演奏的乐曲将有助于用户快速捕捉到演奏错误的片段。用户可以将演奏错误的片段重点练习,快速提升演奏技巧。因此,具有录制回放功能将有助于学生的技艺练习。(5)用户演奏评价。好的评价可以激发学生内在的学习动力,促进学生学习的积极性。乐器演奏评价也不例外,对用户演奏的内容进行评价分析会在一定程度上激发学生学习的热情,提高学生的演奏平。
[0010] 本发明与现有虚拟乐器系统相比,具有以下的优点和有益效果:
[0011] (1)本发明将各项功能整合起来,可以单独作为一个独立的教学系统;
[0012] (2)本发明操作简单,操作界面用户友好性佳;
[0013] (3)本发明系统稳定性高,具有很强的鲁棒性。附图说明
[0014] 图1为本发明实施例的结构原理图。

具体实施方式

[0015] 为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
[0016] 本系统中系统架构和业务逻辑处理采用C#语言实现,前端界面设计采用.Net新一代的界面开发平台WPF来实现,使用VisualStudio2015进行开发和集成发布。
[0017] 本发明提供的一个基于乐器数字接口的虚拟扬琴系统,包括以下功能模块:
[0018] 功能1:用户演奏模块;
[0019] 功能1.1:多模态人机交互子模块;若有可触摸设备,用户可以通过手指触摸进行多触点演奏;若无可触摸设备,用户亦可通过鼠标、键盘等计算机常用硬件设备进行演奏。因此系统采用WPF中的MediaElement类实现扬琴音色的播放,MediaElement元素是WPF特有的播放音频的方法,可以直接使用XAML来修改音频属性。相比传统的SoundPlayer类,MediaElement具有以下优势:
[0020] (1)不仅可以支持.wav音频文件还可以支持Windows Media Player能播放的格式;
[0021] (2)可以同时播放多个声音;
[0022] (3)可以调整音量大小(Volume属性)等。
[0023] 功能1.2:演奏作品存储及回放子模块;演奏完成后,反复试听自己演奏的乐曲将有助于用户快速捕捉到演奏错误的片段。乐曲的记录内容有音符号和时间点信息。系统确定音调后,建立列表List序列存储演奏的音符信息和时间点信息。List是C#中的一种泛型集合,主要通过ArrayList和自定义集合来实现,用于解决一系列的问题。创建泛型集合的语法为ListList Of T=new List(),其中T为集合要使用的类型,可以是简单的数据类型(string、int等),也可以是用户自定义类型。本系统采用自定义的se类,其数据成员包括object_sender(触发器)、RoutedEventArgs(包含状态信息、事件数据与路由信息)、time(音符事件的时间点信息),该类的目的是记录用户演奏的关键信息。它将一系列音符事件和音符事件发生的时间点信息按照顺序存储在集合中。
[0024] 如何获取音符事件的时间点信息是记录用户演奏信息的关键。而C#中的Stopwatch实例可以实现对一个时间间隔工作时间的测量。在使用Stopwatch时,调用Start方法开始记录运行时间,调用Stop方法停止测量运行时间,还可以使用Elapsed属性获得运行时间。系统采用Stopwatch类来获取时间点信息,并通过构建Stop_Watch函数来实现。
[0025] 系统记录完用户演奏的关键信息后,遍历整个集合se写入流进行存储,将这些信息保存为一个文本文件,为后续乐曲的回放做铺垫。
[0026] 用户选择载入乐曲文件后,系统将重新读取集合se重新播放用户演奏的乐曲。如果用户不想保存演奏乐曲也可以选择清除按钮,采用集合的clear方法实现。
[0027] 功能1.3:演奏作品评价子模块;好的评价可以激发学生内在的学习动力,促进学生学习的积极性。乐器演奏评价也不例外,对用户演奏的内容进行评价分析会在一定程度上激发学生学习的热情,提高学生的演奏水平。将用户演奏的特征序列V'与模板中的V进行相似度对比。以一个生日快乐歌中一句为例,模板中的特征序列:
[0028] V=<(55,0),(55,250),(57,500),…,(60,6000)>;
[0029] 音符总数N为12,时间以毫秒为单位。我们以随机的用户的演奏为例,特征序列:
[0030] V'=<(55,0),(55,285),(59.656),….(60,6854)>;
[0031] 首先将V'和V中的音高序列一一进行比对,得到正确音高个数n为10个,则计算出音高得分R1=n/N*100为83分,并记录错误音符位置。然后计算节奏得分,为节奏设定三个级别的阈值,得分分别为100,80,60分,超出阈值不得分。
[0032] 根据上述算法得出节奏得分为78.6分。人们对音乐旋律最敏感的元素是音高,然后是节奏。而且对于初学者来说节奏的控制较为困难,为避免打击用户学习的积极性,系统为给予音高和节奏一定的权重比例,分别为0.65和0.35,最后得出该段的总评分为R=R1*0.65+R2*0.35=81.5分。
[0033] 功能2:自动演奏模块;
[0034] 功能2.1:***.mid格式文件的自动播放子模块,用户选择制作好的MIDI文件,系统将自动地解析MIDI文件内容,并根据MIDI文件的一系列事件信息播放声音触发音符动画。在播放MIDI文件的过程中,用户可以暂停、继续和停止自动播放的过程。用户通过自动演奏模块可以学习别人演奏制作好的曲子,并通过用户演奏模块进行练习;
[0035] 在本系统中所有MIDI消息类都必须实现IMidiMessage这个接口。它抽象了所有与MIDI相关的消息类型、消息状态、事件类型等。MIDI消息包含通道消息和系统消息,其中系统消息对应着消息类SysExMessage(专用消息)、MetaMessage(全局控制消息)和继承于ShortMessage(短消息)的SysCommomMessage(公共消息)与SysRealtimeMessage(实时消息)两类消息。ChannelMessage为通道消息,表示特定的通道控制消息以及音符消息。
[0036] 功能2.2:动画触发子模块;自动演奏动画主要是指音符动画的产生,当播放到该音符时,系统在该音符位置产生动画。EventArgs是所有MIDI事件参数类的基类,因此在定义MIDI消息类时需继承该事件类。通道消息类主要用于传递MIDI相关的音符信息。因此系统构建ChannelMessage通道消息对应的事件参数类ChannelMessageEventArgs,并定义与ChannelMessage消息对应的事件。
[0037] 首先构建ChannelMessageEventArgs事件的实例,传送相应的MIDI消息,然后读取事件对应的MIDI消息,MIDI消息主要由只读属性message提供的。
[0038] 定义两个通道事件的实例,其中第一个包含三个参数,第二个包含四个参数。根据不同的通道消息命令,调用不同的方法实现。具体含义如表1所示。
[0039] 表1通道事件实例化参数
[0040]
[0041] 接下来需要订阅通道消息事件,传送MIDI事件参数,触发动画发生。
[0042] 首先要判断通道命令是否是声音开启命令,然后判断data1是否大于扬琴最小音符号,小于扬琴最大音符号。如果上述两者都满足,再判断音符压力(data2)是否大于零,大于0表示音符被按下,小于0表示未被按下。接下来要判断音符号对应的扬琴音位,进而触发该音位的动画。当音符号为41时(代表扬琴的F音,对应扬琴右下琴码的位置),触发WPF故事画板中相应位置的动画。
[0043] 当出现Storyboard.TargetName的对应名称时,触发WPF的动画组件(线性插值动画DoubleAnimation),在相应位置出现音符。
[0044] 功能3:知识讲解模块。
[0045] 功能3.1:扬琴结构讲解子模块,依据402型号扬琴的实体,系统在MAYA建模软件中建立起虚拟扬琴的模型,并对虚拟扬琴的每一部分结构进行标注,讲解该部分的作用与功能;
[0046] 功能3.2:扬琴乐理知识讲解子模块,在该部分,虚拟扬琴系统以文字的形式,按照时间顺序讲解了扬琴在中国发展与传承的历史;
[0047] 功能3.3:扬琴演奏技法讲解子模块,在该部分,虚拟扬琴系统将扬琴教学视频嵌入在WPF中,让用户在专业扬琴教师的指导下,一边学习视频,一边亲自操作,大幅提升用户演奏的实践经验。
[0048] WPF播放视频的方法同样有两种:一种是采用MediaPlayer类实现,另一种是采用MediaElement类实现。两种方法均可以实现,效果基本一致。但由于MediaElement实现起来较为便捷,只需在XAML代码中简单声明即可。因此,本系统采用MediaElement的方式来实现视频的播放。
[0049] 本发明依托于国家科技支撑计划课题“土家音乐文化数字化保护与展示关键技术研究及示范”,该课题旨在探索出一套行之有效的少数民族音乐文化保护与传承的服务模式。其中土家器乐保护是课题中非常重要的一部分。扬琴是土家曲艺恩施扬琴中的主要伴奏乐器,传入中国已有四百多年,已成为我国独具特色的民族乐器。但目前扬琴音乐教学仍然采用传统的教学方式,基本没有专门辅助扬琴教学的计算机软件。因此,虚拟扬琴的研发对于扬琴的教学、土家器乐保护以及我国民族器乐的发展都具有重要意义。
[0050] 针对现有虚拟乐器的发展现状,本发明基于扬琴教学理论,利用多媒体技术、MIDI文件解析技术、自动演奏技术等关键技术研发出辅助扬琴教学的虚拟扬琴系统。本发明不仅能够提高人们对扬琴教学的认识,还可以为扬琴教学提供一种新的教学方式。而且虚拟扬琴还能够降低初学者学习扬琴的门槛,使更多人便捷有效的学习扬琴。这在一定程度上填补扬琴音乐信息化教育领域的空白,为我国传统器乐教学方式的发展提供一种新的可能。
[0051] 应当理解的是,本说明书未详细阐述的部分均属于现有技术
[0052] 应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
QQ群二维码
意见反馈