Skip to content

feat: add Pirkle diode ladder filter with filter type selection#33

Open
dfl wants to merge 4 commits intomidilab:developfrom
dfl:diode-ladder-filter
Open

feat: add Pirkle diode ladder filter with filter type selection#33
dfl wants to merge 4 commits intomidilab:developfrom
dfl:diode-ladder-filter

Conversation

@dfl
Copy link

@dfl dfl commented Dec 20, 2025

This PR adds a more accurate filter model based on Will Pirkle's diode ladder analysis.
Filter mode can be selected as [TeeBee, Diode, DiodeOctave]

The setOctaveMode param makes the first pole an octave higher, which is a weird quirk of the TB-303 (and why some people say it is 18db/oct which is not quite correct). This ends up taming the self-oscillation a bit, and should be the default. If a more aggressive self-oscillation is desired, then one can choose the regular Diode ladder.

There are also better saturation nonlinearities, which can be driven by boosting the input gain.

This PR also adds passband gain compensation, which is essentially a bass control to balance out the thin sound when resonance is increased. You can think of the knob like a highpass filter, though that's not how it works under the hood.

midilab and others added 4 commits November 5, 2025 09:06
- Fixes 2 issues related to each other midilab#22 and midilab#30 .
- Removes static initialized members that might be a fix for midilab#23 but not tested for the issue specific scenario yet.
- Update JUCE to 8.0.5 to make it compilant on MacOS Tahoe for build.
- Added a Dockerflie for Linux build with specific old glibc for broad support on different linuxes distros.
- Add DiodeLadderFilter based on Will Pirkle's analysis
- Implement 4-pole diode ladder with TB-303 octave mode option
- Add FilterType enum (TeeBee, Diode, DiodeOctave)
- Integrate filter selection into Open303 synth engine
- Include passband gain compensation and input drive

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@midilab midilab changed the base branch from main to develop December 23, 2025 20:31
@dfl dfl mentioned this pull request Dec 27, 2025
4 tasks
@dfl dfl force-pushed the diode-ladder-filter branch from 4a7d4a8 to b451d90 Compare December 27, 2025 03:25
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.

2 participants