创建音乐可视化器

时间:2020-03-06 14:55:50  来源:igfitidea点击:

那么,某人如何创建音乐可视化器?我看过Google,但还没有发现任何有关实际编程的内容。大多数情况下只是指向插件或者可视化应用程序的链接。

我使用iTunes,但是我意识到我需要Xcode对此进行编程(我目前已部署在伊拉克,无法下载那么大的文件)。因此,现在我只想学习其背后的"理论",例如处理频率以及任何其他需要的东西。

解决方案

通常,我们需要获取一定数量的音频数据,对其进行频率分析,然后使用该数据来修改不断显示的某些图形。进行频率分析的明显方法是使用FFT,但是简单的音调检测也可以工作,而运算开销较低。

因此,例如,我们编写了一个例程,该例程连续绘制一系列排列成圆形的形状。然后,我们可以使用主导频率来确定圆圈的颜色,并使用音量来设置大小。

可视化器播放歌曲文件时,会在很短的时间片(通常少于20毫秒)中读取音频数据。可视化器对每个切片进行傅立叶变换,提取频率分量,并使用频率信息更新视觉显示。

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

基于频率分量的可视化器的一个特征是,它们似乎常常无法很好地响应音乐的"拍子"(例如,敲击乐)。可以编写更有趣和响应更快的可视化工具,将频域信息与音频中"尖峰"的意识相结合,这些"尖峰"通常对应于打击乐。

  • 给定一组变量,设计一种算法在屏幕上绘制一些有趣的东西
  • 设计一种将音频流转换为一组变量的方法,以分析诸如节拍/分钟频率,不同频率范围,音调等内容。
  • 将变量插入算法中,然后观察绘制。

一种简单的可视化方法是,每当音乐经过某个频率阈值时,它就会更改屏幕的颜色。或者仅将bpm写入屏幕。或者仅显示一个单镜。

查看此维基百科文章

如果我们正在寻找一个小的下载,相当可移植的工具集,以供使用(以及疯狂的社区来使用),我建议我们使用Processing(http://www.processing.org),尤其是http://processing.org/。在ESS下的学习/图书馆/。那应该把你带到兔子洞里。不会制作iTunes可视化器,但将其用作原型:http://www.barbariangroup.com/software/magnetosphere成为默认的iTunes可视化器。

有多种处理音频数据的方法,最简单的方法是将其显示为快速变化的波形,然后对其应用一些图形效果。类似地,无需进行快速傅立叶变换即可获取频率即可计算体积(并将其作为参数传递给某些图形例程),只需计算信号的平均幅度即可。

使用FFT或者其他方法将数据转换到频域,可以产生更复杂的效果,包括像频谱图之类的东西。虽然直接从FFT输出中检测出甚至很明显的东西(例如鼓拍的时间或者音符的音调),但还是看似棘手的

可靠的节拍检测和音调检测是棘手的问题,尤其是在实时情况下。我不是专家,但是此页面介绍了一些简单的示例算法及其结果。

Lee Brimelow有一个出色的视频教程,可以快速完成此操作。即使我们要使用Flash以外的方法来实现它,也应该将我们指向正确的方向。

MDN也提供了一个不错的教程,用于使用Web Audio API进行可视化。

为了创建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的节拍/速度检测Google的信息,他已经写了一些有趣的论文。

编辑:

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

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

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