View Single Post
Old 08-25-2018, 07:33 AM   #99
Human being with feelings
Glennbo's Avatar
Join Date: Mar 2008
Location: Planet Earth
Posts: 4,721

Originally Posted by Jack Winter View Post
Actually after further study I think this combined device is a bad idea

At least on Linux I think there would be an issue. The 2 cards wouldn't be initialized synchronously, so even if they sync the DACs, and the audio stream is synced, they wouldn't trigger the interrupts at the same time. This would lead to either of 2 scenarios (depending on how alsa works).

1. Card 1 has filled it's buffer and triggers the interrupt, but card 2 still hasn't filled it's buffer. This might lead to audio drop outs in the data stream from card 2.

2. ALSA waits until both cards have triggered their interrupts, this would lead to less time to process the audio before the early card has filled it's buffer and triggers the interrupt again. This means reaper would have less time to process the audio.

I found some information indicating that the above is true for your cards, I don't know if it's true for all cards, or if it's true on windows/osx too.

This might explain why you see nonsymetrical latency on windows too, say 64/128, meaning that the driver double buffers the output to work around the problem, and would also explain why the recorded audio isn't always aligned properly. Doesn't explain karbomusic's issue with a rme+adat though, so maybe I'm wrong

I've tried to make a startup script that could be used in the reaper device settings, but it's got race conditions, and without an option to run a script after JACK has started but before reaper connects to the server, it's unlikely that reaper would be able to autoconnect to all channels.

I've whipped up the following script to start it all up. If you want to start the whole enchilada up by clicking on an icon, you can do that in your OS, you can even give it the reaper icon.

/usr/bin/jackd -S -P80 -dalsa -dhw:M2496 -r44100 -p64 -n2 -Xseq &
/usr/bin/sleep 1
/usr/bin/zita-a2j -dhw:M2496_1 &
/usr/bin/a2jmidid -e &
You'll have to make it executable by running chmod 755 start-reaper

Thanks again for all your help Jack!

That script is very similar to the script I setup to run from the "run script after start" in QjackCtrl. This is what I have running when I launch QjackCtrl.

a2jmidid -e &
sleep .5
zita-a2j -d hw:3 &
sleep .5
~/.local/share/reaper_linux_x86_64/REAPER/reaper &

The one big difference though is that using QjackCtrl also calls up the routing on it's patch panel that is needed to get the output from zita-a2j into REAPER's inputs 3 and 4, and I don't think that function can be called behind the scenes.
Hear My Music - Click Me!!!
Glennbo is offline   Reply With Quote