On 27/05/2019 13.28, Max wrote:
I know that having different soundcards for in and out
will lead to
clock deviations and is generally not a wise thing to do, but my
question is differently:
Surprisingly it works quite well with ALSA, but not so much with jack.
ALSA is the low-level interface to the hardware (which Jack also uses).
Each sound card is a separate device, each sending/receiving own stream
of data. ALSA doesn't care about syncing them together.
As generally, when running at the same bitrate, all devices are supposed
to be clocked with the same frequency it seems to 'work quite well',
e.g. when you sent the same bit stream to two different devices. It may
be hours or days, but eventually problems will be apparent – audio
output or buffer position getting out of sync, as different devices
would digest data in a bit different tempo.
Jack is not just another API to send bytes to audio output or receive
bytes from input. It merges all audio i/o and processing (done by Jack
clients) in a single flow and that flow is driven by a single clock. If
that would be a clock of one audio device, and other audio device would
be a bit slower/or faster buffer over/underruns would eventually happen.
The easiest for implementation is to assume everything uses the same
clock, which is usually the case in a studio setup. Otherwise the signal
would have to be resampled, which is out of scope of the Jack server
(Jack does not process the audio, it just routes in around and adds
together).
Both is from Pd. Jack has a plethora of settings, so
this could have to
do with it and make my blanket statement above too simplistic, but I
wonder is there a general design in jack which makes it harder to rund
different cards for i/o or do i have the wrong settings?
Where to look at?
Let the Jack server do its job the way it does, just attach you
extra
input/outputs via external Jack clients, like these:
https://kokkinizita.linuxaudio.org/linuxaudio/zita-ajbridge-doc/quickguide.…
And I think Jack 1 has similar function included, in such case using
some Jack setting would work too.
Jacek