Detecting audio frequency from very few samples

Status
Not open for further replies.

cspencer

Newbie level 3
Joined
Sep 1, 2009
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
United Kingdom
Activity points
1,307
detecting audio frequencies

Hi all,

I am diving into the world of DSP by attempting to write a program to capture SSTV images. I have figured out how to do a spectrum analysis to detect the peak frequency of a block of samples using FFTW, but that requires a fair number of samples to get any meaningful result. But the duration of actual pixels is very short, shorter than the period of the frequency even (0.67ms period (1500Hz) with a duration of as low as 0.23ms [1]), covering all of 10 samples at a 44.1kHz sampling rate, or even just 2(.5) samples at 11kHz.

I get the feeling I'm barking up the wrong tree somewhere. I don't see how it can be possible to get anything useful from two samples..

Any advide would be greatly appreciated.

Cheers, Chris.

[1] Spec **broken link removed**. See page 4, color scan time, Martin 2.
 

In my opinion, the correct topic is FM-demodulation rather than spectral analysis. The problem can't be solved however without considering the characteristics of the baseband signal. As another point, the demodulator should be almost invariant to a varying carrier level. The most promising FM-demodulation methods are based on a PLL tracking the carrier.
 

FvM said:
In my opinion, the correct topic is FM-demodulation rather than spectral analysis.

Right you are..



I have got most of the way with the demodulation, one thing I can't quite figure out though is how to get from the output value to the actual frequency. Playing around with the numbers I can get it reasonably accurate using value * 1330 + 1700. The 1700 is obvious (the carrier frequency), but where does 1330 come from? I'd like to be able to calculate an accurate value for this.

The process by which I am demodulating is by applying cos and sin waves at 1700Hz separately to the samples (which are 16-bit integers, sampled at 8kHz) to get the I and Q values, running them through a 23 tap FIR low pass filter (for which I can provide the coefficient values if required), then calculating the demodulated value with (Qn * In-1 - In * Qn-1) / (In^2 + Qn^2).
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…