Skip to content

v0.3.0 — Lofi effect, insert effect selector, feedback kill - #15

Merged
trsctr merged 11 commits into
mainfrom
dev
Jun 10, 2026
Merged

trsctr merged 11 commits into
mainfrom
dev

Conversation

@trsctr

@trsctr trsctr commented Jun 10, 2026

Copy link
Copy Markdown
Owner

What's changed

Added

  • Lofi insert effect: processes signal through bitcrushing, noise, and filtering in the feedback loop
    • Bit depth locked to 8 bits
    • Signal chain: gentle highpass → bitcrusher (downsample + bit reduce) → noise → lowpass dampen
    • Mix, Resample (4kHz–22050Hz), Dampen (10kHz–22050Hz), and Noise toggle
  • Insert effect selector with virtual base class polymorphism: switch between Chorus and Lofi in the feedback loop
  • Automatable feedback loop kill button: fades wet signal and clears delay buffers and processor state

Fixed

  • Delay time offset not returning to zero correctly

trsctr and others added 11 commits May 20, 2026 14:55
* add bitcrusher class w downsampling function definition and declarations for other features

* add bit reduction to bitcrusher

* refactor BitCrusher class to a dsp primitive to be used by LofiEngine class

* use round instead of trunc in bit reduction to avoid feedback self oscillation due to dc offset

* add and implement lofiengine class, add lofi control parameters

* change bitcrusher processing order: first downsample, then bitreduce

* fix copypaste fail in LofiEngine.h, update changelog

* fix max samplerate parameter typo, make bitreduce and downsample functions private, remove samplersperblock param from lofiengine prepare function
* create InsertEffect base class with virtual functions, derive ChorusEngine and LofiEngine from that class, clean up code and fix signature mismatches

* implement inserteffectselector, define effect type enums, wire selector to delayengine

* add effecttype param, add effect type change to processblock

* add effect selector to gui

* select insert effect with switch for safety, remove unused param

* fix bug in updateEffectControls, name all insert effect related variabbles as insertEffectEtc

* update changelog
* finetune lofi engine sample rate range, skew knob, add fractional bit depth control

* lofiengine: lock bit depth to 8, add hp and lp filters

* stereofilter: add setcutoff function overload for setting both channels cutoff at once

* lofiengine: remove bit depth control, replace with dampen param

* fix effect control visibility on repaint bug

* remove rest of unused bit depth variables from Parameters.h, rename lofisamplerate to lofiresamplefreq

* use resampleFreq param in lofiengine

* lofiengine: rename downsamplerate to resamplefreq

* lofiengine: add stereo noise to signal above threshold with smooth fade in/out

* add toggle for noise/on off, separate release and attack times for gate

* add lofi noise button to gui

* update changelog
snap delay time to target after onepole lp smoothing if difference between them is below .01f
* add feedback kill functionality, triggered from gui or from daw with 2 stop signals
@trsctr
trsctr merged commit ffd1de4 into main Jun 10, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant