UNUSABLE.Ai

Harmonic Tension Engine

Feb 25, 2026 · live

Harmonic Tension Engine
GitHub Demo

Harmonic Tension Engine is a minimalist browser instrument for building rich, beating sine textures out of embarrassingly simple ingredients.

It’s basically:
16 free‑running sine oscillators arranged as 8 detuned pairs, then given just enough structure (scale/key quantization, note distribution, and some modulation) to feel musical while still drifting like it doesn’t respect your plans.

It runs as a single HTML file with no backend. So you can host it anywhere static, or just open it locally and ruin your evening.

Try it

What it does

Each “voice” is a pair of sine oscillators tuned slightly apart around the same center note.
That tiny offset creates beating: the pulsing/interference effect you get when close frequencies rub against each other.

Stack 8 pairs across a scale and you get a controllable drone machine that can sound:

Key features (real ones, not marketing ones)

1) 8 sine pairs (16 oscillators)

2) Global detune / beating control

A global detune control sets how far apart each pair’s two oscillators are (in cents):

3) Scale quantization + key

Each pair’s center note is quantized to a chosen scale + key:

4) Base note + spread (smart note distribution)

This makes it easy to go from tight clusters to wide harmonic spreads.

5) Per-pair note offset

A per‑pair semitone offset lets you break symmetry locally:

6) Per-pair amplitude modulation (sine LFO)

Each pair has its own AM section:

Important detail: AM updates are direct/unslewed.
Randomize/Zero slew does not affect AM behavior, so the LFO stays responsive instead of turning into mush.

7) Hall-ish reverb

Simple built‑in reverb on the master output:

It adds space without turning this into a plugin chain.

8) Stereo width

Global width spreads the 8 pairs across the stereo field:

9) Headroom-friendly amplitude mapping

Sliders show 0–100%, but internal gain is capped (so stacking sines doesn’t instantly clip):

10) Randomize / zero amplitudes + slew

Performance tools for the 8 amplitude sliders:

Great for evolving textures and scene changes without clicks.

11) Local presets (browser storage)

Preset management via localStorage:

So you can reproduce a patch later, instead of trusting your memory (which is a bad system).

12) MIDI input (receive only)

Optional Web MIDI support (browser-dependent):

Technical format

Use cases

Notes / caveats

Status

Live. Still evolving. Like the beating itself.