I am working on a "low-latency audio" project and I was wondering which card offers better performances, an Usb one or an on-board ?
This way your audio gets I2C all to itself, rather than having to share USB with other devices.
I've also heard of sound quality problems (occasional crackling and stuttering) with USB audio on the Pi, which I can't back up personally, but push me more in favour of the HAT solution.
Latency and USB audio is deceptive. Due to USC2 and buffering, you can set up ALSA with ultra low latencies. Despite ALSA reporting ultra low latencies, you will find that due to the UAC audio specification (USB audio specification) the actual latency of the output and input buffers are much larger then what you set in the ALSA software layer. The reason is that the USB protocol requires milliseconds of audio packets to be transmitted. From personal experience the lowest I could get was around 5ms in loopback depsite setting the ALSA buffer period time to around 1ms.
As the GPIO sound cards use the I2S peripheral silicon it directly links using DMA which is also in silicon to manage the audio stream directly into memory buffers. ALSA can then give to your applications in user space land these memory buffers to process. Due to these hardware/silicon implementations, they will give far lower latencies then USB audio streams.
An incomplete short list of audio cards for the Pi are available on eLinux.
I am attempting a similar thing using Gstreamer/ALSA (low latency, not synth) - It works, but not for any length of time. After about 5 minutes USB Audio output stops. So In my point of view, On-board audio is better for result.