Search guides and the APICtrl K
  1. API reference
  2. DSP

fuzz.h

The Fuzz Face, as its circuit.

#include <sonore/fuzz.h>
On this page

Design notes

The first pedal simple enough to model whole and famous enough to be worth it: two germanium PNP transistors, four capacitors, a feedback resistor, and every part value printed in every analysis of it since 1966 (the netlist below is the Dallas Arbiter circuit as documented in the public ElectroSmash analysis: 2.2u in, 33k and 8.2k collector loads, 100k feedback from Q2's emitter to Q1's base, 1k fuzz pot with a 20u bypass, 470R + 10n into a 500k volume pot, 9 V supply -- negative ground, because the transistors are PNP).

It runs on circuit.h's nodal DK engine rather than a hand-derived ODE, because the fuzz's character IS the circuit's interactions: the bias point Q2's emitter feeds back to Q1's base, the input impedance loading the source (which is why a guitar's volume knob cleans it up -- model that with setSourceImpedance), and the asymmetric clipping that falls out of the transistors' operating point instead of being painted on.

The transistors are Ebers-Moll with germanium-CLASS parameters (Is 1e-7, so the junctions sit near 0.2 V; betas 70 and 120, the mismatched pair the classic units selected for). They are typical values for an AC128, not a specific unit's datasheet -- germanium spread is the reason two vintage Fuzz Faces never sounded alike.

The circuit runs at 4x: BJT clipping is tanh-shaped, and measured, the folded products of a hot bright tone stay under the harness's gate there.

Included by dsp.h.

Types 1

The Fuzz Face pedal as its circuit: two germanium PNP transistors with the Dallas Arbiter part values, solved whole by circuit.h's nodal engine at 4x (see the file comment for the netlist and the transistor parameters).

One channel, per sample, in volts: a full-scale sample swings the input +/-1 V, and the output is the volume pot's wiper. Call setSampleRate() in prepare() and report latencySamples() to the host. Fuzz and volume are 0..1 of the pots' travel, the source impedance is in ohms. The setters and process() run on the audio thread. The same value again costs nothing; a new one moves a resistor, which re-factorises the circuit's matrix on the next sample, so set the pots once a block rather than per sample. Before audio runs a knob re-solves the operating point, so a pedal loaded with its settings starts quiet; once it runs the circuit moves with the knob.

↑↓ to move↵ to openEvery public name in the headers, and every guide