Overview
Producers know what they want long before they can name the parameter for it. HumControl makes the voice the handle: you hum the key and the feel you hear in your head, and the music moves to meet it. Sliders stay, but as the fine control, not the way in.
Hum, and your pitch draws as you sing. Stop, and the loop takes your note as its new root at the next bar line and your rhythm as its tempo. Then each part (bass, chords, melody, drums) has its own row in the matrix: gain, pitch, brightness, drive.
Play it
Hum a note, a few times, then stop.
Lost, then rebuilt
The first HumControl was built at the MIT Media Lab on a fine-tuned AudioLDM, with humming used to segment a track into its parts. The model was lost in a laptop wipe. Rebuilding it made the point clearer: the value was never the weights, it was the interaction. So the rebuild starts model-free, runs anywhere, and treats generative models as a backend to plug in, not the product.
Redesign
System
How it works
Everything runs in the browser, with no server. The loop is synthesized part by part, so each part is a true stem rather than a separation guess. Pitch is tracked with YIN on every animation frame; the median note moves the loop’s root to your pitch class, and the gaps between your hummed notes set the tempo. The matrix mirrors the Python version’s DSP (gain, a brightness shelf and low-pass, tanh drive), and every change is heard within about 120 ms. No render button: latency is part of the design.
States
Design decisions
One gesture. The hum is the only big target on the screen; everything else is fine control. A key change lands on the next bar line, not mid-phrase, so steering never sounds like a glitch, and the loop ducks while you hum so the mic hears you, not the speakers.
Controls drawn like hardware. A matrix cell is a fader you drag vertically, with Shift for fine moves, scroll, arrow keys and a double-click to reset. Its fill grows from the zero line, so a cut and a boost read differently at a glance, and the value sits on a dark backing so the fill never strikes through the number.
Nothing silent. Listening, heard, nothing heard and microphone blocked each say what happened in one line. Every control is a real slider or toggle to a screen reader, and every action has a key: Space, H, A, 1–4.
Component
Next
Real songs, separated into stems once and cached. A hummed melody, not just a key, mapped onto a part note by note. Generative restyle per part with current audio models, gated behind a GPU so the free version never breaks. And an evaluation set of hum-to-intended-change pairs, scored for pitch and tempo error with a latency budget, so “it understood me” becomes a number.