I'm trying to use the goertzel algorithm to detect a pair of frequencies in a signal.
The sample rate I'm using is 8000 hz, and the size of the incoming sample buffer is 60 samples.
I have a large array of 600 samples in size, so each time a new buffer comes in I move the data 60 samples to the right in the large buffer to make room for the new buffer, which I put at the front of the array (from index 0).
[ buffer0 | ... | buffer9 ]
I apply the goertzel algo to this large array. I'm looking for the frequencies 133.33 and 333.33 hz.
My algorithm gives me normalized magnitude. For the first frequency, I get a more or less stable detected magnitude around 0.5, which is also the amplitude of the original signal (I'm responsible for generating the signal myself). So that seems correct.
For the second frequency, I get a wildly varying normalized magnitude which seems to vary between 0.0 and 0.50, almost in a sine-like fashion. I know that the amplitude of this sine wave is 0.5.
When I save the generated signals and analyze them using audacity's spectrum feature I can see the correct frequencies in the spectrum, so it looks like the signal is being generated correctly.
1) the algorithm seems to have a hard time detecting the second frequency. Why? 2) what is the relationship between the number of samples used for running the goertzel algo, and the detected frequencies?
My goal is to detect 64 unique combinations, so I was thinking of generating one frequency from a set of 16 and another one from a set of 4 and then just adding the two signals with 0.5 amplitude.