https://github.com/copych/esp32-s3_fm_drum_synth
ESP32-S3 based FM Drum synthesizer
https://github.com/copych/esp32-s3_fm_drum_synth
drums dx fm midi synth synthesizer usb
Last synced: about 2 months ago
JSON representation
ESP32-S3 based FM Drum synthesizer
- Host: GitHub
- URL: https://github.com/copych/esp32-s3_fm_drum_synth
- Owner: copych
- License: mit
- Created: 2025-07-24T20:19:48.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-07-30T14:48:18.000Z (2 months ago)
- Last Synced: 2025-07-30T17:09:21.299Z (2 months ago)
- Topics: drums, dx, fm, midi, synth, synthesizer, usb
- Language: C++
- Homepage:
- Size: 101 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ESP32-S3 FM Drum Synth
A high-performance FM drum synthesizer built for the ESP32-S3.
Supports multi-operator FM synthesis, realtime MIDI control, patch editing via OLED+encoder UI, and flexible drumkit management.---
## ✨ Features
- ✅ **6-operator FM synthesis** with 17 extendable routing algorithms
- ✅ **Custom envelope engine** with hold, fast-release, and block-aware processing
- ✅ **Stereo audio output** via I2S, using normalized float-to-int audio pipeline
- ✅ **Per-note drumkits** with full patch mapping to GM MIDI notes (128-note map)
- ✅ **Real-time MIDI control** (USB or serial), including velocity and retriggers
- ✅ **On-device GUI** via SH1106 OLED + rotary encoder + buttons
- ✅ **Waveform blending**: sine, triangle, square, saw, noise, and inverted variants
- ✅ **Nonlinear SVF filter with drive** per voice
- ✅ **Per-voice reverb send**, globally editable reverb parameters
- ✅ **Optimized DSP math**: fast sine, LUTs, `fast_fabsf`, saturators, etc.
- ✅ **Extremely low latency** voice allocator with note stealing and `MAX_VOICES_PER_NOTE` control
- ✅ **Drumkit save/load** via JSON on SD (or LittleFS, configurable)
- ✅ **Modular architecture**: patching, voice engine, allocator, GUI, and storage are decoupled---
## 🧠 Architecture Overview
```text
Each FmVoice6:
- 6x FmOperator
- Flexible routing (17 algorithms)
- Filter + envelope
- Reverb sendEach FmOperator:
- Multiple waveforms
- Separated fmProcess(), amProcess(), outProcess()
- Internal feedback
```a demo recording [Demo MP3](https://github.com/copych/ESP32-S3_FM_Drum_Synth/raw/refs/heads/main/media/05-250801_1607.mp3)