那么有人如何创建音乐可视化工具呢?我看过Google,但我还没有找到任何谈论实际编程的内容; 主要是链接到插件或可视化应用程序.
我使用iTunes,但我意识到我需要Xcode为此编程(我目前在伊拉克部署并且无法下载那么大的文件).所以现在我只是对学习它背后的"理论"感兴趣,比如处理频率和其他所需要的东西.
当可视化器播放歌曲文件时,它会以非常短的时间片(通常小于20毫秒)读取音频数据.可视化器对每个切片执行傅里叶变换,提取频率分量,并使用频率信息更新视觉显示.
视觉显示如何根据频率信息进行更新取决于程序员.通常,图形方法必须非常快速和轻量级,以便及时更新音乐的视觉效果(而不是让PC陷入困境).在早期(仍然),可视化工具通常直接修改Windows中的调色板以实现一些非常酷的效果.
基于频率分量的可视化器的一个特征是它们通常似乎不能很好地响应音乐的"节拍"(例如打击乐命中).可以编写更有趣且响应更快的可视化器,其将频域信息与通常对应于打击乐命中的音频中的"尖峰"感知相结合.
为了创建BeatHarness(http://www.beatharness.com),我只是"使用FFT来获取音频谱,然后使用一些滤波和边缘/起始探测器.
关于快速傅里叶变换:http: //en.wikipedia.org/wiki/Fast_Fourier_transform
如果您习惯于数学,那么您可能需要阅读Paul Bourke的页面:http: //local.wasp.uwa.edu.au/~pbourke/miscellaneous/dft/
(Paul Bourke无论如何都是你想要谷歌的名字,他有很多关于你现在想知道或可能在未来两年内想知道的话题的信息;))
如果你想阅读关于Masataka Goto的节拍/速度检测谷歌,他写了一些有趣的论文.
编辑:
他的主页:http://staff.aist.go.jp/m.goto/ 有趣的阅读:http://staff.aist.go.jp/m.goto/PROJ/bts.html
一旦你有了一些价值,例如低音,中音,高音和音量(左和右),你可以根据自己的想象做些什么.例如,显示一张图片,将尺寸乘以低音 - 你会得到一张可以在节拍上放大的图片等.
通常,您获取一定数量的音频数据,对其进行频率分析,并使用该数据修改一遍又一遍显示的图形.进行频率分析的明显方法是使用FFT,但简单的音调检测也可以正常工作,计算开销较低.
因此,例如,您编写的例程会不断绘制一系列以圆形排列的形状.然后使用主频确定圆的颜色,并使用音量设置大小.
有多种处理音频数据的方法,最简单的方法是将其显示为快速变化的波形,然后对其应用一些图形效果.类似地,可以计算诸如音量之类的东西(并作为参数传递给某些图形例程)而不进行快速傅立叶变换以获得频率:只计算信号的平均幅度.
使用FFT或其他方式将数据转换到频域允许更复杂的效果,包括光谱图等.虽然直接从FFT输出检测鼓节拍的时间或音符的音高,但是看起来非常"明显"的东西看起来很棘手.
可靠的节拍检测和音调检测是难题,特别是在实时中.我不是专家,但是这个页面运行了一些简单的示例算法及其结果.
如果你正在寻找一个小的下载,相当便携的工具集(和一个狂热的社区可以借鉴)我会建议Processing(http://www.processing.org),特别是http://processing.org/学习/图书馆/在ESS下.这应该会让你失去兔子洞.不会制作iTunes可视化工具,而是用于原型设计:http://www.barbariangroup.com/software/magnetosphere,它成为默认的iTunes可视化工具.