Skip to content

Layer System

Grainulator has two independent layers, Layer 1 and Layer 2. Each layer has its own audio buffer, grain engine, window shape, pitch variation, filter, resonator, sub oscillator, and envelopes. The two layers share the global effects chain (delay, reverb, compressor, master filter) and the modulation matrix.

Internally the code calls these "voices" and parameter names begin with V1 / V2, but the UI and this manual use "Layer 1" / "Layer 2" throughout.

What each layer owns

Truly per-layer controls โ€” independent between Layer 1 and Layer 2 โ€” live on the GRAIN and TEXTURE tabs:

  • Grain core (size, density, pitch, speed, jitter, spread, pan, level)
  • Window shape, window morph, decay
  • Pitch variation (probability, mode, direction, range)
  • Dynamics randomisation
  • Reverse probability
  • Scan rate / depth
  • Loop points, freeze state
  • The per-layer filter (model, cutoff, resonance, drive, env depth)

On the SYNTH tab, only Root 1 and Root 2 are truly independent. The Resonator, Sub Oscillator, VCA envelope, Filter envelope, and Glide are all global: they are mounted in the UI via Layer 1's parameters, and any change applies to both layers. This is a v2-era simplification โ€” the per-layer parameter slots still exist in the preset format for backward compatibility, but the audio engine runs a single shared instance.

See the SYNTH tab page for details.

What is shared between layers

The following are global and affect both layers together:

  • SYNTH panel: resonator, sub oscillator, VCA / filter envelopes, glide
  • FX chain: master filter, compressor, delay, reverb
  • Master gain, dry/wet
  • Modulation matrix (each lane can be targeted at a specific layer)
  • Macro knob (the hero Morph control on the GRAIN tab)

Buffer modes

A Link toggle on Layer 2's waveform display controls whether the two layers share one audio buffer or use independent ones:

  • Independent (unlinked) โ€” each layer loads its own sample. Dropping a file onto Layer 1's waveform fills Layer 1; dropping onto Layer 2's waveform fills Layer 2.
  • Linked (shared) โ€” Layer 2 reads from Layer 1's buffer. Loading a new sample into Layer 1 updates both layers. Useful for building dense textures from a single source.

In linked mode, Layer 2 still has its own grain parameters โ€” it's only the underlying audio that is shared.

Enabling and muting layers

Each layer has a power toggle that disables it entirely (no grains spawn, no CPU spent). Mute and solo buttons provide quick in-session silencing without resetting the layer.

Switching layers in compact mode

In the full two-row standalone layout, both layers' controls are visible side by side. In the compact AU or iPhone layout, only one layer's controls are visible at a time and the Layer 1 / Layer 2 segmented control in the header bar switches the view. Changing layers never stops playback โ€” both layers keep running, you are only changing what is visible for editing.

See also