This project has moved. For the latest updates, please go here.

Forking NAudio

May 8, 2013 at 1:06 AM
Edited May 8, 2013 at 6:15 AM

First of all, thank you all for this great project. Great piece of work indeed. I wish MSFT would officially support this project, I'm sure this is gonna happen sooner or later.

I downloaded NAudio and implemented some features.
  • Created 'Pitch' structure and accompanying 'Note' and 'Accidentals' enums and an int 'Octave' property, that together have value of a MIDI note, plus various functions for manipulation of musical pitches, conversion and parsing between verbal pitch (A0, Bb-1, G# etc.) and midi value, equality operators and more.
  • Inverted instrument list to enum
  • Enumeration of drum types
  • Control note duration via sophisticated flags enum that converts verbal duration to midi code (Quarter Eight etc.)
My questions are:
  1. How can I have my fork hosted on CodePlex while using TFS as source control?
  2. Is it likely that my contributions will ever be committed to the official release or I will always remain chasing up the changes?
May 13, 2013 at 10:52 AM
Hi, to answer your first question, I use Mercurial for source control, so if you want to use TFS it will not be a "fork" in the sense that you can issue pull requests. Nothing stopping you creating your own project that is a fork.

For the second question, I advise you start by reading the patch submission guidelines here

As a general rule, the submissions I accept are either bugfixes to existing NAudio components, or new components which I think will be useful to a wide range of users (the goal is not to collect every conceivably possible audio related class). NAudio is very loosely coupled, so most of the time you can extend it simply by creating your own new classes that derive from existing ones, or adding extension methods. It is rare that you would actually need to make your own custom fork of NAudio - just put your extensions in your own assembly. This is actually how I add almost all new features to NAudio - I create the components in another project, and once I am convinced they work well and might be general purpose, I move them into the core library.
May 13, 2013 at 11:07 AM
​Hi and thanks for your reply,
I didn't actually mean 'fork' but rather to add some features.
But I appreciate your advise. I will add extension methods and external features as you said.

Best regards,
And thanks for the awesome work!​