drop old file
This commit is contained in:
parent
8a3abafd84
commit
fc99d0ff43
34
DESIGN.md
34
DESIGN.md
@ -1,34 +0,0 @@
|
||||
# Stupid Synth Design Document
|
||||
|
||||
## Overview
|
||||
Stupid Synth is a minimalist, 4-voice polyphonic synthesizer designed for the RP2040. It prioritizes zero external component count (other than the sound transducer itself) and code simplicity.
|
||||
|
||||
## Hardware Design
|
||||
* **MCU**: Raspberry Pi Pico (RP2040).
|
||||
* **Audio Output**:
|
||||
* **Method**: High-speed PWM (Pulse Width Modulation).
|
||||
* **Pin**: GP28.
|
||||
* **Circuit**: Connect a piezo buzzer directly between GP28 and GND, or a speaker/headphones in series with a 220Ω resistor.
|
||||
* **Input**: USB Serial Console (no physical buttons/pots required).
|
||||
|
||||
## Software Architecture
|
||||
### Audio Engine
|
||||
* **Carrier Frequency**: ~490 kHz (125MHz sys clock / 255 wrap). This pushes PWM noise far above human hearing, minimizing the need for an analog filter.
|
||||
* **Sample Rate**: 22,050 Hz.
|
||||
* **Bit Depth**: 8-bit.
|
||||
|
||||
### Synthesis Engine
|
||||
* **Waveform**: Sawtooth (generated via simple phase accumulation).
|
||||
* **Polyphony**: 4 simultaneous voices.
|
||||
* **Envelope**: Simple Decay (percussive/plucked sound).
|
||||
* **Mixing**: Tanh saturation (soft clipping) to prevent digital distortion when voices sum.
|
||||
|
||||
### Interface
|
||||
* **Control**: Keyboard characters sent via Serial Monitor trigger notes.
|
||||
* Keys: `a`, `s`, `d`, `f`, `g`, `h`, `j`, `k` (Scale C4 - C5).
|
||||
|
||||
## Execution Plan
|
||||
1. Configure RP2040 Hardware PWM on GP28.
|
||||
2. Setup a repeating timer interrupt at 22.05kHz.
|
||||
3. Implement the mixing loop and voice management in the interrupt handler.
|
||||
4. Process Serial input in the main loop.
|
||||
Loading…
Reference in New Issue
Block a user