Skip to content

DaisySP Effects

Autowah, chorus, decimator, flanger, overdrive, phaser, pitch shift, sample-rate reduction, tremolo, wavefold, bitcrush, fold, reverb, and DC blocking.

Usage examples

Modulation effects

from nanodsp.effects import daisysp
from nanodsp.buffer import AudioBuffer

buf = AudioBuffer.from_file("input.wav")

# Chorus (mono input -> stereo output)
chorused = daisysp.chorus(buf, lfo_freq=0.3, lfo_depth=0.5, delay_ms=5.0)

# Flanger
flanged = daisysp.flanger(buf, lfo_freq=0.2, lfo_depth=0.5, feedback=0.5)

# Phaser (6-stage allpass cascade)
phased = daisysp.phaser(buf, lfo_freq=0.3, lfo_depth=0.5, feedback=0.5, poles=6)

# Tremolo
tremolo = daisysp.tremolo(buf, freq=5.0, depth=0.8)

# Autowah (envelope-controlled filter)
wah = daisysp.autowah(buf, wah=0.7, dry_wet=1.0)

Distortion and lo-fi

# Overdrive
driven = daisysp.overdrive(buf, drive=0.7)

# Wavefolder
folded = daisysp.wavefold(buf, gain=2.0, offset=0.0)

# Bitcrusher (reduce bit depth + sample rate)
crushed = daisysp.bitcrush(buf, bit_depth=8, crush_rate=11025.0)

# Decimator (combined downsampling + bit reduction)
decimated = daisysp.decimator(
    buf, downsample_factor=0.5, bitcrush_factor=0.5, bits_to_crush=8
)

# Fold distortion
fold = daisysp.fold(buf, increment=2.0)

# Sample-rate reduction
reduced = daisysp.sample_rate_reduce(buf, freq=0.3)

Pitch shifting

# Shift up one octave (+12 semitones)
up = daisysp.pitch_shift(buf, semitones=12.0)

# Shift down a perfect fifth (-7 semitones)
down = daisysp.pitch_shift(buf, semitones=-7.0)

# With spectral smearing ("fun" parameter)
weird = daisysp.pitch_shift(buf, semitones=5.0, fun=0.5)

Reverb and utility

# ReverbSc -- stereo reverb (mono or stereo input, always stereo output)
reverbed = daisysp.reverb_sc(buf, feedback=0.8, lp_freq=10000.0)

# Remove DC offset
clean = daisysp.dc_block(buf)

API reference

daisysp

DaisySP effects -- autowah, chorus, flanger, overdrive, etc.

autowah

autowah(
    buf: AudioBuffer,
    wah: float = 0.5,
    dry_wet: float = 1.0,
    level: float = 0.5,
) -> AudioBuffer

Apply auto-wah effect per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

wah

Wah amount, 0.0--1.0.

TYPE: float DEFAULT: 0.5

dry_wet

Dry/wet mix, 0.0--1.0 (0.0 = dry, 1.0 = wet).

TYPE: float DEFAULT: 1.0

level

Output level, 0.0--1.0.

TYPE: float DEFAULT: 0.5

RETURNS DESCRIPTION
AudioBuffer

Processed audio.

chorus

chorus(
    buf: AudioBuffer,
    lfo_freq: float = 0.3,
    lfo_depth: float = 0.5,
    delay_ms: float = 5.0,
    feedback: float = 0.2,
) -> AudioBuffer

Apply chorus effect.

Mono input produces stereo output via process_stereo. Multi-channel input is processed per-channel (mono chorus).

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

lfo_freq

LFO rate in Hz, > 0. Typical: 0.1--5.0.

TYPE: float DEFAULT: 0.3

lfo_depth

LFO modulation depth, 0.0--1.0.

TYPE: float DEFAULT: 0.5

delay_ms

Base delay time in milliseconds, > 0. Typical: 1--30.

TYPE: float DEFAULT: 5.0

feedback

Feedback amount, 0.0--1.0.

TYPE: float DEFAULT: 0.2

RETURNS DESCRIPTION
AudioBuffer

Processed audio (stereo if mono input).

decimator

decimator(
    buf: AudioBuffer,
    downsample_factor: float = 0.5,
    bitcrush_factor: float = 0.5,
    bits_to_crush: int = 8,
    smooth: bool = False,
) -> AudioBuffer

Apply decimator (bitcrushing / downsampling) per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

downsample_factor

Downsampling amount, 0.0--1.0.

TYPE: float DEFAULT: 0.5

bitcrush_factor

Bit reduction amount, 0.0--1.0.

TYPE: float DEFAULT: 0.5

bits_to_crush

Number of bits to quantize to, 1--32.

TYPE: int DEFAULT: 8

smooth

If True, apply smoothing to crushed output.

TYPE: bool DEFAULT: False

RETURNS DESCRIPTION
AudioBuffer

Decimated audio.

flanger

flanger(
    buf: AudioBuffer,
    lfo_freq: float = 0.2,
    lfo_depth: float = 0.5,
    feedback: float = 0.3,
    delay_ms: float = 1.0,
) -> AudioBuffer

Apply flanger effect per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

lfo_freq

LFO rate in Hz, > 0. Typical: 0.05--2.0.

TYPE: float DEFAULT: 0.2

lfo_depth

LFO modulation depth, 0.0--1.0.

TYPE: float DEFAULT: 0.5

feedback

Feedback amount, 0.0--1.0.

TYPE: float DEFAULT: 0.3

