本发明涉及计算机技术领域,具体涉及一种频谱显示方法及装置。
背景技术:
目前,音乐的可视化方式通常是绘制频谱的方式,即在音乐播放时可以在传统的水平坐标系上,反映出低频段到高频段上的能量变化。然而,该种可视化方式无论多么绚丽,都只能看出高中低频的各种变化,对于音乐上的信息却完全看不出来,例如,音乐的音符无法呈现,也就使得用户无法了解音乐的信息。
技术实现要素:
本发明实施例提供一种频谱显示方法及装置,能够显示当前播放音乐的音符集合。
本发明实施例第一方面提供一种频谱显示方法,包括:
获取每帧音频数据的音高集合;
确定所述音高集合中每个音高对应的能量值;
将所述每个音高以及所述每个音高对应的能量值绘制在十二平均律螺旋坐标系中。
本发明实施例第二方面提供了另一种频谱显示方法,包括:
根据待显示区域确定十二平均律螺旋坐标系的最大半径r;
根据音分与旋转弧度之间的第一预设规则以及所述最大半径r,绘制半径逐渐外伸的螺旋线;
根据所述音分与所述旋转弧度之间的第二预设规则以及所述最大半径r,绘制直线;
根据所述第二预设规则在所述待显示区域的预设位置依次标记十二个音名,获得十二平均律螺旋坐标系,所述十二个音名依次为c,#c,d,#d,e,f,#f,g,#g,a,#a,b。
本发明实施例第三方面还提供一种频谱显示装置,包括:
获取单元,用于获取每帧音频数据的音高集合;
第一确定单元,用于确定所述音高集合中每个音高对应的能量值;
绘制单元,用于将所述每个音高以及所述每个音高对应的能量值绘制在十二平均律螺旋坐标系中。
本发明实施例第四方面还提供了另一种频谱显示装置,包括:
确定单元,用于根据待显示区域确定十二平均律螺旋坐标系的最大半径r;
绘制单元,用于根据音分与旋转弧度之间的第一预设规则以及所述最大半径r,绘制半径逐渐外伸的螺旋线;
所述绘制单元,还用于根据所述音分与所述旋转弧度之间的第二预设规则以及所述最大半径r,绘制直线;
标记单元,用于根据所述第二预设规则在所述待显示区域的预设位置依次标记十二个音名,获得十二平均律螺旋坐标系,所述十二个音名依次为c,#c,d,#d,e,f,#f,g,#g,a,#a,b。
本发明实施例中,频谱显示方法可以获取每帧音频数据的音高集合,从而可以在该十二平均律螺旋坐标系中绘制显示这些音高集合及其能量值,进而得到音频数据演奏的音符,从而有助于用户了解当前播放音乐的音乐信息,改善用户使用体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种十二平均律螺旋坐标系的示意图;
图2是本发明实施例提供的一种频谱显示方法的流程示意图;
图3是本发明实施例提供的一种频谱显示的示意图;
图4是本发明实施例提供的另一种频谱显示方法的流程示意图;
图5是本发明实施例提供的又一种频谱显示方法的流程示意图;
图6是本发明实施例提供的一种频谱显示装置的结构示意图;
图7是本发明实施例提供的一种终端的结构示意图;
图8是本发明实施例提供的又一种频谱显示方法的流程示意图;
图9是本发明实施例提供的另一种频谱显示装置的结构示意图;
图10是本发明实施例提供的另一种终端的结构示意图。
具体实施方式
目前,很多音乐可视化的实现都是用频谱信息来绘制的,即只能反映出音乐在低频段到高频段上的变化引发的矢量绘图,但是不管这些矢量绘图多么绚丽,都只能看出音乐在高中低频等各频率部分上的变化,对于音乐上的信息却完全看不出变化来。本发明实施例为了解决音乐在播放时可以显示音乐上的信息,例如演奏的音符集合等,提供了一种频谱显示方法及装置,有助于在音乐播放的过程中动态显示音乐上的信息。
本发明实施例中,所播放音乐演奏的音符可以在十二平均律螺旋坐标系中显示。十二平均律螺旋坐标系是一种类似旋涡的坐标系,请参阅图1,图1是本发明实施例提供的一种十二平均律螺旋坐标系的示意图,如图1所示,该十二平均律螺旋坐标系在360度上分为12份,从该坐标系中心音符#a顺时针旋转每转30度对应一个音符,分别为b、c、#c、d、#d、e、f、#f、g、#g、a,再到#a。例如,从该坐标系中心音符#a顺时针旋转30度对应音符b,其中,旋转多少度是根据每帧音乐数据的音高来确定的,例如,该坐标系中心音符#a的起始位置对应的音高为22,每顺时针旋转0.3度增加一个音分,即音高为23,因此,从该坐标系中心音符#a的起始位置旋转30度到达音符b对应的音高为32。
由于该十二平均律螺旋坐标系是顺时针向外延伸半径的,依次对应音乐上的八度,因此,该坐标系中心音符#a的起始位置可记作#a0,从该位置依次将半径往外延伸时该音符#a可分别对应#a0、#a1、#a2、#a3、#a4、#a5、#a6、#a7。
因此,终端可以获取每帧音频数据的音高集合,从而可以在该十二平均律螺旋坐标系中显示这些音高集合,进而得到音频数据演奏的音符,从而有助于用户了解当前播放音乐的音乐信息,改善用户使用体验。
请参阅图2,图2是本发明实施例提供的一种频谱显示方法的流程示意图,如图2所示,该频谱显示方法可以包括以下步骤:
s101、终端获取每帧音频数据的音高集合;
s102、终端确定所述音高集合中每个音高对应的能量值;
s103、终端将所述每个音高以及所述每个音高对应的能量值绘制在十二平均律螺旋坐标系中。
本发明实施例中,终端获取每帧音频数据的音高集合可以包括:终端根据频率与音高之间的对应关系,确定每帧音频数据中预设频率范围内的各频率对应的音高集合。
作为一种可选的实施方式,音乐数据的频率与音高之间的对应关系可以如下公式所示:
f=440×2(p-69)/12
其中,f为音频数据的频率,p为pitch,即音高。可见,获取当前播放的音频数据的频率后,即可通过上述公式获得当前播放的音频数据的音高集合。
例如,音符a4对应的音高为69,c4对应的音高为60,#a0对应的音高为22.如上公式,频率和音高是一一对应的,因此整个十二平律螺旋坐标系中能够表示的频率范围可以为29.135235~12543.854hz。一帧音频数据中可能包括各种频率,为了突出某些音高,可以选择音频数据中预设频率范围内的频率对应的音高集合进行显示。
本发明实施例中,步骤s102终端确定音高集合中每个音高对应的能量值,可以为终端根据音高与能量索引值之间的对应关系,获取所述音高集合中每个音高对应的能量值。
由于音频数据在频域上表示的是频率与能量值之间的关系,因此,可以根据音频数据的频率确定频域上对应的能量值的索引值,进而确定能量值。
例如,频率与能量值的索引值之间的对应关系可以用如下公式表示:
index=0.5+f×4096.0/22050
其中,index即为能量值的索引值,f为音频数据的频率,因此,利用该索引值即可获知能量值,例如fft[index],fft为快速傅里叶变换可以将时域上播放的一帧音频数据转换到频域上表示,由于f到index再到能量值是可以算的,那么在十二平均律螺旋坐标系中,就是把p作为参数,得到p与能量值之间的对应关系,该对应关系如下公式所示:
其中,根据能量值的索引值index即可确定音高的能量值。
本发明实施例中,步骤s103终端将所述每个音高以及所述每个音高对应的能量值绘制在十二平均律螺旋坐标系中,可以为:
终端从十二平均律螺旋坐标系的中心音符#a,音高22开始,按顺时针向外延伸半径,每顺时针旋转0.3度为一个音分来确定所述每个音高在所述十二平均律螺旋坐标系中的位置;并将所述每个音高对应的能量值以rgb色彩模式在所述十二平均律螺旋坐标系中所述位置显示。
其中,音高对应的能量值越大,所绘制的rgb色彩中rb也越大,所以会看起来像紫色,rb越小时,会比较接近蓝色。
请参阅图3,图3是本发明实施例提供的一种频谱显示的示意图,如图3所示,终端将当前播放的音频数据的音高集合绘制在该十二平均律螺旋坐标系中,可以清楚的反映出当前播放的音频数据包含的音符以及音高。例如,图3中分别显示的音符为a、c、e,标识了音高的音符为a3、c4、e4、a4。另外,图3中采用灰度来表示各音高所绘制的rgb色彩,rb越大,所绘制的灰色区域也越大。
因此,通过将音频数据的音高集合显示在十二平均律螺旋坐标系中,可以对应显示出该音频数据包括的音符集合,从而,显示了当前播放音乐的音乐信息,改善了用户的使用体验。
请参阅图4,图4是本发明实施例提供的另一种频谱显示方法的流程示意图,其中,图4所示的频谱显示方法除了可以显示当前播放音乐的音符及音高信息,还可以显示该音乐的和弦,具体的,图4所示的频谱显示方法除了可以包括图2所示实施例的步骤s101至s103外,还可以包括:
s104、终端根据音高集合确定音频数据对应的音符集合;
s105、终端根据音符集合确定音频数据的和弦。
其中,终端根据音符集合确定音频数据的和弦,包括:终端判断预设的和弦定义表中是否存在与所述音频的音符集合相匹配的和弦;所述和弦定义表定义了各和弦的音符集合;若存在,则根据匹配的和弦显示所述音频的和弦。
其中,和弦定义表可以如下表1所示,该和弦定义表定义了各和弦的音符集合。第一列为和弦的类型,例如,m表示小三和弦,m7表示小七和弦;每种和弦的右边一行为12个逻辑值,每个逻辑值对应一个音,当该逻辑值为1时,表示该和弦包括这个音。比如,“”表示的大三和弦,就需要包括c、e、g这三个音符。其中,1、#1、2、#2、3、4、#4、5、#5、6、#6、7分别对应音符c、#c、d、#d、e、f、#f、g、#g、a、#a、b。
表1
其中,通过上述和弦定义表匹配的和弦,在所述和弦定义表中定义的音符集合与该音频数据的音符集合相同。
例如,假设该音频数据的音符集合为c、d、e、g,虽然大三和弦的音符集合为c、e、g,但该音频数据的音符集合还包括d,因此,需要进一步匹配包括d的和弦的音符集合,因此最终可以匹配出add9和弦的音符集合与该音频数据的音符集合完全相同,确定该音频数据的和弦为add9和弦。
因此,图4所示的频谱显示方法可以通过音符集合确定音频数据的和弦,增加了可显示的音乐信息。
作为另一种可选的实施方式,若所述和弦定义表不存在匹配的和弦,所述方法还包括:
终端确定所述和弦定义表中各和弦定义的音符集合与所述音频的音符集合的匹配度;并将所述匹配度按照从高到低的顺序,生成和弦顺序表;将所述和弦顺序表中各和弦升高半音;判断升高半音后的和弦顺序表中是否存在与所述音频的音符集合相匹配的和弦;若存在,根据匹配的和弦显示该音频数据的和弦。
例如,从和弦顺序表中确定出匹配度最高的和弦为c13和弦,可将c13和弦的各个音符上升半音,即从“1,0,1,0,1,1,0,1,0,1,1,0”转换为“0,1,0,1,0,1,1,0,1,0,1,1”,记为#c13和弦,则将该#c13和弦包括的音符集合与音频数据的音符集合匹配时,就可以确定为#c13和弦;反之,若还不匹配,则继续从和弦顺序表中选取下一个和弦进行升高半音后匹配。
作为另一种可选的实施方式,若音频数据匹配了多个和弦的音符集合,可根据该音频数据的调性从该多个和弦中确定音频数据的和弦。各和弦包括的音符集合相同,也可以称为同构成音,经典代表就是减七和弦,即dim7,其中,bdim7的构成音是b、d、f、#g;ddim7的构成音是d、f、#g、b;fdim7的构成音是f、#g、b、d;#gdim7的构成音是#g、b、d、f;可见,需要根据调性进一步从中判断出音频数据对应的和弦。调性即各音符出现的规律,或者顺序,因此,增加调性这个判断依据,可以增加和弦判断的准确率。
可见,本发明实施例可以在音乐播放器播放歌曲的时候,可以实时绘制出当前演奏的音符、音高,并可以显示出和弦。对于有一定音乐基础的人来说,看到这种显示会很激动,并在扒带领域上也有积极作用。
请参阅图5,图5是本发明实施例提供的又一种频谱显示方法的流程示意图,其中,图5所示的频谱显示方法与图4所示的频谱显示方法相比,还可以包括以下步骤:
s106、终端根据每帧音频数据的和弦,确定包括每帧音频数据的音乐的和弦集合;
s107、终端根据和弦集合以及预设的调性定义表确定该音乐的调性,调性定义表定义了各调性的和弦集合。
本发明实施例中,一曲音乐的调性的主要和弦是固定的集合,如c大调中有c、g、f、d这4个大三和弦及其对应的七和弦c7、g7、f7、d7和九和弦等;有am、dm、em三个小三和弦及其对应的七和弦am7、dm7、em7和九和弦等;bm7-5这个减七和弦。因此,当该音乐的和弦集合落在上述这些和弦集合中,就可以判定该音乐为c大调。而同样是c调的a小调,会出现e和弦(包括e7),且歌曲开头多以am(am7、或am9)和弦开始。
因此,步骤s107终端根据所述和弦集合以及预设的调性定义表确定所述音乐的调性,包括:终端判断预设的调性定义表中是否存在与所述和弦集合匹配的调性;所述调性定义表定义了各调性的和弦集合;若存在,显示匹配的调性作为所述音乐的调性。
反之,终端若确定所述调性定义表中各调性定义的和弦集合与该音乐的和弦集合不匹配时,可将调性定义表中的各调性定义的和弦集合上升半音后再进行匹配,以确定该音乐的调性
可见,图5所示的频谱显示方法可以在识别了和弦的基础上,进一步识别出调性,从而显示更多的音乐信息。
请参阅图8,图8是本发明实施例提供的又一种频谱显示方法的流程示意图,其中,图8所示的频谱显示方法主要用于在频谱的待显示区域显示十二平均律螺旋坐标系,具体的,该频谱显示方法可以包括以下步骤:
s201、终端根据待显示区域确定十二平均律螺旋坐标系的最大半径r;
其中,待显示区域可以为终端的显示屏,或者终端要显示频谱的区域,例如,音乐播放应用中显示频谱的界面。
s202、终端根据音分与旋转弧度之间的第一预设规则以及最大半径r,绘制半径逐渐外伸的螺旋线;
其中,第一预设规则可以为:
a=(360/1200*c-90)*π/180;
其中,a为所述旋转弧度;c为所述音分,所述c大于等于2200且小于等于12000,所述c的步进大于等于1且小于等于10;
所述螺旋线上的任一点p(x,y)为:
p(x,y)=(r*c/12000*cos(a),r*c/12000*sin(a))。
例如,图1所示,c初始值为2200,该音分对应的音符为#a,c的最大值为12000,该音分对应的音符为音高为九的音符g,即g9。
s203、终端根据所述音分与所述旋转弧度之间的第二预设规则以及所述最大半径r,绘制直线;
其中,第二预设规则为:
a=(360/12*c-90)*π/180
其中,所述c大于等于0且小于等于1100,所述c的步进为100;
所述直线l((0,0),(x,y))为:
l((0,0),(x,y))=((0,0),(r*cos(a),r*sin(a)));
其中,r为从所述显示屏的中心到所述螺旋线的最外侧的长度,具体的,
r=r*1.3*(7+(c/100+16)%12+12*(10-1))/(12*10)。
如图1所示,该图1包括12条直线,c的步进为100,利用第二预设规则,可以计算出相邻两条直线之间的旋转弧度,例如,c的初始值为0时,a为π/2,相应的,直线l((0,0),(x,y))为l((0,0),(0,r)),即为图1中12点钟方向的直线。
s204、终端根据所述第二预设规则在所述待显示区域的预设位置依次标记十二个音名,获得十二平均律螺旋坐标系,所述十二个音名依次为c,#c,d,#d,e,f,#f,g,#g,a,#a,b。
其中,该十二个音名标记的位置p(x,y)为:
p(x,y)=(1.3*r*cos(a),1.3*r*sin(a)),其中,该a的值根据第二预设规则来确定。
如图1所示,图1中各音名的位置标记在每条直线的远端,也就是直线顶端(r*cos(a),r*sin(a))的1.3倍的位置,可选的,也可以为其他的倍数位置,本发明实施例不做限定。
可见,实施图8所示的频谱显示方法,可以在待显示区域绘制出十二平均律螺旋坐标系,该十二平均律螺旋坐标系包括了每个音名对应的轴向,螺旋线的不同部分与同一音名的轴向相交的交点标识该音名的不同音高,如十二平均律螺旋坐标系可以包括音名c的九个音高,即c0至c8。
从而,本发明实施例还可以结合图2至5所示的频谱显示方法可以将当前播放音乐的频谱及时显示在该十二平均律螺旋坐标系上,使得用户可以一目了然当前的音谱,自动化实现了音乐的扒带。
请参阅图6,图6是本发明实施例提供的一种频谱显示装置的结构示意图,如图6所示,该频谱显示装置可以包括:
获取单元601,用于获取每帧音频数据的音高集合;
第一确定单元602,用于确定所述音高集合中每个音高对应的能量值;
绘制单元603,用于将所述每个音高以及所述每个音高对应的能量值绘制在十二平均律螺旋坐标系中。
本发明实施例中,获取单元601用于根据频率与音高之间的对应关系,确定每帧音频数据中预设频率范围内的各频率对应的音高集合。
本发明实施例中,第一确定单元602用于根据音高与能量索引值之间的对应关系,获取所述音高集合中每个音高对应的能量值。
本发明实施例中,绘制单元603用于从十二平均律螺旋坐标系的中心音符#a,音高22开始,按顺时针向外延伸半径,每顺时针旋转0.3度为一个音分来确定所述每个音高在所述十二平均律螺旋坐标系中的位置;并将所述每个音高对应的能量值以rgb色彩模式在所述十二平均律螺旋坐标系中所述位置显示。
本发明实施例中,频谱显示装置还包括:
第二确定单元604,用于根据所述音高集合确定所述音频数据对应的音符集合;以及根据所述音符集合确定并显示所述音频数据的和弦。
其中,第二确定单元604根据所述音符集合确定并显示所述音频数据的和弦,具体为:判断预设的和弦定义表中是否存在与所述音频数据的音符集合相匹配的和弦;所述和弦定义表定义了各和弦的音符集合;在存在相匹配的和弦时,根据匹配的和弦显示所述音频数据的和弦。
其中,匹配的和弦在和弦定义表中定义的音符集合与该音频数据的音符集合相同。
可选的,若所述和弦定义表不存在匹配的和弦,第二确定单元604还用于确定所述和弦定义表中各和弦定义的音符集合与所述音频数据的音符集合的匹配度;以及将所述匹配度按照从高到低的顺序,生成和弦顺序表;以及将所述和弦顺序表中各和弦升高半音;以及判断升高半音后的和弦顺序表中是否存在与所述音频数据的音符集合相匹配的和弦;并在存在匹配的和弦时,根据匹配的和弦显示所述音频数据的和弦。
可选的,第二确定单元604还可以在根据所述音频数据的音符集合确定的和弦为多个时,根据所述音频数据的调性从该多个和弦中确定所述音频数据的和弦。
可选的,该频谱显示装置还可以包括:
第三确定单元605,用于根据每帧音频数据的和弦,确定包括所述每帧音频数据的音乐的和弦集合;以及根据所述和弦集合以及预设的调性定义表确定并显示所述音乐的调性,所述调性定义表定义了各调性的和弦集合。
本发明实施例中,各单元的操作可以参考图1至图5所示的实施例的相关内容,这里不再详述。
请参阅图9,图9是本发明实施例提供的另一种频谱显示装置的结构示意图,其中,图9所示的频谱显示装置可以在终端的待显示区域绘制或者显示十二平均律螺旋坐标系,从而使得采用图6所示频谱显示装置的终端可以在该十二平均律螺旋坐标系中显示当前播放音乐的频谱,即音谱。具体的,图9所示的频谱显示装置可以包括以下单元:
确定单元901,用于根据待显示区域确定十二平均律螺旋坐标系的最大半径r;
绘制单元902,用于根据音分与旋转弧度之间的第一预设规则以及所述最大半径r,绘制半径逐渐外伸的螺旋线;
所述绘制单元902,还用于根据所述音分与所述旋转弧度之间的第二预设规则以及所述最大半径r,绘制直线;
标记单元903,用于根据所述第二预设规则在所述待显示区域的预设位置依次标记十二个音名,获得十二平均律螺旋坐标系,所述十二个音名依次为c,#c,d,#d,e,f,#f,g,#g,a,#a,b。
其中,待显示区域可以为终端的显示屏,或者终端要显示频谱的区域,例如,音乐播放应用中显示频谱的界面。
其中,第一预设规则可以为:
a=(360/1200*c-90)*π/180;
其中,a为所述旋转弧度;c为所述音分,所述c大于等于2200且小于等于12000,所述c的步进大于等于1且小于等于10;
所述螺旋线上的任一点p(x,y)为:
p(x,y)=(r*c/12000*cos(a),r*c/12000*sin(a))。
例如,图1所示,c初始值为2200,该音分对应的音符为#a,c的最大值为12000,该音分对应的音符为音高为九的音符g,即g9。
其中,第二预设规则为:
a=(360/12*c-90)*π/180
其中,所述c大于等于0且小于等于1100,所述c的步进为100;
所述直线l((0,0),(x,y))为:
l((0,0),(x,y))=((0,0),(r*cos(a),r*sin(a)));
其中,r为从所述显示屏的中心到所述螺旋线的最外侧的长度,具体的,
r=r*1.3*(7+(c/100+16)%12+12*(10-1))/(12*10)。
如图1所示,该图1包括12条直线,c的步进为100,利用第二预设规则,可以计算出相邻两条直线之间的旋转弧度,例如,c的初始值为0时,a为π/2,相应的,直线l((0,0),(x,y))为l((0,0),(0,r)),即为图1中12点钟方向的直线。
其中,该十二个音名标记的位置p(x,y)为:
p(x,y)=(1.3*r*cos(a),1.3*r*sin(a)),其中,该a的值根据第二预设规则来确定。
如图1所示,图1中各音名的位置标记在每条直线的远端,也就是直线顶端(r*cos(a),r*sin(a))的1.3倍的位置,可选的,也可以为其他的倍数位置,本发明实施例不做限定。
可见,该频谱显示装置可以在待显示区域绘制出十二平均律螺旋坐标系,该十二平均律螺旋坐标系包括了每个音名对应的轴向,螺旋线的不同部分与同一音名的轴向相交的交点标识该音名的不同音高,如十二平均律螺旋坐标系可以包括音名c的九个音高,即c0至c8。
其中,终端中可以同时设置图6所示的频谱显示装置和图9所示的频谱显示装置,将当前播放音乐的频谱及时显示在该十二平均律螺旋坐标系上,使得用户可以一目了然当前的音谱,自动化实现了音乐的扒带。
请参阅图7,图7是本发明实施例提供的一种终端的结构示意图,该终端的相关技术细节可以参照图1至图5所示的发明实施例内容,这里不再详述。该终端可以包括:处理器701、通信接口702、存储器703和通信总线704,其中,通信总线704用于实现这些组件之间的通信连接,通信接口702用于实现各机器之间的通信连接。存储器703可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器703可选的还可以是至少一个位于远离前述处理器701的存储装置。其中,处理器701可以结合图6所示的频谱显示装置执行相关操作,存储器703中存储一组程序代码,且处理器701调用存储器703中存储的程序代码,用于执行以下操作:
获取每帧音频数据的音高集合;
确定所述音高集合中每个音高对应的能量值;
将所述每个音高以及所述每个音高对应的能量值绘制在十二平均律螺旋坐标系中。
本发明实施例中,处理器701调用存储器703中存储的程序代码,获取每帧音频数据的音高集合,可以执行以下操作:
根据频率与音高之间的对应关系,确定每帧音频数据中预设频率范围内的各频率对应的音高集合。
本发明实施例中,处理器701调用存储器703中存储的程序代码,确定所述音高集合中每个音高对应的能量值,可以执行以下操作:
根据音高与能量索引值之间的对应关系,获取所述音高集合中每个音高对应的能量值。
本发明实施例中,处理器701调用存储器703中存储的程序代码,将所述每个音高以及所述每个音高对应的能量值绘制在十二平均律螺旋坐标系中,可以执行以下操作:
从十二平均律螺旋坐标系的中心音符#a,音高22开始,按顺时针向外延伸半径,每顺时针旋转0.3度为一个音分来确定所述每个音高在所述十二平均律螺旋坐标系中的位置;
并将所述每个音高对应的能量值以rgb色彩模式在所述十二平均律螺旋坐标系中所述位置显示。
本发明实施例中,处理器701调用存储器703中存储的程序代码,还可以执行以下操作:
根据所述音高集合确定所述音频数据对应的音符集合;
根据所述音符集合确定并显示所述音频数据的和弦。
本发明实施例中,处理器701调用存储器703中存储的程序代码,根据所述音符集合确定并显示所述音频数据的和弦,可以执行以下操作:
判断预设的和弦定义表中是否存在与所述音频数据的音符集合相匹配的和弦;所述和弦定义表定义了各和弦的音符集合;
若存在,根据匹配的和弦显示所述音频数据的和弦。
其中,所述匹配的和弦在所述和弦定义表中定义的音符集合与所述音频数据的音符集合相同。
本发明实施例中,处理器701调用存储器703中存储的程序代码,还可以执行以下操作:
确定所述和弦定义表中各和弦定义的音符集合与所述音频数据的音符集合的匹配度;
将所述匹配度按照从高到低的顺序,生成和弦顺序表;
将所述和弦顺序表中各和弦升高半音;
判断升高半音后的和弦顺序表中是否存在与所述音频数据的音符集合相匹配的和弦;
若存在,根据匹配的和弦显示所述音频数据的和弦。
本发明实施例中,处理器701调用存储器703中存储的程序代码,还可以执行以下操作:
当根据所述音频数据的音符集合确定的和弦为多个时,根据所述音频数据的调性从该多个和弦中确定所述音频数据的和弦。
本发明实施例中,处理器701调用存储器703中存储的程序代码,还可以执行以下操作:
根据每帧音频数据的和弦,确定包括所述每帧音频数据的音乐的和弦集合;
根据所述和弦集合以及预设的调性定义表确定并显示所述音乐的调性,所述调性定义表定义了各调性的和弦集合。
请参阅图10,图10是本发明实施例提供的另一种终端的结构示意图,该终端可以包括:处理器1001、通信接口1002、存储器1003和通信总线1004,其中,通信总线1004用于实现这些组件之间的通信连接,通信接口1002用于实现各机器之间的通信连接。存储器1003可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器703可选的还可以是至少一个位于远离前述处理器1001的存储装置。其中,处理器701可以结合图9所示的频谱显示装置执行相关操作,存储器1003中存储一组程序代码,且处理器1001调用存储器1003中存储的程序代码,用于执行以下操作:
根据待显示区域确定十二平均律螺旋坐标系的最大半径r;
根据音分与旋转弧度之间的第一预设规则以及所述最大半径r,绘制半径逐渐外伸的螺旋线;
根据所述音分与所述旋转弧度之间的第二预设规则以及所述最大半径r,绘制直线;
根据所述第二预设规则在所述待显示区域的预设位置依次标记十二个音名,获得十二平均律螺旋坐标系,所述十二个音名依次为c,#c,d,#d,e,f,#f,g,#g,a,#a,b。
其中,待显示区域可以为终端的显示屏,或者终端要显示频谱的区域,例如,音乐播放应用中显示频谱的界面。
其中,第一预设规则可以为:
a=(360/1200*c-90)*π/180;
其中,a为所述旋转弧度;c为所述音分,所述c大于等于2200且小于等于12000,所述c的步进大于等于1且小于等于10;
所述螺旋线上的任一点p(x,y)为:
p(x,y)=(r*c/12000*cos(a),r*c/12000*sin(a))。
例如,图1所示,c初始值为2200,该音分对应的音符为#a,c的最大值为12000,该音分对应的音符为音高为九的音符g,即g9。
其中,第二预设规则为:
a=(360/12*c-90)*π/180
其中,所述c大于等于0且小于等于1100,所述c的步进为100;
所述直线l((0,0),(x,y))为:
l((0,0),(x,y))=((0,0),(r*cos(a),r*sin(a)));
其中,r为从所述显示屏的中心到所述螺旋线的最外侧的长度,具体的,
r=r*1.3*(7+(c/100+16)%12+12*(10-1))/(12*10)。
如图1所示,该图1包括12条直线,c的步进为100,利用第二预设规则,可以计算出相邻两条直线之间的旋转弧度,例如,c的初始值为0时,a为π/2,相应的,直线l((0,0),(x,y))为l((0,0),(0,r)),即为图1中12点钟方向的直线。
其中,该十二个音名标记的位置p(x,y)为:
p(x,y)=(1.3*r*cos(a),1.3*r*sin(a)),其中,该a的值根据第二预设规则来确定。
如图1所示,图1中各音名的位置标记在每条直线的远端,也就是直线顶端(r*cos(a),r*sin(a))的1.3倍的位置,可选的,也可以为其他的倍数位置,本发明实施例不做限定。
可见,该频谱显示装置可以在待显示区域绘制出十二平均律螺旋坐标系,该十二平均律螺旋坐标系包括了每个音名对应的轴向,螺旋线的不同部分与同一音名的轴向相交的交点标识该音名的不同音高,如十二平均律螺旋坐标系可以包括音名c的九个音高,即c0至c8。
其中,终端中的处理器1001也可以执行图7所示的终端中处理器701的相关操作,将当前播放音乐的频谱及时显示在该十二平均律螺旋坐标系上,使得用户可以一目了然当前的音谱,自动化实现了音乐的扒带。
以上对本发明实施例所提供的频谱显示方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。