What a Hertz Actually Is, and Why Two Counts Disagree
A hertz is one cycle per second. Build a 528 Hz tone in Python, then count it two independent ways: the answers differ in the last digit, and the reason is worth knowing.
Frequency numbers get sold constantly and measured almost never. Before any argument about whether a particular one does anything, it is worth being precise about what the number even is, because a surprising amount of confusion downstream comes from people using “528 Hz” as a name rather than as a quantity.
A hertz is one cycle per second. That is the entire definition. The SI unit is named for Heinrich Hertz and it means exactly that: a thing that happens, completely, this many times every second. A tone at 528 Hz is air pressure rising and falling back to where it started 528 times in one second.
Building one, so there is something to measure
You do not need a synthesiser for this. A pure tone is a sine wave, and a sine wave is three lines:
import numpy as np
sr = 44100 # samples per second
t = np.arange(int(4 * sr)) / sr # four seconds of time stamps
y = np.sin(2 * np.pi * 528 * t) # 528 cycles per second
The 2 * np.pi is there because one full cycle of a sine is 2π radians. Multiplying by 528 makes 528 of those cycles fit into each second of t. Everything else in audio synthesis is elaboration on this line.
The first count: zero crossings
If a wave completes 528 cycles per second, it crosses zero going upward 528 times per second. So count them:
ups = np.sum((y[:-1] < 0) & (y[1:] >= 0)) # upward zero crossings
print(ups / 4) # per second
Over four seconds this returns 527.88 cycles per second, not 528.
The second count: the FFT
The other approach reads the whole signal at once and asks which frequencies it is made of. A Fourier transform decomposes the wave into components, and the strongest one is the answer:
spec = np.abs(np.fft.rfft(y))
freqs = np.fft.rfftfreq(len(y), 1 / sr)
print(freqs[np.argmax(spec)]) # 528.00
This returns 528.00 Hz.
Why they disagree
Two honest methods, same signal, different answers in the last digit. The temptation is to decide one of them is broken. Neither is.
The zero-crossing count is short because the four-second window does not contain a whole number of cycles. At 528 Hz, four seconds holds 2112 complete cycles and then a fragment. The counter cannot count a fragment, so it drops it, and the average comes out slightly low. This is not specific to 528: it happens at any frequency whose cycle length does not divide evenly into the window. Lengthen the window and the error shrinks, because one dropped fragment is a smaller share of a larger total.
The FFT looks exact here, and it is worth being suspicious of that. Its resolution is set by the window too: four seconds of audio gives frequency bins spaced 0.25 Hz apart. 528 lands neatly on a bin. A tone at 528.1 Hz would be reported at whichever bin is nearest, and the FFT would look just as confident about the wrong answer.
The useful conclusion is not that one method wins. It is that every measurement carries the shape of the window it was made in, and a number quoted without its method is missing half of itself. That is why sessions on this channel publish how a figure was obtained alongside the figure.
Two things that follow
A frequency you cannot hear still plays. Write the same three lines with 1 instead of 528 and the file is not silent. It contains a full-amplitude wave completing one cycle per second. Human hearing runs roughly 20 Hz to 20 kHz, so 1 Hz produces no pitch at all. “Inaudible” and “not there” are different statements, and the difference is why a binaural differential of 4 Hz can exist in a file without you ever hearing 4 Hz: it exists as the difference between two audible tones, not as a tone itself.
Doubling sounds like one step, not two. 528 Hz and 1056 Hz are an octave apart, and 1056 to 2112 is another octave, even though the second jump adds twice as many hertz. Pitch perception is roughly logarithmic, which is why musical intervals are ratios rather than differences. It is also why a spectral centroid of 590 Hz and one of 438 Hz are further apart than the raw subtraction suggests.
The part that matters for frequency claims
A440 is the reference every “tuned to X Hz” claim is measured against, and it is an agreement rather than a constant of nature. An international conference in London settled on 440 Hz in 1939. Before that, France had legislated 435 Hz in 1859, and concert pitch drifted by city and by century. Today Berlin and Vienna play near 443 and New York near 442, because players prefer the brighter sound.
That does not establish anything about whether a particular frequency has an effect. It dismantles a different half of the story: the half that says one tuning belongs to nature and the others are deviations from it. They are all agreements. What remains is whether a specific frequency does a specific thing, which is an empirical question, answered study by study, and answered honestly elsewhere in this Journal.
The point of counting a tone two ways is not the 0.12 Hz. It is that a number you have not measured is only a label, and the measuring is three lines long.
References
The material here is definitional signal processing rather than clinical evidence: the SI definition of the hertz, and the standard behaviour of discrete Fourier transforms and windowing, implemented with numpy. Concert-pitch history: the French diapason normal of 1859 (435 Hz) and the 1939 London conference standard (440 Hz).
Educational content about audio signal processing. Not medical advice.
Listen · FFT-verified session What a Hertz Actually Is, and Why Two Counts Disagree Watch on YouTube →