wavesculpt

wavesculpt · sources

Hybrid 4-oscillator 3D video synth. Four wavetable "wall oscillators" sit on the faces of a 3D unit box, each emitting a colored wave ribbon (RED / GREEN / BLUE / ALPHA) that points into the box; a single user camera renders the scene, positioned via an XY pad (X/Y) and a HEIGHT slider (Z). Audio out is the sum of the four oscillators, each weighted by its per-osc ADSR and by camera↔source distance — the distance gain is the single source of truth shared by audio and visuals, so "closer = louder = bigger ribbon" stays consistent across both domains. Per oscillator: tune/fine, wavetable morph, stereo spread, wavefolder, thickness, and ADSR; camera zoom + Y-rotation shape the view. All four oscillators run in one worklet for a tight audio-rate path. Six cross-domain VIDEO WALL inputs (wall1–wall6) texture an upstream video module onto the six faces of the room (FRONT/BACK/LEFT/RIGHT/FLOOR/CEILING) seen from inside; each face has a TRANSPARENCY knob (0–100%) blending the wall over the scene and a DISTORT knob (0–1) that morphs the flat wall into a convex dome we look up into. Patch the video output back into a wall input for recursive video feedback.

A hybrid 4-oscillator 3D video synth — it makes sound AND a live 3D image from the same engine. A unit box holds four 'wall oscillators' (RED / GREEN / BLUE / ALPHA), each emitting a wave ribbon along a vector into the box. One user camera renders the scene; you fly it with an XY pad (X/Y), a HEIGHT slider (Z), ZOOM, and ROTATION. Closer = bigger ribbons AND louder — the same distance number drives both visual size and audio gain, so 'lean in' is consistently louder. Each oscillator is a full wavetable voice: pick its table (preset / factory / your own .wav), set TUNE/FINE/MORPH/SPREAD/FOLD, and shape it with a per-osc ADSR gated by its GATE input and pitched by its PITCH input, plus a pre-mix per-osc FX slot (reverb/delay). The audio output is the summed stereo mix (L/R), with four per-oscillator AUDIO taps (out_red/grn/blu/alp) for routing one voice out independently. The render goes out video_out (a mono-video carrying a light, always-on CRT pass — scanlines, phosphor mask, a little bloom and grain — with no knobs of its own; patch it through BENTBOX for the adjustable, CV-able CRT controls, bearing in mind that stacks two CRT passes) and can be viewed as 3D ribbons, a birds-eye floorplan, or a spectrograph (VIEW). Six VIDEO WALL inputs texture the faces of the room — self-patch video_out → a wall for recursive video feedback, and LUMINOSITY→BANDPASS lets a wall's brightness shape the audio. UNISON/DETUNE and CHORD MODE turn the four voices into a stacked or harmonized instrument; everything is CV-modulatable.

the faceplate

wavesculptgate1gatepitch_cv1cvgate2gatepitch_cv2cvgate3gatepitch_cv3cvgate4gatepitch_cv4cvmorph1_cvcvmorph2_cvcvmorph3_cvcvmorph4_cvcvpos_xcvpos_ycvpos_zcvzoomcvrotcvscalecvwigglecvalpha_invideowall1videowall2videowall3videowall4videowall5videowall6videoLaudioRaudioout_redaudioout_grnaudioout_bluaudioout_alpaudiovideo_outmono-videoaudiocvgatepitch
26 inputs · 7 outputs · 0 params

inputs

