• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

FXRoute, browser-controlled Linux audio player and DSP control surface for mini PCs

OK then. FYI the "automated" part is simply tying the function to the volume control.

Like Yamaha implemented in the 70s, sometime a separate Contour knob to be used AS level control.

This means you can go from focus on critical listening to background / ambiance levels SPL without making any manual tone adjustments for each volume level.

Completely valid to not need / want those to be tied together of course.

Last attempt for clarity:

Rather than the "smile" contour curve profile, do you feel that low frequencies should be boosted more than mid & treble ?
Of course, look at the curves I posted. Tying the function to the volume control is part of the exercise, but that must be tied to SPL at the listening position or it cannot be reliable.
 
I was actually just about to write another reply when I refreshed the page and saw that Dr. Toole himself had responded. I’m honestly a little stunned.

Thank you very much for such a thoughtful and detailed answer. I need to let this sink in a little and will reply properly later.
 
I have not read through this complete thread, but as you want my comment on loudness compensation, here it is. Apologies if I misconstrue any perspectives being discussed.

First, I noted reference to the Harman room curve "target". As I have stated several times in this forum, it is not a target, it is a result. It is not a definitive statement of sound quality, and there will be different results for different loudspeakers of comparable sound quality, mostly depending on their frequency-dependent directivity. Only below the transition frequency does the room curve become reliable information. See Section 12.3.5 in the 4th edition of my book.

Second, equal loudness curves are not "engineering data", they are statistical data pertaining to auditory threshold and loudness-balancing experiments conducted in anechoic chambers using many listeners - the variations are significant among the listeners, so where do "you" and "I" fit in. The loudness balances were made to 1 kHz pure tones, so the relationship to broadband, complex and ever-changing music is not a linear one. They are what they are, and the only real information they convey is crude generalizations about spectral balance as a function of sound level.

Fletcher and Munson used poorly calibrated headphones, so their data are outliers. Section 9.4 in the 4th edition of my book describes it. It is also in earlier editions. What is not in all editions is the following set of curves that I created in 1973 to try to explain why loudness controls/compensation cannot work for any program that has dynamic range. I will quote from the 4th edition:

"For a sound reproducing system to accurately portray what was heard in a live performance it must have a uniformly flat frequency response and reproduce the sounds at or close to the original sound levels, so that our built-in loudness processes operate on the sound in the same way. This is where complications set in, because that is rarely the case. Even if our sound systems have flat frequency responses, the playback sound levels are not likely to be what they were at live performances or in recording control rooms where important artistic decisions were made. For recreational listening, sound levels are almost always lower, often much lower, than the “original” sound.

To understand this issue it is necessary not to pay attention to the shapes of the curves, but instead to the differences in their shapes at different sound levels. Two things happen as playback sound levels are reduced:
  • The bass frequencies be disproportionately reduced in apparent loudness compared to the rest of the spectrum, and
  • Progressively more very low frequencies will fall below the hearing threshold, becoming completely inaudible."
View attachment 549120

Figure 9.6 The frequency-response changes needed to maintain the apparent spectral balance and audibility of sounds having flat spectra at original sound pressure levels of 40, 60, 80 and 100 dB SPL when the loudness level is reduced by (a) 10 phons, (b) 20 phons and (c) 30 phons. Derived from Robinson & Dadson (1957) equal-loudness contours. Figure 4.6(d) shows compromise curves drawn between the 60 and 80 dB predictions. Data shown in (a) to (d) are from Toole (1973).

Figure 9.6 shows results for three loudness reductions. A 10 phon reduction from a high “reference” level (a) is a substantial change (approximately half loudness), but one that is not at all uncommon. Most people would still consider this to be “foreground” listening. A 20 phon reduction (b) yields “background” music, and a 30 phon reduction (c) is for “ambiance”. It is immediately obvious that no single loudness compensation curve can work for music that has significant dynamic range. The low frequency boosts are substantial to maintain audibility of low-level sounds and these would render high level sounds grossly bass heavy. Clearly condition (a) will not be satisfied, but it may be worth considering a compromise solution, and some musical realities may moderate what is needed. First, low bass sounds are most often in high-level musical passages because even in live performances the sound levels must be high in order for these sounds to be audible – Figure 9.5(a). It therefore seems reasonable to focus the compromise compensation on the higher-level components, such as the 60 and 80 dB SPL portions.

