tags:

views:

47

answers:

3

I am looking to create an application that will allow me to record from my mic and playback the recording through other pc's. At this point however I would just like it to play back on my own computer so I can get it working.

I have been looking at NAudio for the past few hours and it seems like it may be able to help me achieve this goal.

I am just wondering if anyone else has had any experience with this and if it is at all possible?

Thanks, Stuart

A: 

Bass Audio Library is another solid option worth looking into.

pattertj
A: 

It is possible to do, but you are unlikely to get low latency with WaveIn/WaveOut (possibly better results with WASAPI). You could use the BufferedWaveProvider (in the latest source code) to store up the audio being recorded from the microphone and supplying the output to soundcard.

Mark Heath
So if I understand you correctly I would be recording and saving to a file/buffer and outputting from this same buffer to the speakers? Almost at the same time? I'm sorry if it sounds harder than it is I'm a complete beginner to audio programming development.
stuartmclark
that's right, buffer up recorded audio in memory ready to be returned to the soundcard for playing as soon as possible. Look at BufferedWaveProvider (added a link above)
Mark Heath
+1  A: 

There is an example project on codeproject doing this:
http://www.codeproject.com/KB/cs/Streaming_wave_audio.aspx
I don't know how low the latency is.

As a codec I'd recommend Speex(at least for speech). It's free, open source and offers low latency and low bandwidth.

CodeInChaos
This is great thanks, I'm just trying to split that app up into two separate applications, one for broadcasting and one for listening but having no luck so far. You have any ideas of how I could do that. I created two applications that I though would work by using this code but when I begin to record/listen it seems like they don't see each other and nothing can get through.
stuartmclark
No idea. I never looked into the network stuff. I only used the wrapper over WaveIn/WaveOut.
CodeInChaos