Wavetable
Two oscillator banks with continuous frame morphing.
A recording split into a playable grain cloud.
Engine preview
Audio Unit, CLAP, Standalone app, VST3
A granular synthesis instrument over bundled guitar takes. Choose a time position or explore an analyzed 2D map of grain slices, then shape the cloud with size, density, pitch and direction.
The downloadable Granular release supports the hosts and systems listed below.
Apple's native plug-in format for Logic Pro, GarageBand and other macOS hosts.
The open plugin format — Bitwig, Reaper and a growing list of hosts.
Runs on its own. No DAW required.
Works in Ableton Live, Reaper, Cubase, Studio One, Bitwig and FL Studio.
Start from a named sound, then adjust the instrument to make it yours.
A sketch of the signal path, in the order of the parameter groups.
A grain is a short slice of the take, twenty milliseconds to half a second, wrapped in an amplitude window that starts and ends at exactly zero. That zero-endpoint window is the entire trick: it is what lets the instrument start and stop dozens of slices per second with no clicks, because every grain's edge is a fade, not a cut. Five window shapes are published, and they are timbres as much as envelopes: a Hann grain is smooth, an Expodec grain is a struck one.
A held note is a stream of grains counted in samples. The Processor keeps each voice's next grain onset and starts the grain on that exact frame, inside the audio callback, so nothing depends on the main thread and the same notes render the same audio on the JavaScript and WebAssembly lanes. Each grain draws its start offset, duration, playback rate, direction and stereo position from pure, seeded arithmetic (granular-math.ts): the character of the cloud is testable, and a fixed pool of 128 grain slots turns those numbers into sound.
Density and Size together set the overlap, at 18 grains a second and 90 ms each, roughly 1.6 grains sound at any instant, and overlapping grains sum. The pool compensates with a gain of one over the square root of the expected overlap: square root rather than linear because uncorrelated grains add in power, not amplitude. That is why sweeping Density changes the texture from rhythm to wash without also being a volume knob.
A reverse grain is the same read with a negative step: it starts at the far end of its slice and walks back through the take, so no reversed copy of the audio is kept. The reverse knob is a probability per grain rather than a switch, which is what makes 50% sound like time losing its direction rather than like a tape flip.
Pitch changes playback rate. In Tuned mode, confidently pitched grains are selected and their detected fundamentals are mapped to the played key; the source picker shows each take's tonal coverage. Original mode keeps the take's source pitch and transposes it relative to middle C when Keytrack is on. Grains without a reliable pitch remain available in Original mode.
The takes ship with the module: public-domain guitar takes, credited in public/audio/CREDITS.json. Choosing one makes the host fetch, verify and decode it, then hand the samples and that take's analysis map to the Processor; the waveform on screen is drawn from the peaks the Processor measured. Until the new take arrives the previous one keeps playing, and a take that fails to load says so on the screen instead of falling silent.
Two oscillator banks with continuous frame morphing.
Modelled bronze instruments with flexible tuning.
Convolution reverb: eight synthesized spaces, twenty-five real cabinets.