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