NAudio Overview

NAudio is an open source .NET audio and MIDI library, containing dozens of useful audio related classes intended to speed development of audio related utilities in .NET. It has been in development since 2001 and has grown to include a wide variety of features. While some parts of the library are relatively new and incomplete, the more mature features have undergone extensive testing and can be quickly used to add audio capabilities to an existing .NET application.
NAudio demo project showing an MP3 file playing:
naudiodemo.png

Latest News

NAudio Features

  • Play back audio using a variety of APIs
    • WaveOut
    • DirectSound
    • ASIO (not currently working with all soundcards)
    • WASAPI (Windows Vista Core Audio)
  • Decompress audio from different Wave Formats using ACM codecs
  • Record audio using WaveIn
  • Read and Write standard .WAV files
  • Mix and manipulate audio streams using a 32 bit mixing engine
  • Support for reading from a variety of audio file-formats including:
    • MP3
    • OGG
    • SoundFont
    • SFZ
    • MIDI
  • Extensive support for reading and writing MIDI files
  • Full MIDI event model
  • Basic support for Windows Mixer APIs
  • A collection of Windows Forms Controls useful for .NET
  • Some basic audio effects, including a compressor

Projects Using NAudio

NAudio currently is used to support a number of audio related utilities, some of which may be moved to be hosted on CodePlex in the future. If you have used NAudio for a project, please get in touch so we can post it here.

More Info

For the latest news and more documentation on NAudio, visit Mark Heath's blog.
Frequently Asked Questions
Project Roadmap
Project Documentation
Contributing
Last edited Oct 20 2008 at 10:32 PM by markheath, version 17
Comments
aronchick wrote  Mar 31 2007 at 12:35 AM 
I have to admit, this is really cool stuff, I'm surprised I haven't heard about this before. Are you planning to do any more cross-coding work? (WMA->mp3, OGG->mp3, and so on)? Also, are there any plans for doing volume normalization of sounds?

aronchick wrote  Mar 31 2007 at 12:37 AM 
One more question... do the NAudio read file functions work regardless of the stated file type (namely if someone says it's an mp3 but is actually a wma, what happens)?

markheath wrote  Apr 2 2007 at 3:26 PM 
The mp3 and ogg support is fairly basic at the moment, as my main focus has been on WAV and MIDI files. I may look at improving this for a future version of the MixDiff tool. It is a case of finding some well documented libraries that I can create interop wrappers from.

gazwik wrote  Oct 22 2008 at 8:50 PM 
Awesome stuff. dotnet has such limited support for sound. I've spent absolutely ages writing code for various legacy api's like winmm and DirectSound. Altho both working I had problems with directsound (mdx's fault) and winmm is just way too old for vista. I need something thats up-to-date and works on the average PC so I was about to start writing my own com wrappers for the core audio apis and you've saved me from doing it. thank you soooooo much. what a long boring process that must have been lol. I spent an hour on it and was nearly crying.
On a note about the resampling; part of my current project has VoIP support and I got the Speex codec to work in C# - within Speex theres a resampling API in it which, if necessary, I'll be using (http://www.speex.org/docs/manual/speex-manual/node7.html)
I also noticed a bit of a fail running in 64bit, targeted x86 and it went away. Wish I had found this 2 weeks ago.
Cheers again,
Gary (Software Engineer for Babcock International Group)

Aybe wrote  Nov 15 2008 at 9:43 PM 
I would like to try it but the documentation does not exist : "The wiki page 'Project Documentation' does not exist."

Thanks.

Updating...
© 2006-2009 Microsoft | About CodePlex | Privacy Statement | Terms of Use | Code of Conduct | CodePlex Blog | Version 2008.12.9.14291