idcablewhat it does
gate1gateOscillator 1 (RED) GATE — its per-osc amp ADSR holds open WHILE this gate is high and releases on the falling edge, so a held gate sustains RED's ribbon/voice.
gate / trigger; gate — acts while the level is high (reacts to both edges)
pitch_cv1cvOscillator 1 (RED) V/oct PITCH input — sets that oscillator's pitch (summed with TUNE1 + FINE1).
control voltage (CV)
gate2gateOscillator 2 (GREEN) GATE — its per-osc amp ADSR holds open WHILE this gate is high and releases on the falling edge, so a held gate sustains GREEN's ribbon/voice.
gate / trigger; gate — acts while the level is high (reacts to both edges)
pitch_cv2cvOscillator 2 (GREEN) V/oct PITCH input — sets that oscillator's pitch (summed with TUNE2 + FINE2).
control voltage (CV)
gate3gateOscillator 3 (BLUE) GATE — its per-osc amp ADSR holds open WHILE this gate is high and releases on the falling edge, so a held gate sustains BLUE's ribbon/voice.
gate / trigger; gate — acts while the level is high (reacts to both edges)
pitch_cv3cvOscillator 3 (BLUE) V/oct PITCH input — sets that oscillator's pitch (summed with TUNE3 + FINE3).
control voltage (CV)
gate4gateOscillator 4 (ALPHA) GATE — its per-osc amp ADSR holds open WHILE this gate is high and releases on the falling edge, so a held gate sustains ALPHA's ribbon/voice.
gate / trigger; gate — acts while the level is high (reacts to both edges)
pitch_cv4cvOscillator 4 (ALPHA) V/oct PITCH input — sets that oscillator's pitch (summed with TUNE4 + FINE4).
control voltage (CV)
morph1_cvcvCV that offsets oscillator 1's MORPH (wavetable frame position), sweeping RED's timbre.
control voltage (CV); modulates morph1 (additive offset — ±1 CV sweeps the full range, centered on the knob)
morph2_cvcvCV that offsets oscillator 2's MORPH (wavetable frame position), sweeping GREEN's timbre.
control voltage (CV); modulates morph2 (additive offset — ±1 CV sweeps the full range, centered on the knob)
morph3_cvcvCV that offsets oscillator 3's MORPH (wavetable frame position), sweeping BLUE's timbre.
control voltage (CV); modulates morph3 (additive offset — ±1 CV sweeps the full range, centered on the knob)
morph4_cvcvCV that offsets oscillator 4's MORPH (wavetable frame position), sweeping ALPHA's timbre.
control voltage (CV); modulates morph4 (additive offset — ±1 CV sweeps the full range, centered on the knob)
pos_xcvCV that offsets the camera X position (drives the XY pad horizontally).
control voltage (CV); modulates pos_x (additive offset — ±1 CV sweeps the full range, centered on the knob)
pos_ycvCV that offsets the camera Y position (drives the XY pad vertically).
control voltage (CV); modulates pos_y (additive offset — ±1 CV sweeps the full range, centered on the knob)
pos_zcvCV that offsets the camera Z position / HEIGHT (depth into the box).
control voltage (CV); modulates pos_z (additive offset — ±1 CV sweeps the full range, centered on the knob)
zoomcvCV that offsets the camera ZOOM (distance scalar) — closer = bigger ribbons AND louder (the distance gain is shared by audio + visual).
control voltage (CV); modulates zoom (additive offset — ±1 CV sweeps the full range, centered on the knob)
rotcvCV that offsets the camera ROTATION about the Y axis (visual only).
control voltage (CV); modulates rot (additive offset — ±1 CV sweeps the full range, centered on the knob)
scalecvCV that offsets the BLINK SCALE — the amplitude/zoom of the scope waveform render.
control voltage (CV); modulates scale (additive offset — ±1 CV sweeps the full range, centered on the knob)
wigglecvCV that offsets WIGGLE — the pitch-driven 3D rotation strength of each ribbon/scope/tube.
control voltage (CV); modulates wiggle (additive offset — ±1 CV sweeps the full range, centered on the knob)
alpha_invideoOptional VIDEO input blended as an alpha mask over the 3D render (a cross-domain video stream shaping transparency).
RGB video stream
wall1videoVIDEO input textured onto the FRONT (−Z) face of the 3D room (the camera is inside the box). Blended by WALL 1 α (transparency) and morphable flat→dome by WALL 1 DISTORT. Self-patching video_out → wall1 makes recursive video feedback.
RGB video stream
wall2videoVIDEO input textured onto the BACK (+Z) face of the 3D room (the camera is inside the box). Blended by WALL 2 α (transparency) and morphable flat→dome by WALL 2 DISTORT. Self-patching video_out → wall2 makes recursive video feedback.
RGB video stream
wall3videoVIDEO input textured onto the LEFT (−X) face of the 3D room (the camera is inside the box). Blended by WALL 3 α (transparency) and morphable flat→dome by WALL 3 DISTORT. Self-patching video_out → wall3 makes recursive video feedback.
RGB video stream
wall4videoVIDEO input textured onto the RIGHT (+X) face of the 3D room (the camera is inside the box). Blended by WALL 4 α (transparency) and morphable flat→dome by WALL 4 DISTORT. Self-patching video_out → wall4 makes recursive video feedback.
RGB video stream
wall5videoVIDEO input textured onto the FLOOR (−Y) face of the 3D room (the camera is inside the box). Blended by WALL 5 α (transparency) and morphable flat→dome by WALL 5 DISTORT. Self-patching video_out → wall5 makes recursive video feedback.
RGB video stream
wall6videoVIDEO input textured onto the CEILING (+Y) face of the 3D room (the camera is inside the box). Blended by WALL 6 α (transparency) and morphable flat→dome by WALL 6 DISTORT. Self-patching video_out → wall6 makes recursive video feedback.
RGB video stream

