Dear JRiver users
I need some help understanding and optimizing the latency in my JRiver ASIO live setup. It has been working ok so far with 1024 tap acourate filters. I do not rip blurays (yet) but watch BD/roku/netflix via my regular AV Receiver with pre-outs getting into the ASIO Live in: ASIO live performance is something I am very keen on. With my HTPC upgrade to Windows 10, JRiver to 24 I am also looking to see if I can add two subs. To correct subs I need to increase the Acourate filter size to 2048 or 4096 so I can expect reasonable number of bins below 100Hz (
with 1024 taps I have roughly 20kHz/1024 = ~20Hz bin size but if I get it to 4096, I get 5Hz bin sizes). To have any hope of increasing the number of taps, I need to reduce the latency in the system (other than that introduced by the FIR filter itself).
The current chain (ASIO: Steinberg Multi Client ASIO driver > Yamaha Steinberg UR824 USB)
BD/Roku/Chromcast into Onkyo > Steinberg MC > JRiver ASIO Live
JRiver ASIO Live > Convolution/XO > Steinberg MC > Outlaw > Speakers
From forum searches, this is what I gathered.
The hardware buffer size (often a small value like 2048 blocks) is independent of the Media Center buffer size you select for ASIO. Technically ASIO looks like:
Secondary buffer (configured with the Prebuffering setting) > Primary buffer (configured in the ASIO output setting) > Hardware buffer (configured in soundcard's control panel, or automatically by Media Center if selected)
If you select 'Use large hardware buffers' in Media Center's ASIO configuration, we will automatically set the hardware buffer sizes to a large value. I would recommend leaving this checked.
As for the primary buffer size, just use something large enough to not skip. 0.2 or 0.1 seconds is sufficient on a modern computer. There isn't a sound quality difference between buffer sizes (unless you get skipping due to data shortfalls).
https://yabb.jriver.com/interact/index.php/topic,65900.msg441973.html#msg441973
Since I use the Steinberg Multi Client Driver, It is likely that the
Use Large Hardware Buffers is ignored and the driver's asio buffer size is in use. One buffer setup which allows me glitch free playback is as follows.
- JRiver ASIO Output Settings Buffer: 25ms
- UR824 Buffers: 512 [per driver: 16ms input + 18ms output = 34ms RTL]
- 1024 Tap filter: 12ms [512/44100]
which results in a total of 71ms (if I can accumulate these delays). I find it hard to believe that my Samsung Plasma has this much video delay so I might be reading this wrong.
I am hoping to find information that will allow me to reduce the driver/jriver latency and deal mostly with the FIR filter induced delays. Per
https://www.gearslutz.com/board/music-computers/618474-audio-interface-low-latency-performance-data-base.html, the Steinberg (they list the predecessor) is not bad. So my guess is that my JRiver instance is not able to feed the driver as needed with small buffers, but no idea if the UR824 is at fault here or there is some other factor at play.
MC24 (unlike MC19 which I was running before) needs me to turn legacy Direct 3D rendering on (Core i5 4590S, Intel HD4600). Without this, theater view audio playback is super glitchy. So I am fairly certain that stuffing the audio buffers correctly is a challenge when the app is also doing thumbnailing, rendering and what ever else. However, even without theater mode, the overall latency cannot be reduced. I am contemplating upgrading the soundcard or adding a second convolver (Acourate Convolver with no GUI, media, db etc to manage) but both are expensive choices so I want to see if they make sense.
- What is the lowest latency you are able to achieve with JRiver Line In (on any audio interface)
- Is there a recommended way of setting JRIver process priority to help with scheduling ?
- Would moving to a RME HDSPe type card with reportedly stable buffer sizes of 32 help or will JRIver just not be able to deal with it ?
- Finally, would it make sense to move ASIO Line In functionality to a separate convolver like Acourate Convolver. Is there any experience with AC being able to run RME cards or similar with 32 sample buffers (I will also ask on the Acourate mailing list) ?
- I can, as a last resort, use Acourate's minphase filters (or JRIver's IIR filters) and lose time alignment. Yet to test this and see how it sounds
Any help will be much appreciated.