Figure 9.6(d) shows the result of plotting compromise curves between the 60 and 80 dB curves in each of (a), (b) and (c). These look quite practical. It is important to note that no great changes are required at high frequencies. Many loudness compensation devices over the years have significantly boosted both bass and treble as sound level was reduced. With such controls, sound quality is diminished – a result of misinterpreting the equal-loudness contours. With 10 or 20 phon reductions essentially no high-frequency compensation is needed.

This esoteric discussion might be interesting, but it all is an approximation based on an approximation (the obsolete Robinson and Dadson contours), based on experiments done with pure tones, not broadband music. If there is a message, it is that attempts at loudness compensation for playback at less than original sound levels are destined to be imperfect, but they might contribute to improved entertainment simply by keeping some low bass sounds from being less audible or disappearing altogether."
As far as I can tell, the ISO 226:2023-based compensation in FXRoute actually aligns quite well with the curves you posted, especially in showing that most of the correction happens in the bass while the high-frequency changes remain comparatively small.

The basic idea is similar to the old Yamaha approach of tying contour to the volume control, but FXRoute also references that control to the measured SPL at the listening position through SPL-meter calibration. Auto Gain helps reduce differences between recordings as well, although it can only improve the approximation, the original monitoring level of a recording cannot be reconstructed afterwards, and engineers obviously do not all work to one common reference.

In the end, it remains somewhat subjective and depends on the recording and listening situation. That is also the main reason I built the DSP panel: to keep the useful controls immediately accessible while actively listening, because what sounds right can change from one song to the next.
 
A small FXRoute update: v0.9.2 is out.

I’ve done a fairly extensive cleanup of the codebase, and the radio section has grown quite a bit. It now includes a curated station catalog, personal stations, and an integrated Radio Browser search.

Screenshot 2026-08-05 165213.png


Screenshot 2026-08-05 165019.png


Metadata, artwork, stream information, and the Now Playing detail view have also been improved for radio, local playback, and Spotify. Arch/Manjaro installer support is back as well.

https://github.com/CobbyCode/fxroute/releases/tag/v0.9.2
 
FXRoute 0.9.6

A few updates have accumulated since my last post here.

The most visible change is the reworked now-playing/footer area. It is much cleaner and more stable now, with better track information and a more consistent layout across the different playback sources.

A lot of work also went into the less visible parts: playback transitions, sample-rate handling, Stereo/2.1/2.2 switching, and measurement entry/restore have all been reworked and hardened quite a bit.
The switching now seems much more reliable in practice.

At this point FXRoute is getting pretty close to what I originally wanted from it: one interface for playback, DSP, subwoofer integration and measurements, with as little manual PipeWire babysitting as possible.


Screenshot 2026-08-06 171224.png
 
FXRoute 0.9.11 is out.

The main change is Advanced Measurement, which has grown quite a bit. Measurement routing and setup are more robust now, with better handling of different output modes and a cleaner workflow for subwoofer alignment and correction.

Screenshot 2026-08-13 033630.png


There’s also a new Fixed Sample Rate option, for setups where keeping the audio chain at one rate is preferable.

A few smaller additions and fixes made it in as well, including SMB network music libraries and more playback/mode-switch cleanup.

 
Not officially at the moment. FXRoute needs fairly direct access to the host audio system and hardware, so Docker is not currently a supported setup.

I’m currently working on the Version 1 beta, which has been almost completely rewritten, includes many new features, and will also be available as ready-to-use x86 and Raspberry Pi images.
 
Back
Top Bottom