Using some examples here and there I've been able to do a bit of pitch detection. Not quite 100% accurate, can fluctuate a bit at certain frequencies (mostly the top end octave). Seems perfectly fine, though, for the normal human vocal range of freqs (80 Hz to 1100 Hz - Wikipedia). Though, I've only mainly tested/verified correct frequency detection against generated sin waves in code. Though, using a guitar against a mic (I can't find my proper jack connectors for PC connection) it gets the pitch pretty much right. There are some little hiccups/fluctuations, but I suppose some of it might just be normal frequency shift/harmonic detections. Also could be clipping.
Anyway, I've been thinking of what framework I might use to try and visualize what I'm looking at better (anything is better than Console out and generating CSV files

). My previous thought was WPF + .Net 3.5 (since I've been using it at work lately and love it). But, that severely limits me to Windows... and greatly increases the size/time to install the app. Though, it is so quick to develop nice GUI/multimedia apps in.
Another choice is .Net + Winforms (and possibly Mogre).. Which, opens up the platforms a little bit more (but, still limited). Install size/time is not significant like 3.5 is. However, then I have to maintain an interop layer to interface with the native code. While, not a difficult task, certainly can consume some time, increase API complexity (maintaining a C interface to C++ backend) - and can introduce some subtle, and yet difficult to find, interop issues.
So, I may go back into the world of just straight C++

That would give me the easiest to maintain API, at the expense of a bit longer of implementation time (especially for GUI related tasks). But at least, I can have an excuse to work with Ogre again. In fact, I may look at using the WGE platform!

Though, I have no idea what its current state is.
But, these are things I would want/need to implement:
* Portaudio for input/output
* FFT / Enhanced Auto correlation pitch detection (mostly have this going via some examples) - though, my placement of this directly in the audio callback function is not ideal

Would have to queue up bytes to do this in another thread.. Also have to reduce memory allocations/deallocations done for this process.
* A decent/Basic/fast GUI... Last I looked, CEGUI was too much (will have to look at what GUI engine we last talked about for WGE)
* Probably use ffmpeg for all audio/video decoders instead of trying to use pieces of different decoder libs directly (I think ffmpeg supports, Flac, Vorbis, Mp3, et al) - ffmpeg is fast and easily enough to use API (libavcodec). Can be a pain to compile under windows (MinGW), but once you have it compiled you can use it from MSVC. Previously, I've been concerned about ffmpeg because of patented codecs contained within. however, I think as long as I am not encoding, and not distributing thousands of products it will be good enough to disable the most infringing of codecs in the library.
What I'm sort of shooting for is a GHWT / Singstar experience. OIS can handle all the instruments (not mic)... slash vocal trainer application. The one limiting thing about those games is while they give you a slight idea to sing up or down (pitch), they don't tell you what exact note you should be reaching - so, makes it hard to be consistent or really even help as a vocal trainer. Possibly, with a decent backend in place, something else could be made from it as well - I don't know, like some kind of RPG that requires to rock out on guitar, or vocals to destroy a monster

.
I'm not ready to post any code for this regards, as I am not certain what I want to do for sure. I also haven't created much, nor is it any kind of usable state.