NAudio 3.2.0

NAudio

Nuget

NAudio is an open source .NET audio library written by Mark Heath and contributors.

This is the main NAudio meta-package. Installing it pulls in everything you need to play, record and manipulate audio on .NET, and adds AudioFileReader — the one-line "just open this audio file" reader that picks the right decoder for you — along with Mp3FileReader.

Requires net9.0 or later. If you need .NET Framework or .NET Standard 2.0, use NAudio 2.x.

What it pulls in

Always, on every target framework:

  • NAudio.Core — the format-independent core: WaveStream, IWaveProvider / ISampleProvider, WAV and AIFF readers and writers, mixing, resampling, DSP, and the NAudio.Effects framework
  • NAudio.Midi — the MIDI event model and Standard MIDI File reading and writing

Additionally, on a Windows target framework:

  • NAudio.Wasapi — WASAPI playback, capture and loopback (WasapiPlayer / WasapiRecorder), plus Media Foundation codecs
  • NAudio.WinMM — WaveOut / WaveIn, classic MIDI I/O, ACM codecs and mixer controls via winmm.dll
  • NAudio.Asio — low-latency multichannel playback and capture through ASIO drivers
  • NAudio.Dmo — DMO effects, the DMO MP3 decoder and resampler, and DirectSoundOut
  • NAudio.WinForms — Windows Forms controls, and the window-callback WaveOutWindow / WaveInWindow

On a non-Windows target framework only the cross-platform pieces are referenced. If you only need a subset, reference the individual packages directly rather than this meta-package.

Optional packages

These are not pulled in by the meta-package — add them explicitly if you want them:

Package Platform What it gives you
NAudio.Sampler cross-platform Polyphonic software sampler — SoundFont (.sf2), SFZ and single-sample instruments
NAudio.SoundFile cross-platform Read and write WAV/AIFF/FLAC/Ogg-Vorbis/Opus/MP3 via libsndfile
NAudio.Alsa Linux AlsaOut / AlsaIn playback and capture via libasound
NAudio.Vst3 Windows VST 3 plug-in hosting (preview) — effects and instruments
NAudio.Extras cross-platform (+ Windows extras) Opinionated helpers — playback engine, capture mixing, ID3 tags

Getting started

using NAudio.Wave;

using var audioFile = new AudioFileReader("myfile.mp3");
using var player = new WasapiPlayerBuilder().Build();
player.Init(audioFile);
player.Play();
while (player.PlaybackState == PlaybackState.Playing)
{
    Thread.Sleep(500);
}

License

MIT. See the project site for source, issues, and contribution guidelines.

Showing the top 20 packages that depend on NAudio.

Packages Downloads
NDILibDotNetCoreBase
Provides a wrapper to the NDI libraries for Windows, macOS, and Linux.
21
NDILibDotNetCoreBase
Provides a wrapper to the NDI libraries for Windows, macOS, and eventually Linux.
21
NDILibDotNetCoreBase
Provides a wrapper to the NDI libraries for Windows, macOS, and eventually Linux.
19
NDILibDotNetCoreBase
Provides a wrapper to the NDI libraries for Windows, macOS, and Linux.
19
NDILibDotNetCoreBase
Provides a wrapper to the NDI libraries for Windows, macOS, and eventually Linux.
16

A feature and tidy-up release. Its headline is a first preview of macOS support: the new NAudio.MacOS package wraps Core Audio for playback and recording, Extended Audio File Services for reading and writing compressed formats, and AudioConverter for resampling. It ships pre-release only while its API settles, alongside the stable versions of the other packages. VB.NET users also get base classes and a guide that keep the NAudio 2 array-based Read signature.

