Drive 12V Piezo Buzzer


I want to drive this 12V piezo buzzer:

I have attached the circuit I am using.
The Arduino is powered by a 12V DC adapter trough the DC IN jack.

I have tested the following code:

void setup() {

void loop() {
  int pinOut = 9;
  int freq = 10;
  int duration = 100;
    for(int i=0; i<1000 ; i++)
      tone(pinOut, freq*i, duration);
      delay(duration * 1);

When run I can hear the tones changing but the sound level is really really low. I have measured the voltage between buzzer pins and it is 12V (as expected) so the MOSFET seems to be properly working.

This piezo buzzer should be louder (I have tested it with this 12V tone generator M048N Ultrasonic Generator )

I am making any mistake?
Thanks in advance!

I have managed to make it a bit louder by placing a 1K resistor in parallel with the load (piezo buzzer).

What I am wondering now is why this resistor makes it louder and how to calculate the proper resistor value in order to have the loudest output.

Is it a speaker or a buzzer?
If it is a buzzer, then you don't need to send it a frequency, just apply voltage, and it will buzz.

EDITED: As Grumpy_Mike says...

then just put a pot where the current resistor is, and vary it until it sounds how you want it.

Do not do this because you will turn the pot all the way to the end and short out the load and burn up the pot. Instead but a 100R resistor on the end of the pot.

I fact scrub the whole idea because the resistor will not make any difference apart from reproducing the original condition when it it too high. The resistor makes a difference because it is giving the FET something to switch. The piezo alone it too high an impedance to allow the FET to actually switch.