Sebastion,
Given the nature of audio platforms, I do not think excluding cgo is feasible.
There always seems to be very important layers in userland (though OS-privileged)
There is a really neat package which does ALSA without the accompanying library already, github/yobert/alsa, whose headline is:
"""
This is a golang ALSA client implementation, without cgo! Unfortunately, doing it without cgo means throwing away many years of compatibility work that has been put into libalsa
"""
I don't think it's practical to eliminate cgo. Also for darwin/iOS, the OS comes with good support linked to the kernel which is only really available at the C level.
But these are not really in the same category as portaudio, sox, ffmpeg, etc. I think that with time good 100% Go support can be found here, and moreover I hope that some future codec developers consider doing their work in Go to begin with, they could publish C support via -build-shared and friends.
For FFT: Honestly it's been so long since I wrote that I don't remember the reason I chose not to use go-num. Perhaps one day go-num's fft can replace it. I've been looking at doing MDCT, and it would be nice if go-num had that. In the meantime I think the audio-specific parts of zikichombo's fft justify it living apart.
Scott