A similar question was asked on StackOverflow (though it was specific to developing software for the iPhone): https://stackoverflow.com/questions/5374839/how-to-detect-music-note-and-chords-programmatically-in-iphone-sdk
If you don't quite understand some part of my answer below, please refer to the answer provided to that StackOverflow question.
From a signals perspective, musical note recognition is just dominant frequency identification. Musical notes are directly mapped to dominant frequencies in a sound. So, if you find the dominant frequency present in a given portion of an audio signal then you can find out the musical note that frequency maps to by consulting the table in this Wikipedia page: https://en.wikipedia.org/wiki/Piano_key_frequencies. As with any other sort of frequency analysis, to start you perform a FFT on the given audio signal and find the peak(s) in the frequency domain data.
If you're planning on building your own program for this purpose anyways, I would suggest just building it "from scratch" - there aren't too many steps to the process, as I've shown above. A programming language like MATLAB would give you the perfect tools to perform an FFT (the built-in fft
function) and all of the requisite analysis to discover dominant frequencies in that frequency data. Of course, if you're more comfortable with another language - like C or C++, for instance - there are implementations of the FFT written for software development in those languages as well (i.e., http://www.fftw.org/).