Wednesday, 11 June 2008

NAudio Roadmap

My NAudio open source .NET audio library project has made some good progress in the past few weeks. I have successfully got playback with WASAPI working, and the Resampler DirectX Media object is also working (albeit with an annoying limitation that you cannot create it on one thread and use it on another). Also, for the first time in the history of this six year long project, I have someone very interested in joining the development team.

This marks an interesting new phase in the project, as when it is just me, I can keep all my plans in my head, but when the team expands then there needs to be proper planning and discussion of what we are doing. So here is my ideas for the near future (all time-dependent of course).

Version 1.2 - ASIO, WASAPI and Resampler DMO 'Tech Preview'

This will be released very soon as we do not yet have a public release demonstrating these technologies, and people are asking me to release a version that can do what I demonstrated in my resampler screencast a while ago.

Version 1.3

This will be a consolidation release, looking to raise the quality of the features we already are using.

  • A more full WASAPI implementation including audio capture and event-driven mode
  • Look into the possibility of wrapping some additional DMOs
  • More code in the NAudioDemo to demonstrate how the library is meant to be used, and also to ensure we can easily test features. Here's some of the features I want to add to this little project:
    • Use of the mixer stream
    • Use of ACM for format conversion
    • MP3 file reader (assuming it still works)
    • Wave File Writer
    • Use of simple DSP
    • A realtime FM Synth
  • Increase our unit test coverage. I think this will be important with extra developers that we can write unit tests to ensure that behaviour we are relying on for our applications is not broken by other features
  • Documentation - I want to write a few more blog entries here, as well as update the Wiki at CodePlex

Version 1.5

  • A design review of our core interfaces such as WaveStream, to see if we can come up with a more intuitive for all types of developers
  • Investigation of whether we can increase performance by using IntPtrs or unsafe pointers (while trying to remain friendly to VB programmers)
  • Introduction of some WPF controls
  • Reliable reader and writer streams for WMA, MP3, OGG (if possible)
  • Investigate possibility of using ASIO input
  • Investigate possibility of creating a VstHostWaveStream (possibly building on the work from VST.NET)
  • I am also considering whether we should move from the MS community license to the MS permissive license, to make using NAudio in commercial projects an easier decision for people.

Please feel free to add your own wishlist and ideas for the future of NAudio to this post.

Post a Comment