How to Emulate Elgato Wave Link on Linux (Zorin OS) with PipeWire & EasyEffects

Zorin OS 18 - Desktop

If you've ever looked at the Elgato Wave Link software on Windows with envy, wondering how to get that level of audio control on Linux, you're in the right place. Wave Link allows you to split your audio into distinct channels—Game, Music, Chat, System—so you can control their volumes independently for yourself and your stream.

On Zorin OS (and other modern Linux distros), we can recreate this powerful routing using PipeWire and EasyEffects.

In this guide, we will:

  1. Install the necessary software.
  2. Create three custom virtual channels: Chat, Game, and Music.
  3. Route specific applications to those channels.
  4. Configure EasyEffects to polish the audio without becoming "greedy" and taking over your whole system.

Step 1: The Software Stack

First, we need to ensure you are running the correct audio backend. Zorin OS 17/18 typically comes with PipeWire installed, but we need to make sure the PulseAudio compatibility and EasyEffects are ready.

Option 1: The Easy Way (Zorin Software Store)

The simplest way to install these tools on Zorin OS is via the built-in Software Store.

  1. Open the Software app.
  2. Search for PulseAudio Volume Control and install it.
    • Tip: Choosing the Flatpak version often ensures you have the latest UI features.
  3. Search for EasyEffects and install it (Flatpak is recommended here as well).

Option 2: The Command Line Alternative

If you prefer the terminal or want to stick to system repositories, you can use the command line. Open your terminal and run:

sudo apt update
sudo apt install pipewire-audio-client-libraries pavucontrol easyeffects

The Tools We Are Using:

  • PipeWire: The modern audio video engine for Linux.
  • PulseAudio Volume Control (pavucontrol): The mixer we will use to route apps to our new channels.
  • EasyEffects: An advanced audio manipulation tool (EQ, compression, noise removal).

Step 2: Creating the Virtual Channels

To mimic Wave Link, we need to create "Virtual Sinks." Think of these as fake speakers that your computer sees. You send audio to them, and they pass the audio along to your real headphones.

We will create three channels:

  1. Chat Channel (Discord, Zoom)
  2. Game Channel (Steam, Heroic)
  3. Music Channel (Spotify, Browser)

The Permanent Way (Recommended)

We will create a configuration file so these channels appear every time you boot your computer.

  1. Create the configuration directory:

    mkdir -p ~/.config/pipewire/pipewire.conf.d/
  2. Create and open a new config file:

    nano ~/.config/pipewire/pipewire.conf.d/10-virtual-sinks.conf
  3. Paste the following code into the file:

    context.modules = [
        {   name = libpipewire-module-loopback
            args = {
                node.description = "Game Channel"
                capture.props = {
                    node.name = "game_sink"
                    media.class = "Audio/Sink"
                    audio.position = [ FL FR ]
                }
                playback.props = {
                    node.name = "game_source"
                    node.target = "default_audio_sink"
                }
            }
        }
        {   name = libpipewire-module-loopback
            args = {
                node.description = "Music Channel"
                capture.props = {
                    node.name = "music_sink"
                    media.class = "Audio/Sink"
                    audio.position = [ FL FR ]
                }
                playback.props = {
                    node.name = "music_source"
                    node.target = "default_audio_sink"
                }
            }
        }
        {   name = libpipewire-module-loopback
            args = {
                node.description = "Chat Channel"
                capture.props = {
                    node.name = "chat_sink"
                    media.class = "Audio/Sink"
                    audio.position = [ FL FR ]
                }
                playback.props = {
                    node.name = "chat_source"
                    node.target = "default_audio_sink"
                }
            }
        }
    ]
  4. Save and exit (Ctrl+O, Enter, Ctrl+X).
  5. Restart the PipeWire services (or just reboot your computer):

    systemctl --user restart pipewire pipewire-pulse

Note: In the configuration above, these virtual sinks loop back to your default audio device automatically.

Step 3: Taming EasyEffects (The "Greedy" Fix)

Before we start routing audio, we must configure EasyEffects. By default, EasyEffects can be "greedy"—it tries to grab every single audio stream on your computer to process it. This can cause loops or apply your microphone settings (like noise suppression) to your game audio, which we definitely don't want.

  1. Open EasyEffects.
  2. Go to the hamburger menu (top right) > Preferences.
  3. Navigate to the General tab (or "Stream" tab depending on version).
  4. Disable the toggle that says "Process All Output Streams" (or "Process All Applications").
  5. Disable "Process All Input Streams" as well, unless you want it to automatically grab every new microphone you plug in.

By turning these OFF, EasyEffects will only touch the devices or apps you explicitly tell it to.

Setting up the Mic

We usually want EasyEffects for our Microphone (to make it sound like a broadcast mic).

  1. Click the Input tab (top left).
  2. Select your physical microphone.
  3. Add plugins like Noise Reduction, Compressor, and Equalizer.

Step 4: Routing Apps to Channels

Now that our channels exist and EasyEffects is behaving, let's route our apps. We will use PulseAudio Volume Control, which offers a visual way to do this.

  1. Open the application you want to route (e.g., Spotify) and start playing some audio.
  2. Open PulseAudio Volume Control from your app menu.
  3. Go to the Playback tab.
  4. Find Spotify in the list.
  5. Click the button next to it (it usually says "Built-in Analog Stereo" or whatever your headphones are).
  6. Select Music Channel from the list.

Repeat this for your other apps:

  • Discord -> change Output Device in Discord settings to Chat Channel.
  • Games -> Alt-Tab out and change them to Game Channel in PulseAudio Volume Control.

Why do this?

Now, if you want to lower the volume of your music without lowering your game, you can simply lower the volume of the "Music Channel" slider in your system settings, or add these channels to OBS as separate audio sources! You can even attach them to something like the StreamDeck+ to adjust the channels with the knobs, or mute them all together!

Happy streaming!