Posted in:

I'm pleased to announce that NAudio 1.10 is available on NuGet. This version doesn't contain too many features, but the most notable change is that it now adds support for .NET Core 3 (thanks to a contribution from jwosty). This allows access to ASIO, WaveIn and WaveOut in .NET Core 3.0 applications that are running on Windows.

Here are the key changes in this version:

  • #574 Support ASIO and WaveIn/WaveOut in .NET Core 3.0
  • #441 recognise MP3 Xing headers with 'Info' magic
  • #584 Fixes to WasapiOut.GetPosition
  • #515 Switched from Fake to Cake build script

Part of the impetus for releasing this version of NAudio was that I heard that a well-known speaker recently complained at a conference that this particular PR hadn't been accepted yet. I can understand his frustration, but I let me take a moment to share a few reasons why I sometimes take a long time to accept pull requests (and sometimes don't accept them at all):

  • NAudio is just a spare time project, and I have many other commitments on my time. In practice this means that I only occasionally have time to work through the PR backlog.
  • It's surprisingly common for PRs to contain bugs and often not even build. One thing that has really helped on this front is hooking up an Azure DevOps Pipeline to automatically build every PR. This gives me immediate visibility of whether a PR is ready for inspection or not. Unfortunately in this particular case, the PR didn't build on the CI server or on my local machine, and it required a few hours of experimenting to work out why.
  • The nature of NAudio means that lots of functionality cannot meaningfully be tested with unit tests. I need to run on different operating systems, bit depths, and with different sound cards, and actually listen to the audio being produced to be confident that things are still working. That means I need time for manual testing before a new release.
  • Whenever I accept a new feature into NAudio, end users expect me to support it. It's very rare for the original PR author to hang around providing help, and usually they don't create any documentation either. So I need to understand the code well enough to document and support the feature going forwards before completing the PR.

With that said, I am very grateful to everyone who has submitted PRs, bug reports, and answered questions on GitHub and Stack Overflow, and please accept my apologies if I have been slow to respond to your contribution or question.

Want to get up to speed with the the fundamentals principles of digital audio and how to got about writing audio applications with NAudio? Be sure to check out my Pluralsight courses, Digital Audio Fundamentals, and Audio Programming with NAudio.


Comment by Sloprano

Hello Heath.
Sorry if this isn't the right channel for this. I'm currently investigating on issue in a documentation program where when playbacking dictations it comes to a halt with the error "Cannot find device driver" and says it can't load volume and speed controls.
I'm trying to get hold of the developers of the program but learned the program is using Media.Sound.Mixer.NAudio.dll which led me to this webpage. I wondered if you would happen know if there are any device/driver combinations that doesn't work with naudio.dll or any other way to troubleshoot this.
Sorry again if this isn't the right place for this.

Comment by Mark Heath

I'm afraid I don't know what Media.Sound.Mixer.NAudio.dll is or uses. So you probably need to find who created that. In terms of what device driver you are using, a lot depends on what version of Windows you are running on

Mark Heath
Comment by Eddiev

Hi, I am trying to make a frontend app and i need to stream the audio output though WebRTC for real time, can i do this with NAudio?. Grate work and thnx!!

Comment by Mark Heath

I'm afraid that's not something I have any experience with - not sure what underlying protocol WebRTC uses, but you'd likely need another library to support that

Mark Heath
Comment by Uwe

Hello Mark, thanks for the NAudio lib. It's great! Yesterday I discovered that the reception of sysex messages doesn't work. What could be the cause?

Comment by Mark Heath

the NAudio midi in support is very basic I'm afraid - just receives "short messages" - I haven't had need to receive sysex so it's not available

Mark Heath
Comment by Vladimir Glushkov

Hi Mark,
With latest version of NAudio and NetCore 3.1 will the decoding features work under linux? I don't need any playback support, just the decoding from AAC into PCM and curious if it's possible with NAudio to support it on both platforms (windows/linux). Thanks!

Vladimir Glushkov
Comment by Mark Heath

I'm afraid most of NAudio's codecs come from Windows APIs (e.g. ACM or Media Foundation) so no, they won't work on Linux. You'd probably be best making a wrapper for libfaac

Mark Heath
Comment by Jonathan Humphries

Aloha Mark,
Our team uses NAudio to facilitate a production audio fingerprinting process. The product is gaining traction and we need to move to Kubernette/Docker Containers which means running on linux. We're debating between helping you with moving the project to cross platform compatible APIs vs rebuilding the entire audio fingerprinting code on a new base. Would you mind messaging me privately to discuss?

Jonathan Humphries
Comment by sam

naudio not supporting in .net 5

Comment by sam

Can we use blob url to convert wave stereo file to mono audio file??