Answer: @derobert pointed out the "sox" and "play" command are part of the same package but does different thing. The 3600 below is the time interval in seconds.
sox -n note.mp3 synth 3600 sin 347
The above code will generate an hour long tone without playing it.
play -n note.mp3 synth 3600 sin 347
The above code will play the tone for an hour AND save it to note.mp3
Thanks to @derobert, I should have tried this first.