Or drop a file anywhere on the page. It plays as it draws — the analyser sits between the player and the speakers, so what is on screen is what you are hearing. Nothing is uploaded; the file is decoded here.
Everything a converter does takes
time: what you hear of the track left this page a moment ago, and what the
microphone heard of your answer arrives a moment late. Alignment
delays the track to meet the input — the only direction that works,
since the input cannot be made earlier. Start from the suggestion and trim
by eye until a note you play lands on the beat it belongs to.
Your playing is drawn and never monitored: the track is already going into
the same microphone, and sending that back out is a feedback loop. The two
clocks also drift — the converter counts samples at its own rate and
the page counts at its own — so over a long session the alignment
walks and wants nudging again. That is a known limit rather than something
handled.
A rack is whatever you tick plus whatever
files you add, and the two boxes are the parts that are not files. Files go in
beside the ones already there; the × on a lane takes it out again. The
generator and the live input together, with no track between
them, is what you want for playing along with something the page is making
— and X–Y can pair either against either.
Each is one lane, which for the generator means its left channel: a
lane is one signal and the generator makes two, so its own figure is not
available while it is a lane, and a note sets its pitch without starting or
stopping it. Hear the generator sends that left channel to the rack's
mix. The input is never heard, which is the microphone rule unchanged.
The count beside Add files is how many lanes your choice comes to, out of
six; the two boxes take their places before any file does.
Add files, or drop them on the page, and each becomes a lane. They share one clock and one timebase — lanes on different timebases cannot be compared, which is the only reason to stack them. Solo and mute are the monitor mix; show is the screen. Nothing is uploaded.
Into bands splits what you are playing across four crossovers, so one instrument down one input gets four lanes and an X–Y figure that moves when you move. Solo and mute choose what the screen draws.
Two held notes are the two channels, so the interval under your hands is the figure on the screen: a fifth draws 2:3 and stands still, a third walks. Dyad reads the two most recent notes and puts the lower on X; mono takes the newest note as the pitch and leaves the interval to the menu. A note is also the one pitch on this page that is not estimated, which is why the lag, the tuner and the timebase can be told to take it as read. The port and the learned controllers are under Settings → MIDI.
A microphone is never sent to the speakers: what comes out of them
goes back into it, and that is a feedback loop. A line input has no
ear — a keyboard does not hear the room — so it may be monitored,
and that is a claim you are making about what is plugged in rather than
something the browser can tell. Get it wrong with a microphone selected and
the loop is real, so wear headphones the first time.
What you hear that way has been round the converter twice and through the
page's own buffers: the figure given is the browser's own, which is the
output side only and a floor rather than the whole trip. Tens of
milliseconds is normal and a keyboard player will feel it. The setup that
does not suffer it is hearing the instrument directly and letting this page
only look. A band split is not monitored at all.
Setting up a Nord Electro: it connects twice. USB carries MIDI only, and the left
and right line outs go to a stereo line input — that is the organ itself,
and the rotary, chorus and vibrato are genuinely stereo, so X–Y draws a
moving figure rather than the diagonal a mono microphone gives. On the keyboard,
System Menu 12 → Send & Receive, or no panel control transmits at
all; Local on to hear the organ while the generator draws under your
hands, off to play the generator alone. Move a drawbar, a pedal or the swell and
it learns as a source you can put on any control — CC 11 is the swell pedal
and exists only if one is plugged into the control pedal jack.
Web MIDI needs a secure page, and inside an iframe it needs the embedding page to
grant it. The published artifact is such an iframe and does not, so the keyboard
works on the GitHub Pages copy and not there. Safari has no Web MIDI at all.
Layer B has its own shape, level and envelope, and its own drawbars and morph, and nothing else: its pitches are the keys it is given, and the kind, the modulation and the heard switch are the generator's. Edit A in the keyboard section puts the panel back.
A Lissajous figure closes when the two frequencies are a ratio of small whole numbers — which is what a consonant interval is. In just tuning a fifth is exactly 2:3 and stands still; in equal it is slightly off, and the figure turns at the rate the interval beats. At a unison the phase decides it: 0° a diagonal, 90° a circle.
A closed path written into the two channels: what the pair of them traces in X–Y is the picture. Switch the display to X–Y to see it. Slow the trace rate right down and you watch the beam draw it.
A solid, turned and flattened onto the two channels. The beam draws one unbroken line, so edges it cannot reach without lifting are retraced rather than jumped — a doubled line is the same pixels, a jump would be a permanent chord across the middle. The octahedron is the one that needs no retracing at all.
The envelope only does anything while the keyboard is driving the generator — with nothing plugged in the amplitude is the slider and nothing else, exactly as it was. A second note while one is still held changes the pitch without starting the envelope again, which is what makes a run of notes a phrase rather than a row of attacks; glide slides between them instead of stepping. The envelope is also a source: send Envelope to the rotation or the ratio and the figure opens as the note does.
Two pendulums an axis, running down. It is the Victorian drawing machine, and it wants X–Y with persistence set to infinite. A tiny detune is what turns a closed figure into a spirograph.
Choose a source to see what it is and where it goes. Press the dots on a control, or drag a chip onto one.
One key and one tempo for the page. Quantise takes the
generator's pitch, after everything patched onto it, to the nearest note of the key:
put a slow oscillator or the photocell on the frequency and it plays a melody in the
key instead of a siren. A key you play that is outside the scale is moved too, which
is what a quantiser does. It waits a tenth of a semitone past half-way before it
steps, and never steps faster than forty times a second, so a pitch resting between
two notes does not flicker. Glide slides between the steps. Chromatic, the
default, quantises to the nearest semitone. The harmonograph and the figures are not
quantised: a pendulum's two hertz is not a note.
An oscillator's Sync, on the Sources tab, locks its rate to the tempo in note
values. Tap sets the tempo from your taps and starts the locked oscillators on
the last one. A keyboard or a sequencer sending MIDI clock sets the tempo while it
runs, and its Start restarts them.
Bar is where the page is in the music, counted in fours: the score reads its
columns from it, so its first column is always a downbeat. Stop holds it and
silences the score; Start puts it back to the one and restarts the locked
oscillators with it. A tap is the one while it runs. A device's Start, Stop and
Continue do the same, on its first tick, and under its clock the bar counts its
ticks. The arpeggiator follows your hands, not the bar.
A line across each axis of the picture, drawn on the X–Y screen, and a plucked note each time the beam crosses one going up. The X line is crossed once a cycle of the X channel wherever the figure is, and the Y line once a cycle of Y, so the interval on the screen is the rhythm you hear: a 3:2 figure plays three against two, and a tempered fifth drifts in and out of step. It is a rhythm only when the drawing is slow — the harmonograph, or a figure traced a few times a second. At audio pitch the notes are held to twenty-five a second and buzz. The notes are heard, not drawn, and only with Hear the generator on; the count beside the switch says the lines are firing either way. The generator's beam only: a microphone's figure has no lines yet.
Saved setups live in this browser and nowhere else. A setup code is the whole configuration as text — copy it, send it, paste it back.
AC blocks what is not moving, so a converter with a
DC offset does not push the trace off the screen. It is a one-pole high pass,
and its corner is where it starts to take things away: low and it only
removes a slow drift, high and it thins the bottom of the signal as well. Ten
hertz is where a bench scope's AC coupling usually sits. The same corner
reaches the speakers when they are on the shaped side, from one set of
numbers — the screen and the speakers cannot disagree about what AC
coupling is.
Full scale is the level that reaches the top of the graticule —
drop it to open up a quiet signal.
Turns the figure on the screen. Worth little by hand and a
great deal pointed at something: send Level to it and the picture turns
as you play, which is the difference between a shape that sits there and one
that answers.
On a stereo pair it turns the signal: the lanes are rotated before the
trigger sees them, so Y–T, the figure and — on the shaped side —
the speakers are all the same rotation. On a rack of stems, a band split or the
lag lane it only turns the figure, because those are not a stereo image and
mixing two stems together is not what the knob says it does.
Numbers read is what the cells along the bottom, the tuner and the
correlation bar are about. Signal is what arrived and is the default, so
turning the picture leaves every reading exactly where it was — the same
arithmetic on the same samples, not a close copy. Turned points them at
what is on the screen, and the readout says post-rotation so a number is
never quietly about something other than its label. The level meter and the
Clipping verdict stay on the signal either way: one is a modulation
source and would feed back into the picture, and the other is a claim about the
input.
Grab takes one cycle of what is playing: the trigger lane, or in a rack whose trigger is on the generator, the first other lane with sound in it. Hold the same note on the keyboard and the period is the note's, exact; without one it is measured, and a few cents out is a cycle that does not quite close. The reading beside it says which, and its tooltip says the rest.
Nine sine partials at the footages of a tonewheel organ, drawn out from nought to eight. 8′ is the note you play; 16′ is an octave under it and 5⅓′ a fifth above that, so a registration with either out has a cycle twice the note's. Each step is about three decibels, as on the organ. However many bars are out the wave stays inside the amplitude: one bar at eight is a full-scale sine, and pulling out more changes the colour rather than the level. A partial above half the sample rate is left out rather than folded back. Every bar is a destination, so a drawbar on your keyboard, once it has moved, can be put on the same bar here. With a layer B, each layer has its own registration.
A second oscillator inside the voice, at Ratio times the note
— the same kind of number as the interval between X and Y, and it is not a
coincidence: a 3:2 modulator gives a harmonic sound exactly when a 3:2 figure closes.
FM is how far it swings the voice's phase, from pure at nought to bright and
then clangorous; above about ten on a sharp shape the top folds back. Ring
multiplies the voice by it instead, which removes the note and leaves the sum and the
difference. Sync runs the shape faster than the note and restarts it at every
note cycle, so the pitch stays and the tone tears; it is for the saw and the square.
Sub mixes in a square or a sine an octave or two down. Unison stacks
detuned copies, and the figure thickens and shimmers in place: the copies are not
spread across left and right, because in X–Y that would smear one axis into the
other. Behind the ⋯, the spread and the sub's octave and shape.
With a split or a layer, this is the layer being edited, like the shape. While
sync is on, the voice is one sample late.
Distortion inside the voice, before its envelope, so a note keeps its character as it fades. Drive pushes the wave into a soft ceiling: a sine rounds towards a square, and the reading is how much the quiet parts are lifted. Fold bends the wave back on itself each time it would pass full scale — on Y–T the peaks fold into the wave, in X–Y the figure grows petals, and it can take a source, so an LFO opens and closes them. Both are worked at twice the rate, so what they add above half the rate is filtered off; behind the ⋯, four times is cleaner for a hard drive on a high note, and costs twice as much for every voice, so it is for a few voices rather than a chord on two layers, and a chord too big for it is worked at twice anyway, which the readout says. Either way a shaped voice is 0.7 ms later. Crush and Rate are the opposite on purpose: fewer levels and fewer samples, the steps and the folding-back that a bitcrusher is bought for. Each layer has its own.
A filter in every note, after its shaping and before its level, so a low note and a high note can be equally bright and each note opens as it starts. It is the instrument's filter; the one called Filter is for looking, on the whole trace. Key track is how far the cutoff follows the note, all the way at a hundred, from middle C. Envelope is how many octaves its own envelope moves the cutoff, up or down; behind the ⋯ are that envelope's four, which work like the amplifier's and follow the keys the same way. The cutoff can take a source. On the dyad the two channels are filtered alike, each following its own pitch.
Things done to the picture of a stereo pair, the generator's or
your input's, that turn out to be things done to its sound. Mirror folds the figure onto one half of
itself, and to the ear it is full-wave rectification, the octave-up pedal: every
harmonic even, the note an octave higher. The folded wave sits above zero, and
the speakers get that offset unless AC coupling, under Vertical, takes it off.
Radial clip holds the figure inside a circle of the radius and keeps every
point's direction, so it is a clipper that does not bend the stereo image: loud
parts are rounded off towards the circle, and quiet ones are nearly untouched.
Both work on the picture and on what you hear, and in poly on the nearly-mono
chord that you hear as well as on the pair that is drawn. With two layers,
Layers gives B a plane and a Turn of its own, or keeps one for both.
Twist turns each point by an angle in proportion to how far it is from the
middle: the loud parts swirl and the quiet middle stays still, a stereo rotation
that depends on level. Kaleidoscope folds every point's angle into one wedge
either side of the X axis, keeping its length, so the figure becomes its own
reflections. Fold at the radius reflects the figure back in each time it
reaches the circle, a stereo-linked wavefolder. Snap puts both channels on a
grid, a bitcrusher on the ear and pixels on the screen. Behind this section's
⋯, Scale X and Scale Y are balance and width, and Shear
feeds some of Y into X; those three are exact, and add no delay.
They run at twice the rate by default so that what they add above half the sample
rate is filtered off rather than folded back as notes that are not in the key.
Four times is cleaner still and costs twice as much; once is the arithmetic on
its own. While any of the bending ones is on the pair is about 0.7 ms later, and
switching one on moves the picture by that much.
After the plane, on the generator's figure and on what you hear.
Echo is how loud the repeats are, and nought is off. In X–Y they are
ghost figures trailing the live one; with Ping-pong each repeat comes back on
the other channel, so the ghosts alternate between the figure and its reflection
across the diagonal. Sync sets the time in note values from the tempo, on
the Measure tab, and follows it. Feedback stops short of one, and nothing
can be patched onto it: feedback that a source could push towards one would be a
loop inside the loop. The longest time is two seconds.
Chorus is a copy of the pair a few milliseconds late, the lateness swinging
at Rate, one channel's with a sine and the other's with its cosine, so the
figure breathes and turns. Behind the ⋯, Depth is how far it swings,
Centre how late it sits, and Feedback makes it a flanger: short, and
fed back, it rings.
FM speeds and slows the trace with the input, Ride scales the figure by it, and Clock runs the generator at the input's pitch. A second generator is drawn beside the first and heard only in what it does to it.
A playhead crosses the screen at the tempo and plays what it passes: low on the screen is low in pitch, in the page's key, and the brightest points are the notes, the brightness how hard. Heard in the generator's voice; sent out too, if MIDI out has a port.
This shapes the trace, not the sound: a low pass rounds a square's corners toward a sine, a notch carves one harmonic out of the picture, and a resonant sweep draws its own ringing. It runs on the samples rather than in the audio graph, so it reaches the test tone as well — which is arithmetic and has no audio graph at all. Resonance is nought for gentle and a hundred for extreme; at nought a low pass is maximally flat. Resonance boosts at the corner, so a high setting can push the trace past full scale and the readout will say Clipping — which is true, and is why nothing quietly turns it down: a compressor on the screen would make the trace lie about the level. Drop Full scale under Vertical, or the amplitude.
The two switches are separate because they answer different
questions, and they straddle the same block: the filter, the
AC coupling and the X–Y rotation, in that order.
Screen shaped, speakers input is the block as an instrument for
looking. Both shaped is the ordinary sense. Screen input, speakers
shaped lets you watch what you are feeding it, and the readout says
screen on the input so a flat trace under a filtered sound is never a
mystery — and speakers on the input the other way round, because a
sweep on the graticule over a plain tone is the same confusion mirrored.
Neither is said when there is nothing switched on for them to differ about. Anything that reaches the speakers passes a limiter first, which is
not a taste decision: resonance is something a source can sweep, and a
resonant peak swept upward is a loud surprise in a pair of headphones.
The screen’s switch used to straddle the filter alone while the
speakers’ straddled all three, so Input meant one thing to the
eyes and another to the ears — on a page whose argument is that they
are the same block. The lag is the one thing still outside it, because
the speakers have no lag to bypass yet.
Shaped is the filter and the X–Y rotation, and
the rotation is the interesting one: turning a figure and rotating a stereo
image are the same 2×2 matrix, so the control that exists to make the
picture prettier is a real stereo operation and this is where you hear it.
Both are driven from one set of numbers — the screen and the speakers
cannot disagree about what a rotation is, and a test renders the graph and
checks it against the arithmetic.
Rotation is seen whether or not it is heard, and on a stereo pair it
reaches the Y–T lanes and the trigger as well as the figure — it is
a transform on the signal, so it is in the block before anything looks at it.
What it does not reach is the numbers: those read Signal by default,
under Display, and stay about what arrived. The level meter and the
Clipping verdict stay there whatever that switch says. Turning the
stereo image can put up to 41% more into one channel than either started with,
which the limiter and the clamp are still the last things before.
Position is how much of the window sits before the edge — the run-up to the event rather than only what followed it. Holdoff rejects an edge that has another one close behind it, which is what settles a waveform crossing the level more than once a cycle.
On a real scope the spot's brightness is how long it dwelt, so it goes as one over its speed — bright where the trace turns around, faint through the fast sweeps. Off for the waveform by default: dimming the steep edge of a square wave fights the job Y–T is for.
A reference is the capture on screen, frozen and kept behind the live one so you can see what changed.
Two time cursors and two amplitude cursors, with the difference between each pair. Drag them on the screen; Δt is also given as a frequency.
The goniometer plots left against right turned 45°: a vertical trace is mono, a circle is wide, and a horizontal one means the two channels are fighting. Turn them all off and the trace takes the whole width.