我有兴趣学习使用OpenGL,我有想写一个音乐可视化器。任何人都可以给我一些关于我需要什么元素的指示以及我应该如何去学习这个?
答案 0 :(得分:14)
如果你使用的是C ++ / CLI,那么这里的an example使用WPF 4(显示的是;)显示。
他引用了this site(archived),其中包含有关您的要求的大量信息,此处是特定页面的大纲;
我们如何将声音分成几部分 频率?我们的耳朵做到了 机械手段,数学家这样做 使用傅立叶变换,和 计算机使用FFT。
- 声音物理学
- Harmonic Oscillator
- 采样声音
- 傅立叶分析
- 复数
- 数字傅立叶变换
- FFT
醇>
答案 1 :(得分:4)
我创建BeatHarness(http://www.beatharness.com)的方法:
现在您可以在图形显示中使用一些不错的变量。 例如,显示一个大小乘以低音的图片 - 这将为您提供一个可以放大节拍的图片。 从那以后就是你自己的想象力! :)
答案 2 :(得分:1)
您是否正在尝试编写自己的音频/音乐播放器?也许您应该尝试为现有播放器编写插件,这样您就可以专注于图形而不是编解码器,dsp和音频输出设备的细节。
我知道WinAMP和Foobar有可视化插件的API。我确信Windows Media Player和iTunes也有它们。只需选择一个媒体播放器并开始阅读。其中一些甚至可能有现成的OpenGL插件,您可以从中开始,这样您就可以专注于纯OpenGL。
答案 3 :(得分:0)
如果你刚刚完成一些基本的3D或加速2D,那么我建议购买Dave Astle的“Beginning OpenGL Game Programming”副本,其中涵盖了C ++中OpenGL的基础知识。
答案 4 :(得分:0)
对于音乐分析部分,您应该研究傅立叶级数的基础,然后选择DFFT(数字快速傅里叶变换)算法的免费实现。
答案 5 :(得分:0)
您可以在Numerical Recipes in C书籍中找到FFT算法的实现和其他有用的信息。这本书是免费的AFAIK。还有Numerical Recipes in C++本书。
答案 6 :(得分:0)
您可能需要考虑在FFTW上使用libvisual的FFT / DCT功能;它们使用起来更加简单,并且为了生成视觉效果而提供同样易于使用的数据。一些媒体播放器和可视化插件在某种程度上使用libvisual来实现其视觉效果。示例:图腾(玩家),GOOM(图腾和其他玩家的插件),PsyMP3 2.x(玩家)
答案 7 :(得分:-3)