Files
ambium/README.md
T
2026-07-16 15:14:53 +10:00

13 KiB
Raw Blame History

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.

Ct sees 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.

  1. VREF — R2/R3/Cref up. Confirm ~6.0 V.
  2. Noise (R1 + Q1) — scope Q1 node → hiss (~mV). No noise? swap the 2N3904 or nudge supply to 12–15 V.
  3. Amp (U1A) — scope AMP → loud hiss (~volts).
  4. Integrator (U1B) — BROWN sounds darker/deeper than AMP. That's brown noise.
  5. LFO (U2A) — scope LFO_CV → slow ramp, ~20 s.
  6. 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)