Skip to content

feat: add Filter FM (Devilfish mod)#35

Open
dfl wants to merge 3 commits intomidilab:developfrom
dfl:filter-fm-devilfish-mod
Open

feat: add Filter FM (Devilfish mod)#35
dfl wants to merge 3 commits intomidilab:developfrom
dfl:filter-fm-devilfish-mod

Conversation

@dfl
Copy link

@dfl dfl commented Dec 27, 2025

Summary

  • AC-coupled input signal modulates filter cutoff at audio rate
  • One-pole HPF (~20Hz) removes DC before modulation
  • Creates FM sidebands, talking/screaming character with resonance
  • New setFilterFmDepth() API (0-100%)

Based on Devilfish mod: "Filter FM uses the output of the VCA, AC coupled into the filter cutoff frequency"

Dependencies

⚠️ Depends on PR #33 (diode-ladder-filter) - merge that first

Test plan

  • Build and load plugin
  • Set Filter FM depth > 0 with diode filter selected
  • Play notes with high resonance - should create talking/screaming character
  • Verify FM effect increases with depth parameter

🤖 Generated with Claude Code

dfl and others added 3 commits December 20, 2025 06:55
- 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>
- Add three distinct nonlinearity stages modeling real diode behavior:
  1. diodeShape() - asymmetric input saturation (exp on positive, linear negative)
  2. fbShape() - feedback path saturation for resonance collapse/chirp
  3. stageNL() - per-stage cubic nonlinearity for grit under drive
- Add DC blocker to prevent low-frequency buildup
- Remove chowdsp math_approx dependency (use std::exp directly)
- Add detailed signal flow documentation in header

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- AC-coupled input signal modulates filter cutoff at audio rate
- One-pole HPF (~20Hz) removes DC before modulation
- Creates FM sidebands, talking/screaming character with resonance
- New setFilterFmDepth() API (0-100%)

Based on Devilfish mod: "Filter FM uses the output of the VCA,
AC coupled into the filter cutoff frequency"

🤖 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 January 24, 2026 12:12
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