-
Notifications
You must be signed in to change notification settings - Fork 0
Bulk Explorer
Use Bulk Explorer when you want to define your own random patch recipe around a known START/END/Morph state. Explorer can make tiny nearby variations, but it can also behave like a user-programmable random patch generator: hold some parameters completely fixed, let some move slightly, and let others range wildly.
Bulk Random asks:
What patches can FWG discover from one of its built-in randomisation profiles?
Bulk Explorer asks:
What patches can FWG discover if I define the centre, locks, ranges, and allowed choices myself?
The central idea is the separation between current value and allowed variation. A variance of zero or a one-choice pool is effectively a lock; a narrow range creates restrained variation; a broad range or large choice pool makes that part of the patch exploratory.
Explorer renders repeatable variations from a known complete patch plus user-defined rules. Those rules can describe a tight neighbourhood around one keeper, a broad generative recipe, or anything between those extremes. In that sense, an Explorer recipe is also a reusable custom random-patch generator.
🎹 Explorer makes the most sense after you have a keeper in Morph.
- Get START, END, and their Morph relationship into a state worth preserving.
- Open Bulk Explorer and press Import From Morph. Explorer stays open and replaces its current centre while preserving its existing variation rules.
- Notice the orange dot/underlined current choices. Those are concrete values. Checkboxes and Variation amounts describe what a render may change.
- Keep most things locked. Give only one or two controls small non-zero Variation, or add one extra categorical choice.
- Render a small Forward-only batch.
- Audition the numbered files. Loading a keeper sidecar makes that rendered result Explorer's new centre.
- When you want to hand-edit the centre, press Copy To Morph.
Explorer does not randomly replace the current centre merely because another checkbox exists in the pool.
🎹 A useful way to think about Explorer is as a patch generator that you program by example. The current patch supplies the centre; the variation rules say which parts of that example are laws and which parts are invitations.
For example, you could:
- lock Generator Family, Smooth/Crunchy, Input taps, Wavetable Type, Pitch Offset, and render settings;
- let Pot 1 vary only a little around the current value;
- give Pot 2 a moderate range;
- let Pot 3 roam across most or all of its legal range;
- allow two Filter Types instead of one;
- allow several Morph Render Modes while keeping START and END generator identities fixed.
That is no longer merely “find something near this patch.” It is a user-defined randomisation recipe: some dimensions are constants, some are restrained variables, and some are deliberately wild variables. Exporting an Explorer recipe preserves that centre-and-rules design so it can be reused.
The opposite extreme is equally valid: lock almost everything and give one scalar a tiny variance. Explorer then becomes a microscope for one local design question.
Explorer holds its own current:
- START endpoint patch;
- END endpoint patch;
- Morph state;
- pitch/render/cleanup/MPC settings;
- variation rules.
Replace that current state with:
- Import From Morph;
- a Morph result sidecar;
- a Bulk Random result sidecar;
- an Explorer numbered result sidecar;
- an Explorer batch recipe.
Rendering does not automatically replace the current patch.
For categories, the orange dot and underlined name mark the current value; checked boxes form the render pool.
For scalars, the current value is shown separately from its permitted variance.
Copy To Morph always sends current concrete values, never a hypothetical checked alternative.
Explorer can vary START and END:
- three generator controls;
- FM;
- PWM;
- Ring Mod;
- Pitch Offset;
- Filter Cutoff;
- Filter Resonance;
- Source Window Start/End;
- Result Window Start/End.
A variance of zero locks the scalar.
Explorer can vary:
- Generator Family;
- Smooth/Crunchy variant;
- Input 1 and Input 2 taps;
- FM Pitch Range;
- Filter Type;
- Wavetable Type;
- Morph Render Mode;
- Curve Mode;
- FFT Anchor States;
- Moving and Fixed START-mod-END;
- START-mod-END modulation family and Source Rate.
Cycle-stepped transition remains a fixed setting rather than a random pool.
Generator Family choices are split into independently collapsible Base Generators and Scanning Generators sections. The section containing the current generator opens by default.
Session custom Scanning recipes appear as individual Generator Family choices. Importing a recipe makes it available but does not automatically check it into Explorer's random pool.
If a result/recipe actually depends on custom Scanning definitions, exported JSON embeds those definitions so a fresh page can reconstruct it without the original session library.
Explorer START and END show compact read-only Drawn previews. Copy Drawn from Playground, Morph START, or Morph END takes a snapshot; it does not create a live link.
Explorer recipe/result JSON carries required Drawn state, including custom Drawn used as the LFO for a custom Scanning recipe.
🔧 Explorer treats START-mod-END Depth like another scalar:
- current/imported Modulation Depth: 1–256;
- symmetric Variation: 0–255.
The displayed current value is intentionally unitless (128 / 256, for example), because different modulation families map the same position into degrees, cents, or percentage.
The Morph Render Mode pool can include Moving START-mod-END, Fixed START-mod-END, or both. Separate pools choose the five modulation families and seven Source Rates. Each file resolves those axes into one concrete render plan.
🔧 Technical behavior:
- FFT Anchor States are enabled only while at least one Spectral / FFT mode is checked; the stored pool survives while dormant.
- START-mod-END family, Depth, and Source Rate are enabled only while Moving or Fixed START-mod-END is checked.
- Curve Mode, Curve Amount, and Cycle-stepped transition are disabled when Fixed START-mod-END is the only selected Morph mode. Mixed pools keep them available for modes that traverse START→END.
Draw uniformly through the legal result range around the current value while keeping every result within bounds. Use this when you want a range without deliberately piling values against the floor/ceiling.
Draw an offset first, then clip anything beyond the legal floor/ceiling. This deliberately allows boundary pile-up.
🔧 Filter Cutoff is stored as Hz while its variance is expressed in cents. A fixed cent variance therefore represents the same frequency ratio at sub-audio or audio rates: ±1200 cents is one octave down/up.
The ordinary variance slider covers 0–12000 cents; typed variance may reach 25200 cents. The mini-graph remains logarithmic and optimised for 20 Hz–20 kHz. Typed Cutoff down to 0.01 Hz and exceptional variance can extend beyond the graph; the actual values remain authoritative while the visual clips.
Import From Morph replaces Explorer's current complete patch while preserving variation rules.
Newly current categorical values are added to retained checkbox pools so the imported centre remains eligible.
Pitch, Render Format, Transition / Cleanup, MPC Layout, and workspace-local Phase-Coherent Mode follow the same local-safe workspace boundaries.
🔧 Explorer uses the same version/schema handling as Playground and Morph.
- current schema/current FWG → short green match confirmation;
- supported older/different version → yellow compatibility notice with source version emphasised and allowlisted archive/history links;
- unsupported schema → common import-error dialog, with safe derived archive/history links when the FWG version is recognisable.
Supported older data is translated into current semantics. Exact historical behaviour belongs to the archived executable.
Copy To Morph sends Explorer's current concrete complete patch and workspace-local Phase-Coherent Mode setting to Morph for auditioning, hand editing, RAM-slot storage, and ordinary Morph export.
A rendered variation does not become current merely because Explorer exported it. Load that numbered result sidecar first.
Double-click a current scalar value.
-
Enteror blur commits. -
Escapecancels.
Nominal freq beneath Pitch Offset is also editable. Enter a target Hz value to calculate the current-centre Pitch Offset; Pitch Offset variance is unchanged.
🔧 Explorer owns a visible seed separate from the other workspaces.
The same compatible FWG version, current patch, variation rules, render settings, batch shape, and seed reproduce the same named decisions.
Loading Explorer JSON restores its seed. The field/label/notice remain orange while that imported value is unchanged. A successful batch advances the visible seed; cancellation or failure preserves it for an exact retry.
🔧 Each numbered result sidecar stores the resolved complete patch plus the sparse Explorer continuation rules needed to continue from that result. Locked/default parameters are not expanded into a verbose execution diary, and the pre-draw patch/Morph state is not duplicated beside the authoritative rendered patch.
Load a numbered sidecar to make that rendered result Explorer's new centre.
Every ordinary Explorer ZIP contains recipe_<file-stem>.json.gz, capturing the pre-batch:
- START and END patches;
- Morph state;
- Explorer rules;
- Random Seed;
- batch count and direction;
- render settings;
- naming.
MPC output uses the same recipe name and places it in _json when sidecars are enabled.
Load the recipe to repeat/modify the search. Load a numbered sidecar to continue from a result.
🎹 An Explorer recipe_*.json.gz is a personal search preset: a known centre plus exact rules for what may vary.
The filename is not semantic. FWG recognises the document from its JSON, so rename useful recipes freely. The production naming rule is recipe_<File Stem>.json.gz; any later descriptive filename is your own library convention, not an FWG preset identity.
A practical workflow:
- start from Morph, a keeper sidecar, or another Explorer result;
- establish the centre with Import From Morph or Load JSON;
- lock what defines the sound's identity;
- give only selected controls non-zero variance or multi-choice pools;
- run a small batch;
- keep and optionally rename the recipe;
- load it later to repeat the same compatible batch, or change the seed to search the same neighbourhood again.
- centre on a Classic Split keeper;
- keep Generator Family fixed;
- allow Smooth/Crunchy one or both as desired;
- small Split/Topology/Symmetry variance;
- one or two Wavetable Types;
- fixed Morph mode or a very small pool.
This is a suggested search pattern, not a built-in Explorer preset.
- centre on Formant or Scanning – Formant;
- lock Pitch Offset and render geometry;
- modest generator-control variance;
- two or three taps/Wavetable Types;
- narrow Morph/Curve pool.
This is a suggested search pattern, not a built-in Explorer preset.
- start from a useful Edge/Glitch keeper;
- optionally lock Generator Family;
- vary FM/PWM/Ring Mod and Wavetable Type more widely;
- keep render/output settings conservative.
This is a suggested search pattern, not a built-in Explorer preset.
Renaming a recipe does not turn it into a hard-coded Bulk Random preset or change its deterministic contents.
🎹 Try this:
- 10 iterations;
- small generator variance;
- one or two Wavetable Types;
- one or two Morph modes;
- Pitch Offset locked initially;
- Forward only.
Widen one rule at a time once the search becomes too conservative.
Explorer uses Input 1 and Input 2, matching Morph; A–D and Drawn are tap choices for those inputs.
🔧 During exports, status/progress DOM updates are throttled while browser task yields remain frequent enough for responsiveness. The watch-while-you-wait table is wide enough to show both selected taps.
🔧 With Render Diagnostics enabled through the ?render_diagnostics=a URL query parameter, rendered Explorer sidecars can include render_diagnostics.named_draws: draw path, canonical SHA-256 input, source word, mapping details, and resolved result. Fixed values and singleton pools create no fake draws.
Diagnostics are observational; they do not change the planned batch or PCM.
The live readout shows the current file's seed, endpoint generators/controls, routing, Morph, and render settings during export. After success, the final rendered file remains displayed so the used seed and final-file settings remain easy to inspect/copy. Live-status labels use trailing colons for readability.
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