I think you're probably better off making some simple waveforms (sine wave, square wave, sawtooth wave, etc.) and using them as instruments in a
tracker (then place notes to make sound effects). Then just convert the output to a WAV.
If you can't find a library that outputs WAV for the instruments here's the header for a 16-bit stereo WAV (all values except strings are little endian), then simply note that you have left and right samples interleaved (just use the same value twice if you don't care) and that they're 16-bit signed integers:
uint32 ... "RIFF"
uint32 ... Waveform size + 36
uint32 ... "WAVE"
uint32 ... "fmt "
uint32 ... 16
uint16 ... 1
uint16 ... 2
uint32 ... 44100
uint32 ... 44100*2*2
uint16 ... 2*2
uint16 ... 16
uint32 ... "data"
uint32 ... Waveform size
(waveform size is in bytes, so it's the waveform length × 4)
That said, sometimes you'll need better than that. For those cases I pick up some public domain sounds and then edit them in Audacity as needed (usually cutting parts and altering the volume, but sometimes I change the pitch too). I should probably some day make a good sound effect collection...