piapia123
en

Tone Generator (Sine, Square, Triangle, Sawtooth)

Media

Everything runs locally in your browser — nothing is uploaded

Tone generator

Volume starts at 30% (full volume through headphones is startling); turn it up as needed. Sound begins only after you press Play — the browser requires the first sound to come from a user action.

⚠️ Sweeps are **exponential** by default: hearing is logarithmic in frequency, so an exponential glide sounds even while a linear one sounds slow at first and rushed later. The volume is faded in and out over 20–50 ms — a hard start would produce a click.

Synthesise a tone in the browser: pick a waveform, enter a frequency (in Hz or as a note name) and press Play. No audio file is involved. Three things are usually missed, and all three are handled here. First, the volume is faded: starting and stopping an oscillator abruptly produces a click, because the waveform is cut mid-cycle, so a 20–50 ms gain envelope removes it. Second, the sweep is exponential: hearing is logarithmic in frequency, so an exponential glide sounds even while a linear one sounds slow at first and rushed later — a difference that matters when checking headphones or hunting for a resonance. Third, the volume starts at 30%: a full-volume 440 Hz sine through headphones is startling. A frequency can be a number (`440`) or a note name (`A4`, `C#5`, `Db3`); the tool shows the corresponding hertz and the nearest note. Below 20 Hz or above 20 kHz it says the tone is inaudible, and below 20 Hz it also warns about woofers. The sound is synthesised by `AudioContext` on the spot — no audio files are loaded and no network requests are made.

Features

  • Four waveforms: sine (purest), square, triangle and sawtooth
  • Frequency as Hz or as a note name (440 or A4), with the nearest note shown
  • Volume starts at 30% (safe through headphones) and can be adjusted live
  • Left, right or both channels, handy for checking headphones and speakers
  • Exponential sweep from a start to an end frequency, with a set duration
  • Auto-stop after a number of seconds; 0 keeps playing until you stop it
  • A 20–50 ms fade in and out, removing the click at the start and end
  • Below 20 Hz or above 20 kHz it says the tone is inaudible; below 20 Hz it also warns about woofers
  • Synthesised entirely in the browser: no audio files, no requests

How to use

  1. Pick a waveform and enter a frequency (440 or A4)
  2. Set the volume and channel
  3. Tick sweep if you want one, and set the start and end frequencies plus the duration
  4. Press Play; it stops on its own at the auto-stop time, or press Stop

FAQ

Why fade the volume?
Starting and stopping an oscillator abruptly makes the waveform jump from a non-zero value to zero (or back), and a speaker reproduces that discontinuity as a click. A fade of 20–50 ms removes it.
Why is the sweep exponential by default?
Because hearing is logarithmic in frequency. Sweeping 20 Hz to 20 kHz, an exponential sweep has its midpoint near 630 Hz (the geometric mean) while a linear one has it at 10 kHz (the arithmetic mean) — an order of magnitude apart. Exponential sounds like a steady climb; linear sounds slow at first and rushed later.
Why start at 30% volume?
A 440 Hz sine at full volume through headphones is startling and hard on your hearing. Start low and turn it up if you need to.
Does it download audio or make requests?
No. The tone is synthesised on the spot by an `AudioContext` oscillator; no audio file is loaded and no request is sent. It works offline.
What about below 20 Hz or above 20 kHz?
Both are marked as inaudible. Below 20 Hz in particular can also damage a woofer, so it asks you to lower the volume first.

Related tools