Lightweight, realtime-aware Digital Signal Processing (DSP) units for JudahZone.
Summary
- Implements small, allocation-minimal DSP building blocks intended for realtime use in audio threads.
- Effects expose simple parameter setters so a GUI or host can update values asynchronously.
Where to find the code
- Main FX package:
src/main/java/judahzone/fx - Analysis utilities (FFT / tuner helpers):
src/main/java/judahzone/fx/analysis
Key components
• Gain — simple gain stage
• EQ — multi‑band EQ wrapper that configures cascaded filters
• Filter, MonoFilter, StereoBiquad — filter primitives and biquad helper implementations
• Delay — delay/echo line with feedback and wet/dry controls
• Chorus — modulation‑based chorus effect
• Overdrive — distortion/drive algorithms (several styles)
• Compressor — dynamics compression stage
• Freeverb — reverb implementation (Freeverb + wrapper)
• Convolution — impulse‑response (IR) based cab/IR convolution
• StereoBus — combines per‑channel FX (gain, filters, delays) and manages activation and processing order
• FX — base utility/interface for effect units and parameter handling
• Analysis helpers: Analysis, Transformer, Tuner — FFT and pitch‑detection utilities
Design notes
- Minimal allocations and simple APIs to be safe for realtime audio callbacks.
- Parameters are settable from other threads; processing methods do not allocate per-buffer.
Build and checkout notes
- The project is a module of the
meta-zoneaggregator. Recommended workflow:- Clone the parent aggregator:
git clone https://github.com/jeffmasty/meta-zone.gitcd meta-zone
- Build everything (recommended):
mvn clean package
- Build only
zone-fx(from the parent directory):mvn -pl zone-fx -am clean package
- If you
cdintozone-fxand runmvn packagedirectly, Maven expects the parentmeta-zone/pom.xmlat the relative path defined in the module pom.
- Clone the parent aggregator:
Dependencies and repository notes
- Intended to keep external deps minimal.
- Core deps:
zone-core— project core utilities; usually provided via the parent aggregator.- TarsosDSP (
be.tarsos.dsp) — used for FFT, audio I/O helpers and a tuner utility. lombok— used as a provided compile-time annotation processor.
- If building standalone, add the Tarsos repository to your Maven settings or pom:
https://mvn.0110.be/releases(Tarsos `.be` repository).
- When building inside
meta-zone, dependency versions and repository entries are managed by the parentpom.xml.
Runtime notes
zone-fxis a library; runtime requirements depend on the host application that uses it. If used inside the JACK/JNAJack client, native JACK libraries and a running JACK server are required by that client layer (see thezone-jnajackmodule for JACK-specific runtime notes).zone-testprovides a JackClient Java-Swing test channel strip that can be applied against a loaded-in MP3 file.
Credits
- Delay, MonoFilter, FreeVerb, Chorus and the 'Smith' OverDrive adapted from Neil C Smith's JAudioLibs.
- Additional Overdrive algorithms ported from JUCEGuitarAmpBasic.
- Compressor ported from Rakarrack.
- Filters/EQ concepts influenced by JackIIR.
- FFT / tuner utilities rely on TarsosDSP.
Reference
- See the top-level application README in the project root and the
meta-zoneaggregatorpom.xmlfor full build and dependency details.