HexoDSP/src/dsp/dattorro.rs

40 lines
1 KiB
Rust
Raw Normal View History

2021-08-06 03:49:03 +00:00
// Copyright (c) 2021 Weird Constructor <weirdconstructor@gmail.com>
// This file is a part of HexoDSP. Released under GPL-3.0-or-later.
// See README.md and COPYING for details.
// This file contains a reverb implementation that is based
// on Jon Dattorro's 1997 reverb algorithm. It's also largely
// based on the C++ implementation from ValleyAudio / ValleyRackFree
//
// ValleyRackFree Copyright (C) 2020, Valley Audio Soft, Dale Johnson
// Adapted under the GPL-3.0-or-later License.
use crate::dsp::helpers::{
AllPass,
TriSawLFO,
OnePoleLPF,
OnePoleHPF,
DelayBuffer,
DCBlockFilter
};
2021-08-06 03:49:03 +00:00
pub struct DattorroReverb {
inp_dc_block: [DCBlockFilter; 2],
out_dc_block: [DCBlockFilter; 2],
lfos: [TriSawLFO; 4],
input_hpf: OnePoleHPF,
input_lpf: OnePoleLPF,
pre_delay: DelayBuffer,
input_apfs: [AllPass; 4],
apf1: [AllPass; 2],
hpf: [OnePoleHPF; 2],
lpf: [OnePoleLPF; 2],
apf2: [AllPass; 2],
delay1: [DelayBuffer; 2],
delay2: [DelayBuffer; 2],
}