On 5/15/21 12:04 AM, Chris Caudle wrote:
Does anyone know if jackd (or the Ardour ALSA backend)
can be forced to
use interleaved mode?
Ardour's ALSA backend is based on zita-alsa-pcmi and does support
interleaved mode, but there is no switch to force it on.
It cannot be forced since it requires at least 2 parameters (offset and
stride) the first of which may differ every cycle depending on where
memory is mapped to.
Relevant methods are snd_pcm_mmap_begin() [1] which provides the info
and pointers in a snd_pcm_channel_area_t [2] struct.
but apparently jackd and Ardour try to open in
non-interleaved mode.
Ardour indeed tries SND_PCM_ACCESS_MMAP_NONINTERLEAVED first and falls
back to SND_PCM_ACCESS_MMAP_INTERLEAVED (and
SND_PCM_ACCESS_MMAP_COMPLEX) if the former fail.
One could add an option to override this configuration behavior, but
that would only be useful for driver development/debugging.
--
robin
[1]
https://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m___direct.html
[2]
https://www.alsa-project.org/alsa-doc/alsa-lib/structsnd__pcm__channel__are…