@maruOscillo
AvailableInstrument

Oscillo

A synth controlled through a visual tuning display.

@maru shared this instrument so you can play it in your DAW, remix it or put it on your site.

What it does

A two-oscillator synth tuned in just intonation, with a live oscilloscope at its centre. Pure intervals draw figures that stand still; tempered ones slowly turn. The picture is the tuning.

The idea

Feed an oscilloscope two tones and the figure only stands still when their frequencies are in a small-integer ratio. An equal-tempered fifth is not quite 3:2, so it draws a figure that slowly writhes. Just intonation is what makes the picture calm down, and that is why Oscillo is tuned the way it is.

So the second oscillator is not a second note: it is an interval. Set it to +7 semitones and it sits at exactly 3:2 above whatever you play, on every key; +4 is 5:4 and +12 is 2:1. Switch System to equal temperament to hear, and watch, what tempering changes.

Guide and controls

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.

What would you make with Oscillo?

Describe what you want to make. Build it with the Studio agent.

Part of Voice to synth, MPE Slide

Goes well with.

Prototype

A compact subtractive synth for learning the signal path.

Prototype

Modelled bronze instruments with flexible tuning.

Prototype

Two oscillator banks with continuous frame morphing.