I need to generate a tone with a gradually increasing pitch with a very slow ratio. That is, I need a sine/square/sawtooth tone (amplitude doesn't matter) starting from 20Hz and gradually, linearly (or exponentially) increasing to 16kHz over 10 minute period. I need it to test a very specific audio device.

This seems like a simple task, yet I cannot find any free tool which would generate such a tone and save it to WAV or something like that. I tried fiddling with Audacity, but either I cannot find it or such tone not possible to achieve in it.

Does anybody know any free tool which would help me in generating such tone?

  • 1
    I'm just intrigued as to the device :-)
    – Rory Alsop
    May 27, 2011 at 21:12
  • Octave and Python are some alternatives too from what has already been suggested
    – ZaellixA
    Jul 22, 2020 at 15:45

3 Answers 3


This does almost everything you need (save for the length): http://heliso.tripod.com/download/generator/dsg.htm

Another one, also with a length limitation: http://softsolutions.sedutec.de/multisine.php

If you use a linear sweep, you can simply divide your 10 minutes into whatever is possible with the above tools and then splice the sound together in Audacity afterwards.

  • 2
    Thanks, the Multisine tool is exactly what I've been looking for.
    – Neo
    May 26, 2011 at 15:39

Audacity can do this. Select Generate → Chirp....

Chirp Waveform Sine from 20 Hz to 16,000 Hz

The default sampling frequency is 44.1 kHz, which can be adjusted under Edit → Preferences... → Quality → Sampling → Default Sample Rate

Default sample rate set to 44100 Hz

Be careful not to hurt your ears when playing it back!


The sox utility can do this. To generate a WAV file:

sox -n output.wav synth 600 sine 20-16k

Mind you, this will generate a 100 MB WAV file, since it defaults to a 48 kHz sampling rate. Since you need a maximum frequency of 16 kHz, you could get away with a 32 kHz sampling frequency instead:

sox -r 32k -n output.wav synth 600 sine 20-16k

This file will be only 74M. Or you could use MP3 and get it down to 3.5 MB:

sox -r 32k -n output.mp3 synth 600 sine 20-16k

A breakdown of how this works:

  • The -r 32k specifies the 32 kHz sampling rate.

  • The -n output.wav specifies the output filename.

  • 600 is for 600 seconds (10 minutes).

  • The 20-16k is the frequency range (20 Hz to 16,000 Hz).

If you just want to play it directly, you can do this:

play -n synth 600 sine 20-16k

More information here:

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.