Bubbleupnp & Minimserver EQ

My dealer popped over on Saturday to set up Dirac on my Lexicon …thx Mike.

This was VERY positive and got me thinking about DSP on my stereo system. With Linn on my Klimax I had Sound Optimisation, which controls the bass.

When measuring for Dirac we found that I have a bass spike at 27Hz followed by a suck out at 37Hz.

Both Bubbleupnp and Minimserver use FFMPEG which can use filters to apply EQ. Both systems allow you to plug in filter statements. This afternoon I started experimenting with Bubbleupnp using data from the Dirac target curve for my SBLs. I plugged in the following statement:

I.e. Drop the output around 27Hz by 1.46db, and boost the output around 37Hz by 2.04.

I can hear a difference, report back in due course.


1 Like


You need to have loaded the MinimStreamer plugin.

Use the System tab. stream.options:
convOut= -lavfi “equalizer=f=27:width_type=q:width=8:g=-1.46,equalizer=f=37:width_type=q:width=8:g=2.04”

I am running two Minimservers, one on my NAS & the other on my Prestige II server. The latter is not running a more recent version on FFMPEG so I do not believe the convOut will work.

The Prestige II is my preferred source, but I will do the comparison between the two and report back.

the key thing is how filters are applied - and what sort of filters. Generally, but not absolutely always, FIR filters tend to perform better - and this is a case of the size of the filter kernels or the number of taps, but requires a powerful CPU with maths processor, or graphics processing subsystem or other specialist hardware (FPGA etc). The alternate method is a IIR which uses typically a recursive software algorithm to filter the sound - these are easier to code - and require significantly less powerful hardware but critically I find they generally sound less good.

With room filtering the things i watch out for - is never boost - but only cut - and limit correction to 2 or 3dB, and limit the number of filter bands and not to overly flatten the response.

Thanks Simon,

As you can see I am adjusting by -1.4 & +2 db, which does breach your rules. I am currently running this on my Synology 1812+ NAS, so not the newest or most powerful.

The filtering is through the libavfilter library via FFMPEG:

This is a new journey for me so still poking & proding!

Thanks … the plus 2dB I I would be inclined to remove…just remember if you use any boost, you need to drop the overall level or you will get digital DAC clipping on the boosted frequencies.

BTW listening to Qobuz at 20.40 BST… sounding absolutely fab, and no dropped buffers or dropouts…

Yes all good here too.

What MO do you use?

What is MO?

modus operandi
What do you use & look for wrt the Qobuz stream?


Spent last night digging and looking for a workable methodology. Hoped to find some worked examples, a way to test a filter etc.

The help DOES mention a number of times: Beware of clipping when using a positive gain.

There is a filter called amix which reduces volume, in order to avoid clipping. However, I would like to test my statement.

Next step:
Use my command above to process a bass heavy file and check the output using Audacity.

Listening Tests:
Well, these were positive. There are certain files which can cause a bass bloom in my room - gone. This cleaned up the mid-range slightly I believe.

I will try reducing then removing the gain at 37Hz and listen to the effect.

Look at any errors or dropouts in receiving the FLAC file, and the data rate the DAC sees.
Errors in the FLAC file would stop play out or cause immense digital noise due to the compressive nature of the FLAC encoding.
The header of the FLAC file contains the encoding parameters … and these parameters are set at the start of the flow of the FLAC file.

Can I use something like Wireshark to do this:
Will see the header. How do I determine the data rate?

Also, looking for the Bubbleupnp logging to see what is being reported.



Hi Simon,

Well I spent this afternoon doing some listening comparisons again, but finding bits of music that operate at those frequencies is interesting, and identifying clipping in the bass is problematic.

Either way, I have decided that discretion is the better part of valour and so I am going to run with the bass reduction at 27Hz and stop the gain at 37Hz.

I have put a message up on the Minimserver forum wrt filters in the hope that someone has trod this path already, and I am still looking through the help files and commands in ffmpeg.

Thanks for your observation, which was re-echoed and number of times in the FFMPEG help, be careful with gain.


Having a look at the FFmpeg manual, it looks like the anequalizer functionality in the filter section operates IIR Butterworth or Chebyshev filters. This won’t require high processing power like a FIR filter (with taps) but can introduce phase issues… and be more prone to arithmetic precision issues, but they can be adjusted in almost or actual real time… FIR filters usually require creating a filter kernel response that is convolved with the actual data streamed data and do not normally support real-time adjustment.

Well, I’ll spend a couple of hours pulling this paragraph apart and trying to understand it :wink:

If your serious about Room correction then hqplayer is supposed to be very special for it and best in class, but is notoriously difficult to setup and not cheap. It also requires a decent pc to run the engine side and then a NAA (Networked Audio Adaptor) to get the audio sent to hifi. This last bit can be a cheap I raspberry pi which many use with very good results.

Hi CG,

The Dirac has been very positive for my AV, but I am not that serious for my music, just interesting to use a system that is baked into Bubbleupnp & Minimserver, as I happen to use these.


in short IIR filters are typically undertaken in software, are easier to implement but can introduce phase issues and accuracy issues from prevision of how numbers are stored in the computer. FIR filters are typically undertaken in hardware, are more involved to setup and but are better behaved with phase and tend to be more accurate in real world solutions, but require powerful or specialised hardware. FPGAs are common these days in implementing FIR filters for audio. When you see the word tap - that refers to an FIR filter sample.

Butterworth and Chebyshev filters are different filter element types that are modelled digitally. Each has their pros and cons - remember all filtering is a compromise and introduces artefacts… so you choose a filter type for a specific application where you are least likely to notice its artefacts or distortions.

1 Like

Looking through the filters there is adeclip: adeclip = Remove clipped samples from input audio.

Samples detected as clipped are replaced by interpolated samples using autoregressive modelling.

So, piping the output from the gained equaliser into adeclip should protect the amp/speakers from clipping?


Nope: filter applies in Bubbleupnp but NOT Minimstreamer. Back to the drawing board.

1 Like

I am running two minimservers, but each uses a different version of FFMPEG, so the commands will not apply consistently, hence my issue yesterday.


convOut=-filter_complex “equalizer=f=27:width_type=q:width=8:g=-2[1];[1]equalizer=f=37:width_type=q:width=8:g=2.04,adeclip=w=55:o=75:a=8:t=10:n=1000”

In either case the whole stream gets fed through all three filters.

WRT system loading:
Synology 1812+ - CPU = 15%; Memory = 33%.

Sound Quality - I’ll report later.