← All modules

@maru shared this instrument so you can build on it and use it in your DAW.

AvailableInstrument

Oscillo

A synth controlled through a visual tuning display.

About

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.

Controls

  • Osc 1: waveform (sine, triangle, saw or square), octave, detune in cents and level. Sine draws the cleanest figures; the other waves add harmonics that weave the trace. Any detune makes the figure rotate.
  • Osc 2: on or off, waveform, Interval from −12 to +12 semitones, detune and level. A few cents of detune gives the classic slowly drifting figure.
  • LFO: waveform, rate and depth, aimed at pitch (vibrato, up to ±60 cents), level (tremolo) or pan (a stereo sweep). The mod wheel controls LFO depth.
  • Attack and Release fade each note in and out.
  • Key sets the root of the just scale, C by default. System switches between just and equal temperament.
  • Scope Phase, Scope Trail and Scope Glow change only the picture, not the sound.
  • Level sets the output.

Oscillo plays eight voices by default, with Monophonic and Mono Legato modes, note priority and up to two seconds of portamento. It responds to MPE controllers.

Getting started

Play from a keyboard or MIDI and start with Pure Fifth, the still 3:2 figure the instrument is built around. Golden Third is 5:4 with a touch of saw, Octave Bloom a slow swell on the simplest figure, Tritone Web a deliberately busy one, and Unison Drift the classic slow rotation. Deep Siren is deep vibrato on a low fifth. Cathedral Fourth uses equal temperament, so you can compare it with the just presets by eye and by ear.

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.

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.