Posted in:

I've finally got round to releasing NAudio 1.9.0. The big news is that this version targets .NET Standard 2.0, opening the door to NAudio being used on a wider variety of platforms.

Of course, it's important to point out that a large part of NAudio consists of wrappers for various Windows APIs, giving you access to audio input and output devices, as well as taking advantage of audio codecs from ACM or Media Foundation. None of that functionality will work cross-platform, as it's relying on underlying Windows components to do its work.

But there is still a lot of NAudio that is portable to other platforms, so hopefully this will prove useful to people. In addition to targeting .NET Standard 2.0, NAudio still supports .NET 3.5 and also UAP 10.0.240, thanks to the very helpful MSBuild.Sdk.Extras tools from Oren Novotny.

There are a few minor bugfixes included in the latest release. Probably the most notable is that AsioOut no longer auto-stops when it reaches the end of playback. That caused serious problems with many ASIO drivers, so it's disabled by default, although you can restore the original behaviour if you want.

Future of NAudio

I should probably say a few words about the future of NAudio. Although I continue to reply to the many questions asked on GitHub and Stack Overflow every day, you've probably noticed that development hasn't proceeded very rapidly in recent years. That's due to the fact that I simply no longer have the time I used to for maintaining an open source project. My day job is very focused on Azure now, and for the last four years I haven't needed to use NAudio as part of my daily work.

What this means is that NAudio 1.9.0 is not likely to pick up major new features. I'll probably still fix a few bugs from time to time, and when there are pull requests that I am able to easily verify don't break existing functionality (which is not always possible unfortunately), I will also endeavour to accept them into the project as well.

If there were ever to be a version 2 of NAudio, then it would make sense to rethink a number of the core design decisions, in particular to incorporate new language innovations like Span<T> and compiler intrinsics which could bring major performance improvements. I have done a fair bit of experimentation with this (you can see some of my efforts here), and maybe in the future I'll find time to do some more work on that. But unless I find myself actively using NAudio for commercial development again, which doesn't seem likely in the near future, progress is likely to be slow.

So I guess the summary is that although NAudio isn't "dead", it is currently in "maintenance mode". It's a project that means a lot to me - I started it back in 2002 as my first ever open source application, and I'm very glad that it's been of use to so many people over the years. But my focus currently is much more in the Azure space.

If there is anyone out there interested in becoming a maintainer of NAudio, I would be glad to have a conversation with you. And to all those who are still waiting for replies to your questions and requests for help, please accept my apologies - the volume is now too great for me to respond to everything.

I know that several long-running open-source projects with lone maintainers are facing similar issues. Geoff Huntley hosted a fascinating discussion about this problem at the Microsoft MVP Summit earlier this year. And one of my programming heroes, Alexandre Mutel, recently took the decision to retire SharpDX. Maybe there will come a time where I need to do the same, but I'm not completely stepping away just yet.

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.

Comments

Comment by dcuccia

Thanks for your amazing work to create this library. I saw back in 2009 that the tool didn't support MIDI to .wav, and that it would take significant work to implement. Is there any chance this feature exists in 1.9.0? I'm interested in creating an open-source hardware/software digital handbell project, and looking to generate .wav files for each note over multiple octaves.

dcuccia
Comment by Mark Heath

hi, sadly that's quite a complex requirement as it requires essentially a software synthesizer. One idea I thought about last time I needed this was putting managed wrappers around FluidSynth, but haven't looked into that for a long time.

Mark Heath
Comment by Aldi

Can I download the .dll file without using NuGet?

Aldi
Comment by Aldi

I tried downloading the Naudio.dll file, but I don't have visual studio so I can't access Nuget, I want to use Naudio for unity. can I get Naudio.dll without using Nuget?

Aldi
Comment by Aldi

and I can't find MixingSampleProvider in version 1.8.5

Aldi