delay_ms

Base delay time in milliseconds, > 0. Typical: 0.5--10.

TYPE: float DEFAULT: 1.0

RETURNS DESCRIPTION
AudioBuffer

Flanged audio.

overdrive

overdrive(
    buf: AudioBuffer, drive: float = 0.5
) -> AudioBuffer

Apply overdrive distortion per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

drive

Drive amount, 0.0--1.0.

TYPE: float DEFAULT: 0.5

RETURNS DESCRIPTION
AudioBuffer

Overdriven audio.

phaser

phaser(
    buf: AudioBuffer,
    lfo_freq: float = 0.3,
    lfo_depth: float = 0.5,
    freq: float = 1000.0,
    feedback: float = 0.5,
    poles: int = 4,
) -> AudioBuffer

Apply phaser effect per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

lfo_freq

LFO rate in Hz, > 0. Typical: 0.1--2.0.

TYPE: float DEFAULT: 0.3

lfo_depth

LFO modulation depth, 0.0--1.0.

TYPE: float DEFAULT: 0.5

freq

Base allpass frequency in Hz, > 0 and < Nyquist.

TYPE: float DEFAULT: 1000.0

feedback

Feedback amount, 0.0--1.0.

TYPE: float DEFAULT: 0.5

poles

Number of allpass stages, >= 1. Typical: 2--8.

TYPE: int DEFAULT: 4

RETURNS DESCRIPTION
AudioBuffer

Phased audio.

pitch_shift

pitch_shift(
    buf: AudioBuffer,
    semitones: float = 0.0,
    del_size: int = 256,
    fun: float = 0.0,
) -> AudioBuffer

Apply pitch shifting per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

semitones

Pitch shift in semitones.

TYPE: float DEFAULT: 0.0

del_size

Internal delay buffer size.

TYPE: int DEFAULT: 256

fun

Fun parameter (spectral smearing), 0.0--1.0.

TYPE: float DEFAULT: 0.0

RETURNS DESCRIPTION
AudioBuffer

Pitch-shifted audio.

sample_rate_reduce

sample_rate_reduce(
    buf: AudioBuffer, freq: float = 0.5
) -> AudioBuffer

Apply sample-rate reduction per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

freq

Normalized frequency, 0.0--1.0. Lower = more reduction.

TYPE: float DEFAULT: 0.5

RETURNS DESCRIPTION
AudioBuffer

Sample-rate-reduced audio.

tremolo

tremolo(
    buf: AudioBuffer,
    freq: float = 5.0,
    depth: float = 0.5,
    waveform: int = 0,
) -> AudioBuffer

Apply tremolo effect per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

freq

Tremolo rate in Hz, > 0. Typical: 1--20.

TYPE: float DEFAULT: 5.0

depth

Modulation depth, 0.0--1.0.

TYPE: float DEFAULT: 0.5

waveform

LFO waveform index, 0--7.

TYPE: int DEFAULT: 0

RETURNS DESCRIPTION
AudioBuffer

Tremolo-modulated audio.

wavefold

wavefold(
    buf: AudioBuffer, gain: float = 1.0, offset: float = 0.0
) -> AudioBuffer

Apply wavefolding per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

gain

Input gain before folding, > 0. Higher values create more folds.

TYPE: float DEFAULT: 1.0

offset

DC offset applied before folding. Typical: -1.0 to 1.0.

TYPE: float DEFAULT: 0.0

RETURNS DESCRIPTION
AudioBuffer

Wavefolded audio.

bitcrush

bitcrush(
    buf: AudioBuffer,
    bit_depth: int = 8,
    crush_rate: float | None = None,
) -> AudioBuffer

Apply bitcrushing per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

bit_depth

Number of bits for quantization, 1--32. Lower = more distortion.

TYPE: int DEFAULT: 8

crush_rate

Sample-and-hold rate in Hz, > 0. Defaults to sample_rate / 4 if None.

TYPE: float or None DEFAULT: None

RETURNS DESCRIPTION
AudioBuffer

Bitcrushed audio.

fold

fold(
    buf: AudioBuffer, increment: float = 1.0
) -> AudioBuffer

Apply fold distortion per channel.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

increment

Fold increment amount, > 0.

TYPE: float DEFAULT: 1.0

RETURNS DESCRIPTION
AudioBuffer

Folded audio.

reverb_sc

reverb_sc(
    buf: AudioBuffer,
    feedback: float = 0.7,
    lp_freq: float = 10000.0,
) -> AudioBuffer

Apply ReverbSc stereo reverb.

Mono input is duplicated to stereo. Stereo input is passed through. 3+ channels raises ValueError.

PARAMETER DESCRIPTION
buf

Input audio (mono or stereo).

TYPE: AudioBuffer

feedback

Reverb feedback / decay, 0.0--<1.0 (values >= 1.0 are unstable).

TYPE: float DEFAULT: 0.7

lp_freq

Lowpass filter frequency in Hz for damping, > 0 and < Nyquist. Typical: 1000--20000.

TYPE: float DEFAULT: 10000.0

RETURNS DESCRIPTION
AudioBuffer

Stereo reverb output.

dc_block

dc_block(buf: AudioBuffer) -> AudioBuffer

Remove DC offset per channel using DaisySP DcBlock.

PARAMETER DESCRIPTION
buf

Input audio.

TYPE: AudioBuffer

RETURNS DESCRIPTION
AudioBuffer

Audio with DC offset removed.