一种支持画笔输入的可视化旋律生成方法及装置与流程

文档序号:26050409发布日期:2021-07-27 15:25阅读:156来源:国知局
一种支持画笔输入的可视化旋律生成方法及装置与流程

本发明涉及通信和计算机技术领域,具体而言,涉及一种支持画笔输入的可视化旋律生成方法及装置。



背景技术:

旋律生成领域一直是计算机音乐领域的热门话题。随着时代的发展,音乐已成为人们日常生活必不可少的一部分。音乐创作包括作词和作曲,作词相对来说比较简单。在作曲领域,有很多研究者利用深度学习的相关知识进行旋律的生成研究工作,但是这些工作缺乏对旋律的控制性,用户在使用相关算法进行旋律生成的时候,无法对旋律进行精细的控制。如何使得用户能够在生成旋律时进行控制,目前仍然没有很好的解决方案。

鉴于此,我们提出一种支持画笔输入的旋律生成方案。



技术实现要素:

本发明的目的在于提供一种支持画笔输入的可视化旋律生成方法及装置,其通过分析用户输入的曲线,分析用户想要的音高走向,情感走向,音乐速度,音符时值,音符力度等信息,生成满足用户需求的旋律。

本发明的实施例通过以下技术方案实现:一种支持画笔输入的可视化旋律生成方法,包括如下步骤:

s1、采集用户输入的旋律曲线;

s2、对所述旋律曲线进行分析,输出曲线分析结果,其中,所述曲线分析结果包括曲线特征数据以及与所述曲线特征数据对应的预设音乐效果;

s3、基于所述曲线分析结果,计算所述预设音乐效果在所述曲线上的映射位置,进行旋律结构的分配,生成旋律序列;

s4、将生成的旋律序列以midi文件的形式保存。

根据一种优选实施方式,步骤s3具体包括:

s31、根据所述曲线分析结果确定旋律对应的小节数量以及小节属性,所述小节属性指的是主歌和副歌;

s32、根据所述曲线分析结果给旋律分配节奏型;

s33、根据所述曲线分析结果给旋律中的各个节奏型分配音高;以及

s34、根据所述曲线分析结果给旋律中的音符分配力度。

根据一种优选实施方式,步骤s31具体包括:

若曲线内包含的点数量多于预设点数量,且曲线长度长于预设曲线长,且曲线中抖动幅度大于预设抖动幅度值,则确定该段旋律对应的小节数量为2,以及小节属性为副歌,若否,则确定该段旋律对应的小节数量为1,以及小节属性为主歌;

若曲线内包含的点数量多于预设点数量,且曲线长度长于预设曲线长,且曲线中抖动幅度小于预设抖动幅度值,则确定该段旋律对应的小节数量为2,以及小节属性为主歌,若否,则确定该段旋律对应的小节数量为1,以及小节属性为副歌。

根据一种优选实施方式,步骤s32具体包括:

s321、若曲线中某段抖动幅度大于预设抖动幅度值,则对其进行分段并采用附点结构为其分配节奏型或为其分配时值短于一拍的音符,若否,则不采用附点结构为其分配节奏型或为其分配时值大于等于一拍的音符。

根据一种优选实施方式,步骤s32还包括:

s322、若曲线中存在空隙,则根据空隙长添加对应时长的休止音符。

根据一种优选实施方式,步骤s33具体包括:

根据步骤s32所分配的音符中当前音符与后一个音符的音高差,确定当前音符与后一个音符的音高关系;

根据首个音符的音高逐个计算出下一个音符的音高。

根据一种优选实施方式,所述音高关系包括跳进、级进以及相等三种,其中,

若所述音符开始点与结束点之间连线的斜率的绝对值大于1,则当前音符与后一个音符的音高关系为跳进;

若所述音符开始点与结束点之间连线的斜率在0.2-1之间,则当前音符与后一个音符的音高关系为级进;

若所述音符开始点与结束点之间连线的斜率在0-0.2之间,则当前音符与后一个音符的音高关系为相等。

根据一种优选实施方式,步骤s34具体包括:

根据线条的粗细,以及步骤s32所分配的音符中音符的开始点坐标与结束点坐标分配音符的力度,其中,线条的粗细与力度的高低成正比。

本发明还提供一种支持画笔输入的可视化旋律生成装置,应用到如上述所述的一种支持画笔输入的可视化旋律生成方法,包括:

画笔输入模块,用以采集用户输入的旋律曲线;

曲线分析模块,与所述画笔输入模块连接,用以对所述旋律曲线进行分析,输出曲线分析结果,其中,所述曲线分析结果包括曲线特征数据以及与所述曲线特征数据对应的预设音乐效果;

旋律作曲模块,与所述曲线分析模块连接,用以基于所述曲线分析结果,计算所述预设音乐效果在所述曲线上的映射位置,进行旋律结构的分配,生成旋律序列;

乐曲输出模块,与所述旋律作曲模块连接,用以将生成的旋律序列以midi文件的形式保存。

根据一种优选实施方式,所述旋律作曲模块包括:

