Question

I'm making an application where I will:

  • Record from the microphone and do some realtime processing on the input
  • Play an MP3 file (a regular song), but manipulating the output in realtime
  • Every now and then I'll need to play additional sounds over this song too, but I guess I can do that by simply adding the buffers.

In short, I need to have circular buffers for both recording and playing, and I need to be "feeding" the output buffer every 20 ms or so with the new data that is just about to be played.

I've been looking at DirectSound, and it doesn't seem to help a lot. The reading and writing to the output buffers seem very similar to Win32, the only place where it seems it'd help is in playing the "additional sounds" over the main song.

Should I use DirectSound, or should I go straight to raw Windows APIs?
Is DirectSound going to do anything for me?

Thanks in Advance!

Was it helpful?

Solution

The Directsound API's give you better realtime control. They are also the supported way to use sound in Windows. I was under the impression that the win32 api's were depracated, but I could be wrong on this.

This question is close to yours

https://stackoverflow.com/questions/314522/what-is-the-best-c-sound-api-for-windows

also

Is DirectSound the best audio abstraction layer for Windows?

last but not least, this is what microsoft has to say http://msdn.microsoft.com/en-us/library/dd370784(VS.85).aspx

OTHER TIPS

Neither? :)

The story is that DirectSound is the replacement for waveOut, but DirectSound joined DirectInput as deprecated APIs in Vista and is replaced with WASAPI. DirectSound and waveOut are implemented on top of the User-Space WASAPI in Vista. On XP, waveOut and DirectSound feed to the same kernel level Mixer API.

To consolidate all of these interfaces take a look at something like OpenAL, it's a well supported audio standard along the same lines as OpenGL.

It sounds like you're going to be quite sensitive to latency. It might pay to look at ASIO

I found Harmony Central - Audio Programming. Also read w:DirectSound.

Windows Vista features a completely re-written audio stack based on the Universal Audio Architecture. Because of the architectural changes in the redesigned audio stack, a direct path from DirectSound to the audio drivers does not exist.

Because of Xbox 360 and Microsoft Windows integration, Microsoft is actively pushing developers to migrate new applications to equivalent Xbox audio APIs such as XAudio and XACT.

OpenAL looks promising.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top