It’s about time I gave an update on Windows 10 and NAudio. The NAudio solution had a Universal Windows project added by Kamen Litchev a while back, and I recently updated this to support the RTM Windows 10 SDK (version 10240). This required editing the project files directly to point to the latest SDK number, and you also now need to supply a project.json file, or the dependencies on the .NET Core assemblies will be missing and you’ll get thousands of errors.

There is a very basic demo Windows Universal app that lets you play a file. You’ll need to turn on Developer Mode in Windows 10 to enable deploying it so you can debug.

Rather concerningly, the NAudio UWP project builds with lots of warnings about various COM interop features going obsolete. For example 'VarEnum' is obsolete: 'Marshalling VARIANTs may be unavailable in future releases.' I’m not quite sure what will happen if the ability to marshal variants is taken away, as that is pretty key to a lot of the Media Foundation wrappers.

Obviously you can still use the regular NAudio assemblies in Windows 10. So far, I haven;t noticed any existing audio APIs being taken away, so you can still use WaveOut, and the ACM functions if you want.

I had a quick look to see if there are any new codecs available on Windows 10 machines. It seems there is an Apple lossless (ALAC) decoder and encoder as well as the long awaited FLAC encoder and decoder. So I’ll be updating the MediaFoundationEncoder class to make it easier to perform FLAC encoding.

Windows 10 introduces the brand new Audio Graph API. This enables a number of interesting audio applications without the need to use NAudio at all. I’m planning to explore the capabilities of this API further over the coming weeks and see in what ways it compliments what we already have in NAudio.

Finally, I need to research what the best way to put Universal Windows assemblies into NuGet packages is, but once I have done so, I’ll get a UWP NAudio build up into NuGet.

About Mark Heath

I'm a Microsoft MVP and software developer based in Southampton, England, currently working as a Software Architect for NICE Systems. I create courses for Pluralsight and am the author of several open source libraries. I currently specialize in architecting Azure based systems and audio programming. You can find me on: