一种实时音乐频谱矢量图形的绘制方法
技术领域
本发明涉及音视频处理领域,更具体的说,其涉及用于一种实时音乐频谱矢量图形的绘制方法。
背景技术
一直以来,音乐都是一种表达情感的艺术形式,但是传统意义上的听音乐已经不能满足人们对色彩斑斓世界的追求,因此音乐可视化应运而生。又恰逢计算机技术在图像处理、虚拟现实、数字信号处理等方面有了长足发展,为音乐可视化技术进一步发展奠定了基础。音乐频谱的视觉展现是其中的重要内容,但已有的音乐频谱绘制效果单调,基本都是基于柱状图的变化来体现;且视觉效果呈现缺乏听觉视觉的互动感,在视觉上的节奏感不强,整体体验较差。
发明内容
本发明的目的在于提供一种实时音乐频谱矢量图形的绘制方法,使得整个过程快速流畅、可视化强。
为了解决上述技术问题,本发明的技术方案如下:
一种实时音乐频谱矢量图形的绘制方法,具体包括如下步骤:
101)初始化参数步骤:由任务调度器初始化图形计算器与音频分析器的相关参数;
102)音频分析步骤:由步骤101)初始化的音频参数触发音频分析器进行分析,将音频数据按照时间进行数据分块分析,并对分析结果进行缓存,以供调用;
103)调取音频数据步骤:由任务调度器根据时间值从步骤102)的分析结果中获取该时间值内的分析结果;
104)数据转换步骤:将步骤103)获取的数据根据设定的转换方式转化为图形参量数据;
105)图形处理步骤:由图形处理模块将步骤104)转化后的数据结合步骤101)初始化时给出的相关参数,获得几何描述参量,并根据几何描述参量由OpenGL渲染上效果,所述OpenGL为一个提供跨编程语言、跨平台的编程接口规格的专业的图形程序。
进一步的,所述步骤101)所述图形计算器的参数包括图形数量,每个图形的形状,每个图形的最大最小尺寸,图形的颜色,图形在图形容器里的坐标,图形容器相对背景的坐标;所述音频分析器的参数包括要分析的目标音乐文件,输出的频段范围,频点数,映射系数,映射的输出值范围。
进一步的,所述步骤102)音频分析具体步骤如下:
301)音视频同步步骤:由步骤101)的音频分析器按音频时间进行数据分块,达到音视频效果同步;
302)基于FFT快速频谱分析步骤:将对步骤301)的音频信息通过FFT进行分析,获取音频参数,并缓存分析结果;所述FFT即快速傅里叶变换为DFT即离线傅里叶变换的一种改进型快速处理音频信息的方法;
303)音频信息的转换步骤:将步骤302)得到的音频信息根据相应的数学映射转化为几何参量值,并缓存该结果,以备调用。
进一步的,所述FFT采用如下公式(2)进行前半部分分析,公式(3)进行后半部分分析:
其中X
1(k),X
2(k),分别是FFT的输入序列表示成偶点序列和奇点序列的N/2点DFT,
为
的演化变式,j为虚数单位,e为自然常数,n为参数,N为有限长序列的数量。
进一步的,所述图形处理具体包括如下步骤:
501)建立几何模型步骤:基于笛卡尔坐标系、球坐标系,用统一的坐标描述符描述坐标模型、种类、逻辑类型、用途;并用统一的数据结构对图形进行维度描述;
502)几何参量转换步骤:在步骤501)的基础上由步骤103)的数据建立图形属性值,并依据所设定的可变性描述符修改图形对应的几何参量;
503)几何图形处理步骤:根据步骤502)的图形属性值和图形容器的几何关系,通过矩阵变换获取相应的图形的几何参量,为图形渲染提供数据依据,并可依据设定,实时修改属性,实时处理更新。
进一步的,所述图形的维度描述包括图形对象的几何属性的分析与抽象、定义图形样式、建立可变标示符描述体系。
进一步的,所述图形对象的几何属性的分析与抽象包括图形基本属性、相应派生的具体图形和对图形容器进行分析与抽象,所述图形容器的基本属性包括锚点,父容器原点坐标。
进一步的,所述定义图形样式包括轮廓色、填充色、柔化程度、Hue颜色空间的迭代次数,颜色对称性;所述Hue为色调。
进一步的,所述建立可变标示符描述体系为用于描述不同坐标系下,不同图形,不同维度的几何参量的可变性,包括图形自身的属性、图形容器在父容器中的锚点位置。
本发明相比现有技术优点在于:
本发明为了提升音乐频谱的节奏感、互动感,实现了频谱的实时高精度分析。实现了频谱图形种类的多样性,图形参数变化的多样性。实现了频谱绘制的实时性,提升图形图像质量。
通过以线程方式进行高精度频谱分析,一方面以并行处理的方式提高了软件处理的效率,另一方面频谱分析精度提高后,最终将减小映射图形的颗粒度,画质的分辨率可以得到提升。同时高精度频谱分析,可输出更多维度的数据,可以使得后期图形处理可选择的数据就多,有利于视觉图形的多样性。这一步是先从数据源头上进行改进。
在图形种类上加以丰富,不仅仅局限于常见的矩形,还可以使用圆,椭圆,点,线,多边形等。同时可以图形可变化的参量也加以丰富,可变化各种图形的自身尺寸,空间位置等。这样频谱数据可驱动的数据项就大幅增加,效果将更加丰富。
通过使用OpenGL技术,可有效提升图像质量及渲染性能,可为使用者提供更好的视觉体验与互动感。
附图说明
图1为本发明一种实时音乐频谱矢量图形的绘制方法的整体流程时序图;
图2为本发明一种实时音乐频谱矢量图形的绘制方法的几何建模中的组合关系图;
图3为本发明一种实时音乐频谱矢量图形的绘制方法的音频分析器流程图。
具体实施方式
下面结合附图和具体实施方式对本发明进一步说明。
如图1和图2所示,一种实时音乐频谱矢量图形的绘制方法,具体包括如下步骤:
101)初始化参数步骤:由任务调度器初始化图形计算器与音频分析器的相关参数。所述图形计算器的参数包括图形数量,每个图形的形状,每个图形的最大最小尺寸,图形的颜色,图形在图形容器里的坐标,图形容器相对背景的坐标等参数;所述音频分析器的参数包括要分析的目标音乐文件,输出的频段范围,频点数,映射系数,映射的输出值范围。
102)音频分析步骤:由步骤101)初始化的音频参数触发音频分析器进行分析,将音频数据按照时间进行数据分块分析,并对分析结果进行缓存,以供调用。音频分析具体步骤如下:
301)音视频同步步骤:由步骤101)的音频分析器按音频时间进行数据分块,达到音视频效果同步。即由Audio解码器读取出一段PCM数据即脉冲编码调制数据,也就是音频,并通过按音频时间的时间步进进行数据分块,以此达到音视频效果同步,确保效果体验的实时互动感。
302)基于FFT快速频谱分析步骤:将对步骤301)的音频信息通过FFT进行分析,获取音频参数,并缓存分析结果;所述FFT即快速傅里叶变换为DFT即离线傅里叶变换的一种改进型快速处理音频信息的方法。
所述DFT采用如下公式(1)进行频谱分析:
其中N为有限长序列的数量,x(n)为有限长序列的表达式,
j为虚数单位,e为自然常数。对于N点有限长序列,DFT需要进行4N
2次乘法运算,计算的时间复杂度为O(N
2)。而为了要想获取高精度频谱分析结果,N值一般在512以上,此时的计算量很大,将直接导致该方法的实时性很差。作为DFT的一种快速算法,FFT要求输入序列的数量N=2
L,(L是为方便用指数形式表示序列个数的一个数学表示量,例如:L=1,序列个数2L=2;L=2序列个数2L=4...)如果不满足这个条件,可以人为地加上若干零值点,使之达到这一要求。FFT的输入序列可以分别表示成如下公式(4)偶点序列x
1(r)和奇点序列x
2(r),r为序列的索引值:
进而DFT的表达式可以拆分为如下公式(5):
X1(k)和X2(k)分别是x1(r)和x2(r)的N/2点,从而演化的公式(7):
可以看出,一个N点DFT已分解成两个N/2点的DFT,他们又组成一个N点DFT。而X1(k)和X2(k)以及x1(r)和x2(r)都是N/2点序列,X(k)却有N点。用上述计算得到的只是X(k)的前一半项数结果,要想利用X1(k)和X2(k)得到X(k)的全部的值的话,需利用复指数根的周期性如下公式(8):
从而可以得到如下公式(9):
X1(k+N/2)=X1(k),X2(k+N/2)=X2(k) 公式(9)
结合公式(9)和公式(10)可得到完整的N点FFT的表达式为,如下公式(2)进行前半部分分析,公式(3)进行后半部分分析:
做这样的分解分析计算后,乘法计算量减半,同时因为输入的FFT序列个数为2L,因此还可以进一步一直分解,最后分解为2点DFT,分解次数为log2N,最终的算法时间复杂度为O(Nlog2N)。这样相比原始的DFT,FFT的时间复杂度大幅缩减。以N=1024为例,耗时与DFT差2个数量级。这为高精度频谱分析提供了保证。也使得可以在手机端环境下流畅使用。
假设给定一首采样频率为44.1KHz的音乐,利用前述FFT方法,取N=512,通过上述流程可得出频谱分辨率为86Hz的分析结果;如果取N=1024,频谱分辨率可达到43Hz。同时,在目前主流手机设备上算法的实际运行耗时在毫秒级别以下。
303)音频信息的转换步骤:将步骤302)得到的音频信息根据相应的数学映射转化为几何参量值,并缓存该结果,以备调用。所述几何参量比如为圆的半径、原点坐标等。
103)调取音频数据步骤:由任务调度器根据时间值从步骤102)的分析结果中获取该时间值内的分析结果。即为得到某个图形的最新几何参量,任务调度器要给定某个时间值,向音频分析器获取该时间值下的分析结果。音频分析器依据该时间值在缓存里搜索分析结果并返回。
104)数据转换步骤:将步骤103)获取的数据根据设定的转换方式转化为图形参量数据。因为音频分析器输出的只是纯数学值,所以任务调度器要依据设定,将其标识成图形的某个参量。比如:当设定驱动的是矩形的高时,将其转换成尺寸的坐标Y值。如果设定的驱动的是图形的宽时,将其转换成坐标的X值。
105)图形处理步骤:将新的图形参数传给图形计算模块,由图形处理模块将步骤104)转化后的数据结合步骤101)初始化时给出的相关参数,图形计算模块在接收到某个图形的最新参数后,将结合初始时给出的相关坐标尺寸等信息计算最新的几何描述参量。例如,当某个矩形的高度发生变化后,矩形的4个顶点坐标将发生变化,计算出最新的顶点坐标,以供后续渲染使用。并根据几何描述参量由OpenGL渲染上效果到目标上,所述OpenGL为一个提供跨编程语言、跨平台的编程接口规格的专业的图形程序。
所述图形处理,具体还包括如下步骤:
501)建立几何模型步骤:基于笛卡尔坐标系、球坐标系,用统一的坐标描述符描述坐标模型、种类、逻辑类型、用途;并用统一的数据结构对图形进行维度描述。所述图形的维度描述包括图形对象的几何属性的分析与抽象、定义图形样式、建立可变标示符描述体系。所述图形对象的几何属性的分析与抽象包括图形基本属性、相应派生的具体图形和对图形容器进行分析与抽象,所述图形容器的基本属性包括尺寸、旋转角度、旋转锚点、在坐标系中的对齐方式等。相应派生点、线、圆、椭圆、矩阵、多边形等具体图形及相应处理。对图形容器进行分析与抽象,用于描述不同图形之间的几何排列关系。图形容器的基本属性有锚点,父容器原点坐标等。所述定义图形样式包括轮廓色、填充色、柔化程度、Hue颜色空间的迭代次数,颜色对称性等,其中所述Hue为色调。所述建立可变标示符描述体系为用于描述不同坐标系下,不同图形,不同维度的几何参量的可变性,实际可变的几何参量可以是图形自身的属性,比如圆的半径、椭圆中心与坐标原点的偏移程度、矩形的宽度等;也可以是某个图形容器在父容器中的锚点位置(可影响该容器中的所有图形个体)等。
以最终呈现出按圆周分布的柱状频谱图为例。
每一个柱状体即为矩形,用长宽加以描述,最终将提取矩形的4个点坐标进行渲染。每个矩形都要将其锚定在圆周上一点,设圆周的半径为r,某一点与圆心的连线与x轴的夹角为
圆周上某点的极坐标描述为
同时需要呈圆心辐射状,进而每一个矩形还需要旋转一定角度θ
1。不同矩形的
和θ
1值不一样。这样这个容器里就包含了按圆周排布的一些列矩形图形。
在实际计算时会用到极坐标和直角坐标的转换,可利用下述公式(11):
r为圆周的半径,
为角度,x,y为定位坐标值,这样一个圆周,可以将其放到背景的任意位置,并用其圆心的坐标来描述该容器在背景里的锚点位置。
给定一个矩形的长宽后,其4个顶点的坐标也被唯一的决定了,而最终渲染需要用到4个顶点的绝对坐标,因此要依据上述相对关系,进行一系列换算。以矩形的左上点pLT(x0,y0)为例:
pLT首先要平移到其在容器里的锚点位置,x/y的平移量,可利用上述公式进行转换。假设其平移量为(Δx1,Δy1)。移到锚点后,pLT还要绕锚点旋转角度θ1。最终的绝对坐标,还要考虑容器在背景的中的坐标,假设容器在背景的锚点坐标为(x2,y2),则相应的平移量为(Δx2,Δy2)。涉及到坐标平移,旋转可利用以下变换矩阵公式(12)进行计算:
结合本例,pLT最终的绝对坐标(x0′,y0′)可通过下述公式(13)进行计算:
其中(Δx2,Δy2)为锚点坐标为(x2,y2)的平移量。
502)几何参量转换步骤:在步骤501)的基础上由步骤103)的数据建立图形属性值,并依据所设定的可变性描述符修改图形对应的几何参量,为几何计算处理提供原始数据。
503)几何图形处理步骤:根据步骤502)的图形属性值和图形容器的几何关系,通过矩阵变换获取相应的图形的几何参量,为图形渲染提供数据依据,并可依据设定,实时修改属性,实时处理更新。所述图形渲染利用OpenGL进行高性能图形渲染,还利用了OpenGL的抗锯齿功能,渲染高质量图形对象和利用OpenGL实现多样式的矢量渲染。比如绘制描边色与填充色不一样的图形、更具所设定的Hue颜色空间迭代次数,计算不同图形组中各个图形的颜色,并做相应绘制。所述Hue为一个可快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化用户接口。所述Hadoop是一种分布式系统基础架构。
综上所述,使用者可以通过在手机上提供的应用程序,选定一首歌曲和效果模板。效果模板里包含了音频分析参数与几何矢量的参数描述。然后选择播放,播放时,会利用上述模块,进行分析计算,并将结果矢量图形渲染到显示屏幕上。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明构思的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明保护范围内。