Roon 1.3 DSP engine!

I’m sure many of us eagerly waited for the Roon 1.3 update. This massive upgrade brings many features, especially DSP related are really more then worthy to explore. There is a lot of documentation to digest, so I’ve tried to sum up few of the most important ones…

Roon 1.3 supports configurable sample-rate conversion including upsampling and DSD output support. A beautiful (but more importantly, accurate) parametric equalizer, a crossfeed implementation for headphone listening, support for convolution filters, tools for managing clipping and compensating for speaker positioning, and more.
Plus, nearly 100% of Roon’s signal processing code in Roon’s Core has been re-built from scratch, using 64-bit floating point processing throughout, including the implementations used by pre-existing features like Crossfade and Volume Leveling.

The new DSP engine is just the beginning. Now that the infrastructure is in place, we are in a position to continue expanding this offering with new features, or fine-tuning the sound quality to perfection over time.

Headroom Management
Digital signal processing can result in “clipping”, or audio samples that exceed the allowed range. These samples are “clipped” to a maximum or minimum value. In some cases this can produce audible distortion.

It’s not possible to turn on the clipping indicator without enabling headroom management, but if you set the Headroom Adjustment to 0dB, the audio stream will not be modified.
This is easily avoided by slightly attenuating the signal–to make “headroom” for sample values that may increase as a result of signal processing.
Headroom Management is at the top of the list because it’s one of the most important things to pay attention to in Roon’s DSP Engine. If things don’t sound right, one of the first things you should do is make sure that the signal isn’t clipping.

When clipping occurs, the signal path light will momentarily turn red like this

Parametric Equalizer
Each DSP Engine configuration comes with a Parametric Equalizer by default. You can configure multiple equalizers if desired using the “Add Filter” button.

You can also use the Parametric EQ from inside of the Procedural Equalizer if you only want to apply it to a subset of the channels.

When using the Parametric EQ, be sure to keep an eye on Headroom Management to avoid clipping.
Roon’s parametric EQ supports many of the most commonly discussed filter types. It’s a great playground for learning about this stuff and experimenting with their effects on your favorite music.
Volume Leveling
Starting in Roon 1.3, we have fully adopted the R128 volume leveling standards. Your music library will be re-analyzed automatically to extract R128 data, and the volume leveling features throughout the app will make use of it.
We’ve added support for volume leveling based on the album loudness or track loudness, an automatic mode that selects between the two automatically based on the content being played, and a setting that allows you to apply a fixed adjustment to content like internet radio streams, which can’t be measured in advance. Finally, Roon 1.3 is also able to make use of REPLAYGAIN tags in case you prefer to manage loudness measurements externally.
Finally, Roon’s Audio Analysis can now be configured to use all of your CPU cores, and several stability issues related to analysis have been addressed.
Roon supports four Volume Leveling modes:
Off – disable volume leveling for this zone
Track – Performs adjustments on a track-by-track basis. This produces the most consistent volume level during a playback session, but may result in unpleasant jumps in volume during playback of a gapless album.
Album – Performs adjustments on an album-by-album basis. This means that the entirety of an album plays back with the same adjustment, and there are no perceived volume jumps at track boundaries.
Auto – Uses track adjustments when playing adjacent tracks from different albums, and album level adjustments when playing adjacent tracks from the same album.
The “Volume adjustment when loudness is unknown” setting specifies a volume adjustment that should be applied when Roon does not have advance knowledge of the loudness of a track, for example when playing a track that has not been analyzed yet, or an internet radio stream.
This setting prevents large changes in volume when transitioning from content of known loudness to content of unknown loudness. The default of -5dB represents a reasonable compromise–since Volume Leveling makes almost all material quieter.
How Volume Adjustments are applied
Adjustments performed for the sake of volume leveling are simple gain adjustments–the audio signal is multiplied by a constant gain value. Currently, the adjustment is applied within Roon’s DSP Engine, but it’s likely that future Roon Ready devices will support volume leveling in hardware.
Procedural Equalizer
The procedural equalizer is used for advanced DSP configurations like digital crossovers, custom crossfeeds, and manual room correction. It allows you to configure a series of DSP steps in order, to perform matrix mixing, and to decide which steps apply to which channels.
Sample Rate Conversion
Most people using the sample rate conversion features in Roon will be performing upsampling, which is generally considered to provide an enhancement. This effectively increases the resolution of the audio signal leaving Roon.

