Monorepo for Aesthetic.Computer aesthetic.computer
README.md

hum #

A tiny singable melody — the testbed for the RFA (request-for-audio) voice-take workflow. Sixteen notes, one octave (D3–D4), D natural minor.

deep in the hum / a note grows slow / hold to the tone / now let it go

The loop #

voice-takes/manifest.json   the melody + words (the score of record)
        │
   rfa.mjs ──▶ wizard: per note, plays the pitch + shows the word,
        │       records you singing it, keep / redo / skip
        ▼
voice-takes/<id>.wav        one take per sung note (id = "<bar>-<beat>")
        │
  render.mjs ──▶ synth lead + chord pad, with every recorded take
        │         mixed in on top (lead ducks under your voice)
        ▼
out/hum.wav · out/hum.mp3   always playable, "real" one note at a time

The club cut #

bin/club.mjs evolves the same melody into a ~2:20 club mix at 128 BPM (intro → break → build → drop ×2 → outro). All pitched voices are harmonized sine stacks (no saws), every event gets a raised-cosine envelope (no clicks), the master is peak-normalized with no clipping stage, and the mix is spatialized Special-Sign style: per-voice equal-power pan with drifting azimuth, a slow whole-room rotation, and a mono-safe L=−R wet return. Voice takes land in the breakdowns and the second drop, same as the sound test. Output: out/hum-club.{wav,mp3}.

Commands #

node pop/hum/bin/render.mjs --play          # hear the tune (synth lead)
node pop/hum/bin/club.mjs --play            # the club cut (--bpm to retempo)
node pop/bin/rfa.mjs --track hum            # sing it — the wizard walks you
node pop/bin/rfa.mjs --track hum --status   # punch-list: notes sung / missing
node pop/bin/rfa.mjs --track hum --only 6-0 # re-sing one note

After the wizard finishes it offers to recompile + play the track back. A Slab menubar item triggers the same wizard hands-free.