You can’t trust a prompt to give you 528 Hz. You can add a real one in one line.

Asked for 528 Hz. Got 524.

Type “528 Hz pure sine wave” into Suno or Udio and you’ll get a track that sounds like healing-frequency music. What you won’t get is any guarantee that 528 Hz is actually in it, at a stable level, on both channels, holding still. The prompt is a wish, not a specification.

This matters because a whole category of audio sells the number itself. Search “528 Hz healing” or “432 Hz sleep” or “theta binaural focus” and you’ll find tracks with enormous view counts promising that an exact frequency does an exact thing. Some of that catalog is now generated with AI tools, and a prompt-based generator gives you no dependable, verifiable control over the exact frequency you’re naming in the title.

I make meditation audio with these tools, so I had a practical reason to find where the line is. Here’s what I measured, and the one-line fix that makes the frequency real.

What the generator does and doesn’t give you

It’s easy to overclaim here, so I’ll be careful. A neural music model can absolutely put energy at 528 Hz. It might even land a sustained tone near the number on request. I’m not claiming it’s impossible.

Whatever happens inside these systems, the interface exposes no oscillator, no frequency lock, no channel routing, and no drift control. Different products use different architectures (MusicGen, for one documented example, works over compressed audio tokens rather than raw spectrograms), and I can’t see inside a closed one. The point isn’t the architecture. It’s that a number in the prompt comes with no guarantee that it becomes a stable carrier, and in these tests, it didn’t.

So if the frequency is load-bearing, don’t ask the generator to produce it. Ask it for the music, and add the tone with math.

The fix

The pipeline I use for my own tracks:

  1. Suno generates the ambient bed only. Slow evolving pads, no melody, minimal variation.
  2. The bed gets mastered on its own, quiet, around a sleep-appropriate loudness.
  3. The tone gets generated separately and exactly. A real sine at the target frequency. Two offset sines for a binaural beat. An amplitude-modulated tone for isochronic.
  4. Bed and tone get summed. I avoid heavy dynamic processing after the sum, for a reason I’ll get to.

FFmpeg’s sine source generates a clean carrier. A real 528 Hz tone at 48 kHz, six minutes long, at the source’s default amplitude of 1/8 (which I measured at a peak of 0.125 and keep):

ffmpeg -f lavfi -i "sine=frequency=528:sample_rate=48000:duration=360" tone528.wav

A 2 Hz binaural beat needs two different carriers, one hard-routed to each ear. Explicit channel routing keeps the layout unambiguous:

ffmpeg \
  -f lavfi -i "sine=frequency=150:sample_rate=48000:duration=360" \
  -f lavfi -i "sine=frequency=152:sample_rate=48000:duration=360" \
  -filter_complex "[0:a][1:a]join=inputs=2:channel_layout=stereo:map=0.0-FL|1.0-FR" \
  -c:a pcm_s24le binaural.wav

An isochronic tone is one carrier pulsed on and off at the target rate. A 200 Hz carrier amplitude-modulated at 12 Hz, using the tremolo filter at full depth, which puts symmetric sidebands at 188 and 212 Hz:

ffmpeg -f lavfi -i "sine=frequency=200:sample_rate=48000:duration=360" -af "tremolo=f=12:d=1.0" tone_iso.wav

The hard part was never generating the tone. It’s resisting the urge to let the generator fake it.

I ran the test

Reasoning about what a generator can’t reliably do is one thing, so I ran it. I prompted Suno four times each for four different frequency claims, the way the niche actually prompts (naming the exact frequency, asking for a pure tone), downloaded the WAVs, and measured each file directly.

The method, so you can reproduce or dispute it: I slid a 20-second Hann-windowed FFT across each file in 10-second hops, so every track yields roughly twenty overlapping windows rather than one cherry-picked snapshot. At 48 kHz that window resolves to about 0.05 Hz per bin. In each window I took the strongest peak in the tone band from 380 to 680 Hz (above the bass, where a 400-to-600 Hz carrier would sit), interpolated to sub-bin accuracy, and reported the median and full range across all windows. For the binaural test I measured each channel’s dominant carrier separately and took the difference. For the isochronic test I took the amplitude envelope, removed its DC, and found the strongest envelope rate between 1 and 20 Hz.

