一种软件快速演奏乐器的算法的制作方法

文档序号:12368709阅读:426来源:国知局
一种软件快速演奏乐器的算法的制作方法与工艺
本发明涉及一种软件快速演奏乐器的算法,具体应用在音乐类的系统开发,属于多媒体创作
技术领域

背景技术
:目前,音乐类的算法主要集中于音乐的分类、检索与推荐,并没有多少针对于音乐创作方面的算法。而音乐创作类的软件多数应用数据库对资源进行存储管理,没有对算法进行过深入的探讨。在现有的文献及发明中,很少有对这类的算法进行研究的,使用软件快速演奏乐器相关的算法更是一片空白。另外,国内音乐创作类的软件发展比较滞后,音乐创作类的软件市场多被国外主流公司垄断,国内的相关软件参差不齐,没有形成竞争力,其中的一个主要原因就是很少可以找到相关的技术支持。所以,此类的软件开发门槛较高,从事相关方面的研究人员更是少之又少,于是出现了“使用软件的音乐爱好者多、从事开发的专业人员少”的局面,因为既懂音乐又懂开发技术的人不多。技术实现要素:针对现在软件演奏乐器这一算法领域的空白,本发明提供了一种软件快速演奏乐器的算法。本发明从简谱“节点”定位、音频资源关联和时间调度三个方面对数字化简谱进行译谱分析,降低音乐创作类软件的开发难度,缩短开发周期。一种软件快速演奏乐器的算法的具体内容如下:S1:简谱输入;S2:对简谱按照“节点”进行分割,“节点”就是“0”~“7”这8个乐符,一个完整的简谱一定是由若干个以“节点”为中心的数据块组成;定位“节点”的方法就是从简谱的起始位置开始顺序向简谱结尾位置遍历,遇上“0”~“7”就进行位置标定;“节点”定位完成以后,需要围绕“节点”对简谱进行拆分,得到若干个数据块;S3:通过设定基础音高basis和和基础音长time的值,确定整体的音乐节奏和风格;S4:确定第n个“节点”对应的音高;每个“节点”位置的值d对应一个相对音高r(n,d),当前“节点”数据块范围内的表示音高变化的k个音符都各自对应一个增值音高a(n,i),整首音乐的基础调式对应一个基本音高basis,最终该“节点”对应的音频资源的音高为S5:确定第n个“节点”对应的音长;即每个“节点”对应的音频文件有各自播放的时长;当前“节点”数据块内的表示时间的m个音符都各自对应一个延时跨度t(n,j),单位延时跨度为time,那么当前“节点”对应的音频资源的播放时长为y(n)=time*Σj=1mt(n,j)]]>S6:一个完整的数字化简谱就被拆分成各个“节点”数据块,对应了各个音频资源和播放时长,即{{s(0),y(0)},{s(1),y(1)},…{s(n),y(n)}},其中y表示音长,s表示音高,n为节点号。本发明有以下优势:(1)算法协议简单,应用该算法,开发人员可以快速的编写音乐创作软件;(2)使用者不须学习专业的乐理知识就可以进行译谱和音乐创作;(3)算法生成的音乐文本文件小巧,可以直接跨平台播放,便于传播和编辑;(4)本算法运行效率高,结构清晰,大大缩短了开发周期。附图说明图1为本发明的算法流程图。图2为本发明的算法过程。图3为本发明的WINDOWS输入平台。图4为本发明的ISO输入平台。图5为本发明的FPGA输入平台。具体实施方式为使本发明的一种软件快速演奏乐器的算法的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明做进一步详细说明,但是,应当说明的是,以下所描述的具体实施例仅用于说明本发明,但不用来限定本发明的范围。1、图1是本发明的算法流程图。如图1所示,该算法涉及三个用户输入单元和若干个算法处理单元。用户输入单元可以是各种具有数据交互功能的软硬件终端,如电脑、手机、带有按键的微处理器平台及其相关的系统软件等。用户输入单元内容包括“音乐简谱输入”、“音乐的基础音高”(即basis)和“音乐的基础音长”(即time)。输入方式可以是软件操作界面的交互,如编辑框输入、按钮点击等,也可以是硬件平台的交互,如键盘、触摸屏等。算法处理单元按照功能分为三大模块。第一个模块包括“节点定位”和“数据块划分”,主要完成的功能是对简谱按照“节点”进行分割;第二个模块包括“确定节点音高”和“音频资源关联”,主要功能是结合输入的“音乐基础音高”,按照音高计算公式计算当前“节点”对应的音高,并通过所得到的音高值找到相关的音频资源;第三个模块包括“确定节点音长”和“时间调度”,主要功能是结合输入的“音乐基础音长”,按照音长计算公式计算当前“节点”对应的音频资源的播放时长。根据算法的调度,一个完整的简谱最终被拆分成若干个“节点”数据块,每个“节点”对应着自己的音高和音长,所以输出音乐时就有对应的音频资源和播放时长,达到软件快速演奏乐器的效果。2、图2是本发明的算法过程图;如图2所示,该过程包括:步骤1:如图3、4、5所示,通过多平台输入音乐简谱;步骤2:对输入的简谱,进行“节点”分割和定位。首先对简谱“节点”定位,设定“节点”为“0”~“7”这8个乐符,一个完整的简谱是由若干个以“节点”为中心的数据块组成;定位“节点”的方法就是从简谱的起始位置开始顺序向简谱结尾位置遍历,遇上“0”~“7”就进行位置标定,“节点”定位完成以后,围绕“节点”对简谱进行拆分,得到若干个数据块;具体步骤如下:假设节点为Node,简谱为Buffer[],那么寻找节点的操作的主体示例程序可以表示为:WHILE(Buffer[Node]<’0’||Buffer[Node]>’7’){Node++;…}步骤3:通过设定基础音高basis和和基础音长time的值,确定整体的音乐节奏和风格。步骤4:确定该“节点”对应的音高;每个“节点”的音符d对应一个相对音高r(n,d),当前“节点”数据块范围内的表示音高变化的k个音符都各自对应一个增值音高a(n,i),整首音乐的基础调式对应一个基本音高basis,最终该“节点”对应的音频资源的音高为s(n)=r(n,d)+Σi-1ka(n,i)+basis]]>其中,r(n,d)的值对应于下表:表1d01234567r(n,d)002457911其中,a(n,i)的值对应于下表:表2音符><#ba(n,i)12-121-1其中,basis的值对应于下表:表3调式ABCDEFGbasis49514042444547假设当前节点位置为Node1,上一节点位置为Node0,简谱为Buffer,音高为S,那么音高计算的主体示例程序可以表示为:步骤5:确定各个“节点”对应的音长,即每个“节点”对应的音频文件有各自播放的时长;当前“节点”数据块内的表示时间的m个音符都各自对应一个延时跨度t(n,j),单位延时跨度time,那么当前“节点”对应的音频资源的播放时长为其中,t(n,j)的值对应于下表:表4音符--.t(n,j)(()+1)(()×0.5)(()×1.5)假设当前节点位置为Node1,下一节点位置为Node2,简谱为Buffer,音长为y,那么音长计算的主体示例程序可以表示为:步骤6:最后,一个完整的数字化简谱就被拆分成各个“节点”数据块,对应了各个音频资源和播放时长,即{{s(0),y(0)},{s(1),y(1)},…{s(n),y(n)}},其中y表示音长,s表示音高,n为节点号。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1