Leif Asbrink
2015-04-08 03:24:20 UTC
Hello,
I am the author of Linrad, a program for SDR (software defined radio)
Linrad can be used for radio in duplex mode which means that latency
is utterly important.
In Linux, latency is no problem, ALSA or OSS provide adequate timing
and I can alternatively use Portaudio with ALSA for equivalent performance
except when I select the 32 bit format for Delta44. The 16 bit format
is OK, but the dynamic range with only 16 bits is not really satisfactory.
With ALSA or OSS (alsa-oss) I get perfect performance, but when I try
to use Portaudio, thre result is horrible. The error is not present
if I use the motherboard (intel) soundcard.
The reason why I added Portaudio into Linrad is that there is a need
to use ASIO drivers under Windows in order to avoid the stupid delay
associated with MME drivers. Unfortunately the same Portaudio
bug is present in Windows.
What I see is that the callback comes as expected. When I fill the
buffer with e.g. a squarewave of sampling rate/32 which should lead
to a square-wave at the Nyquist frequency divided by 32, the output
is quite, different. I see a burst of a squarewave at 10 times the
expected frequency (spanning 10% of the time) with zero over 90%
of the time.
For the moment my work-around is to select 16 bit data, but that
leads to a loss of dynamic range performance. Under Linux I do not need
Portaudio so Linux gives full performance, but under Windows there
are problems with various extra processes adding delay when other
than ASIO drivers are used.
I have tried pa_stable_v19_20111121.tgz and pa_stable_v19_20140130.tgz
and both of them behave the same way.
- Leif -
I am the author of Linrad, a program for SDR (software defined radio)
Linrad can be used for radio in duplex mode which means that latency
is utterly important.
In Linux, latency is no problem, ALSA or OSS provide adequate timing
and I can alternatively use Portaudio with ALSA for equivalent performance
except when I select the 32 bit format for Delta44. The 16 bit format
is OK, but the dynamic range with only 16 bits is not really satisfactory.
With ALSA or OSS (alsa-oss) I get perfect performance, but when I try
to use Portaudio, thre result is horrible. The error is not present
if I use the motherboard (intel) soundcard.
The reason why I added Portaudio into Linrad is that there is a need
to use ASIO drivers under Windows in order to avoid the stupid delay
associated with MME drivers. Unfortunately the same Portaudio
bug is present in Windows.
What I see is that the callback comes as expected. When I fill the
buffer with e.g. a squarewave of sampling rate/32 which should lead
to a square-wave at the Nyquist frequency divided by 32, the output
is quite, different. I see a burst of a squarewave at 10 times the
expected frequency (spanning 10% of the time) with zero over 90%
of the time.
For the moment my work-around is to select 16 bit data, but that
leads to a loss of dynamic range performance. Under Linux I do not need
Portaudio so Linux gives full performance, but under Windows there
are problems with various extra processes adding delay when other
than ASIO drivers are used.
I have tried pa_stable_v19_20111121.tgz and pa_stable_v19_20140130.tgz
and both of them behave the same way.
- Leif -