I had a rough idea in mind about having a small tune play instead of the 2kHz tone, and it should only play once.
So I shuffled some code together to code to play a small tune from the flash of an Arduino Nano. The flash could only hold about 18k of samples and was played at 8kHz.
(inspired by http://playground.arduino.cc/Code/PCMAudio)
In lack of a better choice i choose Windows XP’s startup sound.
I shuffled some more code around to sample the original buzzer signal from a GPIO. If the sound is playing at more than 2kHz for a certain time I would trigger the sound.
I applied some time based software filters to filter out some noice.
I build a small amplifier out of an MOSFET (IRLML6344) and a small 0.5W speaker element I found at my local hackerspace.
Unfortunately the sound from the small 0.5W element was too low. It barely was distinguishable against the sound of the microwave ovens fan.
So I upgraded the element for a 3W element that I found in an old PC speaker, and took some precautions and upgraded my amplifier as well for the more stable Class-D amplifier PAM8403.
The sound was much louder and you can clearly hear the “Done”-sound from the microwave oven.