views:

1561

answers:

5

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.

+6  A: 

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. :)

Nik Reiman
A: 

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.

+3  A: 

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

Mark Heath
+1  A: 

Here are some links that were very useful for me:

  1. Tammo Hinrichs "kb" of demo-group Farbrausch articles about audio programming. There is also a video of a seminar that Tammo held over here.

  2. Jari Kleimola masters thesis "Design and Implementation of a Software Sound Synthesizer". Over 100 pages about audio programming.

  3. 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".

  4. "Basic sound theory and synthesis" article by Dr Petter.

Ville Krumlinde
+2  A: 

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++.

Jeff McClintock