Open-source project
Audio4Linux/JDSP4Linux avatar
Audio4Linux/JDSP4Linux

JDSP4Linux: JamesDSP on PipeWire, and the Flatpak sandbox that shapes it

An audio effect processor for PipeWire and PulseAudio clients

1,541 stars60 forksCGPL-3.0

At a glance

What is it?
JDSP4Linux is a C port of the JamesDSP audio effect processor for PipeWire and PulseAudio, with an EEL2 scripting engine and a bundled mini IDE for writing your own effects. The Flatpak build is sandboxed to one directory under your home, which is the constraint most users hit first.
Who is it for?
JDSP4Linux fits a Linux desktop user on PipeWire who wants effects no stock mixer offers, from automatic bass boost and multiband compression to a partitioned convolver, plus the ability to write a new effect in EEL2 without leaving the app. Skip it if you are still on PulseAudio and want the newer features, since the author states that backend is in maintenance mode and that selective app exclusion and target device changes are PipeWire only.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 22 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 21, 2026, and from our analysis. They are not legal advice.

Editorial analysis

It is JamesDSP, originally written for Android

The provenance matters because it explains the shape of the feature list. JamesDSP was first published as an audio effects processor for Android devices by James Fung, and this is the Linux port by Tim Schneeberger, written in C. Repository topics confirm the stack: gstreamer and gst-plugin appear alongside pipewire, equalizer, dsp and wrapper, which is the vocabulary of a processor that plugs into an existing audio graph rather than owning one. The library doing the work sits in libjamesdsp/ with vendored dependencies in 3rdparty/, and the Qt build file JDSP4Linux.pro plus uncrustify.sh show a conventional C plus Qt project rather than a modern package build.

Which audio server you run decides which package you install

The README is emphatic: this is designed for PipeWire, and PulseAudio is supported only for backward compatibility. The reason given is latency, since PipeWire has a much lower latency than PulseAudio when injecting an effect processor into the audio pipeline. The author also rules out a path forward: selective app exclusion, changing the target audio device and similar features are not planned for PulseAudio clients and will be PipeWire only. The PulseAudio backend is described as in maintenance mode, still receiving UI related feature updates. So the detection step comes before the install step, and the README gives a command for it:

shell
LC_ALL=C pactl info | grep "Server Name:"

If the output reads something like Server Name: PulseAudio (on PipeWire 0.3.35) you are on PipeWire. If it reads exactly Server Name: pulseaudio you are not, and the PulseAudio instructions live in a separate INSTALL_PULSE.md file in the repository.

The recommended install is one Flatpak command

For PipeWire systems the Flatpak is called the recommended version and is published on FlatHub as universal binary packages for all distros:

shell
flatpak install me.timschneeberger.jdsp4linux

Distribution packages exist as well. The README points at AUR packages for Arch, listing a stable version, and lists Fedora and openSUSE alongside a build from sources option. Whichever route you take, pick the PipeWire or the PulseAudio build deliberately rather than installing both and discovering the conflict later. PulseAudio users are pointed at a legacy Flatpak in a personal repository, added first and then installed:

shell
sudo flatpak remote-add --if-not-exists thepbones-repo https://raw.githubusercontent.com/ThePBone/flatpak-repo/main/thepbone.flatpakrepo
flatpak install me.timschneeberger.jdsp4linux.pulse

The sandbox means the app sees one directory in your home

This is the limitation to internalise before you install. The README flags it as IMPORTANT: flatpaks are sandboxed, and this application can only access ~/.var/app/me.timschneeberger.jdsp4linux/ by default.

The effect list goes well past an equalizer

