我对学习使用 OpenGL 很感兴趣,并且产生了编写音乐可视化工具的想法。谁能给我一些关于我需要哪些元素以及我应该如何学习做到这一点的指示?

有帮助吗?

解决方案

如果您使用 C++/CLI,这里是 一个例子 即使用WPF 四位(即傅立叶)显示。

他引用 这个网站 (已归档)其中包含有关您的要求的大量信息,这是特定页面的概要;

我们如何将声音分为频率?我们的耳朵通过机械手段来做到这一点,数学家使用傅立叶变换来做到这一点,然后使用FFT进行计算机。

  1. 声音物理学
    • 谐波振荡器
  2. 声音采样
  3. 傅里叶分析
  4. 复数
  5. 数字傅立叶变换
  6. 快速傅里叶变换

啊啊啊我发现了 (已归档)几分钟后,它就变成了一个本机 C++ 分析器。包含代码,应该可以让您开始运行。

其他提示

我创建 BeatHarness 的方法(http://www.beatharness.com) :

  • 实时录制音频
  • 有一个线程对音频运行 FFT 以获得频率强度
  • 计算左右声道的音量
  • 过滤频段中的频率(低音、中音、高音)

现在您有一些很好的变量可以在图形显示中使用。例如,显示一张尺寸乘以低音的图片 - 这将为您提供一张放大节拍的图片。从那时起,这是你自己的想象!:)

您是否正在尝试编写自己的音频/音乐播放器?也许您应该尝试为现有播放器编写插件,这样您就可以专注于图形而不是编解码器,dsp和音频输出设备的细节。

我知道WinAMP和Foobar有可视化插件的API。我确信Windows Media Player和iTunes也有它们。只需选择一个媒体播放器并开始阅读。其中一些甚至可能有现成的OpenGL插件,您可以从中开始,这样您就可以专注于纯OpenGL。

如果您刚刚使用了一些基本的3D或加速2D,那么我建议您购买Dave Astle的副本“开始OpenGL游戏编程”它涵盖了C ++中OpenGL的基础知识。

对于音乐分析部分,您应该研究傅立叶级数的基础,然后选择DFFT(数字快速傅里叶变换)算法的免费实现。

您可能需要考虑在FFTW上使用libvisual的FFT / DCT功能;它们使用起来更加简单,并且为了生成视觉效果而提供同样易于使用的数据。一些媒体播放器和可视化插件在某种程度上使用libvisual来实现其视觉效果。示例:图腾(玩家),GOOM(图腾和其他玩家的插件),PsyMP3 2.x(玩家)

从我的观点来看...查看这个网站: http://nehe.gamedev.net/

使用OpenGL的非常好的信息和教程

编辑: http://www.opengl.org/code/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top