Easy acoustic tweaks for your room

Stopping flutter echo, equalizing with ALSA and gstreamer

In every room I've listened to music, there has been primarily two problems: boomy bass around a couple of low frequencies, and a terrible flutter echo. In this article I'll explain how I deal with the two.

Fixing the flutter echo

Now what is flutter echo? The easiest way to explain is to have you experience it yourself: go to an absolutely empty room and clap your hands. If you don't have an empty room, use a bathroom with hard wall tiles instead. It doesn't sound pleasing at all. The echo that results when sound quickly reverberates between two opposite hard surfaces is called flutter echo, and it's in my opinion one of the most annoying things in a space. I'm terribly sensitive to bad acoustics, and most people do not understand how to eliminate the echo, or simply don't bother, so I bump into this a lot. Some people require bookshelves, carpets and other interior decoration "so the place would feel warmer". For example, I know this woman who is also sensitive to flutter echo, but she wouldn't pinpoint it using those words. She'd just want a room with a lot of textiles to feel comfortable. Obviously there are other reasons to have some interior decoration, but flutter echo plays a huge factor in how comfortable a room feels in everyday living.

So, how can the echo be eliminated? It's actually rather easy: as we're talking about high frequencies, we don't need a lot of mass to absorb the sound. We mainly need some diffusing or absorbing stuff on the walls and floor. The main thing is not to leave opposite hard surfaces plain. The floor is easily covered with carpets and some walls can be covered with curtains. For the troublesome walls I use simple one square meter acoustic absorbers of the cheapest kind, i.e. convoluted absorbing foam - the same I used for my acoustic tub.

More absorbers
Attaching
The absorbers were fastened using small nails.

I placed the absorbers on opposite walls. On the third wall I have curtains, and the fourth wall has a clothes rack. A real diffuser on the wall (a "skyline") would be really nice, but I haven't bothered with my simple flats yet.

Equalizing the bass - the wrong way

To get rid of boomy bass we need an equalizer. Usually people with bad sound systems and no idea what they are doing just use a graphic equalizer and tweak the controls until things sound less bad - this usually results in a V-shaped graphic eq, and actually sounds pretty bad. Granted, this might actually come in handy sometimes: for example, if you want an action game to have some bass boost or something, a graphic eq is intuitive and easy to use.

For ALSA, one can enable a software eq by defining a device like this in their .asoundrc:

# Virtual equalizer device.
pcm.hda_eq {
    type plug
    slave.pcm {
        type equal
        slave.pcm "hda"
    }
    hint {
        show on
        description "HDA with equalizer"
    }
}

You might also want to add a control device there:

ctl.equal {
    type equal
}

Now when you run alsamixer -D equal it will show you the graphic eq controls. The eq settings will be saved in ~/.alsaequal.bin, which will be used every time you use the hda_eq device defined above. You may symlink the eq bin file to quickly switch eq settings if you like, and the control device isn't even needed afterwards.

Note that this method requires the alsaequal plugin and is usually not suitable for boomy bass correction.

Fixing boomy bass - the right way

Chances are only a couple of frequencies are causing trouble. A good guess for the troublesome frequencies is f=v/x, where f is the frequency, v is the speed of sound (approximately 340 m/s), and x is the length of your room. So, for a room of size 6 m * 4 m, the troublesome frequencies will probably be about 56 Hz and 85 Hz (and their multiples), respectively. These frequencies are easily reproduced by most entry level hifi systems and will sound really loud and boomy in most cases.

I'm using Quod Libet as my music player. QL uses gstreamer as its backend, and I can define the output pipeline for it. By installing the good gstreamer plugins package (gst-plugins-good), you will get two extremely useful plugins: audiocheblimit and equalizer-nbands.

The former may be used to create a Chebyshev high-pass filter. This isn't strictly necessary, but cutting frequencies your loudspeakers can't reproduce anyway might help them achieve better control and punch on frequencies they can reproduce, and also increase your amplifier's power reserves.

The equalizer-nbands is used to create a multi-band equalizer, but we will only be tweaking one of the bands. The center frequency of the band should be the troublesome standing wave frequency we calculated earlier. Tweak the bandwidth and gain until the results sound natural. For testing, I use Audacity to create sine wave sweeps from 25 Hz to 120 Hz and sine waves at a 5 Hz interval and generally just trust my ears. When most frequencies sound balanced without any spikes, I've found good settings. Note that you might also want to tweak the center frequency a bit.

Here are a few pipelines I've used in the past:

  • For Klipsch RF-63 (a really big loudspeaker): audiocheblimit mode=high-pass cutoff=26 poles=4 type=1 ripple=0 ! audioconvert ! equalizer-nbands num-bands=3 band1::freq=75.0 band1::bandwidth=5.0 band1::gain=-6.0 ! alsasink device=julia_dout
  • Another one for the Klipsch RF-63: audiocheblimit mode=high-pass cutoff=26 poles=4 type=1 ripple=0 ! audioconvert ! equalizer-nbands num-bands=3 band1::freq=85.0 band1::bandwidth=12.0 band1::gain=-6.0 ! alsasink device=julia_aout
  • For Klipsch RB-51 (a bookshelf speaker): audiocheblimit mode=high-pass cutoff=35 poles=4 type=1 ripple=0 ! audioconvert ! equalizer-nbands num-bands=3 band1::freq=65 band1::bandwidth=5.0 band1::gain=-6.0 ! equalizer-nbands num-bands=3 band1::freq=115 band1::bandwidth=6.0 band1::gain=-6.0 ! alsasink device=julia_aout

Each of the cases had a different room. Notice how in the third case I ended up putting two equalizer-nbands plugins in series, as I had a really narrow boomy peak around 115 Hz in addition to the low frequency peak around 65 Hz. The speakers were also smaller than my main ones and couldn't go that low, therefore the high-pass frequency limit was also set a bit higher.

Summary

I have listened to my speakers in an acoustically wonderful wooden separate house, so I do know how perfection sounds like. But, if the room isn't an absolute mess acoustically, these small tweaks have always helped me to achieve a really nice listening experience even in a concrete block of flats.

Send me email or comment below:
(Please note: comments with direct links to commercial sites might not be published.)
Creative Commons License  This article by Olli Helin is licensed under the Creative Commons Attribution 4.0 International License
Powered by GainCMS