旋律结构分配模块,用以根据所述曲线分析结果确定旋律对应的小节数量以及小节属性,所述小节属性指的是主歌和副歌;

节奏型分配模块,用以根据所述曲线分析结果给旋律分配节奏型;

音高分配模块,用以根据所述曲线分析结果给旋律中的各个节奏型分配音高;

音符力度分配模块,用以根据所述曲线分析结果给旋律中的音符分配力度。

本发明实施例的技术方案至少具有如下优点和有益效果:本发明通过分析用户输入的曲线,分析用户想要的音高走向,情感走向,音乐速度,音符时值,音符力度等信息,能够生成满足用户需求的旋律。

附图说明

图1为本发明实施例1提供的支持画笔输入的可视化旋律生成方法的逻辑流程图;

图2为本发明实施例1提供的生成旋律序列的逻辑流程图;

图3为本发明实施例1提供的曲线分段的示意图;

图4为本发明实施例1提供的分配音高的示意图;

图5为本发明实施例1提供的分配力度的示意图;

图6为本发明实施例1提供的支持画笔输入的可视化旋律生成装置的结构框图;

图标:100-画笔输入模块,200-曲线分析模块,300-旋律作曲模块,400-乐曲输出模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

实施例1

参阅图1所示,图1为本发明实施例提供的支持画笔输入的可视化旋律生成方法的逻辑流程图。

需要说明的是,在作曲领域,有很多研究者利用深度学习的相关知识进行旋律的生成研究工作,但是这些工作缺乏对旋律的控制性,用户在使用相关算法进行旋律生成的时候,无法对旋律进行精细的控制。如何使得用户能够在生成旋律时进行控制,目前仍然没有很好的解决方案。所以,本发明实施例提供了一种支持画笔输入的可视化旋律生成方法,具体内容如下所述:

参阅图1所示,方法包括如下步骤:

s1、采集用户输入的旋律曲线;

s2、对所述旋律曲线进行分析,输出曲线分析结果,所述曲线分析结果包括曲线特征数据以及基于所述曲线特征数据获取的预设音乐效果,其中,所述预设音乐效果包括旋律的音高、情绪、速度、节奏型的时间长度序列以及音符的力度。具体的,在本实施例中曲线绘制的位移大小标识音高的变化幅度;曲线的抖动幅度标识旋律的情绪,以及节奏型的时间长度序列;曲线的绘制速度标识旋律的速度;曲线的粗细标识音符的力度;在本实施例中,通过预设音乐效果与曲线特征数据的对应关系,即能够根据曲线的特征确定对应的音乐效果。

s3、基于所述曲线分析结果,计算预设音乐效果在曲线上的映射坐标位置,进行旋律结构的分配,生成旋律序列;参阅图2所示,步骤s3包括:

s31、根据所述曲线分析结果确定旋律对应的小节数量以及小节属性,所述小节属性指的是主歌和副歌;具体步骤为:若曲线内包含的点数量多于预设点数量,且曲线长度长于预设曲线长,且曲线中抖动幅度大于预设抖动幅度值,即表明该段旋律包含较多的内容,且情绪表达比较激烈;因此对应旋律应包含的小节数量为2,且确定该段旋律为副歌。如果曲线内包含的点数量少于预设点数量,且曲线长度短于预设曲线长,,且曲线中抖动幅度小于预设抖动幅度值;即表明曲线比较平缓,因此对应旋律对应包含的小节数量为1,且确定该段旋律为主歌。若曲线内包含的点数量多于预设点数量,且曲线长度长于预设曲线长,且曲线中抖动幅度小于预设抖动幅度值;因此对应旋律应包含的小节数量为2,且确定该段旋律为主歌。如果曲线内包含的点数量少于预设点数量,且曲线长度短于预设曲线长,且曲线中抖动幅度大于预设抖动幅度值;因此对应旋律应包含的小节数量为1,且确定该段旋律为副歌。

s32、根据所述曲线分析结果给旋律分配节奏型;在本实施中,采用pythonscipy.signal.savgol_filter函数检测曲线是否抖动;具体步骤包括:若曲线中某段抖动幅度大于预设抖动幅度值,即表明该段情感比较高昂激动,则对其进行分段并采用附点结构为其分配节奏型或为其分配时值短于一拍的音符;反之,若曲线中某段抖动幅度小于预设抖动幅度值,那么就不应该使用附点结构,同时分配的音符时值应该相应的延长,如时值大于等于一拍的音符。

进一步的,如果检测到曲线中存在空隙,则根据空隙长添加对应时长的休止音符。

本发明实施例根据曲线的抖动幅度为依据对曲线进行分段,以下进行举例说明:参阅图3所示,可以看到经过分析,该条曲线可以按照曲线抖动幅度将曲线分成abcde五段。a段、c段、e段抖动幅度较小,则分配单个时值较长的音符。b段、d段抖动幅度较大,分配多个时值较短的音符,在本实施例中分配两个音符。需要说明的是,每一段曲线的总长确定了该段曲线对应的音符总长度。

