Does Roon download entire track into RAM? [Memory Playback Discussion]

Hi folks,

Is this still the correct place to discuss in memory caching of music for playback? Or is there a more current thread?

Would probably help if you said what it is you wanted to discuss, exactly.

The obvious question here is why is memory source playback perceived to be better?

The only justifiable claims that immediately come to mind are:

  • System/network is of too poor performance to manage uninterrupted playback when storage access occurs. Unlikely these days when even a raspberry pi can manage this.
  • DAC is excessively sensitive to noise induced due to digital activity in the host computer - sounds like a badly designed and/or ancient DAC.

Most music is produced (mixed and mastered) using just in time playback from fast local discs in the DAW and monitored on highly revealing sound systems by people who are often highly attuned to the slightest quirk or glitch.

1 Like

I cannot give objective proof or measurements as to why memory playback sounds better.

But it does, in my experience. I own an Innuos Zenith SE player. I use it as a music player from its USB output. It supports both Roon Core as well as an internal LMS server. When using the latter, the internal player used is an Innuos-modified version of squeezelite. This combo is controlled by the iPeng app on iOS,

Now let me be clear. I far prefer the Roon experience, and this is what I mostly use. However, despite the rather grim usability of the iPeng/squeezelite/LMS combo, the latter sounds remarkably better.

Innuous have indicated that their mods to squeezelite are the reason for the better SQ, and the primary mod is that they allocate a large in-memory buffer to preload the track. Without looking at the code, I don’t know exactly what their algorithm is.

My point is that this approach merits further study by Roon. Discarding it out of hand really annoys customers like me. If you guys (Roon) want volunteers to beta test it, I volunteer.

There are also recent experiments on CA that indicate that endpoints running RoonBridge that use audiolinux (with “ramroot” mode) to run the entire OS instance in RAM experience a massive SQ improvement.

It appears that there is much to be learned with in-memory music, OS, and applications. I do understand that Roon is a much more sophisticated ecosystem. But I’d like to have the option to explore these optimizations.

That’s all I’m asking.


Cool to see my thread getting a little life. I definitely think this warrants more investigation.

1 Like

We older IT folks would “feel better” if an entire track were loaded into memory so no I/O was taking place during playback. This may not matter much with today’s hardware. This feature is available in JRiver.


Interesting thread. I’m also a JRiver user. Mainly for JRemote to listen on my iPhone. The tunes load up into memory and once loaded there is no buffering. Even transcoding from 16 and 24 bit lossless files sound and works great. Problem with JRemote is there is no more development. As a lifetime subscriber of Roon, I really look forward to an app that can stream outside my home network. Obviously, the Roon app is way more robust than JRemote. I hope that they are looking to develop the app for out of home network streaming. I’m concerned that there isn’t a need for this since there are many streaming sites available. But what about folks like us who collect and store all our music on a NAS or external HD who want to stream it anywhere? I’m just crossing my fingers that Roon could build something like this for us hard core music collectors. The talk of “memory” usage got me thinking about the need for the Roon app to work outside our home network. I sure hope it happens!

1 Like

If this ever gets implemented, I can’t wait for the ‘which memory module sounds the best?’ thread…:rofl:


+1 on Roon should explore memory playback.

Similarly to how @austinpop so eloquently put it , I also have the Innuos Zenith SE and their implementation of LMS player wipes the floor with Roon in terms of SQ. I much prefer the Roon UX but asking an audiophile to choose cool UI over far better SQ is a dangerous strategy.

I love Roon and want it to be my player of choice. But if you guys keep insisting on prioritising widgets and gimmicks over actual SQ improvements then you’re risking my long term loyalty.

Might be just my two cents but some focus on improving SQ is long overdue.


1 Like

What endpoint do you use for Roon @BigAIMc?

How are you comparing Innuos ZENith SE own LMS player with Roon Playback?

I recently did an experiment on my Zenith SE server, where I compared the SQ of Roon with squeezelite with varying “buffer” sizes. You can read the details here:

