创建音乐可视化工具

时间:2008-09-30 15:59:10

标签: visualization itunes

那么有人如何创建音乐可视化工具呢?我看过Google,但我还没有找到任何谈论实际编程的内容;主要是链接到插件或可视化应用程序。

我使用iTunes但我意识到我需要Xcode为此编程(我目前在伊拉克部署并且无法下载那么大的文件)。所以现在我只是对学习它背后的“理论”感兴趣,比如处理频率和其他所需要的东西。

12 个答案:

答案 0 :(得分:25)

当可视化工具播放歌曲文件时,它会以非常短的时间片(通常小于20毫秒)读取音频数据。可视化器对每个切片进行傅里叶变换,提取频率成分,并使用频率信息更新可视显示。

如何更新视觉显示以响应频率信息取决于程序员。通常,图形方法必须非常快速和轻量级,以便及时更新音乐的视觉效果(而不是让PC陷入困境)。在早期(现在仍然如此),可视化工具通常会直接修改Windows中的调色板以实现一些非常酷的效果。

基于频率分量的可视化器的一个特征是它们通常不会很好地响应音乐的“节拍”(例如打击乐命中)。可以编写更有趣和响应更快的可视化器,将频域信息与音频中的“尖峰”意识结合起来,通常对应于打击乐命中。

答案 1 :(得分:20)

为了创建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无论如何都是你想要google的名字,他有很多关于你现在想知道或可能在未来两年内想知道的话题的信息;)

如果你想阅读有关Masataka Goto的节拍/速度检测谷歌,他会写一些有趣的论文。

编辑:

他的主页:http://staff.aist.go.jp/m.goto/ 有趣的读物:http://staff.aist.go.jp/m.goto/PROJ/bts.html

一旦你有一些值,例如低音,中音,高音和音量(左和右), 这完全取决于你的想象力如何处理它们。 例如,显示一张图片,将尺寸乘以低音 - 你会得到一张可以在节拍上放大的图片等。

答案 2 :(得分:13)

通常,您需要获取一定数量的音频数据,对其进行频率分析,然后使用该数据修改一遍又一遍显示的图形。进行频率分析的显而易见的方法是FFT,但简单的tone detection也可以正常工作,计算开销较低。

因此,例如,您编写了一个例程,该例程不断绘制一系列以圆形排列的形状。然后使用主频来确定圆的颜色,并使用体积来设置尺寸。

答案 3 :(得分:6)

有多种处理音频数据的方法,最简单的方法就是将其显示为快速变化的波形,然后对其应用一些图形效果。类似地,可以计算诸如音量之类的东西(并作为参数传递给某些图形例程)而不进行快速傅里叶变换以获得频率:只计算信号的平均幅度。

使用FFT将数据转换为频域或以其他方式允许更复杂的效果,包括spectrograms之类的内容。虽然直接从FFT输出检测鼓节拍的时间或音符的音调,但是看起来非常“明显”的东西看起来很棘手

可靠的节拍检测和音调检测是难题,尤其是实时。我不是专家,但是this page会运行一些简单的示例算法及其结果。

答案 4 :(得分:5)

如果您正在寻找一个小型下载,相当便携的工具集(和狂热社区可以使用),我建议处理(http://www.processing.org),特别是ESS下的http://processing.org/learning/libraries/。这应该会让你失去兔子洞。不会制作iTunes可视化工具,而是用于原型制作:http://www.barbariangroup.com/software/magnetosphere成为默认的iTunes可视化工具。

答案 5 :(得分:2)

  1. 设计一个算法,在给定一组变量的情况下在屏幕上绘制一些有趣的东西
  2. 设计一种方法将音频流转换为一组变量,分析节拍/分钟频率不同的频率范围,音调等。
  3. 将变量插入您的算法并观察其绘制。
  4. 一个简单的可视化将是每当音乐超过某个频率阈值时改变屏幕颜色的可视化。或者只是将bpm写入屏幕。或只是显示一个ociliscope。

    查看此wikipedia article

答案 6 :(得分:2)

与@Pragmaticyankee建议一样,处理确实是一种可视化音乐的有趣方式。您可以在Ableton Live中加载音乐,并使用EQ滤除音乐中的高频,中频和低频。然后,您可以使用VST follwoing插件将音频包络转换为MIDI CC消息,例如Mokafix Audio的Gatefish(适用于Windows)或PizMidi的midiAudioToCC插件(适用于Mac)。然后,您可以将这些MIDI CC消息发送到支持MIDI的发光硬件工具,例如percussa audiocubes。您可以为要显示的每个频率使用立方体,并为立方体指定颜色。看看这篇文章:

http://www.percussa.com/2012/08/18/how-do-i-generate-rgb-light-effects-using-audio-signals-featured-question/

答案 7 :(得分:2)

我们最近在LightningChart数据可视化库中添加了基于DirectSound的音频数据输入例程。 LightningChart SDK是Visual Studio .NET(WPF和WinForms)的一组组件,您可能会发现它很有用。

使用AudioInput组件,您可以从声音设备获取实时波形数据样本。您可以从任何来源播放声音,如Spotify,WinAmp,CD / DVD播放器或使用麦克风输入连接器。

使用SpectrumCalculator组件,您可以获得在许多可视化中很方便的功率谱(FFT转换)。

使用LightningChartUltimate组件,您可以以多种不同的形式显示数据,如波形图,条形图,热图,光谱图,3D谱图,3D线等,它们可以组合使用。所有渲染都通过Direct3D加速进行。

我们在SDK中的示例有一个科学的方法,并没有真正的娱乐方面,但它绝对可以用于真棒娱乐可视化。

我们还配置了SignalGenerator(扫描,多通道配置,正弦,方波,三角形和噪声波形,WAV实时流和DirectX音频输出组件,用于从扬声器或线路输出发送波形数据。< / p>

Waveform and 3D spectrogram

Gradient bars [我是LightningChart组件的首席技术官,做这件事只是因为我喜欢它:-)]

答案 8 :(得分:1)

Lee Brimelow已经a great video tutorial在flash中执行此操作。即使您想使用闪光灯以外的其他方式实现它,也应该指向正确的方向。

MDN has a nice tutorial以及使用Web Audio API进行可视化。

答案 9 :(得分:1)

Heiko Wichmann的

VizKit似乎是一个非常好的跨平台(第三方)sdk&amp;起点(它使用Apple发布的Visualizer API一段时间)。

我刚用Xcode编译它,它还包括一个visual studio项目。 iTunes崩溃了一次,但在那之后运行得很好。我到目前为止所喜欢的:低依赖性(必须在我的环境中修复一个框架路径),大量样本(均衡器,频谱,专辑图片,直方图),very clear architecture,同意许可。

也可在Sourceforge上找到。

答案 10 :(得分:0)

转到http://developer.apple.com/library/mac/#technotes/tn/tn2016.html。它直接从Apple提供有关iTunes Visualizers的信息,它确实提到iTunes可以在FFT之后为您提供波形数据而无需您做任何工作。

答案 11 :(得分:0)

这个链接完全符合您的要求,并且可以下载源代码:我发现它非常有用:http://www.raywenderlich.com/36475/how-to-make-a-music-visualizer-in-ios