From cfad703ddead99eaf7638dfba13547116853b05e Mon Sep 17 00:00:00 2001 From: Ilja Rotar Date: Mon, 20 Jan 2025 12:01:29 +0100 Subject: [PATCH] fix filters --- examples/noise.yaml | 17 ++++++----------- module/filter.go | 11 ++++++++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/examples/noise.yaml b/examples/noise.yaml index 89156e0..cf5169a 100644 --- a/examples/noise.yaml +++ b/examples/noise.yaml @@ -2,21 +2,16 @@ vol: 1 out: [n1] filters: - name: f1 - low-cutoff: - val: 100 - mod: [lfo1] - mod-amp: 99 - high-cutoff: - val: 199 + low-cutoff: { val: 100, mod: [lfo1], mod-amp: 99 } + high-cutoff: { val: 199 } oscillators: - name: lfo1 type: Sine - freq: {val: 0.2} - amp: {val: 1} + freq: { val: 0.2 } + amp: { val: 1 } noises: - name: n1 - amp: {val: 0.1} - filters: - - f1 + amp: { val: 0.1 } + filters: [f1] diff --git a/module/filter.go b/module/filter.go index fae3ffc..5864382 100644 --- a/module/filter.go +++ b/module/filter.go @@ -162,10 +162,15 @@ func (c *filterConfig) applyFilters(x float64) (float64, []filterInputs) { } func (f *Filter) limitParams() { - f.LowCutoff.Val = utils.Limit(f.LowCutoff.Val, cutoffLimits.min, cutoffLimits.max) - f.LowCutoff.ModAmp = utils.Limit(f.LowCutoff.ModAmp, cutoffLimits.min, cutoffLimits.max) - f.HighCutoff.Val = utils.Limit(f.HighCutoff.Val, f.LowCutoff.Val, cutoffLimits.max) + f.HighCutoff.Val = utils.Limit(f.HighCutoff.Val, cutoffLimits.min, cutoffLimits.max) f.HighCutoff.ModAmp = utils.Limit(f.HighCutoff.ModAmp, cutoffLimits.min, cutoffLimits.max) + + maxLowCutoff := cutoffLimits.max + if !isUnset(f.HighCutoff, cutoffLimits) { + maxLowCutoff = f.HighCutoff.Val + } + f.LowCutoff.Val = utils.Limit(f.LowCutoff.Val, cutoffLimits.min, maxLowCutoff) + f.LowCutoff.ModAmp = utils.Limit(f.LowCutoff.ModAmp, cutoffLimits.min, cutoffLimits.max) } func isUnset(p Input, lim limits) bool {