Here is what the generator gave back.

Time-series of four 528 Hz takes: the dominant pitch wanders across musical notes over each track, hugging the C5 line and never settling on 528 Hz.
Ask for 528 Hz, get a wandering melody that hugs the C5 line and never sits on 528.

The 528 takes never held a stable tone. Across each file the dominant pitch wandered, hopping between roughly G4 and E5 from one window to the next. It clustered around C5, near 523 to 524 Hz, and the median of every take landed there. It crossed the 528 line constantly and never settled on it. The product is named for a stable 528 Hz carrier that it does not actually deliver.

The 432 takes were worse. The dominant pitch wandered even more widely, and the medians landed around B4 and C5, up near 490 to 525 Hz, nowhere close to 432. Same words in, a different wandering line out each time.

One pattern did hold across every window of every take: the dominant pitch sat within roughly 15 cents of an equal-tempered note, a piano key. Sample any moment and you’re on a note, not on the number you typed. Four takes can’t establish the internal mechanism, and I won’t pretend they do. But they suggest a strong musical-note prior: the model treats the requested number as loose musical guidance and returns a pitch that fits the track it is generating. That also explains why you can’t fix the error by aiming, which was the next thing I tried.

I asked for 532 (four Hz high, to see if I could land on 528 by overshooting), for 538 (a frequency that sits almost exactly between two piano notes), and for 440 (concert A, a real note, the case that should be easy). Two takes each. None behaved like a knob. The 440 takes drifted around A without parking on it. The 532 and 538 takes wandered among assorted notes the same way the 528 takes did, and not one landed on the number in the prompt. There is no fixed offset to pre-compensate for, because the number was never a control surface. I also tried Suno’s Sounds mode, meant for tones and textures rather than songs, on the theory that it might not carry the musical bias. Its 528 clips came back near B4 and A4, its 432 clip near G#4. Different tool, same pull toward notes, same miss.

The binaural test is the demanding one, because success requires the model to produce two specified carriers and route them independently to each ear. A music model can produce different left and right signals, so this is not structurally impossible. It simply didn’t do it. Measuring each channel’s dominant carrier, the two ears were never a stable 2 Hz apart. In some windows the dominant carriers had zero separation. In others they were tens or even hundreds of hertz apart. It wandered, take to take and moment to moment.

Per-window difference between the dominant left and right carriers across four binaural takes, scattered from zero to hundreds of hertz, never holding at the requested 2 Hz.
A binaural beat needs the dominant carriers 2 Hz apart. Across four takes, they never maintained that separation.

The isochronic pulse missed too. Measured from the amplitude envelope, the pulse rate sat between about 1.5 and 6 Hz across the four takes, never the 10 it was asked for, on a carrier that itself drifted around 90 to 130 Hz.

None of this means the generator is broken. It means a frequency in the prompt is a loose request, and the only way to know what you got is to measure the file.

Checking whether a tone is really there

You can run this check on any track, including your own, but the casual version of the advice is misleading, so here’s the real one.

Playing a track and pointing a phone spectrum-analyzer app at your speaker certifies nothing. The result depends on your speakers, the room, the app’s FFT length and windowing, and the mic. Measure the decoded file directly. Look at each channel separately, and decide in advance what counts as a hit: a narrow, sustained peak at the target frequency, clearly above the surrounding band, holding steady over time, within a stated tolerance. “Exactly 528.00 Hz” means nothing without saying how finely your measurement can resolve.

There’s a trap in the word “loudest,” and it’s the same trap that makes the Suno takes look like they land on C5. If you tell a script to grab the loudest frequency in a region, it returns whatever note the bed is playing, not whether your carrier is present. To test for 528 specifically, you have to look at the 528 bin itself. When I did that on the Suno takes, there was no stable narrow peak there, just the shoulder of a wandering musical pitch nearby.

