[HowTo] Make Linux Sound BETTER, easier, with JamesDSP

This tutorial takes some cues from the already existing

But while that tutorial employs EasyEffects, which works only for pipewire, this guide will introduce JamesDSP, which works with both pipewire and pulseaudio*.

* Pulseaudio support is in maintenance mode.
In order to use JamesDSP with pulseaudio you must use the separate jamesdsp-pulse package.

JamesDSP also boasts a more approachable interface and, in most cases, significantly reduced overhead. This is compounded by its modular nature - you can choose which portions of the processor to add.

In the following steps we will build and install JamesDSP and enable just two components for noticeably improved sound. This should result in an additional ~100mb of memory used while JamesDSP is running, and a negligible single digit percent CPU use (1% on my test system) only when audio is being processed (played).

JamesDSP is currently only available from the Arch User Respository, so you must be familiar with that before proceeding.

The Manjaro Wiki has an introduction:

We will go through the manual steps here, making no assumption about prior packages.

sudo pacman -Syu git base-devel
git clone https://aur.archlinux.org/jamesdsp.git
cd jamesdsp
makepkg -sric

Now that jamesdsp is installed on your system you may launch it.

This should initiate the setup wizard with a few preliminary steps.

Now to the fun parts.

:warning: Remember to keep your volume low for initial testing. :warning:

There are a lot of settings available, and even scripting logic to integrate different presets according to devices plugged or unplugged, profiles for various headphones and more.

For now we will focus on 2 settings for improved audio quality.

:information_source: A preset is provided at the bottom of this guide. :information_source:

  • Under the first tab Bass/Misc enable Dynamic bass boost

  • Under the fourth tab Equalizer set Enable EQ and select preset Clear*
    * :warning: This preset may be too aggressive. Consider lessening values or using other presets.

Thats it!

This is by no means a definitive solution for High Fidelity audio on all systems.
But it is a reasonable starting point for many basic linux systems, such as laptops.

Of course more experienced users or those with particular needs can and should make use of more components of jamesdsp as well as further adjustments in general.

Remember every body is different, and so is the hardware we interface with it.

Preset for Public Consumption

ClearPrenguin.conf

To use this preset simply place the file in ~/.config/jamesdsp/presets

bass_enable=true
bass_maxgain=5
compander_enable=false
compander_granularity=2
compander_response=95.0;200.0;400.0;800.0;1600.0;3400.0;7500.0;0;0;0;0;0;0;0
compander_time_freq_transforms=0
compander_timeconstant=0.22000
convolver_enable=false
convolver_file=
convolver_optimization_mode=0
convolver_waveform_edit=-80;-100;0;0;0;0
crossfeed_bs2b_fcut=700
crossfeed_bs2b_feed=60
crossfeed_enable=false
crossfeed_mode=0
ddc_enable=false
ddc_file=
graphiceq_enable=false
graphiceq_param=GraphicEQ: 25 0; 40 0; 63 0; 100 0; 160 0; 250 0; 400 0; 630 0; 1000 0; 1600 0; 2500 0; 4000 0; 6300 0; 10000 0; 16000 0
liveprog_enable=false
liveprog_file=
master_enable=true
master_limrelease=60
master_limthreshold=-0.1
master_postgain=0
reverb_bassboost=0.25000
reverb_decay=2.09000
reverb_delay=0.00000
reverb_enable=false
reverb_finaldry=-7.00000
reverb_finalwet=-9.00000
reverb_lfo_spin=0.70000
reverb_lfo_wander=0.30000
reverb_lpf_bass=600
reverb_lpf_damp=9000
reverb_lpf_input=18000
reverb_lpf_output=17000
reverb_osf=1
reverb_reflection_amount=0.30000
reverb_reflection_factor=1.00000
reverb_reflection_width=0.70000
reverb_wet=-8.00000
reverb_width=1.00000
stereowide_enable=false
stereowide_level=60
tone_enable=true
tone_eq=25.0;40.0;63.0;100.0;160.0;250.0;400.0;630.0;1000.0;1600.0;2500.0;4000.0;6300.0;10000.0;16000.0;1.52727;3.45974;4.51948;6.51429;5.45455;3.95844;1.52727;0.966233;0.52987;3.02338;4.51948;6.01558;6.45195;7.01299;5.95325
tone_filtertype=0
tone_interpolation=0
tube_enable=false
tube_pregain=200


Further information can be found at the github project page:

5 Likes

An interesting read that will keep me busy today, thanks.

One small (pedantic?) point though:

should read

Hah. Of course it should.
Thanks. :slight_smile:

This looks interesting, thanks! I’ve been thinking of adding some sort of graphic equalizer to the other machine, so I could for example reduce the deep bass at night.

Some YouTube creators seem to forget not everyone is using small laptop (or worse, phone) speakers to listen.

1 Like

I used the flatpak installation which reduces setup time to 2 minutes.
(and I prefer flatpak over aur for its sandboxing and more reliable setup/update processes, but that’s obviously a question of personal taste)

Thanks for writing about this software. I find it much more usable for daily use than easyeffects.

Android has the ability to set profiles for audio devices - so I have one setting for my cheap ‘podcast’ bluetooth 'phones which is nice and warm for vocals etc, then I created a separate curve for my lightweight on-ear foam Sennheiser for similar listening (i.e. Podcast/news, not music) and the profiles engage automatically.

This is a weak area for Linux devices I guess.

Speaking of Android, both ViPER and JamesDSP originated on Android before there was ever a Linux version. :wink:

You can do this with jamesdsp on linux too …

If you click the bottom-left :page_facing_up: button and then Rules

I might fill out the guide with some steps particular to headphones and the preset autoswitching capabilities.

EasyEffects also does profiles andauto-switching of profiles. The tutorial linked on the first post shows how.

Just an FYI.