scope

scope · utilities

2-channel passthrough oscilloscope. Inputs flow unchanged to outputs while an AnalyserNode samples for display.

A two-channel oscilloscope for SEEING your signals — it passes audio straight through untouched while drawing the waveform on its own screen, so you can patch it inline as a probe without altering the sound. Each channel has its own vertical SCALE, Y OFFSET, and RANGE mode (AUDIO plots ±1.0 full-height, CV plots ±5 V full-height — both bipolar; CV just divides by five so a pitch sweep fits), and a shared TIME knob sets how wide a window of the waveform fills the screen. An XY mode plots channel 1 against channel 2 (Lissajous figures, stereo phase) instead of two stacked traces, and an INTENSITY knob adds phosphor-style persistence from a single moving dot up to a glowing trail. Because it visualizes anything, the signal inputs also accept CV, pitch, and gate cables (not just audio). Every knob has a matching CV input, and the whole trace is also exported as a video output you can patch into the video domain. Display-only — none of the controls touch the audio path.

the faceplate

scopech1audioch2audiotimeMscvch1Scalecvch1Offsetcvch1Rangecvch2Scalecvch2Offsetcvch2Rangecvmodecvintensitycvch1_outaudioch2_outaudiooutmono-videoaudiocvgatepitch
11 inputs · 3 outputs · 9 params

inputs

idcablewhat it does
ch1audioChannel-1 probe: the signal drawn on the upper trace (or the X axis in XY mode), and passed through cleanly to CH1 OUT. Typed audio but also accepts CV, pitch, and gate so you can scope LFOs, envelopes, pitch CV, and gates.
audio signal; also accepts: control voltage (CV), V/oct pitch CV, gate / trigger
ch2audioChannel-2 probe: the lower trace (or the Y axis in XY mode), passed through to CH2 OUT. Also accepts CV/pitch/gate.
audio signal; also accepts: control voltage (CV), V/oct pitch CV, gate / trigger
timeMscvCV that modulates the TIME timebase knob — sweep how much of the waveform fits on screen.
control voltage (CV); modulates timeMs (multiplicative ≈ octaves — ±1 CV spans the param’s log range)
ch1ScalecvCV that modulates channel 1's vertical SCALE — zoom the trace's amplitude in or out.
control voltage (CV); modulates ch1Scale (multiplicative ≈ octaves — ±1 CV spans the param’s log range)
ch1OffsetcvCV that modulates channel 1's Y OFFSET — slide the trace up or down on screen.
control voltage (CV); modulates ch1Offset (additive offset — ±1 CV sweeps the full range, centered on the knob)
ch1RangecvCV that modulates channel 1's RANGE mode (≥ 0.5 switches the display convention from AUDIO ±1.0 to CV ±5 V).
control voltage (CV); modulates ch1Range (integer buckets — CV selects a discrete step)
ch2ScalecvCV that modulates channel 2's vertical SCALE.
control voltage (CV); modulates ch2Scale (multiplicative ≈ octaves — ±1 CV spans the param’s log range)
ch2OffsetcvCV that modulates channel 2's Y OFFSET.
control voltage (CV); modulates ch2Offset (additive offset — ±1 CV sweeps the full range, centered on the knob)
ch2RangecvCV that modulates channel 2's RANGE mode.
control voltage (CV); modulates ch2Range (integer buckets — CV selects a discrete step)
modecvCV that toggles the display MODE (≥ 0.5 switches from SPLIT into the XY plot) — e.g. a gate can flip the scope into XY view.
control voltage (CV); modulates mode (integer buckets — CV selects a discrete step)
intensitycvCV that modulates the beam INTENSITY / persistence.
control voltage (CV); modulates intensity (additive offset — ±1 CV sweeps the full range, centered on the knob)

outputs

idcablewhat it does
ch1_outaudioClean passthrough of the channel-1 input — the scope adds no processing, so you can chain it inline.
audio signal
ch2_outaudioClean passthrough of the channel-2 input.
audio signal
outmono-videoA video output carrying the same waveform image the on-card screen shows — patch it into the video domain (OUTPUT, a video mixer) to put the trace on screen.
mono video stream

params

idlabelrangedefaultcurve
timeMsTime1..200ms20log
ch1ScaleCh1 Sc0.1..101log
ch1OffsetCh1 Y-1..10linear
ch1RangeCh1 R0..10discrete
ch2ScaleCh2 Sc0.1..101log
ch2OffsetCh2 Y-1..10linear
ch2RangeCh2 R0..10discrete
modeMode0..10discrete
intensityInten0..10.5linear

controls

controlwhat it does
Ch1 YChannel-1 vertical position (-1 to +1, default 0): nudges the trace up or down so two channels don't overlap.
Ch1 RChannel-1 display range — the volts-per-division the trace is plotted against. AUDIO (0) fills the channel's half-height at ±1.0, the Web Audio sample convention; CV (1) fills the same half-height at ±5 V, the Eurorack convention, so a multi-octave pitch CV sweep is readable without re-zooming. BOTH settings are bipolar — CV divides by five and keeps the sign, it does not rectify or shift the trace. Display-only; the SCALE fader still multiplies on top.
Ch1 ScChannel-1 vertical zoom (0.1× to 10×, log, default 1): magnifies a quiet signal or shrinks a loud one to fit the screen.
Ch2 YChannel-2 vertical position (-1 to +1, default 0).
Ch2 RChannel-2 display range: AUDIO (0) = ±1.0 fills the half-height, CV (1) = ±5 V does. Both bipolar, same as channel 1.
Ch2 ScChannel-2 vertical zoom (0.1× to 10×, log, default 1).
IntenPhosphor beam persistence (0 to 1, default 0.5): at 0 the trace is a single moving dot, at 0.5 a full-brightness single-screen trace, toward 1 a ~2-screen glowing persistence trail. Visual feel only.
ModeDisplay mode: SPLIT (0) draws two stacked time-domain traces sharing one time axis, XY (1) plots channel 1 against channel 2 — Lissajous figures and stereo phase. In SPLIT the horizontal axis is TIME and the TIME knob scales it; in XY the horizontal axis IS channel 1, and TIME only selects how many samples are plotted.
TimeThe time window drawn across the screen width (1 to 200 ms, log, default 20): smaller values zoom in on a few cycles, larger values show a longer slice. The TIME CV input modulates this.

source

scope.ts on GitHub.

Generated from packages/web/src/lib/{audio,video}/module-registry.ts · repo