NAudio.WinForms
3.3.0-preview.1
Prefix Reserved
See the version list below for details.
dotnet add package NAudio.WinForms --version 3.3.0-preview.1
NuGet\Install-Package NAudio.WinForms -Version 3.3.0-preview.1
<PackageReference Include="NAudio.WinForms" Version="3.3.0-preview.1" />
<PackageVersion Include="NAudio.WinForms" Version="3.3.0-preview.1" />
<PackageReference Include="NAudio.WinForms" />
paket add NAudio.WinForms --version 3.3.0-preview.1
#r "nuget: NAudio.WinForms, 3.3.0-preview.1"
#:package NAudio.WinForms@3.3.0-preview.1
#addin nuget:?package=NAudio.WinForms&version=3.3.0-preview.1&prerelease
#tool nuget:?package=NAudio.WinForms&version=3.3.0-preview.1&prerelease
NAudio.WinForms
Windows Forms controls for NAudio. Windows-only (net9.0-windows, UseWindowsForms=true).
What's included
A handful of reusable GUI controls useful when building audio apps with WinForms:
Fader— vertical channel faderVolumeSlider— horizontal volume sliderPanSlider— pan controlPot— rotary knobWaveViewer— render aWaveStreamas a waveformProgressLog— progress/log text control (obsolete as of 3.2; use aRichTextBox)
When to use it
Install this package only if you are building a Windows Forms application and want ready-made audio controls. For WPF apps, use the NAudioWpfDemo project in the NAudio source tree as a reference and roll your own controls — there is no NAudio.Wpf package.
See the NAudio documentation site for tutorials and the full API reference, or the GitHub repository for full documentation and demos.
License
MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0-windows7.0 is compatible. net10.0-windows was computed. |
-
net9.0-windows7.0
- NAudio.WinMM (>= 3.3.0-preview.1)
NuGet packages (7)
Showing the top 5 NuGet packages that depend on NAudio.WinForms:
| Package | Downloads |
|---|---|
|
MicroServices
Micro Services Essential Pack |
|
|
InceptionMicroServices
Micro Services Essential Pack |
|
|
Oakrey.Audio
A Windows .NET library built on NAudio for audio recording, playback, synthesis, and signal analysis. Includes STFT/FFT pipelines, segmented SNR and log-likelihood-ratio audio comparators, signal generators, and reactive recording via IObservable. |
|
|
NetExtender.NAudio.Windows
NAudio Windows module of NetExtender Framework |
|
|
CloudVoiceToText.NetCore
对接腾讯云的语音转文字的.NetCore版本 |
GitHub repositories (33)
Showing the top 20 popular GitHub repositories that depend on NAudio.WinForms:
| Repository | Stars |
|---|---|
|
Azure-Samples/cognitive-services-speech-sdk
Sample code for the Microsoft Cognitive Services Speech SDK
|
|
|
moom825/xeno-rat
Xeno-RAT is an open-source remote access tool (RAT) developed in C#, providing a comprehensive set of features for remote system management. Has features such as HVNC, live microphone, reverse proxy, and much much more!
|
|
|
CXWorld/CapFrameX
Frametime capture and analysis tool
|
|
|
mukunku/ParquetViewer
Simple Windows desktop application for viewing & querying Apache Parquet files
|
|
|
lastbattle/Harepacker-resurrected
All in one .wz file/map editor for MapleStory game files
|
|
|
akon47/ScreenRecorder
⏺️ A simple recording program with the ability to record screens and audio on your computer.
|
|
|
malaybaku/VMagicMirror
VRM Software for Windows to move avatar with minimal devices.
|
|
|
Kinovea/Kinovea
Video solution for sport analysis. Capture, inspect, compare, annotate and measure technical performances.
|
|
|
rampaa/JL
JL is a program for looking up Japanese words and expressions.
|
|
|
octgn/OCTGN
Online Card and Tabletop Gaming Network
|
|
|
mhwlng/streamdeck-elite
Elgato Stream Deck plugin for Elite Dangerous
|
|
|
RoosterDragon/Desktop-Ponies
Desktop Ponies in .NET [The Original!]
|
|
|
stuff-by-3-random-dudes/UWUVCI-AIO-WPF
|
|
|
mir-ethernity/mir-eternal
|
|
|
mhwlng/streamdeck-starcitizen
Elgato Stream Deck button plugin for Star Citizen
|
|
|
iss4cf0ng/DuplexSpyCS
An open-source, C#-based remote administration tool (RAT), enabling complete control of a remote Windows machine, designed for legitimate remote administration and security testing of Windows systems.
|
|
|
FredTungsten/ScriptPlayer
ScriptPlayer is a video player that controls the Handy and lots of other toys in sync with videos.
|
|
|
MarshmallowAndroid/UmamusumeExplorer
Utility for viewing certain assets from ウマ娘 プリティーダービー (Umamusume: Pretty Derby).
|
|
|
kuma4649/MDPlayer
|
|
|
protyposis/Aurio
Audio Fingerprinting & Retrieval for .NET
|
| Version | Downloads | Last Updated |
|---|---|---|
| 3.3.0 | 148 | 10/19/2026 |
| 3.3.0-preview.1 | 62 | 10/17/2026 |
| 3.2.0 | 2,792 | 10/15/2026 |
| 3.2.0-preview.1 | 85 | 10/13/2026 |
| 3.1.1-preview.2 | 266 | 9/21/2026 |
| 3.1.1-preview.1 | 480 | 9/8/2026 |
| 3.1.0 | 43,938 | 9/7/2026 |
| 3.1.0-preview.2 | 115 | 9/5/2026 |
| 3.1.0-preview.1 | 98 | 9/4/2026 |
| 3.0.2-preview.2 | 159 | 8/27/2026 |
| 3.0.2-preview.1 | 173 | 8/20/2026 |
| 3.0.1 | 34,607 | 8/18/2026 |
| 3.0.1-preview.1 | 128 | 8/17/2026 |
| 3.0.0 | 2,399 | 8/15/2026 |
| 3.0.0-preview.20 | 533 | 8/8/2026 |
| 3.0.0-preview.19 | 531 | 7/25/2026 |
| 3.0.0-preview.18 | 397 | 7/16/2026 |
| 3.0.0-preview.17 | 150 | 7/11/2026 |
| 3.0.0-preview.16 | 452 | 7/1/2026 |
| 2.4.0 | 17,246 | 8/26/2026 |
* Fixed `WasapiRecorder` not able to re-start after successfully stopping the recorder. (#1479)
* **Nullable reference types in NAudio.Core** - `NAudio.Core` is now compiled with nullable reference types enabled, so its public API carries nullability annotations (e.g. `WaveFileReader.ReadNextSampleFrame` and `Mp3Frame.LoadFromStream` return nullable types, and `Mp3Frame.RawData` is `byte[]?` when a frame is read without its data). This is a source-level change only: there are no binary breaks, but projects with nullable enabled may see new warnings, and overrides of NAudio.Core virtual members may need matching annotations. `XingHeader.LoadXingHeader` now returns `null` for a frame read without its data instead of throwing. Thanks to @Seb-stian (#1452)
* **Nullable reference types in NAudio.Midi** - `NAudio.Midi` is now also compiled with nullable reference types enabled (e.g. `MidiInMessageEventArgs.MidiEvent` and `NoteOnEvent.OffEvent` are nullable). Source-level change only; projects with nullable enabled may see new warnings. `MidiEvent.ReadNextEvent` now throws `FormatException` instead of `NullReferenceException` for running status with no previous event, and `RawMetaEvent` treats null data as empty (#825)
* **Nullable reference types in NAudio.WinMM** - `NAudio.WinMM` is now compiled with nullable reference types enabled (e.g. `AcmDriver.FindByShortName` and `WaveCapabilitiesHelpers.GetNameFromGuid` return nullable types, and `AcmDriver.ShowFormatChooseDialog` has nullable `out` parameters). Source-level change only; projects with nullable enabled may see new warnings. `WaveOut.OutputWaveFormat` before `Init` now throws `InvalidOperationException`, `AcmStream` members throw `ObjectDisposedException` after dispose, and `GetNameFromGuid` returns null instead of throwing when the registry key is missing, where each previously threw `NullReferenceException` (#825)
* **Nullable reference types in NAudio.SoundFile and NAudio.Sampler** - both packages are now compiled with nullable reference types enabled (e.g. the `SoundFileTags` fields, `SoundFileWriterOptions.Tags` and `SoundFileException.Function` are nullable, and the `TryLoad` methods on `WaveSampleLoader` / `ISfzSampleLoader` mark `left` as non-null on success and `right` as null for mono). Source-level change only; projects with nullable enabled may see new warnings, and custom `ISfzSampleLoader` implementations may need matching annotations (#825)
* `NAudio.WinMM`, `NAudio.Asio`, `NAudio.Dmo` and `NAudio.Vst3` now target plain `net9.0` instead of `net9.0-windows`, matching `NAudio.Wasapi`. They remain Windows-only, enforced by `[SupportedOSPlatform("windows")]`, but can now be referenced directly from a plain `netX.0` project (calls show `CA1416` warnings unless guarded or the project is marked Windows-only) and built on Linux/macOS without `EnableWindowsTargeting`. No change for projects targeting `netX.0-windows` (#1482)
* **Breaking:** the `NAudio` meta-package is now a single `net9.0` package that pulls in `NAudio.Core`, `NAudio.Midi`, `NAudio.WinMM` and `NAudio.Wasapi` on every target framework. A plain `netX.0` project on Windows (e.g. a console app on `net10.0`) now gets `Mp3FileReader`, `WaveOut`, `WasapiPlayer` and an `AudioFileReader` that reads MP3, where previously it silently got a cross-platform subset that threw `NotSupportedException` (#1472). It **no longer includes `NAudio.Asio`, `NAudio.Dmo` or `NAudio.WinForms`**: add those packages if you use `AsioOut`/`AsioDevice`, `DirectSoundOut` or the DMO effects, or `WaveOutWindow`/`WaveInWindow`/the `NAudio.Gui` controls. `AudioFileReader` now chooses its Media Foundation/ACM paths at runtime, and off Windows its `NotSupportedException` messages point to `NAudio.SoundFile`. `NAudio.Extras` is now single-target `net9.0`, with `AudioPlaybackEngine` marked Windows-only (#1485)
* **Nullable reference types in NAudio.WinForms, NAudio.Alsa and NAudio.Extras** - these packages are now compiled with nullable reference types enabled (e.g. `WaveViewer.WaveStream`, `AlsaException.Function` and the control/device events are nullable). Source-level change only; projects with nullable enabled may see new warnings. `AlsaOut.OutputWaveFormat` and `WaveOutWindow.OutputWaveFormat` now throw `InvalidOperationException` before `Init` (previously null and `NullReferenceException` respectively), and `WaveOutWindow.Play` before `Init` throws `InvalidOperationException` instead of `NullReferenceException` (#825)
* **Nullable reference types in NAudio.Asio** - `NAudio.Asio` is now compiled with nullable reference types enabled (e.g. the optional `AsioPlaybackOptions.OutputChannels` / `AsioDuplexOptions.InputChannels`, the `AsioDevice`/`AsioOut` events and the `AsioDriverExt` callbacks are nullable; required option members such as `Source` and `Processor` stay non-nullable). Source-level change only; projects with nullable enabled may see new warnings. `AsioOut` members now throw `ObjectDisposedException` after `Dispose` and `AsioOut.OutputWaveFormat` throws `InvalidOperationException` when no playback source is initialised, where they previously threw `NullReferenceException` or returned null (#825)
* **Nullable reference types in NAudio.Dmo** - `NAudio.Dmo` is now compiled with nullable reference types enabled (e.g. `DirectSoundOut.PlaybackStopped` and `DirectSoundDeviceInfo.ModuleName` are nullable). Source-level change only; projects with nullable enabled may see new warnings. `DirectSoundOut.OutputWaveFormat` now throws `InvalidOperationException` before `Init` instead of returning null, and the `MediaObject` wrappers, `DmoResampler.MediaObject`, `WindowsMediaMp3Decoder.MediaObject` and `DmoOutputDataBuffer.MediaBuffer` throw `ObjectDisposedException` after `Dispose` instead of returning null or throwing `NullReferenceException` (#825)
* **Nullable reference types in NAudio.Wasapi (CoreAudioApi and MediaFoundation)** - the `NAudio.CoreAudioApi` and `NAudio.MediaFoundation` types are now annotated for nullable reference types (e.g. `AudioClient.TryGetAcousticEchoCancellationControl`, `MMDeviceEnumerator.TryGetDefaultAudioEndpoint`, `MfSourceReader.ReadSample`, `PropertyStoreProperty.Value` and `Part.AudioVolumeLevel`/`AudioMute`/`JackDescription` are nullable); `WasapiOut`, `WasapiCapture` and the other top-level classes follow in a separate change. Source-level change only; projects with nullable enabled may see new warnings. The CoreAudio and Media Foundation COM wrappers now throw `ObjectDisposedException` when used after `Dispose` instead of `NullReferenceException`, `AudioSessionManager.Sessions` throws `InvalidOperationException` instead of returning null when sessions are unavailable, and `AudioSessionControl.AudioMeterInformation` / `SimpleAudioVolume` throw `NotSupportedException` instead of returning null if the session does not expose those interfaces (#825)
* **Nullable reference types in NAudio.Wasapi (playback, capture and Media Foundation classes)** - `WasapiOut`, `WasapiCapture`, `WasapiPlayer`, `WasapiRecorder`, their builders and `MediaFoundationReader`/`StreamMediaFoundationReader`/`MediaFoundationEncoder` are now annotated too, completing NAudio.Wasapi (e.g. `WasapiPlayer`/`WasapiRecorder.DeviceId` and `DeviceFriendlyName`, `LowLatencyUnavailableReason`, `WasapiRecorder.AcousticEchoCancellationControl`, `WasapiPlayer.GetSupportedExclusiveFormat`, `MediaFoundationEncoder.SelectMediaType` and the playback/recording events are nullable). Source-level change only; projects with nullable enabled may see new warnings. The WASAPI classes now throw `ObjectDisposedException` when used after `Dispose`, and report `InvalidOperationException` instead of `NullReferenceException` through `PlaybackStopped` when playback is started without `Init` (#825)
* **Nullable reference types in NAudio.MacOS** - `NAudio.MacOS` is now compiled with nullable reference types enabled (e.g. `AudioSystemObject.DefaultInputDevice`/`DefaultOutputDevice`, the `ConvertUIDToDevice`-style lookups, `AudioObject.Owner`, `AudioDevice.Icon`, `ExtendedAudioFileReaderSettings.OutputFormat`, `ExtendedAudioFileWriterSettings.FileType`/`ProvidingFormat` and the player, recorder and property-listener events are nullable). Source-level change only; projects with nullable enabled may see new warnings. Object-list properties such as `AudioSystemObject.Devices` now skip unknown object IDs instead of returning null entries, the parameterless `CoreAudioPlayer`/`CoreAudioRecorder` constructors throw `InvalidOperationException` instead of `ArgumentNullException` when there is no default device, and `ExtendedAudioFileWriter` captures `ProvidingFormat` when created rather than re-reading the settings object on every write (#825)
* Fixed several buffer and handle lifetime bugs in the winmm MIDI backend: `MidiOut.SendBuffer` no longer frees a sysex buffer while the driver may still own it, `MidiIn` now stops input before resetting it, and neither class calls into winmm with a handle it never opened. `MidiOut.SendBuffer` now blocks until the driver releases the buffer and throws `MmException` if the send fails.
* Fixed `MediaFoundationReader` reporting a `Position` that was not a whole number of frames after seeking a compressed file (e.g. MP3 or AAC), up to a frame before the requested position, and a `Length` that could include a partial frame. Seeks now round down to a frame boundary and land exactly on it (#1488)