"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.

BassForLinus.mp3 ffmpegs32le · 48kHz · mono input.raw ./convert <effect> output.raw ffplay

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
PhaserPSRLFO 25ms–2s · Freq 220–6460 Hz · Q 0.25–2
FlangerFLNDelay 0–4 ms · Depth 0–1 · Feedback 0–1
EchoECHODelay 0–1000 ms · Feedback 0–1
BoostBO0–40 dB gain · HPF 10–200 Hz · LPF 1–20 kHz
CompressorCMPRAttack 2–100 ms · Release 50–500 ms · Ratio 1–20
EQEQParametric biquad bands
PitchPCHPitch shift

Full effect reference →