-
Notifications
You must be signed in to change notification settings - Fork 0
Loop Safety and Table Safety
FWG can deliberately create discontinuous, nearly silent, collapsed, or extreme material. Two different safety systems help you deal with that without pretending every unusual sound is an error.
- Loop Safety warns that the selected render geometry/settings may be awkward for looping or wavetable use.
- Table Safety prevents collapsed/non-finite generated tables from turning into numerical garbage or explosive normalisation.
A warning is not automatically a bug, and neither system exists to make every sound smooth. Morph and Explorer show Loop Safety notices near their export controls; Table Safety reports appear in the workspace whose generated table required substitution.
🎹 Loop Safety is practical guidance. It may flag:
- duration/cycle geometry unlikely to loop cleanly;
- sub-cycle output that may capture an unrepresentative fragment;
- target wavetable geometry that may slice incorrectly;
- combinations worth auditioning before a long export.
Read the finding, then decide whether the behaviour is intentional for the job. Hits, noise, and transitions often do not need loop-friendly geometry at all.
For strict wavetable work, see Creating Wavetables.
🔧 Some legal parameter combinations produce an unusable generated table: non-finite values, all-DC, floating-point dust, or too little meaningful AC structure for ordinary normalisation.
Rather than let such a table explode numerically, FWG resolves the owning structural stream to a deterministic standby.
If you see a Table Safety report:
- audition the result;
- decide whether the substitution matters audibly;
- inspect narrow Windows/extreme generator settings if collapse was unexpected;
- change the patch only if the result is not useful.
Broad random search can legitimately encounter collapse.
🔧 Every fresh structural stream begins with a deterministic square-wave standby. An invalid state reached immediately after a structural replacement—or before a render owner has produced any meaningful table—can therefore appear as a square rather than silence or random garbage.
It is a safety substitute, not a hidden Generator preset.
🔧 During continuous endpoint edits such as a generator control or Window drag, live preview/audition retains one bounded previous-valid table for that endpoint. If the next coordinate collapses, FWG can temporarily report using previous valid table. A later meaningful coordinate replaces the standby.
This prevents one mathematically dead slider coordinate from inserting an unrelated square into an otherwise continuous gesture. The standby is runtime state and is not stored in patch/JSON.
🔧 Structural replacement clears the previous-valid standby first. Examples include Generator Family/variant, routing, Wavetable Type, preset/Reset, patch replacement, and whole-Drawn actions such as Copy / Reset / Clear / Undo / Import.
If the new structure collapses, FWG reports using safety square rather than borrowing a waveform from the structure it replaced. Pointer drawing remains a continuous edit and can retain previous-valid during the gesture.
🔧 Scanning/Morph audition and rendering keep bounded START, END, and Morph standbys inside the traversal. Invalid-after-valid uses the previous valid table for that owner; invalid-before-valid uses the safety square.
A new render starts with fresh standbys. Previous-valid state is not persistent patch history and is never serialised.
🔧 START, END, and Morph output own separate bounded standby slots. A meaningful candidate updates only its own stream; a collapsed candidate reuses that stream's current standby.
These histories are local to the current audition/render and do not leak from an old batch into a new one.
🔧 Public table_safety metadata, rendered notes, and Bulk/Explorer aggregate counts describe resolved structural substitutions, not every temporary helper failure.
A structural result finally resolved as previous valid table is reported once as previous-valid. Invalid-before-valid is reported once as safety square. Internal helper detections are not double-counted as additional delivered corrections.
A valid Drawn waveform may still be silent, DC, or extreme because the user authored it that way. Table Safety then handles the generated structural output under the normal rules.
See Drawn Waveform.
🎹 Very narrow Windows stretch a small selected region across the complete cycle. Equal Start/End selects one position and can therefore collapse the effective oscillator table.
That may be intentional. If not, widen or move the Window and audition again.
See Source and Result Windows.
Table Safety asks whether a structural table is numerically meaningful enough to use.
Phase/cycle coherence asks whether changing tables align usefully over time.
A safe table can make a poor wavetable transition. A phase-coherent table can be intentionally harsh. See Phase-Coherent Mode.
MPC Wavetable Mode adds mechanical file/layout rules. It does not replace musical audition or Table Safety interpretation.
A package can be mechanically valid and musically poor; an aggressive table can be musically useful if the hardware interprets it as intended.
🔧 The implementation uses only bounded structural START/END/Morph standby slots; Playground reuses START for its single endpoint stream. Live preview can retain the relevant slot across continuous edits, while each new render receives fresh slots. Intermediate helper tables do not become standbys merely because they were calculated first.
Scanning derived caches store candidates rather than global historical fallback state; substitution belongs to the owning traversal. Previous previews, batches, or diagnostics therefore cannot become hidden input to later renders.
🔧 Live previous-valid state is invalidated by changes to the effective table-producing structure, not by every selector that merely looks structural in the UI.
Important literal-Drawn fast paths are:
- Wavetable Type 0 with Input 1 = Drawn;
- Wavetable Type 1 with Input 2 = Drawn.
Those routes do not evaluate the generator pair, so changing an inaudible Generator Family/Variant or Scanning recipe does not clear their previous-valid standby. Whole-Drawn replacement remains structural; generated/combined routes still invalidate when their consumed structure changes.
Documentation rule: The executable code is authoritative. This Wiki describes the supported Fractured Wavetable Generator v3.0 contract and workflows.
- Generator Families
- Classic Waveforms
- Classic Split
- Drawn Waveform
- Drawn Wave-Shape Recipes
- Source Taps and Routing
- Wavetable Types
- Modulation and Filter
- Pitch, MIDI, and Pitch Offset
- Source and Result Windows
- Visualisers
- Morph Render Modes
- Morph Curve and Cycle Stepping
- Phase-Coherent Mode
- Loop Safety and Table Safety
- Creating Wavetables
- Creating Samples, Drones, Hits, Transitions, and Multisamples
- MPC Wavetable Mode
- Installing and Auditioning on MPC
- Render and Export Settings
- Auditioning, Curation, and Building a Personal Library
- Saving, Loading, and JSON Sidecars
- Sharing and Cleaning JSON Sidecars
- Randomisation and Seeds
- Keyboard Shortcuts
- Browser Requirements and Performance
- Troubleshooting
- FAQ
- Glossary
- Compatibility and Versioning
- Version 3 Release Notes
- Drawn Mathematical Reference
- Signal Path and Core Concepts
- Meditations on the 512-Sample Core
- Scanning Generator Wrapper Architecture
- Deterministic Randomisation — Technical Reference
- Render Diagnostics and Support
- Proof of Zero Prior-Work Knowledge and Forensic Evidence
- Authenticating and Timestamping FWG Outputs
- License, Provenance, and Outputs