Sounds like crap
It sounds terrible, but it is recognizable. I (temporarily) gave up on the time-domain filtering and decided to go the route of:
- FFT the data to the frequency-domain
- Zero out everything except for the selected range
- Shift the selected range down to (near) zero Hz
- FFT the data back to the time domain
- Push the samples to core audio
So, yeah, it sounds like crap, but it is, unequivocally, success.
I'm going to sleep.
Update: My progress that night went something like this:
4am
I've been working for hours and I have Core Audio hooked up and playing noise, but the noise doesn't seem to have any relationship to what I'm seeing on the graph. It's late. I'm going to sleep.
A mere step from bed and it hits me: I'm ranging the samples between -32767..32768 and I bet that's actually supposed to be 0..32768. Back down stairs to investigate.
5am
Sure enough. Fixed that. And some other bugs. Still getting noise but it does now have a relationship with what I'm seeing, even if it remains unintelligible. It's late. I'm going to sleep.
A mere step from bed and it hits me: I'm not decimating the signal down to a reasonable frequency before inverse FFT'ing the data and feeding it to core audio.
6am
Decimated and playing AM radio! Of course, it sounds like crap because my filtering method can barely be described as a method, or filtering. Still, I'm elated and I send out several emails to bore people with the details. Now it's just a matter of implementing a better filter. It's late. I'm going to sleep.