SmoothIR
April 27, 2026 · View on GitHub
SmoothIR is a tool for creating impulse responses (IRs) through spectral matching of two audio files
– with a focus on musically useful results, stability, and predictable behavior.
The idea is simple:
The spectral difference between a Reference and a Source is transformed into an IR
– then carefully shaped using EQ-style controls.
The result is an IR that behaves like a well-tuned filter, ideal for creative applications such as guitars, reamping, and sound design.
Features
- Spectral matching (Reference vs. Source)
- Robust handling of missing inputs (Reference-only / Source-only modes)
- Minimum-phase IR generation with adjustable IR length
- EQ-style low/high rolloff (true dB/oct behavior)
- Continuous Smooth control for musical shaping
- Stable, deterministic processing (no heuristics, no randomness)
- Interactive spectrum UI with band-style workflow
- Zero-latency hybrid convolution engine (FIR head + FFT tail)
- Real-time safe processing suitable for plugin environments
- IR morphing / live updates without audio dropouts
Processing Engine
SmoothIR uses a hybrid convolution engine designed for real-time audio use.
It combines:
- A zero-latency FIR head (time domain)
- A partitioned FFT tail (frequency domain)
This design ensures:
- Instant transient response (no delay on attack)
- Efficient processing of long impulse responses
- Stable CPU usage even with large IR sizes
In practice, this behaves as true zero-latency processing,
while still supporting high-resolution filtering.
IR Length
The IR length defines the duration of the generated impulse response and directly affects frequency resolution and low-frequency accuracy.
- Longer IRs → better low-end resolution and smoother matching
- Shorter IRs → lower latency and CPU usage
Rule of thumb:
f_min ≈ sampleRate / IR_length
Practical ranges:
- 2048 samples → ~40–50 Hz
- 4096 samples → ~25–30 Hz
- 8192+ samples → recommended for deep low-end work
Frequencies below ~20 Hz are automatically de-emphasized to avoid instability and unnecessary energy.
Usage
smoothir -r <reference.wav> -s <source.wav>
Parameters
-
-r,--ref
Reference file (target sound) -
-s,--src
Source file (input sound)
Real-Time Interaction
SmoothIR is designed for interactive workflows:
- Immediate IR updates after parameter changes
- Click-free IR switching
- Stable behavior even under rapid parameter changes
This allows SmoothIR to behave like a real-time EQ, while internally operating on impulse responses.
Sound Shaping
After spectral matching, the IR is shaped in a controlled and predictable way.
Spectral EQ Concept
SmoothIR can also be understood as a spectral EQ built on impulse responses.
Instead of stacking traditional filter stages:
The entire EQ curve is embedded into a single minimum-phase IR
This approach provides:
- Perfectly smooth phase behavior
- No filter interaction artifacts
- Extremely natural tonal shaping
All band adjustments (frequency, gain, Q) directly modify the spectral target, which is then converted into a coherent IR.
This results in:
EQ behavior that feels continuous, stable, and highly musical
Low / High Cut (EQ-style)
SmoothIR uses a true EQ-like rolloff:
- Defined in dB per octave
- Monotonic and stable (no low-end rebound, no ripple)
- Comparable to analog-style highpass/lowpass filters (Butterworth-like)
This ensures:
- Clean low-end (no rumble buildup)
- Smooth high-end (no harsh fizz)
- No unexpected spectral artifacts
Smooth
A continuous control for spectral smoothing:
0.0→ maximum detail transfer~0.2 – 0.4→ musical sweet spot1.0→ heavily smoothed
Internally:
The raw transfer function is blended with a smoothed version
→ preserving tone while removing narrow resonances and noise
Analysis Modes
SmoothIR behaves robustly depending on available inputs:
- Reference + Source → full spectral matching
- Reference only → spectral capture
- Source only → spectrum capture
Missing inputs do not produce undefined behavior.
UI / Interaction (EQ-style Workflow)
SmoothIR follows a modern parametric EQ interaction model:
-
Drag & Drop Bands
- Up / Down → Gain
- Left / Right → Frequency
-
Mouse Wheel
- Adjusts Q (bandwidth)
-
Immediate visual feedback via spectrum display
-
Band-oriented workflow similar to professional EQs
Goal:
Make IR creation feel like working with an EQ – not a black box
Typical Workflow
- Load Reference and Source
- Generate IR
- Set Low/High Cut (define usable range)
- Adjust bands (freq / gain / Q)
- Dial in Smooth
- Apply IR
Notes
-
Extreme low/high frequencies often contain little usable information
→ controlled rolloff improves stability and sound quality -
Over-smoothing removes character
→ use moderately -
The generated IR is minimum-phase → efficient, phase-coherent, and optimized for zero-latency convolution
Example
A creative use case:
- Reference: Piano
- Source: Harp
- Applied to: Guitar
→ produces a unique but still musical tonal character
Dependencies
SmoothIR relies on a small set of widely available libraries:
- X11 – windowing (Linux)
- cairo – UI rendering
- libsndfile – audio I/O
- FFTW3 – spectral processing
- jackd – real-time audio
Install (Debian/Ubuntu)
sudo apt install libx11-dev libcairo2-dev libsndfile1-dev libfftw3-dev libjack-jackd2-dev
Build
git clone https://github.com/brummer10/SmoothIR.git
cd SmoothIR
git submodule init
git submodule update
make
sudo make install
Concept
SmoothIR deliberately avoids:
- heuristic corrections
- unstable spectral tricks
- artificial post-processing
Instead:
Clear separation of analysis → shaping → synthesis
Resulting in predictable, reproducible, and musical behavior.
License
BSD-3-Clause
Philosophy
If it sounds good, it is right.