Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Irate Goose - Virtual Surround Sound for PipeWire

Irate Goose is a graphical application that configures PipeWire to create a virtual sound card for headphones. It transforms 7.1 surround sound into binaural audio using Head-Related Transfer Function (HRTF) technology, delivering immersive 3D audio through regular stereo headphones.

irate_goose_mainwindow

Table of Contents

User Guide

Troubleshooting & Maintenance

Development & Resources

Installation

Prerequisites

  • Linux with PipeWire audio system (most modern Linux distributions use PipeWire by default)
  • 5.1/7.1 channel audio source (games, media players, etc.)
  • Stereo headphones (any quality will work, but better headphones provide better results)

Step 1: Download Irate Goose

Download the latest AppImage binary from the Releases page

Step 2: Obtain IR Files

Irate Goose requires impulse response files in WAV format compatible with HeSuVi. You have several options to get them:

  1. Download full collection: Get IR files from the Internet:

    • Small collection (27 MB) Link
    • Full collection (153 MB, includes Small) Link
    • Alternative link (mega.nz, if links above don't work) Link
  2. Extract from HeSuVi: If you already have HeSuVi installed, you can use the IR files from its HeSuVi/Common/ directory. These are typically located at: C:\Program Files\EqualizerAPO\config\HeSuVi\Common\. You can copy the WAV files from there to use with Irate Goose.

  3. Use your own: Any multi-channel WAV file in HeSuVi format (14 channels for 7.1 processing) will work.

Step 3: Use the AppImage

  1. Download the AppImage from the Releases page
  2. Make it executable and run it:
    chmod +x IrateGoose-*.AppImage
    ./IrateGoose-*.AppImage

AppImages can be run directly without installation. To integrate it into your application menu, your Linux distribution likely has its own AppImage manager tool, or you can use GearLevel (available as a Flatpak).

Application icon:

irate_goose_logo

How It Works

Irate Goose creates a virtual PipeWire sink that processes 7.1 channel audio through a convolver using HRTF impulse response (IR) files. Here's what these terms mean:

HRTF (Head-Related Transfer Function)

HRTF is a mathematical model that describes how sound reaches your ears from different directions in space. It accounts for the shape of your head, ears, and torso, which affect how you perceive sound direction. By applying HRTF processing to surround sound, you can experience convincing 3D audio through headphones.

Convolver

A convolver is a digital signal processing component that applies an impulse response to an audio signal. In this context, it takes the 7.1 channel audio and "convolves" it with HRTF data to create binaural output that mimics how sound would arrive at your ears from different directions.

Impulse Response (IR) File

An impulse response file (typically a WAV file) contains the acoustic "fingerprint" of how a sound system (or in this case, a human hearing system) responds to an impulse. IR files contain measurements of how sound from each direction reaches both ears. Irate Goose uses multi-channel WAV files where each channel corresponds to a different speaker position.

Compatibility with HeSuVi

Irate Goose uses the same mathematical processing and the same IR file format as the popular HeSuVi (Headphone Surround Virtualization) software. If you're familiar with HeSuVi, you'll find that Irate Goose produces similar audio quality and uses the same IR files. This means you can use your existing HeSuVi IR collection with Irate Goose.

Configuration

Select an IR File

Launch Irate Goose. The application will display a list of detected WAV files with their descriptions:

  1. Browse through the available IR files
  2. Use the search box to find specific files
  3. Filter by sample rate (48000 Hz, 44100 Hz, 96000 Hz, or all)
  4. Select the IR file you want to use by clicking on it

The application can recognize some well-known IR files (by file name only) and show additional data:

  • HRTF name (e.g., SADIE, MIT, etc.)
  • Description of the measurement subject or method
  • Source and credits for the data

Configure Options

Before applying configuration, you can customize settings on the Options tab:

  • Virtual Device Name: Choose a custom name for your virtual sound card
  • WAV Folder: Set the directory containing your WAV files
  • Output Device: Select which audio sink the virtual surround should output to (default: Auto - let PipeWire decide)

About Output Device Selection

The Output Device option allows you to specify where the virtual surround sound should be routed:

  • Auto (default): Let PipeWire automatically choose the output device. This is usually your default audio output.
  • Specific audio sink: Select a particular output device (like "Built-in Audio", "HDMI", or "USB Headphones") to force the virtual surround to always output to that device.

This is useful when you have multiple audio outputs and want to ensure the virtual surround always plays through a specific device (e.g., always use your headphones even if they're not the default output).

Apply Configuration

Click the "Create Device" button to apply your selection. Irate Goose will:

  1. Create a PipeWire configuration file at ~/.config/pipewire/pipewire.conf.d/sink-virtual-surround-7.1-irategoose.conf
  2. Restart PipeWire services to apply the changes
  3. Create a virtual sound card with your chosen name (default: "Virtual Surround Sink")
  4. Configure the output routing based on your Output Device selection

Important: You can now close Irate Goose - it doesn't need to keep running! The configuration persists until you change or delete it.

Select the Virtual Sound Card

  1. Open your desktop environment's sound settings (KDE System Settings, pavucontrol, etc.)
  2. Look for "Virtual Surround Sink" in the output devices list
  3. Select it as your playback device

Note for KDE Plasma users: Some desktop environments, like KDE Plasma, may not show virtual sound cards by default. You may need to enable "Show virtual devices" in the sound settings.

Configure Your Audio Sources

For spatial audio to work correctly, your applications must output 7.1 channel audio, not stereo or headphone audio:

Games:

  • Look for audio settings labeled "7.1 Surround", "Studio Speakers", "Reference Speakers", or "Home Theater"
  • Avoid settings labeled "Headphones", "Stereo", or "2.0"
  • Common settings:
    • Windows Sonic or Dolby Atmos for Headphones: Disable these if using Irate Goose
    • Speaker Configuration: Set to "7.1 Surround" or "7.1 Speakers"
    • Audio Output: Set to "Speakers" not "Headphones"

Failing to configure the game properly — and using two surround emulations at once — unlocks a secret Knight Mode™: the authentic feeling of a steel bucket on your head.

Media Players:

  • Configure to output multi-channel audio (not downmixed to stereo). Also avoid upmixing stereo to 7.1, as it may produce excessive echo. Stereo content should remain stereo, and you will hear it as if you are listening to 2.1 speakers.

System-Wide:

  • Ensure your system audio settings are configured for 7.1 output when using the virtual sink

Integration with EasyEffects

Irate Goose can be combined with EasyEffects (a system-wide audio effects processor) to apply additional audio processing like equalization, compression, or reverb after the virtual surround conversion.

Configuration Steps

  1. Configure EasyEffects:

    • Launch EasyEffects and ensure it has created its virtual device
    • Go to Preferences → Audio and disable the checkbox "Process all output streams"
      • Explanation: By default, EasyEffects aggressively grabs audio from all applications. Disabling this option allows Irate Goose to process the audio first, then pass it to EasyEffects for further processing.
    • In PipeWire → General, set a fixed output device where you want the final sound to play (e.g., your headphones)
  2. Configure Irate Goose:

    • Launch Irate Goose
    • Go to the Options tab
    • In the Output Device dropdown, select the EasyEffects device (it should appear as "easyeffects_sink" or similar)
    • Select your desired IR file and click "Create Device"
  3. Set Playback Device:

    • Open your system sound settings (KDE System Settings, pavucontrol, etc.)
    • Select the Irate Goose virtual device (e.g., "Virtual Surround Sink") as your playback device

How It Works

The audio chain will be: Application → Irate Goose Virtual Surround → EasyEffects → Physical Output Device

This setup allows you to enjoy spatial audio from Irate Goose while also benefiting from EasyEffects' audio enhancements like bass boost, equalization, or noise suppression.

Important reminder: When you disable or remove the Irate Goose virtual device, remember to re-enable "Process all output streams" in EasyEffects Preferences → Audio. Otherwise, EasyEffects will not process any audio since it's expecting to receive audio from Irate Goose's virtual device.

Finding the Right IR File

The perception of spatial audio cues is as personal as a sense of smell. Different HRTF measurements work better for different people due to variations in head shape, ear anatomy, and personal preference.

Recommendations:

  1. Start with popular measurements: Atmos or dc+ are good starting points
  2. Try different types: Some are measured on human subjects, others on dummy heads (anthropomorphic manikins), some are crafted theoretically.
  3. Test with familiar content: Use games or movies you know well to judge spatial accuracy

What to listen for:

  • Directional accuracy: Can you pinpoint where sounds are coming from?
  • Distance perception: Do far sounds sound distant and near sounds close?
  • Comfort: Does the audio feel natural or strained?
  • Frequency balance: Does it sound tinny, boomy, or balanced?

Expect to spend some time trying different IR files until you find one that suits your hearing. What works perfectly for one person may sound unnatural to another.

Troubleshooting

Virtual sound card not appearing

  • KDE Plasma: Enable "Show virtual devices" in sound settings
  • Restart audio: Run systemctl --user restart pipewire pipewire-pulse
  • Check configuration: Ensure Irate Goose successfully wrote the config (look for ~/.config/pipewire/pipewire.conf.d/sink-virtual-surround-7.1-irategoose.conf)

No sound or distorted audio

  • Verify you've selected your virtual sound card as output device (default name: "Virtual Surround Sink", but you can customize it on the Options tab)
  • Check Output Device selection: If you selected a specific output device in the Options tab, ensure that device is connected and active. Try switching to "Auto" to let PipeWire decide.
  • Check that your application is outputting 7.1 audio, not stereo
  • Try a different IR file (some may be incompatible or damaged)
  • Ensure your headphones are properly connected

Application icon not showing in Wayland

If the application shows no icon or a generic icon, this is a basic limitation of Wayland. For the icon to display, the application needs to be installed — meaning its .desktop entry needs to be added to the start menu. Most Linux distributions have their own specific way to install and integrate AppImages.

Application Errors

  • "Cannot find wave files": Irate Goose does not automatically scan for WAV files. Set the WAV folder on the Options tab before creating the device.
  • Permission errors: Run with appropriate permissions for writing to ~/.config
  • PipeWire not running: Ensure PipeWire is installed and running on your system

Removing Configuration

To remove the virtual surround sink and return to normal audio:

  1. Launch Irate Goose
  2. Click the "Remove device" button
  3. The virtual sound card will be removed after PipeWire services restart
  4. Select your original audio device in system settings

Manual Removal (if Irate Goose doesn't work)

If Irate Goose is not functioning properly and you need to remove the configuration manually:

  1. Delete the PipeWire configuration file:

    rm ~/.config/pipewire/pipewire.conf.d/sink-virtual-surround-7.1-irategoose.conf
  2. Restart PipeWire services:

    systemctl --user restart pipewire pipewire-pulse

This will completely remove the virtual surround sink and restore your normal audio configuration.

Technical Details

PipeWire Configuration

Irate Goose creates a PipeWire filter chain that:

  • Accepts 8-channel input (7.1 surround: FL, FR, FC, LFE, RL, RR, SL, SR)
  • Applies convolution with the selected HRTF IR file
  • Mixes down to 2-channel binaural output
  • Creates both input (effect_input.virtual-surround-7.1-hesuvi) and output (effect_output.virtual-surround-7.1-hesuvi) nodes

For Packaging

If you're packaging Irate Goose for distribution, note these dependencies:

Runtime Dependencies

  • zstd: Required for decompressing embedded data
  • Rust-winit requirements: Standard windowing system dependencies (X11/Wayland libraries)
  • xdg-portals: Used for opening directory selection dialogs
  • libdbus: For querying desktop settings.

Build Dependencies

  • Rust toolchain (latest stable)
  • Cargo build system
  • zstd development libraries

Packaging Notes

  • The application includes compressed data that requires zstd for decompression
  • Menu integration uses standard XDG desktop entry specification
  • Directory selection relies on xdg-portals for sandbox compatibility

Building from Source

If you prefer to build from source instead of using the pre-built AppImage:

# Clone the repository
git clone https://github.com/Barafu/IrateGoose.git
cd IrateGoose

# compress the data
cd data
bash compress_to_zstd.sh
cd ..

# Build with Cargo
cargo build --release

# The binary will be at target/release/irate_goose

License

Irate Goose is licensed under the MIT License. See LICENSE for details. The application is developed with the use of DeepSeek LLM.

Acknowledgments

  • PipeWire developers for the excellent audio system
  • HRTF researchers who have made their measurements publicly available
  • All contributors and testers who help improve Irate Goose
  • HeSuVi for pioneering HRTF-based virtual surround on Windows

Support and Feedback

Found a bug? Have a feature request? Please open an issue on the GitHub repository.

So, why Irate Goose? Impulse Response, IR. I mean, have you ever seen a goose? They have teeth! On the tongue!

About

A GUI to turn on the surround sound capability of Pipewire

Resources

Stars

48 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages