SERVICE MANUAL · DOC 13-SM-01 REV A · RETURN TO UNIT

OSC-13 — HOW IT'S MADE

CONCEPT / SIGNAL PATH / DRAWN INSTRUMENTATION / PASSES

Concept

OSCILLATE is a synthesizer you can actually play, not a picture of one. The reference point is a 1984 polysynth parked somewhere with a Miami dusk behind it: brushed faceplate, silkscreen type, and a horizon that never stops scrolling. Every sound is computed live in the browser; every pixel — sun, grid, scope trace, knurled knobs — is drawn by hand. No samples, no images, no libraries.

Signal path

Each voice is two OscillatorNodes detuned in opposite directions (±0–45 cents, the classic ensemble thickener) through a per-voice GainNode envelope built from linearRampToValueAtTime and setTargetAtTime — exponential approach curves, so releases decay like hardware, not like a fader. Voices sum into one resonant BiquadFilterNode lowpass, then split dry/wet into a DelayNode with a feedback loop that passes through a second lowpass — that darkening regeneration is what makes it read as a bucket-brigade delay rather than a digital echo. A DynamicsCompressorNode keeps thirteen enthusiastic keys from clipping.

The panel demos itself

The arpeggiator is a lookahead scheduler: a 25 ms setInterval books notes ~120 ms ahead against AudioContext.currentTime, so timing stays sample-accurate even when the main thread hiccups. Key lights are synced back to the UI with matching timeouts. Power-on resumes the context inside the click gesture, fires a synthesized thunk, and boots the LED ladder — which then repurposes itself as a VU meter driven by the RMS of the analyser's time-domain buffer.

Drawn instrumentation

One AnalyserNode feeds two displays. The hero oscilloscope pulls getByteTimeDomainData and hunts a rising zero-crossing before plotting, so the trace holds still like a triggered scope instead of swimming. The spectrum field maps getByteFrequencyData through a power curve for a log-ish frequency axis. The sunset is a canvas: the slatted sun is composited once per resize with destination-out stripes, and the grid floor is straight perspective math — verticals to a vanishing point, horizontals eased by z2.6 as they scroll toward you. Knobs are generated SVG with a rotating indicator group and a value arc animated by stroke-dasharray; dragging is vertical pixels mapped to parameter fractions, logarithmic where ears expect it.

Passes

Pass one scaffolded faceplate, voice architecture and keyboard, then re-balanced module density and gave the dead space below the panel a job: an etched signal-path strip. Pass two added choreography — a staggered entrance, a six-beat power-on self-test that lights every module and key in sequence, and ambient life (sheen, meteors) so a screen recording never sits still. Pass three was a service pass: silkscreen and spec-scale type pushed past 4.5:1 contrast, knobs gained aria-orientation, and the oscilloscope now swells and glows with the analyser's own RMS level, so the trace visibly performs what you play instead of just tracing it. prefers-reduced-motion freezes the horizon and star twinkle into a still composition while the instrument stays fully playable — motion becomes something you request with your hands.