0.0.0.1
9 Dec 2002
Initial version, basic mixer interop
0.0.0.2
10 Dec 2002
Added MIDI interop, MMException, more mixer classes
0.0.0.3
12 Dec 2002
Improvements to Mixer interop & classes
0.0.0.4
13 Dec 2002
Added basic WaveOut interop & classes
0.0.0.5
14 Dec 2002
Mixer bugfixes for mixer app
0.0.0.6
15 Dec 2002
More mixer bugfixes and design improvements
0.0.0.7
19 Dec 2002
Mixer interop bug fixes
0.0.0.8
20 Dec 2002
Wave functions improved
0.0.0.9
22 Dec 2002
Got wave playing working better
0.0.1.10
23 Dec 2002
Added pause and stop for WaveOut
0.0.1.11
24 Dec 2002
Improved class design trying to fix WaveOut bug (waveout callback was being GCed)
0.0.1.12
27 Dec 2002
Generic WaveStream class and WaveFileReader
0.0.1.13
5 Feb 2003
Improvements to WaveStream class
SoundFont library merged
0.0.1.14
27 Oct 2003
Converted to Visual Studio .NET
0.0.1.15
5 Dec 2003
Merged JavaLayer
0.2.20.0
25 Feb 2005
Merged newer SoundFontLib, MidiLib, Ogg, Acm
0.2.21.0
25 Feb 2005
Skip backwards and forwards in wav file
WavPlayer trackBar indicates progress
Allows trackBar repositioning
0.2.22.0
28 Feb 2005
WavePlayer show current time in hh:mm:ss
Can start playing from any point in the file
0.2.23.0
1 Mar 2005
More ACM stream conversion interop
0.2.24.0
2 Mar 2005
More ACM interop improvements
WaveFormatConversionStream class
WaveStream no longer inherits from Stream
AcmStream class
waveOutDevCaps interop
Improvements to WaveFileWriter
0.2.25.0
3 Mar 2005
AcmStream and AcmStreamHeader bug fixes
Improvements to WaveFileReader and WaveFileWriter
PCM to PCM offline conversion working
0.2.26.0
3 Mar 2005
Very basic ability to play converted streams in realtime
0.2.27.0
4 Mar 2005
Initial version of Renaissance GSM conversion stream
0.2.28.0
7 Mar 2005
Fix to WaveFileWriter
More disposable pattern
WaveFileConversionStream can convert files offline
WaveStreams can now recommend a read buffer size based on latency
0.2.29.0
8 Mar 2005
Offline Renaissance GSM stream conversion working
WaveOut takes a latency now
MmException improvement
0.3.30.0
8 Mar 2005
Greatly improved the ability to calculate appropriate buffer sizes
Realtime GSM decoding is now working
0.3.31.0
14 Mar 2005
Some changes recommended by FxCop
0.3.32.0
15 Mar 2005
More changes recommended by FxCop
0.3.33.0
15 Mar 2005
namespace changed to NAudio
0.3.34.0
23 Mar 2005
XML documentation, FxCop fixes, Namespace improvements
WaveFormat constructor from a BinaryReader
0.3.35.0
23 Mar 2005
WaveChannel and WaveMixerStream
0.3.36.0
24 Mar 2005
More namespace improvements
More XML documentation
0.3.37.0
6 May 2005
More XML documentation
Ogg encoder improvements
ACM driver enumeration
Got test apps building again
Retired the JavaLayer port - its a few versions out of date anyway
WaveBuffer is now 16bit - experimental, needs optimising
0.3.38.0
7 May 2005
WaveStream::ReadInt16 optimisation
Fixed bugs in 16 bit positioning code
More XML documentation
0.3.39.0
10 May 2005
Initial Fader control implementation
0.4.40.0
12 May 2005
A very basic time domain convolution
Improvements to wave-reader and writer for floating point audio
0.4.41.0
25 May 2005
WaveChannel can supply from stereo input
0.4.42.0
27 May 2005
Initial VST interfaces and enums
0.4.43.0
3 Jun 2005
VstLoader implements IVstEffect
Began converting dispatcher opcodes to IVstEffect functions
0.4.44.0
6 Jun 2005
Finished IVstEffect functions
0.4.45.0
7 Jun 2005
IVstEffect function implementations for VstLoader
0.4.46.0
5 Aug 2005
Final consolidation of VST, prior to removal
0.4.47.0
27 Oct 2005
Wave Channel can convert mono to stereo now
0.4.48.0
27 Oct 2005
Wave Channel and Wave Mixer used for first time
0.4.49.0
28 Oct 2005
Volume and pan slider controls
Channel strip and WavePlayer export to WAV
WaveMixer doesn't go on indefinitely
0.5.50.0
31 Oct 2005
Some more LCD control characters
Initial WaveViewer control
0.5.51.0
3 Nov 2005
Dual channel strip in WavePlayer
0.5.52.0
4 Nov 2005
Fixed bad calculation of offset seconds in WavePlayer
Improved checking that we don't go beyond the end of streams
0.5.53.0
9 Nov 2005
SoundFont reading improvements for conversion to sfz
0.5.54.0
10 Nov 2005
IWavePlayer interface
Initial DirectSoundOut class
Major rework to return to 8 bit reads on all WaveStream, ready for inheriting Stream
0.5.55.0
11 Nov 2005
Cleaned up WaveFileReader
WaveOut is an IWavePlayer
WaveFormatStream
Ability to select between WaveOut and DirectSound
Initial playing back through DirectSound
0.5.56.0
11 Nov 2005
Retired StreamMixer project
WavePlayer better switching between settings
DirectSound feeds in on a timer now, (from MSDN Coding 4 Fun Drum Machine demo)
0.5.57.0
14 Nov 2005
DirectSoundOut fills buffer only twice per latency
DirectSoundOut stops at end
WavePlayer now has three channels
Selectable latency in WavePlayer
0.5.58.0
15 Nov 2005
DirectSoundOut now only reads buffers of the right size, which solves GSM cutout issues
WaveOut dispenses with an unnecessary delegate by passing WaveStream to WaveBuffer
0.5.59.0
16 Nov 2005
Fixed a crash in AdjustVolume on the MixerStream
sfz loop_continuous fix
0.6.60.0
16 Nov 2005
Converted to .NET 2.0
n.b. DirectSound has issues - needed to turn off the LoaderLock Managed Debug Assistant
0.6.61.0
17 Nov 2005
Made a 16 and 32 bit mixer stream
0.6.62.0
21 Nov 2005
Made a 32 bit WaveChannel stream
A 32 to 16 bit conversion stream
More MM error codes
32 bit audio path tested and working
0.6.63.0
21 Nov 2005
Initial support for an ACM MP3 decoder - not working yet
0.6.64.0
22 Nov 2005
Basic working MP3 playback
0.6.65.0
25 Nov 2005
ADPCM Wave Format
Wave Formats can serialize themselves
WaveFileWriter can write non PCM formats
0.6.66.0
28 Nov 2005
WaveFileWriter writes a fact chunk - non-ideal though
Improved support for playback of compressed formats
0.6.67.0
28 Nov 2005
Improvements to BlockAlign and GetReadSize
0.6.68.0
1 Dec 2005
Nice ADPCM converter
0.6.69.0
5 Dec 2005
Support for AGC codec
Support for Speed codec
0.7.70.0
12 Dec 2005
WaveStream inherits Stream
0.7.71.0
19 Dec 2005
Minor bug fix to WaveMixer classes
0.7.72.0
3 Jan 2006
NICE specific code removed
0.7.73.0
6 Jan 2006
MP3 Reader can read ID3 tags and frames now
0.7.74.0
12 Jan 2006
Xing header support
0.7.75.0
15 Feb 2006
Reorganised class structures
WaveIn recording support added
0.7.76.0
15 Feb 2006
More structural reorganisation
Got rid of some compiler warnings
Retired 16 bit mixing code
0.7.77.0
16 Feb 2006
Improved WaveViewer control
0.7.78.0
17 Feb 2006
Fader control uses an image for the slider
0.7.79.0
20 Feb 2006
Added some copyright messages to SoundFont source files
Added BiQuad filters class
0.8.80.0
21 Feb 2006
Added envelope detector
Added simple compressor
Added simple gate
0.8.81.0
4 Apr 2006
ACM stream bug fixes
Support for waveOut window message callbacks
Wave In Recording bug fixes
0.8.82.0
13 Sep 2006
SimpleCompressor Wave Stream
Optimisation to WaveViewer
Minor bugfixes to Wave classes
Created a new Pot control
0.8.83.0
14 Sep 2006
Real-time adjustment of SimpleCompressor Wave Stream
Pot control drawing enhancements
The beginnings of a track-view control
The beginnings of a time-line control
0.8.84.0
21 Sep 2006
TimeLine control has a now cursor
TimeLine control can zoom
0.8.85.0
22 Sep 2006
TimeLine supports changing colours
TrackView can draw clips
New trackheader control
0.8.86.0
29 Sep 2006
MIDI events now support being exported
MIDI TrackSequenceNumber event
MIDI KeySignature event
0.8.87.0
2 Oct 2006
Bugfix for exporting note-off
Alternative constructors for MIDI events
Bugfix for exporting MIDI variable length integers
WaveFileReader can report information on non-standard chunks
0.8.88.0
4 Oct 2006
Bugfix MIDI export event sorting
0.8.89.0
5 Oct 2006
Bugfix MIDI export event sorting
Some support for modifying MIDI event parameters
0.9.90.0
6 Oct 2006
Bugfix Time Signature Event and Control Change Event
New SMPTE Offset event
Patch and Bank name meta events added
Meta events use VarInts for lengths now
Allow non-strict reading of MIDI file
0.9.91.0
9 Oct 2006
Minor updates to support EZdrummer MIDI converter
Beginnings of a new WaveOut class with its own thread
0.9.92.0
10 Oct 2006
Fixed a bug in WaveFileReader
Fix to ensure track-view shows correct length
An alternative thread-safe approach using locking
Initial ASIO classes created
0.9.93.0
11 Oct 2006
Support for exporting MIDI type 0 files
Can parse MIDI files with more than one end track marker per track
0.9.94.0
13 Oct 2006
Recognises some more rare MIDI meta event types
Initial support for reading Cakewalk drum map files
0.9.95.0
16 Oct 2006
MIDI events report channel from 1 to 16 now rather than 0 to 15
Got rid of the fader png image
0.9.96.0
17 Oct 2006
Cakewalk drum map enhancements
0.9.97.0
29 Oct 2006
ByteEncoding added
MIDI Text events use byte encoding for reading and writing
0.9.97.1
30 Oct 2006
ProgressLog control and AboutForm added
MIDI Text events can have their text modified
0.9.97.2
31 Oct 2006
ProgressLog control can report its text
Initial support for file association modification
0.9.97.3
1 Nov 2006
Bug fixes to file associations
0.9.98.0
6 Nov 2006
Support for modifying MIDI Control Change Event parameters
0.9.98.1
7 Nov 2006
After-touch pressure can be set
Note number and velocity can be set
0.9.98.2
9 Nov 2006
Pitch wheel event modifications
0.9.98.3
10 Nov 2006
Helper function for detecting note off events
0.9.98.4
1 Mar 2007
Updated some XML documentation
0.9.99.0
6 Mar 2007
Some checking for end of track markers in MIDI files
1.0.100.0
8 Mar 2007
WaveMixerStream32 updated ready to support dynamic adding of streams
Some bugfixes to WaveOut to support auto stop mode again
1.0.101.0
13 Mar 2007
Added some new NoteEvent and NoteOnEvent constructors
1.0.102.0
16 Mar 2007
Customisable about box URL, Email and Copyright
1.0.103.0
16 Mar 2007
Ability to remove WaveStreams from WaveMixerStream32
1.0.104.0
19 Mar 2007
WaveOffsetStream created
WaveStream32 preparation for 24 bit inputs
WaveStream32 new default constructor
Made the decibels to linear conversion functions public
1.0.105.0
30 Mar 2007
New constructor for ControlChangeEvent
New constructor for ChannelAfterTouchEvent
New constructor and property setting for PatchChangeEvent
New constructor for PitchWheelChangeEvent
1.0.106.0
2 Apr 2007
Bugfix for sysex event writing
MidiEvent IsEndTrack and IsNoteOff are now static functions
New IsNoteOn function
NoteOnEvent now updates the NoteNumber and Channel of its OffEvent when they are modified
1.0.107.0
3 Apr 2007
MIDI events are now sorted using a stable algorithm to allow
batch file processing utilities to retain original ordering of events
with the same start times.
1.0.108.0
4 Apr 2007
New MidiEventCollection class to make converting MIDI file types
more generic
Added an NUnit unit tests library
Fixed a bug in meta event constructor
1.0.109.0
5 Apr 2007
MidiFile updated to use MidiEventCollection
1.0.109.1
7 Apr 2007
Fixed a bug in MidiEventCollection.AddEvent
1.0.110.0
7 Apr 2007
Many enhancements to MIDI interop
New MidiIn, MidiInCapabilities classes
Added a new NAudioDemo for testing / demonstrating use of NAudio APIs
1.0.111.0
18 Apr 2007
More MidiEventCollection automated tests
Fixes to MidiEventCollection
1.0.112.0
19 Apr 2007
Some improvements to MIDI out interop
Test application can now send test MIDI out messages
1.1.113.0
26 Apr 2007
Allow invalid NoteOff velocities to be read from a MIDI file
MIDI File Splitter project moved off to its own CodePlex project
1.1.114.0
27 Mar 2008
Fixed a defect in WaveStream32 constructor
Restored the Managed DirectX output to the solution
Turned off ManagedLoaderLock to cope with DirectSound known issues (http://www.thezbuffer.com/articles/304.aspx)
Updated the NAudioDemo project to do some audio playback
Added Rob Philpot's managed ASIO wrapper (http://www.codeproject.com/KB/mcpp/Asio.Net.aspx)
1.1.115.0
17 May 2008
Updated to latest version of Rob Philpot's managed ASIO wrapper (http://www.codeproject.com/KB/mcpp/Asio.Net.aspx)
1.1.116.0
19 May 2008
Made some very small beginnings to WASAPI support
Added a couple of unit tests for AcmDriver
1.1.117.0
20 May 2008
Added some WASAPI interfaces (mainly MMDevice API)
1.1.118.0
24 May 2008
Added WASAPI interface IMMEndpoint
begun MMDevice implementation
Decided to make use of some code from Ray Molenkamp to speed WASAPI implementation
1.1.119.0
26 May 2008
Borrowing lots more from Ray Molenkamp
Renamed WASAPI namespace to CoreAudioApi
1.2.120.0
27 May 2008
More work on WASAPI interfaces (IAudioClient, IAudioRenderClient)
1.2.121.0
28 May 2008
WASAPI interface - IAudioCaptureClient
1.2.122.0
28 May 2008
More WASAPI work - AudioClient, WaveFormatExtensible, AudioRenderClient
1.2.123.0
29 May 2008
AudioClient IsFormatSupported - it appears WASAPI does not do sample rate conversion for you
1.2.124.0
29 May 2008
Begun work on WasapiOut
Removed Resume from IWavePlayer
Removed Pan from IWavePlayer
PlaybackState instead of IsPlaying and IsPaused on IWavePlayer
WaveOut implementation simplified
1.2.125.0
30 May 2008
AcmDriver enhancements
WMA Wave Format
1.2.126.0
31 May 2008
WASAPI out working! but need a solution for SRC
1.2.127.0
31 May 2008
Lots of DMO interop written (DirectX media objects)
1.2.128.0
1 June 2008
Lots more DMO interop - Resampler DMO
Media Object can set input and output WaveFormat
Getting caught back up with XML documentation
Media Object can get input and output buffer sizes
1.2.129.0
2 June 2008
Eventually got IMediaBuffer ProcessInput working (thanks to PreserveSig attribute)
IMediaBuffer ProcessOutput also working, but Resampler not outputting expected number of bytes
ResamplerDmoStream created
1.2.130.0
3 June 2008
ResamplerDmoStream bugfixes
1.2.131.0
10 June 2008
Wasapi output stream uses ResamplerDmoStream (but needs app to be MTAThread to work atm)
Audio Client using PreserveSig
More reliable Wasapi out
NAudio demo plays a file now rather than mixing a whole folder together
1.2.132.0
11 June 2008
Mark Heath
Added Alexandre Mutel's Native DirectSound class
Added a bug fix to WasapiOut PlayThread (thanks Alexandre)
1.2.133.0
Alexandre Mutel
WASAPI Out fixes
1.2.134.0
Mark Heath
Fix to get WASAPI out working with DMO resampler again
Fix to get WASAPI working with DMO resampler without needing MTA Thread (woohoo!)
Improvements to NAudioDemo Audio Playback Form
1.2.135.0
Mark Heath
13 Jun 2008
More unit tests for AudioClient
Added option for WASAPI exclusive mode to NAudio Demo (not working yet)
NAudioDemo can play MP3 files (not at low latency though)
Position bar in NAudioDemo
Performance enhancements to WaveChannel32
MP3 playback less choppy
1.2.136.0
Mark Heath
14 Jun 2008
WASAPI Exclusive mode working (thanks Alexandre)
Proper closing of WASAPI allowing us immediate re-open
NAudioDemo has some ACM encoding demos (mu-law, a-law working so far)
Added interop for AcmFormatEnum
Added interop for AcmFormatTagEnum
AudioDriver can now enumerate all tags and formats
1.2.137.0
Mark Heath
15 Jun 2008
Alexandre Mutel added WASAPI event model playback
NAudioDemo has better selection of output driver settings
Added interop for AcmFormatChoose
Moved ACM interop into NAudio.Wave.Compression namespace
1.2.138.0
Mark Heath
16 Jun 2008
Added a Custom Marshaller for WaveFormat (not used everywhere yet)
Fixed some marshalling bugs in ResamplerDMOStream caused by WaveFileReader using WaveFormatExtraData
Got majority of unit tests working (things had slipped a little!)
1.2.139.0
Mark Heath
18 Jun 2008
NativeDirectSound working in STAThread mode
NAudioDemo stops playback at end of file
Unit Test reorganization
1.2.140.0
Mark Heath
19 Jun 2008
WaveStream32 has option not to pad reads out to full length
NAudioDemo sets volume on WaveStream rather than WaveOut
1.2.141.0
Alexandre Mutel
22 Jun 2008
Managed ASIO Output implementation
1.2.142.0
Mark Heath
22 Jun 2008
NAudioDemo has basic event-driven recording demo
1.2.143.0
Mark Heath
23 Jun 2008
Fix to MP3 smooth playback
A circular buffer class
A block alignment reduction stream
Xing header detection without throwing exceptions
1.2.144.0
Mark Heath
26 June 2008
Improved error handling on NAudioDemo
1.3.1.0
Mark Heath
27 June 2008
IWavePlayer using IWaveProvider and WaveBuffer (initial port)
1.3.2.0
Mark Heath
28 June 2008
NativeDirectSoundOut now becomes DirectSoundOut as Managed Direct X is retired
1.3.3.0
Mark Heath
20 Oct 2008
Some possible bugfixes to ASIO
MeteringStream
VolumeMeter
WaveFormPainter
1.3.4.0
Mark Heath
12 Jan 2009
Can write larger Var Ints in MIDI files
1.3.5.0
Mark Heath
19 Sep 2009
Many changes not listed here, see checkin history
WaveIn callback options brought into line with WaveOut
1.3.11.0
Mark Heath
30 Aug 2010
Many changes not listed here, see checkin history
Sequencer-specific event added
1.3.12.0
Mark Heath
29 Sep 2010
Changes not listed here, see checkin history
Added BufferedWaveProvider
Added Wave16ToIeeeProvider
Added WaveInProvider
1.3.13.0
Mark Heath
14 Oct 2010
Retired WaveStream.GetReadSize - not reliable, too difficult to implement, hardly used
Cleanup on MP3 File Reader
1.3.14.0
Mark Heath
7 Nov 2010
Huge improvements to MP3 File Reader