View Single Post
Old 08-19-2018, 11:45 PM   #20
Jack Winter
Human being with feelings
Jack Winter's Avatar
Join Date: Aug 2007
Location: Luxembourg/Spain
Posts: 1,863

Originally Posted by Glennbo View Post
Performance wise, just swapping out to the low-latency kernel and priority overrides has gotten my machine capable of running 64 samples latency with any softsynth and no artifacts. Even my 25 track test song with 12 Windows VSTi softsynths and 54 other Windows VST plugins now plays smooth. If I get to a point where I'm exhausting the system again, I will look into the Liquorix kernel and the other tweaks you mentioned.
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.

My next quest will be to figger out a construct of this line,

/usr/bin/jackd -R -dalsa -dhw:M2496,0 -r44100 -p128 -n2 -Xseq

that will include "-dhw:M2496,1", because I can only access the first of the two cards in REAPER so far. In Windows, selecting ASIO makes them both show up so I have four analog inputs.
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.

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.

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
Reaper for Linux Documentation (WIP). Software: Archlinux/KDE, Fabfilter FX, Komplete 8, Nebula, Schwa/Stillwell, T-racks Max/Amplitube/SVX, etc. Gear: i7-2600k/4700HQ/16GB, RME Multiface/Babyface, Behringer X32, Genelec 8040, etc. :)

Last edited by Jack Winter; 08-19-2018 at 11:54 PM.
Jack Winter is offline   Reply With Quote