Might need to up sampling frequency to the max on Arduino/XMega in order to get decent output on even the Sparkfun microphone. To test tomorrow: try to have sample audio coming in on microphone and sent right back out through the DAC to headphones (or logged at a really fast pace to computer).
dspquietcomfort3.pdf Great MIT Master's thesis by Nathan Hanagami on creating a DSP version of Bose's Quiet-Comfort 2 Headphones (which were previously all-analog!).
Used a Blackfin processor, but did some feature comparison between different chips. Was limited to fixed-point math, and Blackfin had hardware support for only fractions < 1 or integers > 1…which is pretty inconvenient! Luckily it had a floating point emulation mode, but that made his code run a bit slower.
Didn't take the time to implement noise cancellation, but rather add appropriate sound boosting?
Talks a lot about the appropriate algorithm designs for filtering
Is this implementable on an ARM processor? I doubt it…
Sound Generation Using PWM
Sine Wave Generation / Music
Aquaticus ROV Sine Wave Hands down best tutorial on sine wave generation and RC low-pass filtering.
Only 4 voices max. Compute wave data for each tone if enabled.
Utilize MIDI ADSR (Attack, Decay, Sustain, Release) settings for appropriate timings and voicings of tones so they sound more real. Purely volume-only, so no frequency-changes needed.
Then it's simply an additive process after that to determine what the voltage output should be at a given time.
ANY INTERRUPTS NEEDED?
Also ELM-Chan has a great perl txt2asm melody converter. Everything else is in assembly though :(
Making notes "slide" would be cool too, but his way of queuing up melodies is all wrong!