The bit-banging technique is very cheap and it's nice to learn how it works. However, I can quote some annoying things here:
We are going to use a very nice library called Mozzi, by Tim Barrass. The official website is directly hosted on GitHub at http://sensorium.github.com/Mozzi/. It includes the
TimerOne library, a very fast timer handler.
Mozzi provides a very nice 16,384 kHz, 8-bit audio output. There is also a nice basic audio toolkit containing oscillators, samples, lines and envelopes, and filtering too.
Everything is available without external hardware ...