Toy digital audio effects for a RP2354 + TAC5112 guitar pedal. IIR biquad filters. LFO modulation. Basic delay loops. Single sample in, single sample out — no block latency.
"These are — like the analog circuits that started my journey — toy effects that you shouldn't take seriously. The main design goal has been to learn about digital audio processing basics. No fancy FFT-based vocoders or anything like that, just IIR filters and basic delay loops."— README.md
The project targets the RP2354 microcontroller paired with the TAC5112 audio codec, which achieved sub-millisecond ADC→DAC latency in the original GuitarPedal hardware. While the hardware is shelved, DSP work continues in simulation on desktop.
The convert binary reads 200-sample blocks from stdin, runs each
int32_t sample through the selected effect's step(float),
and writes the result. Pot values are controlled in real-time over a named pipe.
Every effect implements one struct. The audio core calls step()
once per sample at 48 kHz. Pot values use a double-buffer + sequence lock
so the UI core can update them without tearing.
struct effect {
const char *name, *short_name;
volatile unsigned int seq, last; // sequence lock
signed char pot_values[2][10]; // double-buffered pots
float (*step)(float); // one sample in → one sample out
void (*init)(signed char[10]);
const struct pot_descr pots[10];
};
# clone
git clone https://github.com/torvalds/AudioNoise.git
cd AudioNoise
# build (generates log2/pow2/sine lookup tables, then compiles)
make
# run phaser on the included bass sample
make output.raw
ffplay -v fatal -nodisp -autoexit -f s32le -ar 48000 -ch_layout mono -i output.raw
# or pipe directly
./convert phaser input.raw | ffplay -f s32le -ar 48000 -ch_layout mono -i pipe:0
See How-To for a full walkthrough including real-time pot control and the Python visualizer.
| effect | short | key params |
|---|---|---|
| Phaser | PSR | LFO 25ms–2s · Freq 220–6460 Hz · Q 0.25–2 |
| Flanger | FLN | Delay 0–4 ms · Depth 0–1 · Feedback 0–1 |
| Echo | ECHO | Delay 0–1000 ms · Feedback 0–1 |
| Boost | BO | 0–40 dB gain · HPF 10–200 Hz · LPF 1–20 kHz |
| Compressor | CMPR | Attack 2–100 ms · Release 50–500 ms · Ratio 1–20 |
| EQ | EQ | Parametric biquad bands |
| Pitch | PCH | Pitch shift |