outputs

idcablewhat it does
LaudioLeft channel of the summed stereo audio mix — the four oscillators after per-osc env, distance gain, and pan, post MASTER GAIN.
audio signal
RaudioRight channel of the summed stereo audio mix (the partner of L).
audio signal
out_redaudioRED oscillator's individual AUDIO tap — that single voice post env/distance/pan (the exact node the visualizer reads). Patch it to route or process the RED voice independently of the L/R mix.
audio signal
out_grnaudioGREEN oscillator's individual AUDIO tap — that single voice post env/distance/pan, routable independently of the mix.
audio signal
out_bluaudioBLUE oscillator's individual AUDIO tap — that single voice post env/distance/pan, routable independently of the mix.
audio signal
out_alpaudioALPHA oscillator's individual AUDIO tap — that single voice post env/distance/pan, routable independently of the mix.
audio signal
video_outmono-videoThe 3D render as a mono-video output. It already carries WAVESCULPT's own light CRT pass — scanline darkening, a phosphor mask, a little bloom and grain — which is always on and has no knobs. Patch it into VIDEO OUT or any video module — or back into a WALL input for recursive feedback. Note that feeding it to BENTBOX STACKS TWO CRTs: the scanlines and phosphor mask get applied a second time, which is a legitimate look but a heavier one than BENTBOX alone. BENTBOX is where the adjustable CRT controls live (sync drift, hue, shimmer, feedback, wavefold, bloom, noise — all CV-able), so that chain is the intended way to dial the picture.
mono video stream

controls

