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