-
Notifications
You must be signed in to change notification settings - Fork 0
Version 3 Release Notes
v3.0 is the first public FWG release after v2.9c. It expands the instrument, search workflows, wavetable tooling, and JSON/reproducibility model while moving the internal oscillator/Drawn core to 512 internal cycle samples.
🔧 FWG's internal source/wavetable core now uses 512 internal cycle samples. Source/Result Window controls use inclusive 1–512 positions. Public v2.9c schema-12 0–256 windows are migrated on import. For the design trade-offs behind that fixed v3 point count, see Meditations on the 512-Sample Core.
🎹 Bulk Explorer provides deterministic local variation around a known START/END/Morph design, with explicit scalar ranges and categorical pools.
🔧 Playground, Morph, Bulk Random and Explorer use named SHA-256 random decisions. Bulk Random and Explorer expose their seeds directly; Playground and Morph randomisation use hidden next-action seeds. Independent named addresses prevent unrelated later decisions from shifting merely because another branch consumes a different number of draws.
🎹 Scanning generators animate ordinary generator controls along declarative trajectories. v3.0 includes a curated built-in catalogue plus session-only custom recipes that can be imported, collected, concatenated, used in Explorer and embedded into exported Morph/Explorer JSON when needed for reconstruction.
🎹 Optional best-effort completed-wavetable phase registration can improve wavetable-frame orientation for wavetable-oriented work. It defaults Off, persists separately in Morph/Bulk/Explorer, and MPC setup enables it in the active workspace. Shipping registration is exact integer circular rotation.
🎹 The START-mod-END family now covers moving/fixed Phase, AM, FM, PWM and Ring Modulation modes with dedicated depth/rate behaviour.
🔧 Current JSON exports use schema 13 and deterministic .json.gz sidecars. Plain .json remains importable. Numeric Drawn data is human-readable after decompression; historical Base64 Drawn remains importable. Numeric-array format labels no longer decide current numeric semantics and new numeric examples/exports omit the redundant label.
Drawn now has an explicit two-stage construction model. data + resample_mode + stage-1 wrap first materialise the ordinary bounded 512-internal-cycle-sample Float32 Drawn waveform. An optional transform then operates on exactly that completed waveform, followed by optional final normalise:true. Full sidecars may retain the pristine pipeline; ordinary Drawn editing clears it; standalone Export Drawn always flattens the result to 512 literal editable internal cycle samples.
The v3 transform collection is Fourier, Haar and Walsh-Hadamard. Fourier remains usable both directly as resample_mode and as a stage-2 transform. Haar and Walsh are transform-only. Their shared selector grammar supports exact components, open/inclusive ranges, comma unions and negative singleton coefficient inversion. Fourier exposes real orders 0…256, Haar exposes mean/detail bands 0…9, and Walsh exposes sequency 0…511.
Fourier treats a circular shift as harmonic-phase rotation without redistributing harmonic magnitude. Haar is alignment-sensitive because its fixed dyadic half/quarter/eighth/etc. boundaries can redistribute energy between Haar bands when the completed waveform is shifted. FWG does not add hidden Haar phase correction; phase/orientation remains upstream in the constructed waveform.
normalise:true is independent of transforms. It applies one final uniform gain around zero, preserving DC and amplitude ratios, and leaves silence/numerical dust at or below the Drawn 1e-9 peak floor alone.
🔧 Render Diagnostics, enabled through the ?render_diagnostics=a URL query parameter, adds optional troubleshooting evidence to exported JSON without changing sound or random decisions.
🔧 Source and Result Windows use one consistent ordinary-table range policy whether fully open or truncated: after the selected/remapped geometry is built, its current minimum maps to −1 and maximum to +1. This extrema-to-rails mapping is not arithmetic-mean DC removal; the later DC Removal control remains a separate render choice, and literal Drawn/literal-level Wavetable Types retain their own literal contracts.
Live continuous endpoint edits keep one bounded previous-valid Table Safety standby so a slider — or a hand-drawn gesture — crossing a collapsed coordinate can hold the last meaningful table. Structural replacements clear that standby and fall back to the deterministic safety square if the new structure is invalid; whole-Drawn Copy/Reset/Clear/Undo/Import actions are structural replacements. Scanning/Morph audition and rendering retain the existing bounded per-traversal START/END/Morph last-good behavior. Public Table-Safety notes/JSON/batch counts report each final structural substitution once rather than double-counting internal helper failure detection.
🔧 v3.0 also freezes several pre-release continuity corrections:
- Source/Result Window Morph interpolates each Window as cyclic Start + forward inclusive Length, preserving width when appropriate and retracing Forward/Reverse; an exact half-cycle Start tie preserves the sign of the endpoint displacement.
- Filter Cutoff Morph uses logarithmic frequency-ratio interpolation, matching the logarithmic Cutoff control and cents/ratio variation model.
- Warm Wavetable Morph and Softened Morph interpolate continuously between adjacent integer smoothing landmarks rather than stepping the smoothing-pass count.
- Drawn Scanning LFO-shape Morph uses exact continuous Morph position. Its 512-point spectral inverse reconstruction uses a radix-2 inverse FFT, preserving the accepted Float32 output while avoiding the former O(N²) accumulation cost.
- Table-Safety standby invalidation follows effective structure. In the direct literal Drawn fast paths, changing an inaudible generator/Scanning identity does not clear the previous-valid standby; genuinely consumed structure still does.
The supported public JSON boundary is v2.9c schema 12 plus current schema 13. Development-only v3 candidate schemas/field names are not public compatibility requirements.
🔧 The v3 release line added broad regression coverage across all public generator families, loadable Wavetable Types, every current Morph mode, Scanning/gangpot trajectories, phase registration, seeded randomisation, JSON/gzip import/export, WAV/ZIP/MPC artifacts, resource limits, cancellation, cache identity and UI rebuild/repaint behavior.
🎹 v3.0 also tightens several user-facing workflow details:
- fresh Playground/Morph endpoint states use simple Classic-family sources through Wavetable Type 0 – Input 1 rather than beginning from a complex two-input chaotic patch;
- the shared pitch control is labelled Root Frequency;
- Drawn status distinguishes audio routing from use as a Scanning LFO shape;
- Swap START/END is silent; endpoint Copy actions retain their destination audition behaviour;
- Explorer uses Import From Morph / Copy To Morph and separates Base Generators from Scanning Generators into independently collapsible groups;
- Calculator publishing actions are grouped beneath Set Globally…;
- a standalone Scanning recipe import presents Playground / Morph START / Morph END, with the chosen recipe also registered in the shared session custom-recipe library.
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