Hi,
There is actually a PWM method for generating sines too, where you bang the output with pulses of different widths to force the output to be the piecewise time average of a sine wave of whatever frequency you need. Since you only need up to about 440Hz this should be possible. The output then is much easier to filter and looks more like a sine wave.
When generating a square wave, the output is turned on for about 50 percent of the time, and off for 50 percent of the time, at the frequency needed. When generating a sine wave, a three pulse method would be to turn the output on for a short time period, say 5 percent, then turn off for say 5 percent, then on for say 30 percent of the time, then off for say 5 percent, then back on for 5 percent, then off for 5 percent, etc. That's a guess of the required pulse widths but that's the basic method. The actual pulse widths are calculated based on the actual average the sine is supposed to be at that point.
At zero degrees there is no amplitude, so there is no pulse, at 90 degrees there is max amplitude, so there the pulse width is max too. If the max pulse width is 20 degrees, then the pulse between zero and 90 degrees occurs at 45 degrees, and the average amplitude has to be 0.707 so the pulse width there has to be 14.1 degrees, and the pulse width at 90+45 degrees is also 14.1 degrees. That's using only three pulses per half cycle, just a quick example.
There are other ways of doing it though too, such as selecting the pulse widths based on completely eliminating the 3rd harmonic which is the worst one, which then makes it easier to filter.
Another simple way is to use a weighted resistor divider, with four top resistors and one bottom resistor that forms a variable voltage divider. The four upper resistors are chosen to provide one of 16 different amplitudes when connected to 4 output ports. The output is much easier to filter than a square wave. The i/o ports are driven with signals that are spaced in time according to what is needed in the sine wave at that time. Since the resistor values could be something like 8k, 4k, 2k, and 1k, connected say to pins 8,4,2, and 1 (for example) to get the level at 90 degrees all output ports would be set to 1, and at 45 degrees only ports 8 ,2, and 1 are set to 1 with 4 set to zero. This idea gives a much closer approximation to the sine wave without having to buy much, just the resistors, and a single capacitor filter.
The AD device Jim mentioned is easy to use too, just send it the digital code that corresponds to the frequency you need, and there is already a library for it so you dont have to do much to get it to work.
You can see there are a lot of ways of doing this. You have to figure out what is the way you prefer based on what you already have and what you are willing to buy, and how much trouble you dont mind going through to get it to work.