View Single Post
Old 08-20-2018, 07:31 AM   #21
Human being with feelings
Glennbo's Avatar
Join Date: Mar 2008
Location: Planet Earth
Posts: 5,035

Originally Posted by Jack Winter View Post
IMO, you are now most of the way to a properly setup system. However one thing you really ought to do is to change the priority of the soundcard interrupt to something really high like 95. It will probably not bring the latency down much, but will make the system more resilient, meaning less potential xruns (audio dropouts) and possibly tighter midi when the system is under load.

This can be accomplished by installing & configuring rtirq, or possibly using udev-rtirq ( If you chose rtirq, you need to manually configure it, I'd leave out rtc, usb, etc and only let it change the priority of the soundcard interrupts. udev-rtirq is a small utility that I wrote myself that makes this automatic, it even works when hotplugging FW/USB soundcards, the drawback being that it still needs a little work as it might not function correctly when the soundcard shares interrupt with some other card.
A couple items on this one. First, I have been considering trading in some old unused gear and buying a Behringer UMC1820, which is an eight channel rack mount USB Class Compliant device. If I were to switch to an external USB device, would the interrupt tweak still be needed, only on USB? I looked at the info on github, and didn't see where to download udev-rtirq. Is it one that I have to build from source? I've never done that yet as I am still a newbie in Linux.

Provided that you can externally sync the cards, maybe via spdif, this ought to work well on linux too. Not sure how this is done on windows, but it's a little bit messy on linux..:S You can either write a custom configuration for alsa to combine the 2 cards into one, or use a package called zita-ajbridge, the latter is possibly the easiest, especially if you have pulseaudio installed. To give you a command line, I'd need the output of "cat /proc/asound/cards" which will tell me the names to use with jack/zita-ajbridge.
The cards are using the same clock over spdif. The first card is the master and the second card slaves it's clock from the first one. In Windows, the M-Audio ASIO driver makes them appear as one card with twice the audio and midi inputs and outputs. The main reasons I am looking at the Behringer unit I mentioned above is that I am now recording acoustic drums a lot, and using four simultaneous inputs. While the cards are reading the same clock, starting and stopping record with them is not sync'd and I always have to manually align two of the four tracks for phasing issues. The other reason is I've read that it works well in Linux, and requires no drivers.

A few additional thoughts:

If you can find it for your distro, installing a realtime kernel probably won't lower the latency much if at all, but it will make xruns under load less likely.
From what I've been reading, the Liquornix kernel plays nice with Xubuntu, but until I see a problem that needs fixing, I'll probably stick with the distro version of the low latency kernel. That said, I have not yet really tried doing a full blown production in Linux, so that could happen sooner rather than later. I never really planned to be using REAPER in Linux. I was just setting up an escape from Windows for the internet and every day non music or video production type of tasks. I though I would dual boot and use Windows with internet disabled only for running REAPER and Sony Vegas Video, and use Linux for everything else, but now it's looking more like I might be able to dump Windows all together. I just downloaded KdenLive a few minutes ago to see if I can do some simple video editing with it.

Seeing your unsymmetrical latency values tells me that you are using JACK2. It uses double buffering on the output by default, you can disable that by adding the -S parameter to your JACK command line, in this case try: /usr/bin/jackd -P80 -S -dalsa -dhw:M2496,0 -r44100 -p128 -n2 -Xseq

It might be of no concern in your case, but since there is no card specific driver used on linux, the system only knows about the latency calculated from buffersize x period / samplerate. You could load reainsert on a track and do a loopback test to determine how many samples of "hidden" latency you have. This can be added in reaper's recording prefs so that reaper knows how much extra latency compensation to use when overdubbing. It can also be added to the jack command line, something like: /usr/bin/jackd -P80 -dalsa -dhw:M2496,0 -r44100 -p128 -n2 -Xseq -I47 -O48 (which will make sure that all JACK clients align recorded audio properly).

Edit: The only additional thing I can think of, would be to make sure that there is no CPU power saving in use while running reaper, but how to do this depends on your hardware. This is already getting long, so let's leave that for another post
I always got asymmetric latency values while running REAPER in Windows too. In fact, I'm pretty sure it is the very same values as I am getting now in Linux, although with the -S parameter, I am now seeing 1.4/1.4ms which is lower that I've ever seen in Windows. I just tried playing my 25 track test song and it played without any problems, so I guess I can run without double buffering.

Thanks again for all the help.

EDIT: I did find "rtirq" in Synaptic, so I installed it. Does it need to be hand modified, or will it do it's thing automatically?
Hear My Music - Click Me!!!

Last edited by Glennbo; 08-20-2018 at 07:45 AM.
Glennbo is offline   Reply With Quote