Skip to content

Signal Path and Core Concepts

atom edited this page Sep 3, 2026 · 1 revision

Signal Path and Core Concepts

This is the technical map of how FWG assembles a complete patch. For hands-on use, start with Start Here; use this page when you need to know where a control sits in the signal path or which stage owns a behaviour.

Patch terminology

A patch, unless qualified, is the complete settings record for one output. It includes:

  • START endpoint patch;
  • END endpoint patch;
  • Morph Render Mode, curve, FFT anchors when applicable, and cycle-stepped state;
  • pitch, render, cleanup, and MPC/export settings;
  • Drawn waveform data;
  • relevant random-origin, import, and export context stored in JSON.

A START patch or END patch is one endpoint sound state. Playground edits one endpoint-style state and can copy it to START, END, or both, but Playground does not export WAV/JSON files directly.

A Morph patch is a complete patch built around a START→END relationship. When discussion is limited to sound construction, the term may focus on START, END, and Morph settings; the JSON sidecar also preserves render/export settings.

Endpoint patch contents

Each START or END patch contains:

  • Generator Family and Smooth/Crunchy variant;
  • three family-specific generator controls;
  • four generated source taps plus the Drawn source;
  • Input 1 and Input 2 routing;
  • Wavetable Type;
  • FM range and depth;
  • PWM;
  • Ring Mod;
  • Pitch Offset;
  • Source Window;
  • Result Window;
  • filter type, cutoff, and resonance;
  • Drawn waveform data and optional initialisation context.

Simplified signal path

Generator Family + three controls
        ↓
Generated taps A / B / C / D
        ↘
       Drawn source
        ↓
Input 1 + Input 2 routing
        ↓
Source Window
        ↓
Wavetable Type
        ↓
Result Window
        ↓
ordinary table range finalisation
        ↓
Table Safety
        ↓
Phase-Coherent registration (when enabled)
        ↓
Oscillator playback
        ↓
FM / PWM / Ring Mod
        ↓
Filter
        ↓
Morph strategy or endpoint branch relationship
        ↓
DC removal / normalisation / headroom
        ↓
WAV + JSON

Some Morph Render Modes restructure this path. Crossfades render complete endpoint branches before blending. Wavetable modes combine tables before one oscillator path. START Phase-Modulates END modes assign START and END explicit source/carrier roles: the effective source is filtered before its bipolar output drives carrier phase, and the carrier retains an independent audible-output filter.

For ordinary generated endpoint tables, full and partial Windows share one extrema-to-rails finalisation: the current minimum maps to −1 and maximum to +1 before Table Safety and Phase-Coherent registration. This is not arithmetic-mean DC removal; direct literal Drawn and literal-level Wavetable Types have their own preservation rules.

The simplified final cleanup box does not show every internal Morph-table operation. Current Wavetable one-oscillator modes centre and peak-normalise constructed intermediate tables. Current Spectral / FFT modes centre and peak-normalise before analysis and after reconstruction. These internal operations occur before the user-selected final DC Removal and Normalisation stage.

Internal cycle tables and Window positions

v3 uses an internal oscillator table and a Drawn table, each containing 512 internal cycle samples.

Source and Result Window controls use inclusive positions 1–512:

  • 1→512 selects the complete cycle;
  • Start greater than End wraps forward through 512 and resumes at 1;
  • equal positions remain legal and may invoke table safety when the effective material collapses.

Older public 0–256 window JSON is migrated by its declared control range.

For why 512 internal cycle samples are a v3 design choice rather than a universal wavetable-synthesis optimum, see Meditations on the 512-Sample Core.

Continuous and discrete controls

Some values interpolate naturally, such as generator controls, modulation depth, cutoff, or Pitch Offset.

Other values are categories, such as Generator Family, variant, tap, Wavetable Type, filter type, or Morph Render Mode. Different Morph strategies handle categorical changes differently.

Generated-table safety

A generated table may become unusable because it is non-finite, silent, all-DC, nearly flat, or impulse-like.

Table Safety is applied at three complete structural outputs: START Patch, END Patch, and Morph engine. Each fresh structural stream begins with a deterministic safety-square standby. A meaningful structural table replaces its own standby; a collapsed table reuses that standby without replacing it.

For live endpoint editing, continuous scalar changes can retain one bounded previous-valid table so a slider crossing a collapsed coordinate can hold the last meaningful result. Structural replacements clear that standby first. For Scanning/Morph audition and offline rendering, previous-valid state remains bounded to the current traversal: invalid-after-valid uses the previous valid table; invalid-before-any-valid uses the safety square. Internal helper tables never update these structural standbys.

The stored endpoint and complete patch remain unchanged.

Nominal root versus audible movement

The shared root frequency controls render planning, including Cycles duration, Cycle-stepped boundaries, and Per Cycle cleanup blocks.

Nominal freq is the endpoint oscillator rate after static Pitch Offset and before FM or other modulation. Playground, Morph, and Explorer display it beneath Pitch Offset and allow it to be edited inversely as a target Hz value.

FM, Pitch Offset, and START Phase-Modulates END can make audible periods differ from root timing. This distinction matters when choosing cleanup, WAV output sample rate, filter Cutoff, or wavetable geometry.

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