Harmonic-Resonance Neurons

A buildable DIY guide — neurons that "attune" to each other by vibrational / harmonic resonance, like tuning forks driving each other at a shared frequency. Weight = coupling strength; strongest when frequencies match. For ALMAWARE / Eran neuromorphic R&D. Built for Iddo, 2026-06-24. Honest tiers: working-today electronics → literal vibration → self-attuning learning → hybrid scale.

1 · The idea in one breath

Forget the textbook "weighted sum" for a moment. Here a neuron = an oscillator — something with a natural frequency f₀ (a tuning fork, an RC timer, an LC tank). Two oscillators couple when there's a path between them (a wire, a shared cap, air, a common rail). The "weight" / "attunement" between two neurons is their coupling strength, and the deep fact is this:

This is not mysticism — it is the physics of coupled oscillators. The canonical math is the Kuramoto model: each oscillator i has phase θᵢ and natural frequency ωᵢ, and

dθᵢ/dt = ωᵢ + (K/N) · Σⱼ sin(θⱼ − θᵢ) └own─┘ └─ pull from every other neuron j ─┘ K small → everyone drifts independently (no binding) K large → a critical threshold is crossed → a fraction of them LOCK to one rhythm (binding) match ωᵢ≈ωⱼ → they lock at tiny K ; detune → they don't

That single equation describes synchronizing fireflies, pacemaker cells, power-grid generators, Josephson junctions — and the neurons we're about to solder. Resonance is the multiply; synchrony is the answer.

Two real phenomena to name-drop on the bench (both genuine physics):

2 · The honest tier ladder

Each tier is a real, finished milestone. Climb only as far as you want — Tier 0 already works, is ~$25, and shows two neurons attune by frequency match in an afternoon.

TIER 0 Electronic oscillator-neurons — works today, ~$25, no exotic parts

Each neuron = a tunable electronic oscillator (a 555 timer, or an op-amp phase-shift / LC oscillator), its natural frequency set by a pot. Couple two of them through a resistor / small cap / common rail. Tune them alike and watch them lock; detune and watch them drift. This is a genuine, measurable coupled-oscillator network — and it's published, real science (two coupled 555 oscillators synchronizing through a coupling resistor is a documented experiment).

TIER 1 Literal vibration — tuning forks / piezo benders / speaker–mic pairs

Now the resonators are mechanical. One neuron's physical vibration sympathetically drives another tuned to the same pitch. A piezo disc is used as both driver and pickup; "attunement" = matching their mechanical resonant frequency. You measure real resonance peaks and demonstrate sympathetic entrainment across an air gap or a shared beam.

TIER 2 Tunable coupling + a Hebbian learning rule → a self-attuning network

Make coupling adjustable (digital pot / analog switch) and add a rule: neurons that fire in phase strengthen their coupling; out-of-phase weakens it. The network tunes itself into bound assemblies. Use integer-ratio (harmonic) coupling — 1:2, 2:3 — so neurons can bind hierarchically, like a chord, not just unison.

TIER 3 Scale & hybrid with your optical / RF / FPGA neuromorphic work

Tile many oscillator-neurons; let the FPGA decide who couples to whom (resonance is the weight, FPGA is the wiring), carry coupling over RF/ESP-NOW for wireless neurons, and read phase optically. A multi-frequency resonant fabric layered onto the rest of the stack.

3 · Tier 0 — build two attuning neurons (start here)

Parts (~$25, all hobby-grade)

PartQtyRole
NE555 (or TLC555 CMOS) timer IC2Each = one oscillator-neuron
10k–100k linear potentiometer2Tunes each neuron's natural frequency f₀
Capacitors 100 nF (timing) + 1 µF (timing alt)4Sets the frequency band with the pot
Coupling resistor 47k–470k or coupling cap 1–10 nF1–2The "synapse" — the coupling strength between the two neurons
LEDs + 470 Ω resistors2Visualize each neuron's firing / phase
Breadboard, jumpers, 5 V supply (USB is fine)Glue
(Optional) USB oscilloscope or just your phone's slow-mo camera1See drift → lock directly