To be fair, I held my own pipeline to the same test. The tones below are the ffmpeg sines from the fix, summed under real Suno beds:

  • The 528 track: a narrow peak sitting on 528.0 Hz, stable across the file. Measured the same way, window by window, the peak stood a median of 36 dB above the surrounding band, ranging from 30 to 44 dB across the track. (I compared the peak magnitude within 2 Hz of 528 against the median magnitude in the 428 to 508 Hz and 548 to 628 Hz bands on either side.) The Suno takes had no such peak.
  • The binaural track: left channel 150.00 Hz, right channel 152.00 Hz, a clean 2.00 Hz difference, identical in every window. Each channel alone is a steady tone. The beat exists only in perception.
  • The isochronic track: a 200 Hz carrier amplitude-modulated at exactly 12 Hz, showing as symmetric sidebands of equal magnitude at 188 and 212 Hz.

The generator was asked for a frequency and delivered a wandering musical line. The math was asked for a frequency and delivered exactly it, in every window, on the channel I put it on.

Two things I got wrong before I understood them

The bed will fight the tone if you let it. My first instinct was to prompt Suno to “leave space around 528 Hz.” That doesn’t work, because a prose prompt is not an EQ. If the bed has musical content sitting on your tone, it beats against it. Generate the bed, look at it, and carve the space afterward with an actual EQ if you need to.

And don’t master the mix after you’ve added the tone. A limiter won’t turn 528 Hz into a different frequency, that’s not the failure mode. What heavy dynamic processing does is modulate the gain and add nonlinear distortion, which smears sidebands around your clean tone and makes its level pump. Master the bed first, sum the tone in last, leave it alone.

On binaural specifically

The mechanism is real and worth stating precisely. A binaural beat uses two tones a few Hz apart, one to each ear, and you perceive a beat at their difference. Headphones keep the two channels from mixing before they reach your ears. Specially arranged speakers can also do it, with more crosstalk, so “headphones only” is close to true in practice but not absolute.

And to be fair to the generators: the limitation isn’t that a model can’t make two channels. It’s that ordinary prompting gives you no dependable way to specify or verify the two carrier frequencies, which is the whole point of a binaural track.

About the health claims

I’ve argued a narrow thing on purpose: if you sell a frequency, the frequency should be real and checkable. I’m not telling you 528 Hz repairs DNA. The numbered “Solfeggio frequencies” trace to late-20th-century numerological claims, popularized by Leonard Horowitz and Joseph Puleo’s 1999 book Healing Codes for the Biological Apocalypse, and should not be confused with the centuries-older solfège teaching system they borrow their name from. The DNA-repair claim has no support.

Brainwave entrainment is more nuanced. A 2023 systematic review in PLOS ONE found the evidence inconsistent, with five of fourteen studies supporting reliable entrainment, eight contradicting it, and one mixed. So: not the miracle the thumbnails promise, not nothing either. People find this music calming, and calming is a real thing music does to people.

My position is only about honesty in the product. If someone makes and sells frequency-named audio, the version where the frequency is actually present and measurable costs one extra line of ffmpeg. There’s no good reason to ship the version where it isn’t.

What I haven’t done

I should be clear about the limit of my evidence. I measured my own tracks, which I built to contain exact tones, so of course they do. I ran four takes each of a handful of prompts on one platform, which is enough to show that a prompt gives you no guarantee, not enough to tell you what fraction of the whole “528 Hz” catalog contains a clean carrier. That larger survey is worth doing and I haven’t done it.

The narrow claim holds either way: a prompt gives you no guarantee, the only way to know is to measure the file properly, and if you care about the number, generating it yourself is trivial and verifiable. The tone you can prove costs one line. The tone you hope is in there is worth exactly as much as the measurement you didn’t take.


If you want a genuinely documented test, generate a “528 Hz” track in your tool of choice, keep the file, and measure the specific bin directly, both channels, across the whole track. That’s the experiment worth running, and it’s the one I’d trust.