← All modules
AvailableInstrument

Oscillo

A synth controlled through a visual tuning display.

About

Oscillo starts from a fact about pictures rather than sound: feed an oscilloscope two tones and the figure only stands still when their frequencies are in a small-integer ratio. Equal temperament never is, its fifth is 2^(7/12), not 3/2, so a tempered interval draws a figure that slowly writhes. Just intonation is what makes the picture calm down, and that is why this synth is tuned the way it is.

OSC 2 is not a second note; it is an interval. Its pitch is derived from OSC 1 through the just ratio table, so +7 semitones means exactly 3:2 above whatever you play, on every key. The tuning key (C by default) anchors the scale itself, and a system toggle lets you switch the whole instrument to equal temperament to hear, and watch, the difference.

Oscillo's audible voice is one compiled persistent product: the same restricted-TypeScript implementation is used by plugin export and the website's optimized browser engine. MIDI and parameters enter through the SDK host contract; stereo output feeds the normal analyser and Lissajous surface.

The older browser-only drive, chorus, delay and reverb sidebar is intentionally not exposed in compiled mode: those stages were never part of the protected Oscillo kernel. They return only when their exact reusable graph factories can be composed without mixing browser DSP into this product.

Presets

Start from a named sound, then adjust the instrument to make it yours.

InitPure FifthGolden ThirdOctave BloomTritone WebUnison DriftDeep SirenCathedral Fourth

Popular presets for Oscillo

Open a sound shared by the community, then play it in this module.

Signal graph.

Experimental

A sketch of the signal path, in the order of the parameter groups.

How it works.

Every note resolves through the shared tuning library (lib/tuning.ts). In just mode a note's frequency is the key's equal-tempered anchor times the just ratio for its distance from the key, so intervals against the key are exact fractions like 3/2 and 5/4 rather than powers of 2^(1/12). OSC 2 goes one step further: its frequency is OSC 1's times the ratio for the configured interval, which guarantees the pair is pure on every key of the keyboard.

The scope is the module's center on purpose. It reads the engine's post-master analyser and draws in phase-shift Lissajous mode: X is the signal, Y is the same signal offset by a fraction of the analysis window. Two tones in ratio p:q trace a closed p:q figure that stands still; detune either oscillator by a few cents and the figure rotates at exactly the beat rate. Nothing about the drawing is decorative, it is the tuning, plotted.

The persistent host has 0 audio-input channels; note and control events arrive through the SDK at sample offsets, and its two planar outputs feed the website analyser and native host buses without a browser DSP stage in between.

One LFO runs free from module load, retriggering it per note would make it a second envelope. It has a single depth control and a single target selector; switching target moves the depth between three permanently-connected modulation stages (voice detune in cents, a tremolo gain, the stereo panner), so the switch itself is click-free.

Part of these racks.

A rack is a fixed rig: several modules already wired together, playable as one instrument. This module is one of the pieces.

  • MPE Slide

    PolySlide's per-note pitch curves drive Oscillo over one rack MIDI cable.

    Plays PolySlide's unison-drift preset: three voices on one pitch, sliding apart.

    MPE — per-note expression

    2 modules · polyslide → oscillo

Goes well with.

Preview

OSC Mini

A compact subtractive synth for learning the signal path.

No build recorded
Preview

Gamelan

Modelled bronze instruments with flexible tuning.

Preview

Wavetable

Two oscillator banks with continuous frame morphing.