Skip to content

Source and Result Windows

atom edited this page Sep 3, 2026 · 1 revision

Source and Result Windows

Source and Result Windows select a contiguous cyclic region of a 512-position table and stretch that selected region back across the complete cycle. In Playground or a Morph endpoint, open the Source / Result Windows panel; each endpoint owns its own two window stages.

FWG has two window stages:

  1. Source Window — applied to both routed inputs before the Wavetable Type combines or selects them.
  2. Result Window — applied after the Wavetable Type has produced its completed table.

The same Start/End values can therefore sound very different at the two stages.

First exercise: use a two-input Wavetable Type

🎹 Windows are easiest to hear when both routed inputs matter.

  1. Start with Source Window = 1→512 and Result Window = 1→512.
  2. Choose two useful Input taps.
  3. Set Wavetable Type to 2 – I1→I2 Splice. Low-Bit XOR is an even more dramatic alternative.
  4. Listen to the full-window result first.
  5. Narrow or move the Source Window. The selected region of each input is remapped before the Splice/logic operation is built.
  6. Restore Source Window to 1→512.
  7. Narrow or move the Result Window. FWG now builds the complete Splice/logic result first, then selects and remaps part of that finished table.
  8. Restore Result Window, then try both stages together.

Starting with 0 – Input 1 hides much of this distinction because Input 2 is not contributing to the current Wavetable Type.

What a window actually does

🔧 A non-full window is neither an inversion nor a mute gate. FWG follows the inclusive sequence from Start to End, wrapping through position 512 when necessary, then linearly expands that sequence across the complete 512-position result table.

For ordinary generated tables, the same full-range normalisation follows both full and truncated Windows: current minimum → −1, current maximum → +1, with one linear mapping between them. This is extrema centring, not arithmetic-mean DC removal. A pulse already spanning both rails therefore keeps its full −1…+1 excursion regardless of duty cycle.

Direct literal Drawn routing and Wavetable Types whose identity depends on literal levels are deliberate exceptions; they preserve those literal levels.

A Window can therefore:

  • zoom into part of a waveform;
  • stretch a short feature across the cycle;
  • move discontinuities or landmarks;
  • make a local contour dominate the complete cycle;
  • alter what two sources present to a Splice, arithmetic, comparator, Low-Bit Logic, or other two-input Wavetable Type;
  • reshape the completed Wavetable Type afterward.

Source versus Result

🎹 Use Source Window to change the material that reaches the Wavetable Type. In a two-input mode, the same Source Window is applied independently to Input 1 and Input 2 before they combine.

Use Result Window to select and expand part of the already-combined result.

Input 1 + Input 2
       ↓
Source Window
       ↓
Wavetable Type
       ↓
Result Window
       ↓
completed endpoint table

Phase-Coherent registration, when enabled, sees that completed windowed table. Patch modulation and filtering come later.

Inclusive and wrapping behaviour

🔧 Exact geometry:

  • 1→512 selects the complete cycle and is geometrically neutral. Ordinary generated tables still pass through the same full-range finalisation used at other Window positions.
  • Start less than End selects that inclusive forward span.
  • Start greater than End continues forward through 512 and resumes at 1.
  • Equal Start and End values are legal and select one position.

A one-position selection expands one internal cycle sample value across the whole table. With identical minimum and maximum there is no range to normalise, so context-aware Table Safety handles the collapse rather than manufacturing a full-scale constant rail.

Equal or very small windows

🎹 Small windows can act like an extreme microscope: a meaningful local range is stretched over the whole cycle and, for ordinary generated tables, across the full −1…+1 excursion. An exactly flat selection collapses instead of being amplified.

Blind random Window draws may avoid extremely small spans so batches do not spend most of their search on predictable collapse. Absurd deliberately removes that guardrail.

Direction

The current public model always traverses a selected region forward, including wrapped selections.

Reverse Window traversal is not part of v3. Morph Forward/Reverse changes the complete START→END relationship; it does not reverse traversal inside an endpoint Window.

Signal-path placement

🔧 Signal path:

Generator / Drawn / taps
       ↓
Input routing
       ↓
Source Window
       ↓
Wavetable Type
       ↓
Result Window
       ↓
ordinary full-range finalisation
       ↓
Table Safety / Phase-Coherent registration
       ↓
Modulation
       ↓
Filter

This ordering explains why trimming a Source or Result Window can visibly disturb phase/seam orientation, and why Coherent Preview can then appear to “fix” it: preview registration sees the already-windowed completed table.

Compatibility

🔧 Older public JSON used a 0–256 fractional-boundary model. v3 detects that declared control range and migrates it to the current inclusive 1–512 position model.

Related pages

Window interpolation during Morph

🔧 START→END interpolation treats each Source Window and Result Window as a cyclic pair, not as two unrelated coordinates. FWG represents a Window as:

  • cyclic Start position;
  • forward inclusive Window length.

Morph moves Start along the shortest signed 512-position cyclic route, interpolates inclusive length, then reconstructs End modulo 512. A constant-width Window can therefore cross the 512→1 seam without artificially expanding or collapsing around the midpoint.

At the exact ±256-position half-cycle tie, FWG preserves the sign of the original endpoint displacement. Forward and Reverse retrace the same path instead of choosing inconsistent tie directions.

Fractured Wavetable Generator

Start here

🎹 Workspaces

🎹 Build and shape sounds

🎹 Make and keep results

🎹 Scanning and custom trajectories

Help and reference

🔧 Advanced / technical reference

Clone this wiki locally