13 KiB
ambium
Analog brown-noise generator with a slow amplitude swell (LFO). All-analog, breadboard-friendly, single +12 V supply. Deep, drifting rumble that slowly breathes in and out over ~20 s.
Each stage is drawn as ASCII below. Reference designators and model numbers are consistent across every diagram, the BOM, and the connection list — that list is the authoritative netlist.
Parts used (model numbers)
- U1, U2 = LM358 (dual op-amp, DIP-8). U1 = amp + integrator; U2 = LFO + buffer. (LM258P is the same part — fine.)
- Q1, Q2 = 2N3904 (NPN). Q1 = avalanche noise source; Q2 = shunt VCA.
Nets
+12V · GND · VREF (6 V mid-supply) · NOISE · AMP · BROWN · LFO ·
LFO_CV · VCA · AUDIO_OUT
Signal chain
[noise] [amplify] [integrate] [VCA] [buffer]
Q1 2N3904 → U1A LM358 ×1000 → U1B LM358 −6dB/oct → Q2 2N3904 → U2B LM358 → AUDIO_OUT
NOISE AMP BROWN VCA (line out)
▲
swell
U2A LM358 LFO (~0.05 Hz)
Legend for the diagrams:
[Rxx val] resistor ──┤├── film / non-polar cap ● junction (connected)
──+┤├── polarised cap × no-connect
│\ (the + marks the + terminal) ► net continues (label)
────┤−\ op-amp: IN− top, IN+ bottom, OUT right.
│ >── Powered from +12V / GND via LM358 pins 8 / 4 (see Power).
────┤+ /
│/
E transistor box — E / B / C labels sit OUTSIDE the box:
│
┌──┴──┐
B ───┤ Qx │ NPN 2N3904
└──┬──┘
│
C
Power · VREF divider (R2, R3, Cref)
+12V
│
[R2 10k]
│
●───────────────┬────────► VREF (6 V)
│ + Cref 10µF (+ terminal → VREF)
[R3 10k] ──┤├──
│ −
│ │
GND GND
R2/R3 = 20 kΩ across 12 V → 0.6 mA, midpoint = 6 V. Cref holds VREF steady.
VREF is the AC ground every stage rides on (single supply, no negative rail).
Stage 1 — White noise (R1, Q1, C1)
Reverse-biased base–emitter junction of Q1 driven into avalanche = broadband white
noise. R1 limits current; C1 couples the noise out.
+12V
│
[R1 100k]
│
●──+┤├──────────► NOISE (stage-1 output → Stage 2)
│ C1 10µF
│ (+ terminal → emitter side; − → NOISE)
E
┌──┴──┐
GND─B─┤ Q1 │ 2N3904
└──┬──┘
│
C
× collector: no connect
The ● node (R1 / Q1 emitter) is the raw noise on a DC pedestal — internal, don't
label it NOISE. `C1` strips the DC; **NOISE = the AC-coupled output after C1.**
Avalanche quality varies part-to-part. Try one 2N3904; if quiet, swap for another. Needs the full +12 V (9 V is often too low to avalanche).
Stage 2 — Amplifier ×1000 (U1 unit B, Rin1, Rf1)
Inverting amp, gain ≈ −Rf1/Rin1 = ×1000. Output centred on VREF.
┌───[Rf1 1M]────┐
├───[Cf1 22pF]──┤ Cf1 ∥ Rf1 — kills oscillation, limits BW
│ │
NOISE ─[Rin1 1k]───● │
pin 6 │ │\ │
(IN−) ───────┴───┤−\ │
│ >──● pin 7 (OUT) ──► AMP
(IN+) ───────────┤+ /
pin 5 VREF │/ U1 = LM358 (unit B)
Power + decoupling (whole LM358 U1 — wired ONCE, not per unit):
pin 8 (V+) ── +12V pin 4 (V−) ── GND
+12V ──+┤├── GND 47µF +12V ──┤├── GND 10nF (or 0.1µF)
(bulk electro, (HF ceramic,
+ to +12V, near U1) right at pin 8)
This stage uses unit B (pins 5/6/7) — as built. The integrator (Stage 3) uses the other half, unit A (pins 1/2/3). Power (8/4) + decoupling are shared by both halves — wire them once. To use unit A here instead: IN− = 2, IN+ = 3, OUT = 1.
Stage 3 — Integrator → brown (U1 unit A, Rin2, Cint, Rf2)
Leaky integrator = −6 dB/octave → turns white into brown. Rf2 bounds DC so the
output can't rail. Corner ≈ 1/(2π·Rf2·Cint) ≈ 1.6 Hz.
┌──────[Rf2 1M]──────┐
│ │
├───────┤├───────────┤ Cint 100nF (Rf2 ∥ Cint)
│ │
AMP ─[Rin2 10k]───● │
pin 2 │ │\ │
(IN−) ───────┴───┤−\ │
│ >──● pin 1 (OUT) ──► BROWN
(IN+) ───────────┤+ /
pin 3 VREF │/ U1 = LM358 (unit A)
Darker/deeper: ↑ Cint or Rf2. Lighter (toward pink): ↓ Cint.
Stage 4 — LFO (U2A, Rt, Ct, Ra, Rh)
Single-op-amp relaxation oscillator. Period ≈ 2.2·Rt·Ct ≈ ~22 s. The control
voltage is the ramp on Ct (net LFO_CV) — it drives the VCA in Stage 5.
┌──────────[Rt 1M]──────────┐
│ │
●──────┤├──── VREF │ Ct 10µF (non-polar)
│ Ct │
│ │\ │
LFO_CV ●──────┤−\ │
│ │ >──●──────────────┴──► LFO (and to Rh)
┌──────┤+ / │ U2A
│ │/ │ (LM358, unit A)
●──[Ra 100k]──┤
│ └── VREF
[Rh 100k]
│
└───────────────────────────────────► LFO (hysteresis feedback)
Ra/Rh set the hysteresis (both 100k). LFO_CV ramps ~3.5–8.5 V.
Ctsees a bipolar swing about VREF — use a non-polar 10 µF (film or bipolar electrolytic), not a standard polarised cap.
Stage 5 — VCA + buffer + output (Rs, Q2, Rb2, U2B, Cout, Rvol)
Q2 shunts the brown-noise signal to VREF (AC ground) by an amount set by LFO_CV →
amplitude swells and fades. U2B buffers; Cout blocks DC; Rvol sets level.
VCA
│
C
┌──┴──┐
LFO_CV ─[Rb2 100k]─B─┤ Q2 │ 2N3904
└──┬──┘
│
E
│
VREF
BROWN ──[Rs 47k]────────► VCA (Rs feeds VCA; Q2 shunts VCA to VREF)
VCA ───┤+\
│ >──●──+┤├──●──[Rvol 10k]──► AUDIO_OUT
┌─────┤−/ │ Cout │ (wiper)
│ │/ U2B 10µF GND
│ LM358
│ unit B
└─────────● (OUT → IN− = unity buffer; Cout + → buffer out)
When LFO_CV is low → Q2 off → signal passes (loud). High → Q2 conducts → shunts to
VREF (quiet). ~20 s swell. Soften the swell: 1 µF from LFO_CV to VREF.
Output driver — LM386 (U3), for the 4Ω speaker
AUDIO_OUT is line level — the LM358 cannot drive a speaker. Add an LM386
power amp for a 4 Ω / 8 Ω speaker. (For bring-up you can feed it from AMP or BROWN
instead of AUDIO_OUT.)
+12V
│
●──────┤ pin 6 (V+)
──+┤├── ──┤├──
47µF 0.1µF (→ GND, at the chip)
│ │
GND GND
AUDIO_OUT ─+┤├─[VOL 10k]────► pin 3 (+IN) pin 5 (OUT) ─+┤├──► SPKR ─ GND
Cc 1µF (wiper) 470µF 4Ω
pin 5 ─[10Ω]─┤├─ GND (Zobel)
pin 2 (−IN) ── GND 10nF
pin 4 ── GND
pin 7 (BYPASS) ─+┤├─ GND (10µF)
pins 1 & 8 ── OPEN (gain ×20)
LM386 pinout: 1 gain · 2 IN− · 3 IN+ · 4 GND · 5 OUT · 6 V+ · 7 bypass · 8 gain.
Notes
- Output cap must be big (~470µF, ≥16V). Into 4 Ω, 47µF high-passes at ~850 Hz → kills the bass (brown noise is all lows). Fat electrolytic, + → pin 5.
- Gain ×20 (pins 1 & 8 open). Back off with VOL to avoid clipping. A 10µF between pins 1 & 8 gives ×200 — usually not needed.
- On +12 V the LM386 runs warm into 4 Ω (LM386N-1 max = 12 V). OK for testing; for cooler running feed it from ~9 V.
LM358 power + decoupling
Each LM358 (U1, U2) is powered once via its package pins — not per op-amp unit:
+12V ──┬── U1 pin 8 (V+) GND ──┬── U1 pin 4 (V−)
│ │
└── U2 pin 8 (V+) └── U2 pin 4 (V−)
Decoupling: 0.1µF from +12V to GND at EACH chip, plus one 47µF bulk on the +12V rail.
LM358 unit A = pins 1(OUT) 2(IN−) 3(IN+); unit B = 7(OUT) 6(IN−) 5(IN+); power 8(V+) 4(V−).
Bill of materials
| Ref | Value | Part / model | Function |
|---|---|---|---|
| U1 | — | LM358 (DIP-8) | U1A amp, U1B integrator |
| U2 | — | LM358 (DIP-8) | U2A LFO, U2B buffer |
| Q1 | — | 2N3904 | avalanche white-noise source |
| Q2 | — | 2N3904 | shunt VCA |
| R1 | 100k | resistor | avalanche current limit |
| R2, R3 | 10k | resistor | VREF divider |
| Rin1 | 1k | resistor | amp input |
| Rf1 | 1M | resistor | amp feedback (×1000) |
| Rin2 | 10k | resistor | integrator input |
| Rf2 | 1M | resistor | integrator leak / brown corner |
| Rs | 47k | resistor | VCA series |
| Rb2 | 100k | resistor | LFO_CV → Q2 base |
| Rt | 1M | resistor | LFO timing |
| Ra, Rh | 100k | resistor | LFO hysteresis |
| Rvol | 10k | potentiometer | output level |
| C1 | 10µF | electrolytic | noise coupling |
| Cref | 10µF | electrolytic | VREF bypass |
| Cf1 | 22–100pF | ceramic | amp feedback — stops oscillation, limits BW |
| Cint | 100nF | film | integrator (brown shaping) |
| Cout | 10µF | electrolytic | output coupling |
| Ct | 10µF | non-polar | LFO timing (bipolar swing) |
| U3 | — | LM386 | speaker power amp (drives 4Ω/8Ω) |
| Cc | 1µF | film/electro | LM386 input coupling |
| Cout2 | 470µF ≥16V | electrolytic | speaker output coupling — big, for bass |
| — | 10Ω + 10nF | — | LM386 Zobel network (stability) |
| — | 10µF | electro | LM386 pin 7 bypass |
| — | 0.1µF ×3 | ceramic | chip decoupling (one per LM358 + one at LM386 pin 6) |
| — | 47µF ×2 | electrolytic | +12V bulk (main rail + at LM386) |
Chip count: 2× LM358 + 1× LM386 + 2× 2N3904. Single +12 V supply (feed the LM386 from ~9 V if it runs hot into 4 Ω).
Connection list (authoritative netlist)
+12V : R1.1, R2.1, U1.8, U2.8, (47µF+)
GND : R3.2, Q1.base, Cref.−, U1.4, U2.4, Rvol.3, (47µF−), (0.1µF ×2)
VREF : R2.2, R3.1, Cref.+, U1A.IN+(3), U1B.IN+(5), Ct(VREF end), Ra.1, Q2.emitter
(src) : R1.2, Q1.emitter, C1.+ (internal raw-noise node, DC pedestal)
NOISE : C1.−, Rin1.1 (stage-1 output, AC-coupled — after C1)
AMP : U1A.OUT(1), Rf1, Rin2.1 (Rin1.2, Rf1, U1A.IN−(2) = summing node)
BROWN : U1B.OUT(7), Cint, Rf2, Rs.1 (Rin2.2, Cint, Rf2, U1B.IN−(6) = summing)
LFO : U2A.OUT(1), Rt, Rh
LFO_CV : Rt, Ct(CV end), U2A.IN−(2), Rb2 (ramp that swells the VCA)
VCA : Rs.2, Q2.collector, U2B.IN+(5)
(U2B.OUT(7) = U2B.IN−(6) = Cout.+ → buffer)
AUDIO_OUT : Rvol.wiper(2) (Cout.− → Rvol.1; Rvol.3 → GND)
Q1 : collector = no-connect
Build & test order
Build one stage at a time — verify before adding the next.
- VREF — R2/R3/Cref up. Confirm ~6.0 V.
- Noise (R1 + Q1) — scope Q1 node → hiss (~mV). No noise? swap the 2N3904 or nudge supply to 12–15 V.
- Amp (U1A) — scope AMP → loud hiss (~volts).
- Integrator (U1B) — BROWN sounds darker/deeper than AMP. That's brown noise.
- LFO (U2A) — scope LFO_CV → slow ramp, ~20 s.
- VCA + buffer (Q2, U2B) — full chain: noise swells and fades on the LFO cycle.
Tuning
| Want | Change |
|---|---|
| Deeper/darker | ↑ Cint or Rf2 |
| Lighter (toward pink) | ↓ Cint |
| Slower swell | ↑ Rt or Ct |
| Faster swell | ↓ Rt or Ct |
| Softer swell onset | 1µF from LFO_CV to VREF |
| Louder | ↑ Rf1 (watch clipping) |