Reverb¶
FDN reverb (madronalib), classic Schroeder/Moorer reverbs (fxdsp), and STK reverbs/effects.
Usage examples¶
FDN reverb with presets¶
from nanodsp.effects import reverb
from nanodsp.buffer import AudioBuffer
buf = AudioBuffer.from_file("input.wav")
# Hall reverb with 30% wet mix
hall = reverb.reverb(buf, preset="hall", mix=0.3)
# Room with short decay
room = reverb.reverb(buf, preset="room", decay=0.3, mix=0.2)
# Plate reverb (bright and dense)
plate = reverb.reverb(buf, preset="plate", mix=0.4)
# Cathedral with pre-delay
cathedral = reverb.reverb(
buf, preset="cathedral", decay=0.9, damping=0.3, pre_delay_ms=40.0, mix=0.5
)
# Chamber (intimate)
chamber = reverb.reverb(buf, preset="chamber", mix=0.25)
Available presets: room, hall, plate, chamber, cathedral
Classic reverbs¶
# Schroeder reverb (4 combs + 2 allpasses)
schroeder = reverb.schroeder_reverb(buf, feedback=0.7, diffusion=0.5)
# With LFO modulation to reduce metallic ringing
mod_schroeder = reverb.schroeder_reverb(buf, feedback=0.7, mod_depth=0.1)
# Moorer reverb (adds early reflections network)
moorer = reverb.moorer_reverb(buf, feedback=0.7, diffusion=0.7, mod_depth=0.1)
STK reverbs¶
# Freeverb (Jezar's algorithm)
freeverb = reverb.stk_reverb(buf, algorithm="freeverb", room_size=0.7, mix=0.3)
# JCRev (John Chowning)
jcrev = reverb.stk_reverb(buf, algorithm="jcrev", t60=2.0, mix=0.3)
# NRev (CCRMA)
nrev = reverb.stk_reverb(buf, algorithm="nrev", t60=1.5, mix=0.4)
# PRCRev (Perry Cook)
prcrev = reverb.stk_reverb(buf, algorithm="prcrev", t60=1.0, mix=0.3)
STK chorus and echo¶
# Chorus effect
chorused = reverb.stk_chorus(buf, mod_depth=0.05, mod_freq=0.25, mix=0.5)
# Echo / delay
echoed = reverb.stk_echo(buf, delay_ms=250.0, mix=0.5)
API reference¶
reverb
¶
Reverb algorithms -- FDN, Schroeder, Moorer, STK reverbs, STK chorus/echo.
reverb
¶
reverb(
buf: AudioBuffer,
preset: Literal[
"room", "hall", "plate", "chamber", "cathedral"
] = "hall",
mix: float = 0.3,
decay: float = 0.8,
damping: float = 0.5,
pre_delay_ms: float = 0.0,
) -> AudioBuffer
FDN reverb with presets.
| PARAMETER | DESCRIPTION |
|---|---|
preset
|
One of
TYPE:
|
mix
|
Wet/dry blend, 0.0--1.0 (0.0 = fully dry, 1.0 = fully wet).
TYPE:
|
decay
|
Feedback gain per delay line, 0.0--<1.0 (values >= 1.0 are unstable).
TYPE:
|
damping
|
Lowpass filtering in feedback, 0.0--1.0 (0.0 = bright, 1.0 = dark).
TYPE:
|
pre_delay_ms
|
Pre-delay in milliseconds before reverb onset, >= 0.
TYPE:
|
schroeder_reverb
¶
schroeder_reverb(
buf: AudioBuffer,
feedback: float = 0.7,
diffusion: float = 0.5,
mod_depth: float = 0.0,
) -> AudioBuffer
Schroeder reverberator (4 parallel combs + 2 series allpasses).
| PARAMETER | DESCRIPTION |
|---|---|
feedback
|
Comb filter feedback, 0.0--<1.0. Higher = longer tail.
TYPE:
|
diffusion
|
Allpass diffusion, 0.0--1.0. Higher = smoother.
TYPE:
|
mod_depth
|
LFO modulation depth, >= 0. 0.0 = no modulation.
TYPE:
|
moorer_reverb
¶
moorer_reverb(
buf: AudioBuffer,
feedback: float = 0.7,
diffusion: float = 0.7,
mod_depth: float = 0.1,
) -> AudioBuffer
Moorer reverberator (early reflections + 4 combs + 2 allpasses).
| PARAMETER | DESCRIPTION |
|---|---|
feedback
|
Comb filter feedback, 0.0--<1.0. Higher = longer tail.
TYPE:
|
diffusion
|
Allpass diffusion, 0.0--1.0. Higher = smoother.
TYPE:
|
mod_depth
|
LFO modulation depth, >= 0. 0.0 = no modulation.
TYPE:
|
stk_reverb
¶
stk_reverb(
buf: AudioBuffer,
algorithm: Literal[
"freeverb", "jcrev", "nrev", "prcrev"
] = "freeverb",
mix: float = 0.3,
room_size: float = 0.5,
damping: float = 0.5,
t60: float = 1.0,
) -> AudioBuffer
Apply an STK reverb algorithm.
| PARAMETER | DESCRIPTION |
|---|---|
algorithm
|
One of
TYPE:
|
mix
|
Wet/dry mix, 0.0--1.0 (0.0 = dry, 1.0 = fully wet).
TYPE:
|
room_size
|
Room size (FreeVerb only), 0.0--1.0.
TYPE:
|
damping
|
Damping (FreeVerb only), 0.0--1.0.
TYPE:
|
t60
|
Reverberation time in seconds (JCRev, NRev, PRCRev), > 0. Typical: 0.1--10.
TYPE:
|
stk_chorus
¶
stk_chorus(
buf: AudioBuffer,
mod_depth: float = 0.05,
mod_freq: float = 0.25,
mix: float = 0.5,
) -> AudioBuffer
Apply STK Chorus effect.
Returns stereo output from mono or stereo input.
| PARAMETER | DESCRIPTION |
|---|---|
mod_depth
|
Modulation depth, >= 0. Typical: 0.01--0.1.
TYPE:
|
mod_freq
|
Modulation frequency in Hz, > 0. Typical: 0.1--5.0.
TYPE:
|
mix
|
Wet/dry mix, 0.0--1.0.
TYPE:
|
stk_echo
¶
Apply STK Echo effect per channel.