Touch controls¶
Grainulator's UI is built around the same gestures on iPad as on desktop โ the mouse events map cleanly to single-finger touch. Every gesture listed here is implemented in the current build; nothing is aspirational.
Knobs¶
Single tap A single tap on a knob does nothing destructive โ it just begins a drag if you keep your finger down. Use it to grab a knob.
Vertical drag Drag your finger up to increase the value, down to decrease. Horizontal movement is ignored. Typical use: set the Pitch, Density, Size, or any other knob. The sensitivity is tuned so a full knob sweep is roughly 200 pixels of vertical travel.
Double tap Double-tap any knob to snap it back to its default value. Useful when you've been sweeping Cutoff or Density exploring sounds and want a clean reset.
Fine adjust
On desktop, holding Shift while dragging gives a 10x-slower fine-adjust. iPad has no Shift key, so fine adjust on touch is not available โ land close to the value you want and let the normal drag sensitivity do the rest.
Buttons, toggles, dropdowns¶
Single tap Taps activate buttons, flip toggles, and open dropdown menus. Once a dropdown is open, a second tap picks the highlighted option.
Waveform display¶
The waveform display (visible on the GRAIN tab and along the bottom of the SYNTH tab) is the only widget with richer gestures.
Tap on an empty layer If a layer has no audio loaded, tapping its region opens the iPadOS file browser so you can pick a WAV/AIFF/MP3/FLAC/OGG/M4A file to load.
Tap near a grain playhead Taps landing near an active playhead grab that playhead. Drag your finger to scrub the grain read position in real time โ the grain cloud follows your finger.
Drag across an empty region of the waveform Drags that don't start on a playhead paint a loop region: finger-down sets the start, finger-up sets the end. The grain engine confines reads to this region until you paint a new one.
Drag an audio file onto the waveform From Files in Split View or Slide Over, long-press a supported audio file to pick it up, then drag it onto Grainulator's waveform and release. The file is loaded into the first empty layer (Layer 1 if both are empty, Layer 2 if Layer 1 is already loaded), or into the currently focused layer if both have audio.
Drop targeting
The drag-and-drop handler loads the file into the first empty layer, then falls back to the focused layer. There's no per-half targeting โ dropping on the Layer 2 strip won't force-load into Layer 2 if Layer 1 is empty.
Gestures not implemented¶
For completeness, these are gestures that exist on some plug-ins but not on Grainulator:
- Long-press on a knob does not open a mod-assignment menu. Use the MOD tab to route modulation.
- Two-finger drag is not a separate fine-adjust gesture.
- Pinch-to-zoom on the waveform is not implemented.