This site is an HTML5/Javascript rewrite of Ward Cunningham's morse code teaching software. For more background, check out the explanation on his site.
The picture of the key came from the W1TP Telegraph Museum.
This page has some useful explanations about how to generate tones and envelopes for the sine wave.
Comments or questions? Contact me.
This project is also on Github.