Home of the Squeezebox™ & Transporter® network music players.
Page 1 of 2 12 LastLast
Results 1 to 10 of 15
  1. #1
    Senior Member
    Join Date
    Apr 2005
    Location
    Honiton, Devon, UK
    Posts
    1,969

    Digital Room Correction and Bass Artefacts

    Having set up DRC using a RPi with HiFiBerry DIGI2 Pro + DSP card, I have an issue.

    When setting it up (having used REW to calculate the required filters), I was of course using source material with significant bass content to audition the results, and pleased with the way it tamed the bass humps in the room.

    But once I started listening in earnest, noticed some curious low frequency artefacts during quiet moments, a kind of grumbling that varies in amplitude. The closest analogy I can give is that it sounds a bit like turntable rumble. Thinking I might be imagining it, I tried playing something while toggling the filters on & off, and the artefacts are definitely only present when the filters are active. It's quite subtle and only at very low frequencies. I can't hear it on (admittedly inexpensive) headphones, only on my active Meridian speakers.

    The filters are fairly extreme, with some significant gain settings and high Q:
    Code:
    Filter  1: ON  PK       Fc    54.3 Hz  Gain -19.2 dB  Q 2.831
    Filter  2: ON  PK       Fc    71.1 Hz  Gain   9.0 dB  Q 3.982
    Filter  3: ON  PK       Fc    75.2 Hz  Gain  -5.4 dB  Q 7.677
    Filter  4: ON  PK       Fc    89.3 Hz  Gain  -5.5 dB  Q 11.271
    Filter  5: ON  PK       Fc     148 Hz  Gain -13.3 dB  Q 13.429
    Filter  6: ON  PK       Fc     202 Hz  Gain  -6.2 dB  Q 5.000
    Filter  7: ON  PK       Fc     225 Hz  Gain   6.3 dB  Q 5.000
    My question for the experts here is whether these kind of grumbling low frequency artefacts are a known issue with DRC.
    Perhaps they are to be expected with such extreme filtering?
    Maybe the code that HiFiBerry uses to implement the filters isn't as good as it ought to be?

    I'm in a bit of a quandary: with the filters turned on, the bass response is nice and smooth, but now I've heard those artefacts, they are impossible to ignore. With the filters turned off, the bass has some pretty obvious humps that I would like tamed.
    Until recently: Transporter -> ATC SCM100A, now sold :-(
    House move forced change to: piCorePlayer(RPi2/HiFiBerry DIGI2 Pro/HiFiBerry DSP) -> Meridian 218 -> Meridian M6

  2. #2
    Hi,

    Most of your filters are attenuating the bass but filter 2

    Filter 2: ON PK Fc 71.1 Hz Gain 9.0 dB Q 3.982

    is adding a lot of gain in between filter 1 and 3 which are attenuating bass.

    Filter 1: ON PK Fc 54.3 Hz Gain -19.2 dB Q 2.831
    Filter 2: ON PK Fc 71.1 Hz Gain 9.0 dB Q 3.982
    Filter 3: ON PK Fc 75.2 Hz Gain -5.4 dB Q 7.677

    So is the intention to boost this frequency. If it is then it will only target very specific frequency and possibly give a weird effect. I would suggest lowering this value and see if it gets rid of the artefacts.

  3. #3
    Senior Member
    Join Date
    Apr 2005
    Location
    Honiton, Devon, UK
    Posts
    1,969
    Quote Originally Posted by foxesden View Post
    Hi,

    Most of your filters are attenuating the bass but filter 2

    Filter 2: ON PK Fc 71.1 Hz Gain 9.0 dB Q 3.982

    is adding a lot of gain in between filter 1 and 3 which are attenuating bass.

    Filter 1: ON PK Fc 54.3 Hz Gain -19.2 dB Q 2.831
    Filter 2: ON PK Fc 71.1 Hz Gain 9.0 dB Q 3.982
    Filter 3: ON PK Fc 75.2 Hz Gain -5.4 dB Q 7.677

    So is the intention to boost this frequency. If it is then it will only target very specific frequency and possibly give a weird effect. I would suggest lowering this value and see if it gets rid of the artefacts.
    All these filter settings were what REW calculated based on the room measurement, so that's how I set them up.
    But I agree that they are a bit weird. 9dB of gain just 4Hz away from 5.4dB of cut does seem pretty strange.

    I have tried removing filter 2 and slightly reducing the amount of attenuation on the neighbouring filters - we'll see how that goes.

    I'm beginning to wonder if I'm in danger of getting trapped in a cycle of fiddling around trying to find the best compromise. Having to keep swapping between HiFiBerryOS to set up the filters and piCorePlayer to properly audition the results is a pain in the rear. Just listening to music would be a better use of my time.

    At the moment, the low level bass grumbling caused by the DSP room correction is more annoying than the lumpy response of the room. Wouldn't surprise me if I end up removing the DSP card completely and just accepting the bass nodes in the room!
    Until recently: Transporter -> ATC SCM100A, now sold :-(
    House move forced change to: piCorePlayer(RPi2/HiFiBerry DIGI2 Pro/HiFiBerry DSP) -> Meridian 218 -> Meridian M6

  4. #4
    Junior Member
    Join Date
    Sep 2021
    Posts
    8
    Quote Originally Posted by cliveb View Post
    I'm beginning to wonder if I'm in danger of getting trapped in a cycle of fiddling around trying to find the best compromise. Having to keep swapping between HiFiBerryOS to set up the filters and piCorePlayer to properly audition the results is a pain in the rear. Just listening to music would be a better use of my time.
    Like you I started out with a Hifiberry DSP using REW, I didn't get any bass issues like you have, but the board and the dsptoolkit were very unreliable. I did spend more time fixing issues than listening to music. The board recently died, and I've discovered that it's pretty simple to implement the filters through SoX which can be done with a file upload through piCorePlayer web interface. Even a lowly pi3B can cope with running the filters without issue.

  5. #5
    Senior Member
    Join Date
    Apr 2005
    Location
    Honiton, Devon, UK
    Posts
    1,969
    Quote Originally Posted by BoxOfCables View Post
    ... I've discovered that it's pretty simple to implement the filters through SoX which can be done with a file upload through piCorePlayer web interface. Even a lowly pi3B can cope with running the filters without issue.
    Do you have any links to guidance for doing this?
    I'd always assumed that my Pi3 LMS server wouldn't have the necessary grunt to run DRC filters, but now you've reassured me I'd like to give it a try.
    Until recently: Transporter -> ATC SCM100A, now sold :-(
    House move forced change to: piCorePlayer(RPi2/HiFiBerry DIGI2 Pro/HiFiBerry DSP) -> Meridian 218 -> Meridian M6

  6. #6
    Junior Member
    Join Date
    Sep 2021
    Posts
    8
    Quote Originally Posted by cliveb View Post
    Do you have any links to guidance for doing this?
    I'd always assumed that my Pi3 LMS server wouldn't have the necessary grunt to run DRC filters, but now you've reassured me I'd like to give it a try.
    You need to create a text file (you can use Notepad etc.) containing the something like the following (this will become "custom-convert.conf" on the server):

    Code:
    flc flc * *
    	[sox] -q --multi-threaded --no-clobber -t flac $FILE$ -t flac - equalizer 99.6 2.70q +3.6 equalizer 283 1.00q -2.9 equalizer 2293 1.00q +1.4
    Each entry for "equaliser" can hold one filter from REW. The first value is the Hz, the second number is the quantisation (Q) and the third is the gain (positive or negative). This one has three filters, it applies only to flac files. You would need additional blocks for different formats.

    In REW, using a generic equaliser will give you a filters file like below (this is not the one to match the convert above, don't get confused ). You can see it has the Hz, gain and Q. So all you need to do is pick those out and write them into the "custom-convert.conf" format.

    Code:
    Filter Settings file
    
    Room EQ V5.19
    Dated: 21-Dec-2018 15:23:09
    
    Notes:
    
    Equaliser: Generic
    Dec 21 15:06:19
    Filter  1: ON  PK       Fc    29.9 Hz  Gain  -2.8 dB  Q 6.589
    Filter  2: ON  PK       Fc    38.7 Hz  Gain  -2.3 dB  Q 3.502
    Filter  3: ON  PK       Fc    63.3 Hz  Gain  -2.7 dB  Q 2.000
    Filter  4: ON  PK       Fc    80.4 Hz  Gain  -2.4 dB  Q 36.106
    Filter  5: ON  PK       Fc     120 Hz  Gain  -7.5 dB  Q 3.864
    Filter  6: ON  PK       Fc     122 Hz  Gain   9.0 dB  Q 12.341
    Filter  7: ON  PK       Fc     142 Hz  Gain  -8.6 dB  Q 33.829
    Filter  8: ON  PK       Fc     145 Hz  Gain -11.2 dB  Q 25.092
    Filter  9: ON  PK       Fc     147 Hz  Gain   9.0 dB  Q 5.743
    Filter 10: ON  PK       Fc     172 Hz  Gain -10.2 dB  Q 10.848
    Filter 11: ON  PK       Fc     183 Hz  Gain   7.0 dB  Q 28.041
    Filter 12: ON  PK       Fc     221 Hz  Gain  -5.1 dB  Q 4.909
    Filter 13: ON  PK       Fc     280 Hz  Gain   9.0 dB  Q 5.000
    Filter 14: ON  PK       Fc     297 Hz  Gain -17.8 dB  Q 5.000
    Filter 15: ON  PK       Fc     315 Hz  Gain   5.6 dB  Q 5.000
    Filter 16: ON  PK       Fc     405 Hz  Gain  -3.3 dB  Q 5.000
    Filter 17: ON  PK       Fc     415 Hz  Gain   9.0 dB  Q 3.357
    Filter 18: ON  PK       Fc     481 Hz  Gain  -3.1 dB  Q 1.000
    Filter 19: ON  PK       Fc     950 Hz  Gain  -2.2 dB  Q 5.000
    Filter 20: ON  PK       Fc    1192 Hz  Gain  -5.8 dB  Q 5.000
    Once you have your text file ready with the filter values, head to the piCorePlayer web interface, click the "LMS" tab and upload your file using this input:

    Name:  piCoreLMS.jpg
Views: 105
Size:  115.5 KB

    Select the file, then hit upload and it will whirr away for a bit and restart LMS, and you'll have your filters applied. If you want to undo them, simply upload a blank document.

  7. #7
    Senior Member
    Join Date
    Apr 2005
    Location
    Honiton, Devon, UK
    Posts
    1,969
    Quote Originally Posted by BoxOfCables View Post
    You need to create a text file (you can use Notepad etc.) containing the something like the following (this will become "custom-convert.conf" on the server):
    [snip]
    Excellent - many thanks. That all looks very straighforward, and I already have the REW filter settings.

    It will interesting to see if the filters used by SOX produce bass artefacts like those on the HiFiBerry DSP card.
    If they don't, the DSP card will be going on eBay!

    EDIT: Given that I want to target the specific piCorePlayer in my living room, I presume I need to set up custom-convert like so:
    Code:
    flc flc * PLAYER-ID
    	[sox] ...
    where PLAYER-ID is the MAC address or IP address of the target piCorePlayer?
    Last edited by cliveb; 2021-09-14 at 08:40.
    Until recently: Transporter -> ATC SCM100A, now sold :-(
    House move forced change to: piCorePlayer(RPi2/HiFiBerry DIGI2 Pro/HiFiBerry DSP) -> Meridian 218 -> Meridian M6

  8. #8
    Junior Member
    Join Date
    Sep 2021
    Posts
    8
    Quote Originally Posted by cliveb View Post
    Excellent - many thanks. That all looks very straighforward, and I already have the REW filter settings.

    It will interesting to see if the filters used by SOX produce bass artefacts like those on the HiFiBerry DSP card.
    If they don't, the DSP card will be going on eBay!

    EDIT: Given that I want to target the specific piCorePlayer in my living room, I presume I need to set up custom-convert like so:
    Code:
    flc flc * PLAYER-ID
    	[sox] ...
    where PLAYER-ID is the MAC address or IP address of the target piCorePlayer?
    Yes, it should just be the MAC address.

    If you want an easy way to see if it's working, use the following which will turn off the right channel [EDIT - the remix command was wrong, removed the "-m" from it]:

    Code:
    flc flc * *
    	[sox] -q --no-clobber -t flac $FILE$ -t flac - remix 1 0
    It does add to the load on the Pi, but it's not much (about 6% cpu load running, 26% starting the track) - the initial start time to play a track is a little longer (still under 2 seconds from my testing with about 5 filters and a remix to alter the balance).
    Last edited by BoxOfCables; 2021-09-15 at 05:27.

  9. #9
    Junior Member
    Join Date
    Sep 2021
    Posts
    8
    In case anyone was trying the above, I've now edited it as the command for turning off one channel was wrong.

    I've also done some more tweaking and found limiting the flac compression level to zero helps a lot with the initial delay, it's now pretty much imperceptable. Here's the conf:

    Code:
    flc flc * *
    	[sox] -q --multi-threaded --no-clobber -t flac $FILE$ -C 0 -t flac - equalizer 99.6 2.70q +3.6 equalizer 283 1.00q -2.9 equalizer 2293 1.00q +1.4
    If you need to alter the balance L/R but don't have such a control on the amplifier, that can be done too (using the remix command):

    Code:
    flc flc * *
    	[sox] -q --multi-threaded --no-clobber -t flac $FILE$ -C 0 -t flac - equalizer 99.6 2.70q +3.6 equalizer 283 1.00q -2.9 equalizer 2293 1.00q +1.4 remix -m 1p-3 2p0
    The value after the "p" is the db by which to alter that channel. I believe it's best to reduce than increase as there's no chance of clipping then. The example above reduces the left channel by 3db.

  10. #10
    Senior Member
    Join Date
    Apr 2005
    Location
    Honiton, Devon, UK
    Posts
    1,969
    Quote Originally Posted by BoxOfCables View Post
    I've also done some more tweaking and found limiting the flac compression level to zero helps a lot with the initial delay, it's now pretty much imperceptable.
    Thanks again.

    Would it reduce any delay even further by not re-encoding to FLAC, and just stream the output as PCM? My understanding is that FLAC decodes really easily but uses quite a lot of CPU to encode. Not bothering to re-encode might also reduce the load on the RPi3. All my players are connected via gigabit wired ethernet, so I don't need to worry about network bandwidth.
    Until recently: Transporter -> ATC SCM100A, now sold :-(
    House move forced change to: piCorePlayer(RPi2/HiFiBerry DIGI2 Pro/HiFiBerry DSP) -> Meridian 218 -> Meridian M6

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •