Hi linux folks I’m considering installing linux as dual boot on a second partition and want to achieve the same audio setup I have on Windows using software to get better quality audio than defualt Windows audio
The setup is:
Audio > Vb-Audio Hifi Cable Input > Vb-Audio Hifi Cable Output > VST host with plug-ins for equalisation > Voicemeeter Virtual ASIO Input > Voicemeeter WASAPI output to headphones with equaliser apo eq on the voicemeeter output for hesuvi virtual surround sound
I have tried searching online and have only become aware of ALSA but not how to implement the setup I have above and I’d rather it not go through port audio because I heard it messes with audio quality
Pipewire has built in EQ support (no GUI, but useful once you’ve chosen your settings), and you can use EasyEffects for a GUI to experiment with.
Pipewire also supports complex multichannel impulse responses (including the same files that Hesuvi supports if you supply them). Both of these are a bit challenging to configure it should be said, but it’s nice they they are just effectively outputs you can connect to once they are setup, and don’t require a bunch of programs running at once.
Here’s the official example for virtual sound with “hesuvi”: https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf
I’ve had issues with relative paths in the past for the filenames, so try setting a full path if it doesn’t work.
And here’s an example for EQ (you can add more channels if you need them): https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/daemon/filter-chain/sink-eq6.conf
You can also add a preamp if your EQ needs that which is just essentially a 0.0 freq, 0 Q filter and then you set the gain that you need. I didn’t need it as I’m not using external amps for any of my pipewire EQs.
One more thing I’ll add is that if you want the effect to also connect to a specific output (maybe your headphone EQ goes to one output, and your speaker EQ goes to a different one) you can set
target.object=
in playback.props section. There’s an even better solution in wireplumber 0.5.X but I haven’t tried it yet and it might not be available on your system. Read this Collabora article if you’re interested.