Producing sound like a water kettle whistle

Hi all,

I wanna recreate the sound of a water kettle. My first thought was to buy a vacuum pump and recreate the real sound, but it looks like the power of my vacuum pump is way to low and too loud as well. You can't even hear the whistle :frowning:

I am a total beginner whit Arduino and sound, but I thought maybe somebody has an idea how I could recreate the sound artificial with a piezo or so.

Thank you soo much!!


If you have a piezo speaker and an Arduino, try the tone() function.

You'll probably need a frequency a bit lower than a piezo can reproduce. (That means you'll probably need a regular speaker.)

If you use a regular 8-Ohm speaker, you'll need an amplifier because anything less than 125 Ohms will "pull" too much current and damage the Arduino.

I think you'll also need an audio/MP3 shield since the Arduino doesn't have a true digital-to-analog converter built-in and it can't reproduce sine waves. (You can filter a square wave, but I'm not sure the results will be satisfactory).

If you don't get good results with tone() and a piezo, I suggest you experiment with [u]Audacity[/u]. If you are not familiar with Audacity, it's a free audio editor that runs on your computer. It can generate sine waves and square waves so it's an easy way to experiment with generating various frequencies & waves to find what you want. (It doesn't require programming and it works with your soundcard & speakers.) For a more realistic tea kettle whistle, I think you'll need to blend-in some white or pink noise, which Audacity can also generate.

If you can get the sound you're looking for with Audacity, you'll know what you're after and you can try reproducing that sound with the Arduino.

You can also connect a piezo directly to your soundcard for to experiment with how it sounds. (It's basically a "tweeter" with no bass or mid-frequencies.)

Thank you so much for your reply! I will try out all your suggestions and post my results.

You could also play a real recording off a kettle.
Check this tutorial

I am actually doing this right now. I am just having issue trying to convert my files to a Unsigned 8 bit PCM .WAV file. It plays the sound but its speeded up. (super fast) like a chipmunks

You could try something like this. Play around with the base frequency, range and delay to get the sound you like.

// Teapot - 8 Ohm speaker and 100 Ohm resistor
// Tom Fangrow - 4/11/2015

void setup() {}

void loop() {
  static int base=0, range=100;
  if(base < 2300) base++;
  tone(2, random(base-range, base+range));