controlwhat it does
A1Oscillator 1 (RED) envelope ATTACK (0.001..5 s, log) — rise time after its GATE opens.
A2Oscillator 2 (GREEN) envelope ATTACK (0.001..5 s, log) — rise time after its GATE opens.
A3Oscillator 3 (BLUE) envelope ATTACK (0.001..5 s, log) — rise time after its GATE opens.
A4Oscillator 4 (ALPHA) envelope ATTACK (0.001..5 s, log) — rise time after its GATE opens.
D1Oscillator 1 (RED) envelope DECAY (0.001..5 s, log) — fall from the attack peak to SUSTAIN1.
D2Oscillator 2 (GREEN) envelope DECAY (0.001..5 s, log) — fall from the attack peak to SUSTAIN2.
D3Oscillator 3 (BLUE) envelope DECAY (0.001..5 s, log) — fall from the attack peak to SUSTAIN3.
D4Oscillator 4 (ALPHA) envelope DECAY (0.001..5 s, log) — fall from the attack peak to SUSTAIN4.
R1Oscillator 1 (RED) envelope RELEASE (0.001..5 s, log) — fade after GATE1 falls.
R2Oscillator 2 (GREEN) envelope RELEASE (0.001..5 s, log) — fade after GATE2 falls.
R3Oscillator 3 (BLUE) envelope RELEASE (0.001..5 s, log) — fade after GATE3 falls.
R4Oscillator 4 (ALPHA) envelope RELEASE (0.001..5 s, log) — fade after GATE4 falls.
S1Oscillator 1 (RED) envelope SUSTAIN level (0..1) — held while GATE1 stays high.
S2Oscillator 2 (GREEN) envelope SUSTAIN level (0..1) — held while GATE2 stays high.
S3Oscillator 3 (BLUE) envelope SUSTAIN level (0..1) — held while GATE3 stays high.
S4Oscillator 4 (ALPHA) envelope SUSTAIN level (0..1) — held while GATE4 stays high.
Alpha brightnessALPHA BRIGHTNESS (0..2) — brightness of the ALPHA oscillator / alpha-mask layer in the render.
Blink modeBLINK render mode within the 3D view: 0 = wavetable RIBBONS (default), 1 = SCOPES TRIAL (each osc's live oscilloscope trace from the floor corners), 2 = REALITY BASED COMMUNITY (the scopes rendered as 3D neon tubes).
Blu colorBLUE oscillator base COLOUR (colour picker) — tints the BLUE osc in every blink mode. Packed 0xRRGGBB.
Chord modeCHORD MODE (on/off) — when on, every voice reads voice 1's pitch and voices 2/3/4 are offset to build a chord (the quality set by QUALITY); each voice's TUNE becomes the chord offset.
Chord qualityCHORD QUALITY — picks the chord built in CHORD MODE. MAJ = major triad + octave (1 · 3 · 5 · 8); MIN = minor triad + octave (1 · ♭3 · 5 · 8). It is a two-MODE picker, not an on/off enable — there is no "no quality" state.
DetuneDETUNE (−1..+1) — the spread applied between voices when UNISON is on.
Fine1Oscillator 1 (RED) FINE tune in cents (−100..+100) for tuning between TUNE1's semitones.
Fine2Oscillator 2 (GREEN) FINE tune in cents (−100..+100) for tuning between TUNE2's semitones.
Fine3Oscillator 3 (BLUE) FINE tune in cents (−100..+100) for tuning between TUNE3's semitones.
Fine4Oscillator 4 (ALPHA) FINE tune in cents (−100..+100) for tuning between TUNE4's semitones.
Fold1Oscillator 1 (RED) FOLD (0..1) — west-coast wavefolder on RED's output (0 = clean, 1 = heavily folded harmonics).
Fold2Oscillator 2 (GREEN) FOLD (0..1) — west-coast wavefolder on GREEN's output (0 = clean, 1 = heavily folded harmonics).
Fold3Oscillator 3 (BLUE) FOLD (0..1) — west-coast wavefolder on BLUE's output (0 = clean, 1 = heavily folded harmonics).
Fold4Oscillator 4 (ALPHA) FOLD (0..1) — west-coast wavefolder on ALPHA's output (0 = clean, 1 = heavily folded harmonics).
FxAmount1Oscillator 1 (RED) FX AMOUNT (0..1) — wet/mix of the per-osc FX slot selected by FX1.
FxAmount2Oscillator 2 (GREEN) FX AMOUNT (0..1) — wet/mix of the per-osc FX slot selected by FX2.
FxAmount3Oscillator 3 (BLUE) FX AMOUNT (0..1) — wet/mix of the per-osc FX slot selected by FX3.
FxAmount4Oscillator 4 (ALPHA) FX AMOUNT (0..1) — wet/mix of the per-osc FX slot selected by FX4.
FxType1Oscillator 1 (RED) per-osc FX slot type: 0 = OFF, 1 = REVERB, 2 = DELAY. Sits PRE-spatial-mix, so it shapes RED's raw oscillator before env/distance/pan.
FxType2Oscillator 2 (GREEN) per-osc FX slot type: 0 = OFF, 1 = REVERB, 2 = DELAY. Sits PRE-spatial-mix, so it shapes GREEN's raw oscillator before env/distance/pan.
FxType3Oscillator 3 (BLUE) per-osc FX slot type: 0 = OFF, 1 = REVERB, 2 = DELAY. Sits PRE-spatial-mix, so it shapes BLUE's raw oscillator before env/distance/pan.
FxType4Oscillator 4 (ALPHA) per-osc FX slot type: 0 = OFF, 1 = REVERB, 2 = DELAY. Sits PRE-spatial-mix, so it shapes ALPHA's raw oscillator before env/distance/pan.
Grn colorGREEN oscillator base COLOUR (colour picker) — tints the GREEN osc in every blink mode. Packed 0xRRGGBB.
Lum depthLUMINOSITY → BANDPASS depth (0..1) — how strongly the wall video's brightness at each line's wall-crossing points shapes a band-pass on that line's audio (bright = open, dark = narrow). 0 = OFF.
Master gainMASTER GAIN (0..2, default 1) — overall output level of the summed audio mix (L/R), AND the composite drive of the CRT post-process on the render. One knob, both domains: 1 = unity (audio unchanged, picture undistorted), above 1 the mix gets louder while the picture overdrives into soft-clip white smear, 0 mutes L/R and blacks the composite. The per-oscillator taps (out_red/grn/blu/alp) are PRE master gain and are not affected.
Morph1Oscillator 1 (RED) MORPH (0..1) — wavetable frame position; scans through the loaded wavetable's frames to morph the timbre. CV via the morph1_cv input.
Morph2Oscillator 2 (GREEN) MORPH (0..1) — wavetable frame position; scans through the loaded wavetable's frames to morph the timbre. CV via the morph2_cv input.
Morph3Oscillator 3 (BLUE) MORPH (0..1) — wavetable frame position; scans through the loaded wavetable's frames to morph the timbre. CV via the morph3_cv input.
Morph4Oscillator 4 (ALPHA) MORPH (0..1) — wavetable frame position; scans through the loaded wavetable's frames to morph the timbre. CV via the morph4_cv input.
Pos xCamera X position (−1..+1) — the horizontal axis of the on-card XY pad. Moves the viewpoint left/right through the box.
Pos yCamera Y position (−1..+1) — the vertical axis of the XY pad.
Pos zCamera Z position / HEIGHT (−1..+1) — depth into the box (the HEIGHT slider).
Red colorRED oscillator base COLOUR (a colour-wheel picker) — tints the RED osc's ribbon, scope line, and neon tube. Packed 0xRRGGBB; chosen via a native colour picker (not a CV knob).
RotCamera ROTATION about the Y axis (−1 full left .. +1 full right). Visual only — audio is rotation-invariant. CV via the rot input.
ScaleSCALE (0.1..10, log, unity at 1) — amplitude/zoom of the BLINK scope waveform (matches the SCOPE module's scale). Applies in the scope/tube blink modes. CV via the scale input.
Spread1Oscillator 1 (RED) SPREAD (1..5) — stereo tap spread; higher values widen RED's stereo image by reading offset taps.
Spread2Oscillator 2 (GREEN) SPREAD (1..5) — stereo tap spread; higher values widen GREEN's stereo image by reading offset taps.
Spread3Oscillator 3 (BLUE) SPREAD (1..5) — stereo tap spread; higher values widen BLUE's stereo image by reading offset taps.
Spread4Oscillator 4 (ALPHA) SPREAD (1..5) — stereo tap spread; higher values widen ALPHA's stereo image by reading offset taps.
Thickness1Oscillator 1 (RED) THICKNESS (0..1) — how far the wave ribbon is extruded perpendicular to its direction (visual weight of RED's ribbon).
Thickness2Oscillator 2 (GREEN) THICKNESS (0..1) — how far the wave ribbon is extruded perpendicular to its direction (visual weight of GREEN's ribbon).
Thickness3Oscillator 3 (BLUE) THICKNESS (0..1) — how far the wave ribbon is extruded perpendicular to its direction (visual weight of BLUE's ribbon).
Thickness4Oscillator 4 (ALPHA) THICKNESS (0..1) — how far the wave ribbon is extruded perpendicular to its direction (visual weight of ALPHA's ribbon).
Tune1Oscillator 1 (RED) TUNE — coarse pitch in semitones (−36..+36). Summed with FINE1 and the pitch_cv1 input.
Tune2Oscillator 2 (GREEN) TUNE — coarse pitch in semitones (−36..+36). Summed with FINE2 and the pitch_cv2 input.
Tune3Oscillator 3 (BLUE) TUNE — coarse pitch in semitones (−36..+36). Summed with FINE3 and the pitch_cv3 input.
Tune4Oscillator 4 (ALPHA) TUNE — coarse pitch in semitones (−36..+36). Summed with FINE4 and the pitch_cv4 input.
UnisonUNISON (on/off) — stacks the oscillators on one pitch (detuned by DETUNE) for a fat, layered tone instead of four independent voices.
Video modeVIEW / video mode for the render + the video_out: 0 = PROXIMITY (the 3D ribbon scene, default), 1 = BIRDSEYE (top-down 2D floorplan of the spatial system), 2 = SPECTROGRAPH (scrolling STFT of the combined audio).
Wall1 alphaWALL 1 (FRONT (−Z)) TRANSPARENCY (0..100%) — 0 = the wall's video is invisible, 100 = fully opaque over the scene.
Wall1 distortWALL 1 (FRONT (−Z)) DISTORT (0..1) — morphs the wall from a flat quad (0) to a convex dome bulging toward the room centre (1), a fisheye we look up into.
Wall2 alphaWALL 2 (BACK (+Z)) TRANSPARENCY (0..100%) — 0 = the wall's video is invisible, 100 = fully opaque over the scene.
Wall2 distortWALL 2 (BACK (+Z)) DISTORT (0..1) — morphs the wall from a flat quad (0) to a convex dome bulging toward the room centre (1), a fisheye we look up into.
Wall3 alphaWALL 3 (LEFT (−X)) TRANSPARENCY (0..100%) — 0 = the wall's video is invisible, 100 = fully opaque over the scene.
Wall3 distortWALL 3 (LEFT (−X)) DISTORT (0..1) — morphs the wall from a flat quad (0) to a convex dome bulging toward the room centre (1), a fisheye we look up into.
Wall4 alphaWALL 4 (RIGHT (+X)) TRANSPARENCY (0..100%) — 0 = the wall's video is invisible, 100 = fully opaque over the scene.
Wall4 distortWALL 4 (RIGHT (+X)) DISTORT (0..1) — morphs the wall from a flat quad (0) to a convex dome bulging toward the room centre (1), a fisheye we look up into.
Wall5 alphaWALL 5 (FLOOR (−Y)) TRANSPARENCY (0..100%) — 0 = the wall's video is invisible, 100 = fully opaque over the scene.
Wall5 distortWALL 5 (FLOOR (−Y)) DISTORT (0..1) — morphs the wall from a flat quad (0) to a convex dome bulging toward the room centre (1), a fisheye we look up into.
Wall6 alphaWALL 6 (CEILING (+Y)) TRANSPARENCY (0..100%) — 0 = the wall's video is invisible, 100 = fully opaque over the scene.
Wall6 distortWALL 6 (CEILING (+Y)) DISTORT (0..1) — morphs the wall from a flat quad (0) to a convex dome bulging toward the room centre (1), a fisheye we look up into.
Wavesculpt osc1 load {n}OSC RED LOAD - imports your own .wav as the RED oscillator's wavetable (the E352 single-cycle layout: 256-sample frames end to end). The parse happens in the browser and reports frames-loaded or the failure. A loaded table is stored on the patch and reappears as the USER entry in the RED FACTORY picker.
Wavesculpt osc1 preset {n}OSC RED PRESET picker - a dropdown of the curated wavetables. Choosing one FETCHES and parses that table and hands it to the RED oscillator, replacing whatever it held; the load is asynchronous and reports frames-loaded or the reason it failed. It then SHOWS the preset it is holding, and falls back to its empty sentinel by itself once the RED oscillator is pointed somewhere else - at a FACTORY table, or at a .wav you loaded - because the name it displays is derived from what is actually loaded rather than remembered from what you last clicked.
Wavesculpt osc1 table {n}OSC RED FACTORY table picker - the built-in wavetables, already in memory and switching instantly (unlike the PRESET list, which fetches). It also carries a synthetic USER entry whenever the RED oscillator holds a table you loaded yourself, so the dropdown can always show what is actually loaded instead of going blank on a value it has no option for. The chosen table is the wave this oscillator both plays and draws as its ribbon.
Wavesculpt osc2 load {n}OSC GREEN LOAD - imports your own .wav as the GREEN oscillator's wavetable (the E352 single-cycle layout: 256-sample frames end to end). The parse happens in the browser and reports frames-loaded or the failure. A loaded table is stored on the patch and reappears as the USER entry in the GREEN FACTORY picker.
Wavesculpt osc2 preset {n}OSC GREEN PRESET picker - a dropdown of the curated wavetables. Choosing one FETCHES and parses that table and hands it to the GREEN oscillator, replacing whatever it held; the load is asynchronous and reports frames-loaded or the reason it failed. It then SHOWS the preset it is holding, and falls back to its empty sentinel by itself once the GREEN oscillator is pointed somewhere else - at a FACTORY table, or at a .wav you loaded - because the name it displays is derived from what is actually loaded rather than remembered from what you last clicked.
Wavesculpt osc2 table {n}OSC GREEN FACTORY table picker - the built-in wavetables, already in memory and switching instantly (unlike the PRESET list, which fetches). It also carries a synthetic USER entry whenever the GREEN oscillator holds a table you loaded yourself, so the dropdown can always show what is actually loaded instead of going blank on a value it has no option for. The chosen table is the wave this oscillator both plays and draws as its ribbon.
Wavesculpt osc3 load {n}OSC BLUE LOAD - imports your own .wav as the BLUE oscillator's wavetable (the E352 single-cycle layout: 256-sample frames end to end). The parse happens in the browser and reports frames-loaded or the failure. A loaded table is stored on the patch and reappears as the USER entry in the BLUE FACTORY picker.
Wavesculpt osc3 preset {n}OSC BLUE PRESET picker - a dropdown of the curated wavetables. Choosing one FETCHES and parses that table and hands it to the BLUE oscillator, replacing whatever it held; the load is asynchronous and reports frames-loaded or the reason it failed. It then SHOWS the preset it is holding, and falls back to its empty sentinel by itself once the BLUE oscillator is pointed somewhere else - at a FACTORY table, or at a .wav you loaded - because the name it displays is derived from what is actually loaded rather than remembered from what you last clicked.
Wavesculpt osc3 table {n}OSC BLUE FACTORY table picker - the built-in wavetables, already in memory and switching instantly (unlike the PRESET list, which fetches). It also carries a synthetic USER entry whenever the BLUE oscillator holds a table you loaded yourself, so the dropdown can always show what is actually loaded instead of going blank on a value it has no option for. The chosen table is the wave this oscillator both plays and draws as its ribbon.
Wavesculpt osc4 load {n}OSC ALPHA LOAD - imports your own .wav as the ALPHA oscillator's wavetable (the E352 single-cycle layout: 256-sample frames end to end). The parse happens in the browser and reports frames-loaded or the failure. A loaded table is stored on the patch and reappears as the USER entry in the ALPHA FACTORY picker.
Wavesculpt osc4 preset {n}OSC ALPHA PRESET picker - a dropdown of the curated wavetables. Choosing one FETCHES and parses that table and hands it to the ALPHA oscillator, replacing whatever it held; the load is asynchronous and reports frames-loaded or the reason it failed. It then SHOWS the preset it is holding, and falls back to its empty sentinel by itself once the ALPHA oscillator is pointed somewhere else - at a FACTORY table, or at a .wav you loaded - because the name it displays is derived from what is actually loaded rather than remembered from what you last clicked.
Wavesculpt osc4 table {n}OSC ALPHA FACTORY table picker - the built-in wavetables, already in memory and switching instantly (unlike the PRESET list, which fetches). It also carries a synthetic USER entry whenever the ALPHA oscillator holds a table you loaded yourself, so the dropdown can always show what is actually loaded instead of going blank on a value it has no option for. The chosen table is the wave this oscillator both plays and draws as its ribbon.
WiggleWIGGLE (0..1, 0 = OFF) — pitch-driven 3D rotation of each osc's ribbon/scope/tube; speed + magnitude scale with the detected pitch. CV via the wiggle input.
ZoomCamera ZOOM / distance scalar (0.3..3, log) — closer (smaller) = bigger ribbons visually AND louder audibly (closer = louder, one shared distance number). CV via the zoom input.

source

wavesculpt.ts on GitHub.

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