In this case, the HW was running as a single box player, so it was running both the server (LMS or Core) and the renderer (squeezelite or Roon player) function.

The key takeaways from my experiment are - quoting:

Here’s the kicker - running with the default buffer size (i.e. no -b parameter set), the SQ of Roon and squeezelite were indistinguishable. In other words, the SQ benefit from squeezelite comes from setting (and presumably pinning) large buffers.


Comparing squeezelite case 4 (4GB buffers) with Roon, the SQ difference is quite obvious! squeezelite sounds so much better!
1. Yet another jump in dynamics, but also
2. it feels like the noise floor dropped even more
_ * bigger and deeper image_
_ * better instrument separation_

Look - we don’t know the exact mechanism at play here that contributes to the better SQ. And I haven’t looked at the squeezelite code - although a Roon developer tasked to explore this certainly could - but they are clearly eagerly allocating 2 large buffers for the input and output streams within their runtime. Whether they are pinning, or operating purely in virtual memory - these are all details.

Also, we are not proposing that Roon take such a static approach. Roon is a complex, multi-platform application, and needs to operate in environments where the amount of available memory can vary greatly.

All that we ask is that this be explored. At the very least, do some internal testing to verify the effect. Then see what’s possible in the context of the architecture.

Like Alan, I’m a lifetime Roon subscriber. The LMS interface couldn’t hold a candle to the Roon UX. All we’re asking is they explore this avenue to see if they can deliver better SQ to their loyal customers.


In theory it should make no difference if the core and the endpoint are decoupled.

Why not put audiodiffmaker at the end of the chain and post the results here.

No endpoint Dan. The Zenith SE as Roon Core & Player sending USB out to my DAC.

@thyname the Innuos OS has a settings menu where users can switch between Roon or LMS as the active server. Only takes a minute.

To be clear I love Roon and am a big fan. But the LMS server sounds dramatically better and Innuos attribute this to the cache memory playback.

If the Roon team could explore this and potentially close the gap that’d be awesome. I’m doing 80% of my listening on LMS as the better SQ wins despite the clunky interface. I switch to Roon primarily for exploring new music. I’d much rather Roon was my default.


1 Like

I wonder if you tried using the Zenith as a Roon endpoint with the core located elsewhere whether that would put the sound quality up to LMS standard?

I’d certainly try that if I had a PC lying around.

If there was an improvement, you could consider whether it’s worth the investment in an NUC to host the core.

I hear what you’re saying though and it would be nice if Roon could load each song into memory. However, if the drop in sound quality you’re experiencing is caused by Roon ‘fetching’ music data while the music is playing, wouldn’t that mean that you couldn’t browse your library, read biogs and add music to queues/playlists etc. and all of the other good stuff that makes the Roon experience, as that would also degrade sound quality?

I think if you want the Roon experience, which involves a certain amount of ‘shovelling of data’ while the music is playing, then it’s better to have a device that’s not directly connected to your D-A doing that work.

My 2-penneth! :slightly_smiling_face:


And it should be possible using an endpoint running AudioLinux to run that from system memory.

Hi Dan / Henry,

Both of your replies are accurate and well received but you’re missing my point somewhat.

The LMS player already sounds way better based on my current hardware. The ask is therefore for Roon and @brian to at least investigate whether memory playback on servers with sufficient memory capacity is an option and can be offered. If it can’t be offered then fair enough and I’d appreciate Roon having taking the time to investigate.

But yes I agree there are other was to improve the SQ and I’m not ruling out your suggestions as I was already contemplating similar ideas. But as a software or Roon feature suggestion my request stands.


1 Like

What is it you perceive as the SQ problem that needs improving?

Well in my case, if I were to buy an Innuos (I am eying a ZEN MK3), it will simply be for Core, as my DAC has a Roon Ready bridge built in. I simply would bridge the Ethernet from Zen to Ayre QX-5 Twenty