One neuron = one 555 astable oscillator

In astable mode the 555 charges its timing cap through the pot to ⅔ Vcc, dumps it to ⅓ Vcc, repeats — a relaxation oscillator. Output on pin 3 is a square wave; the pot sets the pitch. That blinking/buzzing rhythm is the neuron's firing.

Vcc ─┬───[ R_pot ]──┬── pin 7 (discharge) │ │ └──[ R_fixed ]─┴── pin 6 (threshold) ── pin 2 (trigger) │ [ C ]── GND pin 3 ──► OUT (square wave = "spikes") pin 3 ──[470Ω]──►|LED|── GND f ≈ 1.44 / ((R_pot + 2·R_fixed)·C) ← turn the pot, change the neuron's natural frequency

Couple two of them (the heart of this guide)

Build two identical 555 neurons (call them A and B), each with its own pot and LED. Now connect them so they can feel each other. Three honest coupling options, weakest-cleanest first:

  1. Resistive (control voltage) coupling — recommended: tie A's output (pin 3) through the coupling resistor to B's control pin (pin 5), and B's output back to A's pin 5. Pin 5 nudges the ⅔-Vcc threshold, so each neuron's output speeds up or slows the other — exactly the bidirectional "diffusive" coupling in the Kuramoto sin() term. Bigger resistor = weaker coupling (smaller K).
  2. Capacitive coupling: a small cap (1–10 nF) between the two timing nodes (pin 2/6). Each spike kicks the other's charge a little. Very visual.
  3. Common-rail coupling: share one slightly-soft supply rail (a small series resistor before each 555's Vcc). When one fires it dips the rail, perturbing the other. This is the "shared bus" version and scales to many neurons at once.
┌──────────── NEURON A (555 #1) ───────────┐ ┌──────────── NEURON B (555 #2) ───────────┐ │ [pot_A]→f0_A OUT(pin3)──►|LED A| │ │ [pot_B]→f0_B OUT(pin3)──►|LED B| │ └───────────────────┬───────────────────────┘ └───────────────────┬───────────────────────┘ │ │ └────[ R_couple ]────► B pin5 (control) │ ◄── coupling = the "weight" ◄────[ R_couple ]──── A pin5 (control) ───────────────┘ (small R = strong K)

What to do — and exactly what to observe

  1. Decouple first: remove the coupling resistor. Set pot_A and pot_B to clearly different pitches. The two LEDs blink at different rates and drift — random relative phase. This is "two unrelated neurons."
  2. Couple, still detuned: add the coupling resistor while the pitches are still far apart. Mostly still drift — coupling alone isn't enough when frequencies don't match. (Note the LEDs occasionally "tug" at each other — already real.)
  3. Attune: slowly turn pot_B toward pot_A. At some point the two LEDs snap into lock-step and stay there — same rate, fixed phase relationship (often anti-phase or in-phase). That snap is entrainment. The frequency match is the attunement. You just watched a "weight" turn on.
  4. Map the Arnold tongue: note how far you can detune pot_B before they fall out of lock. Now lower R_couple (stronger coupling) and repeat — the locking range gets wider. You've measured coupling-strength vs. capture-range: the actual shape of "attunement."
  5. Phase readout: on a scope (or phone slow-mo of the LEDs) watch the phase difference go from sliding (drift) to frozen (locked). Frozen phase = bound. This is your "synchrony detector," the thing Tier 2 will learn to control.
Three neurons, instantly more interesting: add a third 555 on the common rail. Tune two of them alike and leave the third off-pitch → two lock into an assembly, one stays free. That is binding-by-synchrony you can point at: the rhythm says which neurons "belong together."

Op-amp / LC variants (cleaner sine, better physics)

The 555 is a square-wave relaxation oscillator — great and cheap. For prettier sinusoidal coupling (closer to ideal Kuramoto):

4 · Tier 1 — literal vibration (tuning forks, piezo, speaker–mic)

Why this is the real thing: here the neurons physically shake. Coupling is genuine mechanical/acoustic energy crossing between resonators, and it obeys the same match-to-attune law. Sympathetic resonance is the oldest, most honest demonstration of "neurons attuning by shared frequency."

Option A — tuning forks (purest demo, almost free)

  1. Get two identical tuning forks (same note, e.g. two 440 Hz) mounted on resonator boxes, plus a third of a different note.
  2. Strike fork #1, then damp it with your hand. Fork #2 (identical) is now audibly humming — energy crossed the air because they share f₀. The off-note fork stays silent. That selectivity is the weight: same frequency = strong coupling, different = ~zero.
  3. Detune to break it: stick a tiny blob of putty / a rubber band on one fork's tine to lower its pitch slightly. Repeat — the sympathetic transfer weakens or dies. You just turned a "weight" down by detuning, by hand.

Option B — piezo benders as driver AND pickup (the buildable electronic-mechanical neuron)

A piezo disc is reversible: drive it with voltage and it flexes (speaker); flex it and it makes voltage (mic/pickup). So one piezo can be both the neuron's "output muscle" and its "input ear" — and a piezo bender has a sharp mechanical resonant frequency you can find and match. This is the most direct mechanical neuron.

PartQtyRole
Piezo bender discs (27–35 mm, the cheap buzzer kind)2–3Each = one mechanical neuron (driver + pickup)
A thin metal/plastic beam, ruler, or shared frame1The coupling medium (mount the piezos on it)
Small audio amp (PAM8403) or op-amp1–2Buffer/boost the pickup signal
Function generator or a 2nd 555/phone tone app1To sweep frequency and find resonance
Multimeter (AC mV) or scope, small weights/puttyMeasure resonance; detune to test
  1. Find each neuron's natural frequency: drive piezo A with a swept tone (e.g. 500 Hz → 5 kHz). Read piezo A's own pickup amplitude (or feel/hear it). The frequency where amplitude peaks sharply is its mechanical resonance f₀ — its "natural frequency." Record it. Do the same for B.
  2. Couple them mechanically: mount A and B on the same beam / frame a few cm apart (or face them across a tiny air gap). The beam carries vibration from one to the other. The closer / stiffer the shared mount, the stronger the coupling.
  3. Attune & show sympathetic entrainment: drive A at its resonance and read B's pickup (A is silent electrically into B — only vibration links them). If A and B are matched, B rings strongly. Now detune B (add a dab of putty / a small weight to shift its f₀) → B's response collapses. Match → big response, mismatch → little. That curve is the attunement weight, measured.
  4. Mutual lock (optional, advanced): let each piezo's pickup drive the other through an amp (A's flex → voltage → drives B, and vice-versa) so they push each other. Tuned alike, the pair settles into a single shared vibration = mechanical entrainment. Detuned, it won't hold.

Option C — speaker + microphone pairs (easiest to scale)

Each neuron = a small speaker (output) + a microphone (input) running a tunable tone. Sound is the coupling medium; a mic only strongly excites its neuron when the incoming pitch matches that neuron's tuned frequency (give each neuron a sharp band-pass filter centered at its f₀). This is the most flexible version — coupling is just "who can hear whom," and you can place neurons anywhere in a room. It's also the bridge to your RF/wireless neurons (swap sound for ESP-NOW packets carrying phase).

Honesty on Tier 1: mechanical resonators are lossy and drifty — temperature, mounting, and damping all shift f₀, so the "weights" wander. Acoustic coupling (Option C) is easy but everything in the room couples a little (crosstalk), so isolate and filter. Tuning forks and piezo give the cleanest, most repeatable demos; treat the room as a noisy substrate, not a clean chip.

5 · Tier 2 — tunable coupling + a Hebbian learning rule (self-attuning)

The leap to "learning": in Tiers 0–1 you tuned the neurons by hand. Now the network adjusts its own couplings so that co-active neurons bind themselves — Hebb's rule ("neurons that fire together, wire together") expressed as "oscillators that phase-lock together, couple tighter together."

Make coupling adjustable

The learning loop (run on the MCU)

every tick, for each pair (i,j): measure phase difference Δφ (XOR duty, or ADC of both outputs) if in-phase (Δφ small) → K_ij += η # Hebbian potentiation: bind them if out-of-phase → K_ij -= η # anti-Hebbian: unbind clamp K_ij to [0, K_max]; write to digital pot / vactrol result: clusters of co-active neurons pull their own couplings UP and lock into assemblies that survive after the external nudge is removed = a learned binding (a memory)

Demo to aim for: briefly drive neurons {1,3,5} with a shared rhythm. The learning loop ratchets up couplings within that set; remove the drive and {1,3,5} keep firing together while {2,4} stay free. You've stored an assembly in the coupling matrix — the resonant-network version of a learned weight. This matrix is the same object as the conductance crossbar in your other neuron builds; here it's made of tunings.

Harmonic (integer-ratio) coupling → hierarchy & "chords"

Oscillators don't only lock 1:1 — they also lock at integer ratios (a 200 Hz and a 400 Hz neuron can phase-lock 1:2; 2:3 gives a "perfect-fifth" relationship). The locking ranges (Arnold tongues) are widest at simple ratios, so harmonically related neurons bind robustly even across octaves. Use this to build hierarchy: a slow "theta-like" neuron at f₀ can bind a cluster of faster "gamma-like" neurons at 2f₀, 3f₀, 4f₀ — a base note holding a chord. That's a concrete, buildable take on cross-frequency coupling in real brains, and a clean way to give the network structure (groups, sub-groups) instead of one flat blob of unison.

6 · Tier 3 — scale & hybrid with your other neuromorphic builds

HybridWhat resonance contributesTies to
FPGA-routed resonant fabricResonance/tuning is the weight (match = strong); the FPGA crossbar decides who couples to whom and can re-wire couplings live. Oscillators are cheap and identical; the FPGA holds the topology.FPGA neuron routing
RF / wireless oscillator-neuronsCarry each neuron's phase/frequency over ESP-NOW / BLE / LoRa instead of a wire — any-to-any coupling across the room or building; injection-locking still works over RF (this is literally how radios lock to carriers).RF/wireless mesh neurons, LoRa T-Deck
Optical phase readout / couplingRead a neuron's phase with an LED↔photodiode, or couple two neurons by light (one's LED drives the other's photo-input). Frequency-multiplexed light = many resonant channels on one beam.Optical chromatic memristor neuron, prism/cut-stone
Memristor-set tuningLet a memristor (Ag₂S / silver-leaf, or ZnO) set each oscillator's RC → the natural frequency itself becomes a non-volatile learned value. Now "attunement" is stored in real memory, not a pot.Silver-leaf memristor, DIY neuromorphic array

Why a resonant layer is worth adding to the stack: it gives the network a native sense of time, grouping, and "belonging-together" that pure feed-forward weighted-sum neurons lack. Phase is a free extra communication channel — neurons can say "I'm with this group" by when they fire, not just how hard. That is a distinct, complementary axis to the amplitude/conductance weights in your optical and crossbar builds.

7 · Honest verdict

Ties into your existing R&D: the FPGA neuron-routing fabric (who-couples-to-whom), the RF/wireless mesh neurons (phase over ESP-NOW/LoRa), the optical chromatic memristor neuron (light phase readout / WDM channels), the silver-leaf / Ag₂S memristor and DIY neuromorphic crossbar (memristor-set tunings = non-volatile attunement). Low-tech-first, build-to-a-standard. — Start with two 555s and one coupling resistor; the moment the LEDs snap into step, you're holding Kuramoto in your hands for the price of lunch.