我有兴趣为MP3作为宠物项目制作一个OpenGL可视化工具。
我偶然发现了这个youtube视频,该视频演示了有人展示了与增强现实一起使用的可视化工具。
http://www.youtube.com/watch?v=SnshyLJSpnc#t=1m15s
请观看该视频,但忽略该视频的增强现实方面。我只对制作展示台而不是增强现实感兴趣。
使用哪种算法来生成与音乐相关的模式?如果你观看,你可以看到几种不同的可视化方法。第一个具有独特的外观:
第一个看起来像是在渲染区域上移动的波浪:
另一种“模式”似乎是可视化在中心圈内围绕中心移动:
任何精通音频编程的人,可以使用哪种算法来生成类似的外观可视化?第一个使用什么样的算法?还是那个有同心圆的人?
任何指导我根据音乐使用哪些算法生成这些可视化的帮助都会对我有所帮助!
答案 0 :(得分:8)
首先,这些似乎都基于FFT算法(快速傅立叶变换),它可以为特定时间片获取声波并将其分离成XY谱线图,其中X代表频谱(通常基于对数从20hz到20,000hz),Y表示每个不同频率的声音幅度或音量。
如果你看一下最初的可视化(视频中较早的那些平面,无色的可视化),你会看到它的未加工形式。你会注意到,低音符在左侧显示为峰值和尖峰,而在中间和右侧显示高音符,这是经典的傅立叶变换映射。 (事实上,这个视频中最大的错误是在下半部分,在引入之后,从左到右的FFT映射存在缺陷,因此大多数最高和最低音符都被切断了左右边缘。可视化)。
从这里开始,他只是为这一个基本技巧添加了不同且逐渐复杂的装饰。首先,他添加了非常基本颜色映射:波形的高度直接映射到它的颜色:从红色(最低)到深蓝色/靛蓝(最高),遵循经典的ROYGBIV模式(红色,橙色,黄色,绿色,蓝色,靛蓝色,紫罗兰色)。请记住,高度也对应于该频率的音量。据我所知,他使用相同的颜色映射,没有任何变化。
所有随后的装饰和变化似乎只是用于渐进式时间映射的不同方式。最初,他只是将视觉区域前面的波形映射,然后逐渐将它们流走,这样他就可以有效地制作连续运行的3D曲面图,频率从左到右运行,音量(和颜色)从下到上运行和时间从前到后运行。这就是你第一张照片中的内容。
其他一切只是越来越复杂的版本,以更复杂的方式映射时间(和时间)。例如,在你显示的第二个循环中,我相信他是在一个非常快速的径向扫描模式中将时间映射到中间的明显极点。
答案 1 :(得分:3)
看一下普林斯顿Soundlab的sndpeek - 用OpenGL实现的一些基本但有效的瀑布可视化效果,而且源代码非常具有教学意义。