cwwav takes one or more text files (or text read from standard input) and converts the text into an audio file (wav or mp3) containing the CW (Morse code) representation of the text. It's useful for generating practice files if you are learning CW and want to practice by listening to text. It's a very simple program but it is designed to do what it does well. That is, it is designed to produce good sounding CW output files, with proper timing and comfortable envelope to avoid keyclicks and to make the CW softer.
MorseCodr is a program for practising Morse code communication. You can connect to other users and send Morse signals that are automatically interpreted by the program. Once you become more proficient, you can reduce the amount of display and interpretation provided. It features Morse code tape display, dot/dash colouring, letter interpretation, and adjustable speed.
Sam is a Morse code trainer. It is a bash script that runs in a terminal. It beeps and boops out the command-line arguments in Morse code. If there are no command-line arguments, then it beeps and boops the Usage message. Simple, no? But the gimmick is that it prints out the text to the terminal, and the cursor below the text keeps track of which letter is being sounded.