The sound buzz50 consists of a short wavelet repeated at intervals of 1/50 second (20 milliseconds). As Mark pointed out, its frequency analysis shows prominent components at 50Hz and multiples of 50Hz.

We may suppose without loss of generality that both the wavelet and the overall sound buzz50 are centred on time 0. Then the component of buzz50 at frequency 50Hz is F(50) = ∫wavelet(t).cos(50t/2π)dt. Now wavelet's effective support (the time interval off which it is effectively zero) is about 3ms, which is small compared with the 20ms buzz wavelength. So cos(50t/2π) hardly deviates from a value of cos(0) = 1 on wavelet's effective support. So, to a first approximation, F(50) = ∫wavelet(t)dt. The 50Hz component is zero if and only if the integral is zero.

I cannot illustrate that in this comment, because Language Log's comment system does not support the <audio> and <img> elements. So I have put an illustration on my own website here, to which you can navigate if you are interested. I do not guarantee that it will remain at the same web address for ever, but I will make sure it is there for at least a year.

]]>f0 = SR./Periods;

semitones = 12*log(f0/50)/log(2);

distribution=histc(semitones,-9:20)';

a = -0.1; % drop in perceived loudness (natural log of pressure) per semitone

PerceivedDistribution = distribution.*exp(a*(-9:20));

figure;bar(-9:20, PerceivedDistribution); % sorry, cannot post the figure

disp(mean(PerceivedDistribution.*(-9:20))/mean(PerceivedDistribution));

-2.0436

Anyways, it's not a Gaussian distribution and ±5 semitones is just a guess and because it is squaring…

]]>[(myl) I'm not sure why you think a zero integral is relevant. A sine wave (which has an integral of zero, or a sum of zero in the discrete case, for integer numbers of periods), has the Fourier transform of an impulse at its frequency; and a complex wave made up of sums of harmonically-related sinusoids, which also will have an integral of zero for suitably chosen intervals, will have a Fourier transform representing the associated "overtone series", which is just a representation of the amplitude and phase of the sinusoids in its frequency-dimension representation. Thus __this Octave code__ yields this (summing to zero) waveform:

and this amplitude spectrum:

]

Try it with equal multipliers up and down, rather than adding and subtracting the frequency.

[(myl) (1) I added and subtracted amounts to the pulse locations in the time domain, rather than working in the frequency domain; (2) the results actually favored shorter periods (= higher pitches) slightly:

1/(1.35*.02) = 37.03704 Hz # lowest pitch resulting from one offset

1/(0.65*.02) = 76.92308 Hz # highest pitch resulting from one offset

12*log2(37.03704/50) = -5.195512 semitones lower

12*log2(76.92308/50) = 7.457861 semitones higher

Still, the median period was very close to 0.02 seconds (frequency of 50 Hz), and the average period was actually on the short side (i.e. higher rather than lower frequency.

]