我正在寻找为 Windows 音频构建一些压缩接口,我想知道是否有人知道一些提示/技巧? 我想构建自己的软件均衡器,它可以与整个 Windows 音频系统一起使用,而不仅仅是特定的程序。 我知道这是可以做到的 - 我的声卡有一个内置的,但没有足够的通道来满足我的口味。
我对音频编程完全陌生,但我真的很想闯入它并亲自动手。 如果您能想到任何教程/参考文献/文章/建议,我很乐意听到它们!
我正在使用 Visual Studio C++ 2008。
I'm looking to build some compression interfaces for windows audio, and I was wondering if anybody might know of some tips/tricks? I'd like to build my own software equalizer that will function with the whole windows audio system, not just a particular program. I know this can be done - my sound card has one built in, but doesn't have enough channels for my tastes.
I'm completely new to audio programming, but I'd really like to break into it and get my hands dirty. If you can think of any tutorials/references/articles/bits of advice, I'd love to hear them!
I'm using Visual Studio C++ 2008.
发布评论
评论(5)
如果您想亲自接触 DSP 的东西,我建议您从 VST 编程开始。 编写插件是处理实时音频操作的好方法,而不必担心连接到系统硬件、驱动程序等。 基本上,定序器会为您处理所有这些事情,您的插件只是接收一个包含浮点数据的缓冲区,您可以直接操作这些数据。
总的来说,这比尝试编写一个插件来操作通过系统音频流的数据要容易得多。 此外,自 Vista 以来,Windows 音频 API 发生了显着变化,并且根据您使用的 Windows 版本,您将必须遵循不同的约定才能让您的东西正常工作。
但话又说回来——从简单开始。 获取VST SDK,查看一些教程,并从小步骤开始。 :)
If you're looking to get your hands dirty with DSP stuff, I'd suggest starting with VST programming. Writing a plugin is a nice way to mess around with realtime audio manipulation without having to worry about connecting to system hardware, drivers, and so on. Basically, the sequencer takes care of all of that for you, and your plugin just receives a buffer with floating point data which you can manipulate directly.
This is, on the whole, a lot easier than trying to write a plugin to manipulate data going through the system audio streams. Also, the Windows audio API has changed significantly since Vista, and depending on which version of Windows you're using, you will have to follow different conventions to get your stuff working.
But again -- start simple. Get the VST SDK, check out some tutorials, and start with baby steps. :)
以下是一些对我非常有用的链接:
演示组 Farbrausch 的 Tammo Hinrichs“kb”文章。
还有 Tammo 在 这里。
Jari Kleimola 硕士论文“软件声音合成器的设计与实现” 。
关于音频编程的超过 100 页。
C++ 综合工具包。
大学开发的高级音频工具包。
该工具包的主要作者是 Perry Cook,他还写了一本书:“交互式应用程序的真实声音合成”。
“基本声音理论与合成” 文章,作者:Dr Petter。
Here are some links that were very useful for me:
Tammo Hinrichs "kb" of demo-group Farbrausch articles about audio programming.
There is also a video of a seminar that Tammo held over here.
Jari Kleimola masters thesis "Design and Implementation of a Software Sound Synthesizer".
Over 100 pages about audio programming.
The Synthesis ToolKit in C++.
A advanced audio toolkit developed at universities.
Main author of the toolkit is Perry Cook who has also written a book: "Real Sound Synthesis for Interactive Applications".
"Basic sound theory and synthesis" article by Dr Petter.
尝试 musicdsp 存档,获取一些很好的音频效果示例代码。
KvR 开发者论坛也是获得写作帮助的绝佳场所VST 和一般效果。
至于Windows音频API,有很多。 最广泛支持的是 WinMM。 最新、最出色的是新的 WASAPI 界面随 Vista 一起推出。
最后,要实现系统范围的均衡器效果,您可能需要研究较低级别的接口,例如 sAPO
Try the musicdsp archive for some good sample code for audio effects.
The KvR developer forum is also an excellent place to get help on writing VSTs and effects in general.
As for Windows audio APIs, there are a lot of them. The most widely supported is known as WinMM. The latest and greatest is the new WASAPI interface introduced with Vista.
Finally, to accomplish a system-wide equaliser effect, you may need to look into lower level interfaces such as sAPO
SynthEdit... www.synthedit.com 是对 VST 编程的简单介绍,它提供了一个拖放编程环境,可以逐步编写您自己的 C++ 插件。 您可以通过拖放来完成“无聊”的部分(GUI 设计),以及使用 C++ 完成“有趣”的算法部分。
A gentle introduction to VST Programming is SynthEdit... www.synthedit.com, It provides for a drag and drop programming environment, progressing to writting your own C++ addons. You can do the 'boring' bits (GUI design) with drag-and-drop, and the 'fun' algorithmic bits in C++.
您可能需要查看 DirectSound 但请记住,它很快就会被替换由 XAudio2 提供 - 可能在 Windows 7 中。我认为 DirectSound 将继续受到支持一段时间,因为它已经存在很长时间了。
You probably need to have a look at DirectSound but bear in mind that it is soon to be replaced by XAudio2 - probably in Windows 7. I should think that DirectSound will continue to be supported for a while longer since it's been around for a long time.