进一步的,根据各段中分配的音符该段曲线可以分配6个音符[n1,n2,n3,n4,n5,n6],每个音符对应的开始点坐标分别为[(x1,y1),(x2,y2),(x3,y3),(x4,y4),(x5,y5),(x6,y6)],对应的长度序列为[d1,d2,d3,d4,d5,d6]。

进一步的,还包括步骤s33,该步骤具体为根据所述曲线分析结果给旋律中的各个节奏型分配音高;具体包括:

根据步骤s32所分配的音符中当前音符与后一个音符的音高差,确定当前音符与后一个音符的音高关系。在本实施例中,音高关系包括跳进、级进以及相等三种。以下对如何确定音高关系进行举例说明:参阅图4所示,假设音符n1的开始点、结束点分别为点a和点b,对应的坐标分别为(x1,y1),(x2,y2);如果开始点a与结束点b之间的连线斜率的绝对值大于1,那么后一个音符与当前音符之间的音高关系为跳进,即大于3个半音;如果斜率在0.2-1之间,则当前音符与后一个音符的音高关系为级进,即小于等于三个半音;如果斜率在0-0.2之间,则当前音符与后一个音符的音高关系为相等。

需要说明的是,如果开始点a与结束点b的连线斜率大于0,那么即表明后一个音符比当前音符音高要高,反之则后一个音符音高比当前音符音高要低。

进一步的,确定了每个音符与后一个音符的音高关系之后,根据首个音符的音高即可逐个计算出下一个音符的音高。需要补充说明的是,按照常规的作曲规则,每首曲子的首个音符的音高由曲子的调式调性来确定,例如创作一首c大调的旋律,那么首个音符通常是c大调的一级和弦的和弦内音(c,e,g)之一。

进一步的,还包括步骤s34,该步骤具体为根据所述曲线分析结果给旋律中的音符分配力度。具体包括:根据线条的粗细,以及步骤s32所分配的音符中音符的开始点坐标与结束点坐标分配音符的力度;其中,线条的粗细与力度的高低成正比。需要说明的是,音符的力度在midi信号中,是表达情绪的一种常用方式,一般旋律如果表达比较激动的情绪,音符的力度会相应提升。在midi信号中,音符的力度是用0-127的数值来表示,0标识力度最小,127表示力度最大。

以下对如何分配音符力度进行举例说明:参阅图5所示,该条旋律曲线有四个音符,前两个n1,n2音符的旋律线条较细,对应的力度较小,对其分配力度v小于64;第三个音符n3的旋律线条中等,对其分配力度v在64-96之间;最后一个音符n4的旋律线条较粗,对其分配力度v大于96;如此即可从旋律线条当中获取音符的力度,在实际演奏中即可表达更为复杂的情绪。

进一步的,还包括旋律序列输出步骤步骤s4,该步骤为将生成的旋律序列以midi文件的形式保存。需要补充说明的是,步骤s3生成旋律序列可以用[(d1,p1,v1),(d2,p2,v2),(d3,p3,v3),(d4,p4,v4),(d5,p5,v5),(d6,p6,v6)]来进行表示,其中d指当前音符的时长,单位是拍,p指当前音符的音高信息,例如c4,d3等,v指音符的力度。在本实施例中,则是根据该序列将旋律的时长信息转换为以秒为单位的时间,将音高信息转换为midi的音高信息,然后使用pretty_midi等工具将旋律序列保存为midi文件。

本发明实施例还提供一种支持画笔输入的可视化旋律生成装置,包括:

画笔输入模块100,用以采集用户输入的旋律曲线;

曲线分析模块200,与所述画笔输入模块100连接,用以对所述旋律曲线进行分析,输出曲线分析结果,其中,所述曲线分析结果包括曲线特征数据以及与所述曲线特征数据对应的预设音乐效果,其中,所述预设音乐效果至少包括旋律的音高、情绪、速度、节奏型的时间长度序列以及音符的力度;

旋律作曲模块300,与所述曲线分析模块200连接,用以基于所述曲线分析结果,计算所述预设音乐效果在所述曲线上的映射位置,进行旋律结构的分配,生成旋律序列;

具体的,所述旋律作曲模块300包括:旋律结构分配模块,用以根据所述曲线分析结果确定旋律对应的小节数量以及小节属性,所述小节属性指的是主歌和副歌;节奏型分配模块,用以根据所述曲线分析结果给旋律分配节奏型;音高分配模块,用以根据所述曲线分析结果给旋律中的各个节奏型分配音高;音符力度分配模块,用以根据所述曲线分析结果给旋律中的音符分配力度。

乐曲输出模块400,与所述旋律作曲模块300连接,用以将生成的旋律序列以midi文件的形式保存。

综上所述,旋律作曲一直是一个比较专业的领域,普通用户想通过比较简便的方式创作出一条旋律,但是本装置确保了用户可以用过简单的画线输入,就能够生成一条旋律。用户可以随意画一条曲线,通过本装置分析用户输入的曲线,分析用户想要的音高走向,情感走向,音乐速度,音符时值,音符力度等信息,能够生成满足用户需求的旋律。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1