batty-251/fxsound-linux

By Batty 251 (@batty-251) · Licence: AGPL-3.0-or-later · 1 published version · 4378 files · 506 MB of source · Last published 2026-09-30

A public project on CodeRook. Browse it at https://coderook.com/batty-251/fxsound-linux.

Versions

Files in the latest version

README

FxSound

FxSound is a digital audio program for Windows and Linux. The background processing, built on a high-fidelity audio engine, acts as a sort of digital soundcard for your system. This means that your signals will have the clean passthrough when FxSound is active. There are active effects for shaping and boosting your sound's volume, timbre, and equalization included on top of this clean processing, allowing you to customize and enhance your sound.

General Information

Build Instructions

Windows

Prerequisites

FxSound application requires FxSound Audio Enhancer virtual audio driver. So, to run FxSound application built from source, we need to install FxSound which installs the audio driver.

Build FxSound from Visual Studio

Build after exporting the project from Projucer

FxSound application has three components.

  1. FxSound GUI application which uses JUCE framework
  2. Audiopassthru module which is used by the application to interact with the audio devices
  3. DfxDsp module which is the DSP for processing audio

Due to the some limitations with Projucer, after exporting the Visual Studio solution from Projucer, few changes have to be made in the solution to build FxSound.

  1. Since the audiopassthru and DfxDsp dependency projects cannot be added to the solution when FxSound.sln is exported, open fxsound/Project/FxSound.sln in Visual Studio and add the existing projects audiopassthru/audiopassthru.vcxproj, dsp/DfxDsp.vcxproj.
  2. From FxSound_App project, add reference to audiopassthru and DfxDsp.
  3. If you run FxSound from Visual Studio, to let the application to use the presets, set the Working Directory to $(SolutionDir)..\..\bin\$(PlatformTarget) in FxSound_App Project->Properties->Debugging setting.

Linux (PipeWire)

See [linux/README.md](linux/README.md) for the full Linux build guide.
Quick start:

git submodule update --init Resources
git clone --depth 1 --branch 6.1.6 https://github.com/juce-framework/JUCE third_party/JUCE
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build
sudo cmake --install build

An AppImage can be built with ./packaging/build-appimage.sh (downloads
tooling automatically) or downloaded from the releases page.

How to contribute

We welcome anyone who wants to contribute to this project. For more details on how to contribute, follow [this contributing guideline](./CONTRIBUTING.md).

Acknowledgements

Our special thanks to Advanced Installer for supporting us with Advanced Installer Professional license to build our installer.

image

This project uses the JUCE framework, which is licensed under AGPL v3.0.

Thanks to Theremino for the valuable contributions they do through major feature enhancements in FxSound.

Linux port notes (this fork)

Why the volume limiter exists

On Windows, FxSound's volume is applied by the operating system at the audio
endpoint (IAudioEndpointVolume, via sndDevices/sndDevicesVolCallbacks.cpp),
which sits after the DSP - so a volume boost lands where it can be heard.

The Linux/PipeWire port had no equivalent volume stage, so the only loudness
control available (FxSound's own volume) was applied inside the DSP, where the
engine's normalization absorbs it. As a result, gaining volume on Linux was
noticeably harder than on Windows.

audiopassthru/include/VoxLimiter.h restores the missing behaviour: a look-ahead
limiter plus adaptive normalizer applied after the DSP and after FxSound's own
volume, so a hard boost makes the sound louder instead of clipping. It is a port
of the author's own Rust audio engine, the mastering backend written for their
website (the vox-auto-master-v3 recipe), which is where every constant comes
from.

Set VOX_LIMITER=0 to disable it.

Building

A fresh clone builds with no extra patching. Note that
dsp/linux/lc_headers is a case-insensitivity bridge made of relative
symlinks; regenerate it with tools/gen-lc-headers.sh if you add headers.

License

AGPL v3.0

PUBLIC REPOSITORY

Opening batty-251/fxsound-linux…

Loading the public version history and verified file tree.