Several legacy APIs that have modern replacements are now [Obsolete], to be removed in the next major version. The fixes include DirectSoundOut, which failed every playback in 3.1.0, and WasapiPlayer/WasapiOut getting stuck in the Playing state after a source error.

  • macOS support (preview) - A new wrappers library is added wrapping macOS native API's for playback/recording, reading/writing files and resampling audio. The NAudio.MacOS package ships pre-release only (X.Y.Z-preview.N) while its API settles, so it stays pre-release alongside stable releases of the other packages. Special thanks to @mdcdi1315 (#1325) for the work and the tests. For more information, see the design doc that describes the decisions that helped shape the wrappers. (#1398)
  • VB.NET support - Added SampleProviderBase and WaveProviderBase, base classes that keep the NAudio 2 Read(buffer, offset, count) signature for languages that cannot name a Span<T> in a method signature, and a Using NAudio from VB.NET guide covering playback, recording and custom providers from VB (#1426)
  • Deprecated legacy APIs that have modern replacements: Wave16ToFloatProvider, WaveFloatTo16Provider and Wave32To16Stream (use ToSampleProvider() / ToWaveProvider16()), IgnoreDisposeStream (no longer needed), ByteArrayExtensions (use the BCL), MidiMessage (use the typed MIDI events), ResamplerDmoStream/DmoResampler (use MediaFoundationResampler or WdlResamplingSampleProvider), DmoEffectWaveProvider and the Dmo* effects (use NAudio.Effects), AsioOut's recording path (use AsioDevice), WaveFilter, and ProgressLog. Added AsioOut.IsSupported() and deprecated the lowercase isSupported() (#1466)
  • Deprecated WaveFileReader.ReadNextSampleFrame in favour of ToSampleProvider(), which supports more formats and doesn't allocate an array per sample frame (#1465)
  • Reduced allocations when reading and writing WAV files, added ReadOnlySpan<byte> overloads of WaveFileWriter.AddChunk and ChunkIdentifier.ChunkIdentifierToInt32, and fixed WaveChunks.GetData leaving the stream position changed when a read fails. ChunkIdentifierToInt32 now throws ArgumentOutOfRangeException for identifiers that aren't four bytes (#1457)
  • Fixed DirectSoundOut failing every playback with DirectSoundException 0x80004001 (or an ArgumentException for a format with extra data, e.g. one read from a WAV by WaveFileReader): the secondary buffer's WAVEFORMATEX was still a GCHandle-pinned WaveFormat instance — a site missed in the #1432 marshalling conversion, since WaveFormat no longer carries [StructLayout] — and now marshals via WaveFormat.MarshalToPtr (#1456)
  • Fixed WasapiPlayer and WasapiOut being stranded in the Playing state, unable to play again, when the source's Read threw or the source ended before the first buffer was filled (#1442)
  • Fixed WaveFileWriter.WriteSample and WriteSamples(short[]) throwing for plain (non-extensible) 32-bit integer PCM formats (#1463)
  • WaveFileReader.ReadNextSampleFrame now throws InvalidDataException for a WAV header with an invalid channel count or bit depth (#1464)
  • Changed the WaveStream.CurrentTime setter to clamp to the bounds of the stream, and corrected the XML documentation for the core audio interfaces (#1441)
  • Reworked the macOS CoreAudioPlayer and CoreAudioRecorder non-interleaved path, used for devices that expose one mono stream per channel; the recorder now also drains buffered audio when stopped, and non-interleaved streams carrying more than one channel are rejected explicitly (preview) (#1461)
  • ExtendedAudioFileServicesReader.CurrentTime and TotalTime on macOS now throw ObjectDisposedException after the reader is disposed, rather than a native exception (preview) (#1451)
  • Refreshed the NuGet package icon, now rendered from the new SVG version of the NAudio logo as a sharper, square 256×256 PNG (#1467)
  • Fixed the Help and About links in the AudioFileInspector, MidiFileConverter and MixDiff sample apps, which threw on .NET 9 instead of opening the help page or browser, and pointed the links and help pages at GitHub rather than CodePlex (#1469)

.NET 9.0

.NET 9.0

.NET 9.0

Version Downloads Last updated
3.3.0-preview.1 3 10/18/2026
3.2.0 2 10/15/2026
3.2.0-preview.1 5 10/13/2026
3.1.1-preview.2 12 09/22/2026
3.1.1-preview.1 12 09/10/2026
3.1.0 9 09/07/2026
3.1.0-preview.2 10 09/06/2026
3.1.0-preview.1 14 09/04/2026
3.0.2-preview.2 10 09/03/2026
3.0.2-preview.1 17 08/20/2026
3.0.1 15 08/18/2026
3.0.1-preview.1 15 08/18/2026
3.0.0 15 08/16/2026
3.0.0-preview.20 17 08/10/2026
3.0.0-preview.19 16 07/29/2026
3.0.0-preview.18 15 07/18/2026
3.0.0-preview.17 18 07/15/2026
3.0.0-preview.16 13 07/01/2026
3.0.0-preview.15 3 09/25/2026
3.0.0-preview.14 4 09/25/2026
3.0.0-preview.10 5 09/08/2026
3.0.0-preview.9 3 09/25/2026
3.0.0-preview.8 3 09/25/2026
3.0.0-preview.7 4 09/21/2026
3.0.0-preview.6 7 09/19/2026
3.0.0-preview.5 0 05/11/2026
3.0.0-preview.4 1 09/25/2026
3.0.0-preview.3 2 09/18/2026
3.0.0-preview.2 1 09/16/2026
2.4.0 12 08/28/2026
2.3.0 21 05/30/2026
2.2.1 20 05/30/2026
2.2.0 23 05/30/2026
2.1.0 16 05/30/2026
2.1.0-beta.1 17 05/30/2026
2.0.1 23 05/30/2026
2.0.0 21 05/30/2026
2.0.0-beta2 20 05/30/2026
2.0.0-beta1 18 05/30/2026
1.10.0 22 05/29/2026
1.9.0 18 05/30/2026
1.9.0-preview2 17 05/30/2026
1.9.0-preview1 19 05/30/2026
1.8.5 18 05/30/2026
1.8.4 20 05/30/2026
1.8.3 18 05/30/2026
1.8.2 17 05/30/2026
1.8.1 20 05/30/2026
1.8.0 3 09/21/2026
1.7.3 20 05/30/2026
1.7.2 19 05/30/2026
1.7.1 18 05/30/2026
1.7.0 17 05/30/2026
1.7.0-beta01 20 05/30/2026
1.7.0-alpha06 6 09/10/2026
1.7.0-alpha05 5 09/19/2026
1.7.0-alpha04 7 09/08/2026
1.7.0-alpha03 21 05/29/2026
1.7.0-alpha02 3 09/08/2026
1.7.0-alpha01 3 09/08/2026
1.6.0 21 05/30/2026
1.5.7-beta 6 09/20/2026
1.5.6-beta 2 09/24/2026
1.5.5-beta 3 09/24/2026
1.5.4-beta 4 09/18/2026
1.5.3-beta 2 09/24/2026
1.5.2-beta 2 09/24/2026
1.5.1-beta 2 09/24/2026
1.5.0 5 09/10/2026