Automatic bass boost is the first item and the most distinctive one: a frequency detecting bass boost that sets its own parameters, gain, bandwidth and cut off frequency, by analysing the incoming stream. Beside it sit an automated multiband dynamic range compressor, a complex reverberation IIR network called Progenitor 2, an interpolated FIR equalizer with flexible bands, an output limiter, crossfeed for a surround effect, and soundstage wideness described as a multiband stereo wideness controller. The partitioned convolver auto segments the convolution and supports mono, stereo and full or true stereo impulse responses with LL, LR, RL and RR channels. ViPER-DDC performs parametric equalization, with VDC input files created using a separate DDCToolbox project, and analog modeling provides an aliasing free even harmonic generator. An arbitrary response equalizer is also included, known in other software as GraphicEQ from EqualizerAPO, with AutoEQ database integration that needs a network connection.

EEL2 scripting lets you write the effect, with a UI generated for you

The scripting engine is the part that distinguishes this from a preset collection. You write your own audio effects in EEL2, a language extended with DSP related functions such as spectral processing, constant Q transform, a multi purpose FIR filter designer and IIR sub band transformation. The workflow detail that makes it approachable is auto generation of a basic user interface for the script, exposing specific parameters and constants so you can adjust them without editing code. The project also ships a custom minimal scripting IDE with syntax highlighting, basic code completion, a dynamic code outline window, console output, and detailed error messages with inline code highlighting. For a user willing to write DSP, that is a larger surface than any fixed effect list, and it is also where the sandbox bites hardest, since the scripts are files.

Building from source means a Qt project with vendored libraries

The repository root shows what a source build involves: libjamesdsp/ holds the DSP library, 3rdparty/ the vendored third party code, src/ the application, resources/ the icons and translations, meta/ packaging metadata, and BUILD.md the build documentation alongside INSTALL_PULSE.md for the other audio server. Translation goes through Crowdin, configured by crowdin.yml, which is how the multi language interface is maintained. The uncrustify.cfg and uncrustify.sh pair show formatting is enforced with uncrustify, a detail that matters if you plan to contribute patches.

Against a system equalizer or the Android original

Two alternatives are worth naming. The second is the original JamesDSP implementation for Android devices, which the README credits as the project from which this Linux port derives. The difference in approach between them and this port is packaging and integration: JDSP4Linux is a desktop application with a Qt interface and a scripting IDE, and it inherits the Flatpak sandbox that limits which of your files it can reach.

Editorial conclusion

JDSP4Linux fits a Linux desktop user on PipeWire who wants effects no stock mixer offers, from automatic bass boost and multiband compression to a partitioned convolver, plus the ability to write a new effect in EEL2 without leaving the app. Skip it if you are still on PulseAudio and want the newer features, since the author states that backend is in maintenance mode and that selective app exclusion and target device changes are PipeWire only. Before installing, work out which audio server you have with the pactl info check the README gives, because the two versions are separate packages, and note that the Flatpak can only read and write inside ~/.var/app/me.timschneeberger.jdsp4linux/ by default, so any impulse response or script living elsewhere needs moving. The last push was on 2026-10-01, the newest release is 2.7.0 from 2023-12-09, and the code is GPL-3.0.

Frequently asked questions

How do I tell whether I am using PipeWire or PulseAudio?

Run LC_ALL=C pactl info | grep "Server Name:". A line like Server Name: PulseAudio (on PipeWire 0.3.35) means PipeWire, while exactly Server Name: pulseaudio means you are on PulseAudio.

How do I install JDSP4Linux on a PipeWire system?

The README calls the Flatpak the recommended version, installed with flatpak install me.timschneeberger.jdsp4linux. AUR packages are listed for Arch, and Fedora, openSUSE and build from sources options are also listed.

Can I write my own audio effects in JDSP4Linux?

Yes. It includes a scripting engine using the EEL2 language, extended with DSP functions, which auto generates a basic user interface for your script parameters. A minimal scripting IDE with syntax highlighting, code completion, console output and error messages is bundled.

Official sources

  1. Audio4Linux/JDSP4Linux on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/audio4linux-jdsp4linux.svg)](https://hysenlabs.com/projects/audio4linux-jdsp4linux)

Was this useful?