Audio components for your computer don’t always produce the quality of sound you want. For instance your laptop speakers may be a bit “tinny” sounding, or a set of speakers for your desktop may be too boomy for your room. Or if you use a desk or headset microphone, you may find that recordings you make are not as high quality as you’d like. Enter PulseEffects!
PulseAudio and Gstreamer
The PulseAudio sound server comes with Fedora Workstation by default. It’s highly flexible and easily modified. PulseAudio can deal with many different inputs and outputs. For instance, it lets you switch between different inputs known as sources (such as microphones, or sound files) or outputs known as sinks (such as speakers or headphones).
By default, PulseAudio manages sound as streams, digitally sampled at a specific rate and bit depth with a defined number of channels — two for most stereo streams. It handles different sample rates for you, so you don’t have to know the details of the stream. PulseAudio simply deals with moving sound from one point to another.
The Gstreamer multimedia framework, on the other hand, provides myriad ways to modify audio and video data on their way through a pipeline. Gstreamer comes with plugins that allow it to attach to PulseAudio. This means that you can use Gstreamer to make a pipeline between your inputs and outputs to change audio streams.
PulseEffects manages this process with a nice, graphical front end. It lets you select and order different effects for your sound.
To install PulseEffects, use the Software tool and type pulseeffects to find the package. Fedora carries this software in its official repositories. So if you need to, you can switch the source from the Flatpak version to the Fedora one. Then click Install.
If you’re using a command line, you can use the sudo command with dnf to do the same thing:
$ sudo dnf install pulseeffects
Start playing some audio. This can come from your Videos or Rhythmbox media player, a website such as YouTube, a music streaming app such as Spotify, or something else. The best source to use is a full-fidelity digital audio source, like a CD or a FLAC file. (MP3 and online digital streams cut out some frequency information to reduce data size.) Ideally, it should be music that you are used to listening to in many places, and know well, like an album or playlist. Put it on repeat so you can use it while you tune your sound.
Then launch the program using either the Software tool’s Launch control, or your desktop’s application launcher. On Fedora Workstation, go to the Activities hotspot, use the Show Applications control to locate PulseEffects in the list, and click to launch. You should see your application in the list of active sound streams, with color bars that show an average frequency response:
Notice all the sound modules available on the left. None are running by default when you first start PulseEffects. Any enabled modules are applied to your sound in order from top to bottom. You can use the up/down controls next to the module names to alter the order.
What does “better” mean?
Before we get started, realize that what constitutes “better” will usually be different based on many factors:
- Specific hardware like the model of speakers or microphone
- The environment the sound device is in (your room)
- What your ears prefer
There is no magic cure for bad sound that works universally everywhere. So the examples you’ll see are based on some common problems. But you will need to use your ears to determine what’s best for your hardware, in the place you’re using it.
Making desktop speakers sound better
Often desktop speaker sets consist of a subwoofer and small satellite speakers. These tend to be both excessively “boomy,” meaning too much very low frequency sound, and “honky” or “boxy,” meaning too much of some middle (or “mid”) frequencies. To fix frequencies that are over- or under-represented, we can use an equalizer.
By default, all the effects are off in PulseEffects. Since you want to modify a sound output — your speakers — make sure the “speaker” icon at the upper left is selected. Locate the Equalizer control in PulseEffects and select it. Select the toggle switch at the top of the equalizer controls to turn it on.
The default equalizer appears as a 30-band graphic EQ. Older readers might be familiar with seeing physical equipment like this. Each band alters not just that specific frequency, but a fairly narrow band of frequencies around it. Think of it like a “dip” or “bump” in the frequency graph, depending on whether you lower or raise the slider.
If you’re not sure how to alter frequencies to get better sound, click the “tools” icon under the on/off toggle. Under Presets you can select different EQ settings to find something closest to what you like. Then you can modify those settings as you like. If things get out of control, under Settings use the Flat response control to zero out all the EQ.
Using the “tools” icon, you can also choose a different number of bands to simplify your choices. Using the “gear” icon above each band, you can choose different types of EQ, as well as the width and Q. Additional filter types like a low/high pass or low/high shelf are also available. Feel free to play with the EQ to see how it works, but be careful not to increase EQ levels too high if your speakers are above a moderate volume, because you can damage speakers that way.
Tips from a mix engineer
These guidelines may help you find the optimal sound for your situation.
- It’s almost always better to reduce a problem frequency than to boost other things. If you boost too much, your music can start to distort.
- To fix excessive boominess, apply a high pass filter somewhere between 30 and 50 Hz. You may also want to try a bell EQ reduction somewhere between 40 and 100 Hz.
- If you want to fix a boxy sound (reminds you of a cardboard box), try a bell EQ to reduce some frequencies between 300 and 500 Hz.
- To fix a honky or nasal sound, try reducing some frequencies between 650 and 900 Hz.
- If guitar/keyboard solos or vocals seem a bit muffled, try a gentle boost centered somewhere between 1 and 2 kHz to make them a little more present.
- If your speakers sound overly tinny, apply a high shelf reduction starting somewhere between 4 and 8 kHz — start at a high frequency and dial back to where it’s helpful. To fix a dull sound, apply a high shelf boost using the same approach.
Remember that a little EQ goes a long way. Try keeping your bell boosts or cuts between +4 and -4 on the sliders. The goal is not to make the music sound extreme, but to make slight corrections. Otherwise your ears will get tired more quickly, or in extreme cases you may even get headaches.
Watch the Input and Output meters at the bottom of every module. If you see a lot of green on one or both, the sound module is overloading at that stage. You’ll often find MP3 files, especially of modern music, have this issue. You may also see “warning” icons flashing over the check mark on enabled modules.
One way to cure this is to use the Limiter module at the beginning of the chain, and simply turn the input gain on the chain down about -3dB, leaving the limit at 0dB. This simply lowers the overall signal level without any attenuation. Then you can run other modules without worrying quite as much about distortion or overload in later stages.
Making laptop speakers sound better
While the above guidelines might be good for bigger speakers, laptops have the additional burden of being very small. Typically they lack bass response, because more and/or larger speakers, and more powerful magnets, are needed to produce those frequencies well.
However, you can correct this using the Bass Enhancer module in PulseEffects. You may want to move this module downward in the stack after your EQ for best results. Rather than turning the amount up excessively, try a modest change of +3 or +4dB, and then move the Scope frequency around until you find where you start to notice good results. Don’t be tempted to amplify too much because again, if it’s too high you could start to damage your laptop speakers over time.
Storing your work
First, set PulseEffects to run whenever you login. Use the “hamburger” tool at the top right to open up the General settings. Set Start Service at Login to enabled, and also enable the option to Process All Outputs. This does not mean all devices will get the same settings. Instead, it means that PulseEffects will run a chain for any sound output device you have connected. You can apply different chains to different devices.
Next, select the Presets button, and in the text box, type a name for your preset. One recommendation is to use the name of the device for which you’ve created a chain. Then click the “+” icon to add the preset. If you make changes, you can either use the “save” icon to save the changes to the selected preset, or click Apply to throw them away and re-apply the saved preset.
Finally, you can click the “cycle” icon if you want the preset to be applied every time the currently used sound output is detected. This is almost always a good idea. If you want to set up different presets for other outputs, first connect the output. Then make a new preset as described above, and select that to be auto-applied.
One final note: When you close the PulseEffects application, your active chain of effects does not stop. It will stay running unless you reset or stop the service. PulseEffects will consume a few percent of CPU time (depending on processor speed). On all but the oldest systems the load should not be noticeable. However, if you are sensitive to power use such as on a laptop, you may want to stop the service using this command:
$ pulseeffects -q
Remember that every environment and person’s hearing is different, so beware of the overly dogmatic. Finally, you can’t make terrible speakers into great ones. But you can usually make them sound not so terrible — and if you have decent speakers, you usually can make them sound quite good!
The PulseEffects author also has both a LiberaPay donation site and a Patreon account, so if you find the software useful, you might want to consider contributing.
In the next installment, you’ll learn how to set up better sound on a desktop or headset microphone, to improve your teleconference meetings or make better audio or video spoken content. Until then, enjoy your new sound possibilities.
Photo by Paul Esch-Laurent on Unsplash.
question: What recommended application to adjust bit rate Sample Rate and Bit Depth?
Paul W. Frields
Typically this is set up already by PulseAudio for the specific source or sink you’re using. The only reason to change it would be for recording purposes, and typically the host application will have the options for that. For instance, if you’re playing back digital streams, they have a set sample rate and bit depth, and changing that (or resampling before you play back) wouldn’t make things sound any better.
This is awesome. Just what I needed. Thanks.
Pete Thorsen Jr
Thank you for a great article. One problem I have is that the list of my presets are empty. Where is there a list that I can download and import? Or, is there an rpm with them?
Paul W. Frields
There are no packaged preset effect chains that I’m aware of. But there are some presets per effect (like EQ, Filter, etc.). I haven’t found them very useful for real world applications, but they show you some extreme possibilities.
Paul W. Frields
Awesome, thanks Jan. Just to reiterate from the article, presets are a good place to start, but are unlikely to be ideal since each user’s ears and environment are different. Definitely try them out and then adjust to your needs.
Any recommendations for volume normalization settings? Eg. one podcast or YouRube video is always 50 times louder than the previous and the next is 80 times quieter.
Paul W. Frields
YouTube, Spotify, and other streaming services do some volume normalization themselves. But there’s a limit to what they can do automatically. Similarly, you’ll run into those limitations with a single setting on PulseEffects. Upward compression and limiting are one way to handle this issue, but if you’re truly running into extremes as described, and try to apply them to deal with everything, it’ll likely make for very squashed, unpleasant audio on every stream, as opposed to just having volume differences.
Here’s how to get the Flatpak version (yeay, sandboxing!) to run at start-up:
flatpak install flathub com.github.wwmm.pulseeffects
flatpak run com.github.wwmm.pulseeffects
enable auto-start up from the gear menu.
cp ~/.var/app/com.github.wwmm.pulseeffects/config/autostart/pulseeffects-service.desktop ~/.config/autostart/pulseeffects-service.desktop
Change the exec command in the copy to: flatpak run com.github.wwmm.pulseeffects –gapplication-service.
Great article. I really needed this on Fedora.
Thanks for posting this, Paul!
On Fedora 32 with Mate Desktop, just cannot find how to launch the application.
Being a bit more specific there would help.
Paul W. Frields
I’m not familiar with MATE, but you can launch from a terminal with the command pulseeffects.
It’s under sound and video in the menu. Works fine for me on my Mate Desktop.
I have a pair of powered bookshelf speakers which are connected to a desktop computer (Fedora Workstation 32) using an optical cable. It works pretty well for playing music while I am working. As the signal that leaves the computer is digital, can I still use PulseEffects to control less optimal sound files/streaming? And if so, is there a setting in PulseEffects to bypass equalization, should I need it, which would correspond to the “direct” button of good-quality amplifiers?
Paul W. Frields
All the changes done by PulseEffects are while the sound stream is in the digital realm, before it hits your sound card. You can have different profiles for different devices or outputs (which are seen as separate devices by PulseAudio).
There’s a global bypass button on the top-left of the window. It bypasses every effect, not only the eq.
Another Fantastic Frields Find. Thanks. I’ve got $5 to spare.
Misgivings about $5 donation promised…does not allow one-time donation. Only recurring donation/ cancellation. Sorry.
Paul W. Frields
I used Liberapay and it allows a custom yearly donation, and a manual renewal (which you can then decline if desired). I’ve already seen the correct pending amount that I entered on my PayPal account.
I agree, a great application with a lot of settings, but pulseeffects converts a 6-channel audio stream into a 2-channel one, as it happened with me. As a result, I am using the old but working swh-plugins mbeq.