创建音乐可视化器[关闭]

问题描述 投票:50回答:12

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

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

visualization itunes
12个回答
25
投票

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

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

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


1
投票

李Brimelow有a great video tutorial在闪光灯这样做。即使您想使用闪光灯以外的其他方式实现它,也应该指向正确的方向。

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


0
投票

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


0
投票

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


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

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

编辑:

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

一旦你有了一些价值,例如低音,中音,高音和音量(左和右),你可以根据自己的想象做些什么。例如,显示一张图片,将尺寸乘以低音 - 你会得到一张可以在节拍上放大的图片等。


13
投票

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

因此,例如,您编写的例程会不断绘制一系列以圆形排列的形状。然后使用主频确定圆的颜色,并使用音量设置大小。


6
投票

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

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

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


5
投票

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


2
投票
  1. 设计一个算法,在给定一组变量的情况下在屏幕上绘制一些有趣的东西
  2. 设计一种方法将音频流转换为一组变量,分析节拍/分钟频率,不同的频率范围,音调等。
  3. 将变量插入算法并观察它。

一个简单的可视化将是每当音乐超过某个频率阈值时改变屏幕颜色的可视化。或者只是将bpm写入屏幕。或只是显示一个ociliscope。

看看这个wikipedia article


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/


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音频输出组件,用于从扬声器或线路输出发送波形数据)。

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


1
投票

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

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

也可在Sourceforge上找到。

© www.soinside.com 2019 - 2024. All rights reserved.