Roon’s sample rate converters use fully synchronous, polyphase interpolation. Most are “apodising”, and they roll off slowly to minimize ringing. Both minimum phase and linear phase options are available.
Roon also supports DSD output–with a choice of 5th order and 7th order modulators available. DSD output is performance-intensive and requires a powerful CPU.
Most DACs today upsample the signal internally into a form that’s more like DSD, and then convert that to Analog. This is often done in an environment where there aren’t really enough hardware resources to do the best job possible.
Roon runs on powerful PC-class hardware. All of the CPUs we support have DSP-oriented features that we can take advantage of to process signals at rates that most DACs cannot approach.
The general rule with upsampling is: the closer you are to the source material, the bigger a difference the implementation makes. For example, in a multi-stage conversion that goes from 44.1kHz -> 352.8kHz -> DSD256, the first step is dramatically more important than the second step. This means that even getting part of the way to the “native” sample rate of your DAC is often a benefit.
There are exceptions of course. Some DACs have expensive FPGA-based up-sampling stages that are both very good and tuned to that specific piece of hardware. Other DACs do not upsample at all.
Convolution is a powerful signal processing technique commonly used for room correction, headphone listening, or surround processing.
When using convolution in Roon, the first step is to design a convolution filter. This is done using an external piece of software. Some examples of software that can generate convolution filters are Room EQ Wizard, Acourate, Audiolense, DRC, Rephase, and EQuilibrium.
Speaker setup
Speaker setup helps correct for inconsistencies in speaker placement or sensitivity.
For example, if the speakers are not equal distances from the listener, the soundstage may not be perceived as “centered”. A distance adjustment can help. Gain adjustments are most frequently used when speakers or amplifiers don’t match. This is common in multi-channel setups, where the front speakers are often much larger than the surround speakers.
When using speaker setup, start by measuring and setting the distance to each speaker, then use an SPL meter or calibrated microphone to measure the loudness at the listening point. Finally, adjust the gain to compensate for loudness differences and then measure again to ensure that you’re getting a consistent result.
If an individual speaker, or your whole system, is wired backwards, the invert phase settings are used to compensate.
Distance adjustments and phase reversal are both performed in a bit-perfect fashion.
Minimum Phase and Linear Phase
Why Minimum Phase?
All digital filters introduce “ringing” into the audio signal.
When using a linear-phase filter, the ringing is distributed equally around an impulse, like this:
When using a minimum phase filter, the ringing comes after the impulse, like this.
Some psychoacoustics research suggests that “pre-ringing” is significantly more perceptible than “post-ringing”, thus it makes sense to keep the initial impuse as clean as possible.
Some people prefer linear-phase filters for recordings made with few microphones in a “natural” space like a concert hall, and minimum-phase filters for studio recordings and electronica.
Why Linear Phase?
Linear phase filters have…a linear phase response. Minimum phase filters…don’t.
This means that minimum-phase filters introduce a frequency-specific delay within the audio signal, whereas with linear phase filters, sounds at all frequencies will arrive at the same time if they appeared at the same time in the source material.
Decades ago, linear phase response was considered a very important characteristic of a digital filter. More recently, the perceptual importance of linear phase has been disputed, and the benefits of avoiding pre-ringing have become more popular.
DSD: 5th order vs 7th order
Both modulators should out-perform what you’ll find inside of DAC chips. This is entirely down to personal preference.
The 7th order modulator is more technically accurate than the 5th order modulator. It has a lower noise floor due to the more aggressive noise shaping that the higher-order design enables. It is slightly harder on the CPU.
The–general–tradeoff with DSD modulators is that higher order modulators are more prone to instability. If you run into this situation, you won’t miss it–the DAC will start making nasty sounds and you’ll rush to turn off the music. If this happens, consider applying a negative “DSD Gain Adjustment”, or adding some headroom in the – Headroom Management section.
Keep an eye on the Signal Path
If you are playing with DSP features, it pays to be familiar with Signal Path and get in the habit of checking it often to make sure things are happening how you expect them to be. And don’t forget to share your favorite signal paths on community.
Pay attention to CPU Usage
Some of the features in DSP Engine can consume a lot of CPU resources. Nothing beats a nice beefy Core i7 if you want to turn everything up to 11. If you’re running on a weaker system, particularly one that is shy of our recommendations, modulate your expectations accordingly.
Use the processing speed indicator to get a sense of how “close to the line” you are. Numbers below 1.0 mean that the CPU on your Roon core is not powerful enough to execute the configuration you’ve requested. This is about as close to peril as you want to be:
Pay attention to Network Utilization
When combining upsampling features with network-based streaming, bear in mind that there’s a huge difference between playing something at CD quality and playing the same content at DXD or DSD256. Your network could be working 15 times harder than before, depending on the configuration.
Huge differences like this can sometimes expose latent performance issues. This is true of all networks, but extra-true when using WiFi or Ethernet-Over-Power.
Zone Grouping
When using RAAT, DSP features and Zone Grouping are fully interoperable.
When using AirPlay, Meridian, Sonos, and Squeezebox streaming, there are some limitations