59

那么有人如何创建音乐可视化工具呢?我在谷歌上看过,但我还没有真正找到任何关于实际编程的东西;大多只是指向插件或可视化应用程序的链接。

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

4

7 回答 7

29

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

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

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

于 2008-09-30T16:17:44.870 回答
23

为了创建 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 是一个你想用谷歌搜索的名字,他有很多关于你现在或可能在未来 2 年内想知道的主题的信息;))

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

编辑:

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

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

于 2009-05-20T13:56:47.353 回答
14

通常,您获取一定数量的音频数据,对其进行频率分析,然后使用该数据修改一些反复显示的图形。进行频率分析的明显方法是使用FFT,但简单的音调检测也可以工作,而且计算开销较低。

因此,例如,您编写了一个例程,该例程不断地绘制一系列排列成圆形的形状。然后,您使用主要频率来确定圆圈的颜色,并使用音量来设置大小。

于 2008-09-30T16:12:15.850 回答
6

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

使用 FFT 或其他方式将数据转换到频域可以实现更复杂的效果,包括诸如频谱图之类的东西。尽管直接从 FFT 输出中检测甚至是非常“明显”的东西,比如鼓声的时间或音符的音高,这看似很棘手

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

于 2008-09-30T16:35:55.217 回答
2
  1. 给定一组变量,设计一种算法在屏幕上绘制有趣的东西
  2. 设计一种将音频流转换为一组变量的方法,以分析诸如节拍/分钟频率、不同频率范围、音调等内容。
  3. 将变量插入您的算法并观察它的绘制。

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

看看这篇维基百科文章

于 2008-09-30T16:22:54.733 回答
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/

于 2012-09-21T17:58:44.710 回答
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 音频输出组件,用于从扬声器或线路输出发送波形数据。

波形和 3D 频谱图

渐变条 [我是 LightningChart 组件的 CTO,做这些只是因为我喜欢它 :-) ]

于 2014-05-30T11:47:30.510 回答