创build音乐可视化器
那么如何创造一个音乐可视化? 我看过谷歌,但我还没有真正发现任何谈论实际的编程; 大多只是链接到插件或可视化应用程序。
我使用的iTunes,但我意识到,我需要Xcode编程(我目前部署在伊拉克,不能下载一个大的文件)。 所以现在我只想学习背后的“理论”,比如处理频率和其他需要的东西。
当一个可视化器播放一个歌曲文件时,它会以非常短的时间片(通常less于20毫秒)读取audio数据。 可视化器对每个切片进行傅里叶变换,提取频率分量,并使用频率信息更新可视显示器。
视觉显示如何更新以响应频率信息取决于程序员。 一般来说,graphics方法必须非常快速和轻量级,以便随着音乐及时更新视觉效果(而不会让PC停滞不前)。 在早期(现在仍然),可视化器通常直接在Windows中修改调色板,以获得一些非常酷的效果。
基于频率分量的可视化器的一个特点是,它们似乎并不经常对音乐的“节拍”(例如敲击打击)做出响应。 可以写出更有趣和反应迅速的可视化器,将频域信息与audio中的“尖峰”相结合,通常对应于打击命中。
为了创buildBeatHarness( http://www.beatharness.com ),我只是简单地使用FFT来获取audio谱,然后使用一些滤波和边缘/起始检测器。
关于快速傅里叶变换: http : //en.wikipedia.org/wiki/Fast_Fourier_transform
如果你习惯math,你可能想阅读Paul Bourke的网页: http : //local.wasp.uwa.edu.au/~pbourke/miscellaneous/dft/
(Paul Bourke无论如何都是你想要的谷歌的名字,他有很多关于你现在或者未来2年可能想知道的主题的信息;))
如果你想阅读关于后藤雅典的节拍/速度检测谷歌,他写了一些有趣的文件。
编辑:
他的主页: http : //staff.aist.go.jp/m.goto/有趣的阅读: http : //staff.aist.go.jp/m.goto/PROJ/bts.html
一旦你有一些价值的例如低音,中调,高音和音量(左和右),这完全取决于你的想象力如何处理它们。 显示一张图片,将大小乘以低音,例如 – 你会得到一张照片,放大节拍等。
通常情况下,您需要获取一定数量的audio数据,对其进行频率分析,然后使用该数据修改某些反复显示的graphics。 频率分析的一个显而易见的方法是使用FFT ,但简单的audio检测也可以工作,同时具有较低的计算开销。
所以,例如,你写了一个例程,不断绘制一系列排列成圆形的graphics。 然后使用主频确定圆的颜色,并使用音量来设置尺寸。
处理audio数据有多种方式,最简单的方法就是将其显示为快速变化的波形,然后应用一些graphics效果。 类似的,像音量这样的东西可以被计算(并且作为一个parameter passing给一些graphics程序)而不用做快速傅立叶变换来获得频率:只需计算信号的平均幅度。
使用FFT将数据转换到频域可以实现更复杂的效果,包括频谱图等 。 尽pipe如此,即使非常“明显”的事情,例如直接从FFT输出的鼓敲节奏或音符音调,也是非常棘手的
可靠的拍频检测和音调检测是很难解决的问题,尤其是实时的。 我不是专家,但是这个页面通过一些简单的示例algorithm及其结果。
如果你正在寻找一个小的下载,相当便携的工具集玩(和一个狂热的社区可以借鉴),我会build议处理( http://www.processing.org ),特别是http://processing.org/学习/图书馆/在ESS下。; 这应该把你带到兔子洞。 不会制作一个iTunes的可视化工具,但用于原型: http : //www.barbariangroup.com/software/magnetosphere ,成为默认的iTunes可视化工具。
- devise一个algorithm,在给定一组variables的情况下在屏幕上绘制一些有趣的东西
- devise一种将audiostream转换成一组variables,分析诸如节拍/分钟频率,不同频率范围,音调等的variables。
- 把variables插入你的algorithm,并观察它的绘制。
一个简单的可视化就是每当音乐超过某个频率时就改变屏幕的颜色。 或者只是把bpm写到屏幕上。 或只是显示一个ociliscope。
看看这个维基百科的文章
像@Pragmaticyankee处理build议的确是一个有趣的方式来可视化您的音乐。 您可以在Ableton Live中加载音乐,并使用EQ从音乐中滤除高频,中频和低频。 然后,您可以使用VST follwoing插件将audio信封转换为MIDI CC消息,例如Mokafix Audio(适用于Windows)的Gatefish或PizMidi的midiAudioToCC插件(适用于Mac)。 然后,您可以将这些MIDI CC消息发送到支持MIDI的发光硬件工具,例如percussa audiocube。 您可以为要显示的每个频率使用一个立方体,并为立方体分配一个颜色。 看看这个post:
我们最近在LightningChart数据可视化库中添加了基于DirectSound的audio数据input例程。 LightningChart SDK是用于Visual Studio .NET(WPF和WinForms)的一组组件,您可能会觉得它很有用。
使用AudioInput组件,您可以从声音设备获取实时波形数据样本。 您可以播放来自任何来源的声音,如Spotify,WinAmp,CD / DVD播放器或使用麦克风input连接器。
使用SpectrumCalculator组件,您可以获得功率谱(FFT转换),这在许多可视化中都非常方便。
使用LightningChartUltimate组件,您可以以多种不同的forms可视化数据,如波形图,条形图,热图,光谱图,3D光谱图,3D线等,并可将它们组合在一起。 所有渲染都是通过Direct3D加速进行的。
我们在SDK中的例子有一个科学的方法,没有太多的娱乐方面,但它绝对可以用于真棒娱乐可视化。
我们还configuration了可从扬声器或线路输出发送波形数据的SignalGenerator(扫频,多通道configuration,正弦波,正方形,三angular形和噪声波形,WAV实时stream和DirectXaudio输出组件。
[我是LightningChart组件的首席技术官,只是因为我喜欢它:-)]
李Brimelow有一个伟大的video教程做这个在闪存。 即使您想使用除闪光以外的其他东西来实现,也应指出正确的方向。
由Heiko Wichmann的VizKit似乎是一个非常好的跨平台(第三方)sdk&起点(它使用了苹果公司发布的Visualizer API)。
我只是用Xcode编译它,它也包含一个visual studio项目。 iTunes坠毁了一次,但之后运行良好。 我目前喜欢的是:低依赖性(必须在我的env上修改一个框架path),大量样本(EQ,谱,专辑graphics,直方图), 非常清晰的架构 ,合适的许可证。
也可以在Sourceforge上使用 。
转到http://developer.apple.com/library/mac/#technotes/tn/tn2016.html 。 它直接从苹果公司提供有关iTunes展示台的信息,并提到iTunes可以在FFT之后为您提供波形数据,而无需您做任何工作。
这个链接正是你想要的,并且可以下载源代码:我发现它确实有帮助: http : //www.raywenderlich.com/36475/how-to-make-a-music-visualizer-in-ios