TouchMachines Gravity →
User Manual

Gravity

A touch-first instrument that generates melodies through physics simulation. Fling orbs around a 2D plane — they bounce off walls, triggering notes mapped to musical scales. A draggable central mass attractor creates complex orbital paths and evolving melodic patterns.

Plugin · VST3 / Standalone 4 Orbs · 16-voice Pluck Audio + MIDI Out

Overview

Gravity is a physics sandbox that makes music. It doesn't have steps, keys, or arpeggiators in the conventional sense — it has four coloured balls, gravity, a draggable attractor, and walls that ring like bells when something hits them.

How it works in one paragraph

Four orbs move around a 2D plane under simulated gravity. When an orb strikes a wall, the position along that wall is mapped to a note in the current scale. The note plays — through Gravity's own impact synth, or out over MIDI, or both. You shape the music by shaping the physics: tune gravity, damping, friction, and a central attractor; fling orbs with your finger; turn on a clock-synced pulse to make everything breathe in time.

What's in the box

  • 4 physics orbs — each with its own pitch offset, volume, MIDI channel, quantization, and enable switch. All four feed one shared polyphonic instrument.
  • Built-in pluck engine — a 16-voice Karplus-Strong string with stiffness (piano-like inharmonicity), brightness, decay, and warmth controls. Pretty on its own, lush with the built-in reverb.
  • 16 scales with root and octave, plus a scale sequencer for bar-synced key changes.
  • Central mass attractor — a draggable gravitational point that bends orbital paths.
  • Gravity pulse — a periodic burst of attraction, locked to 1, 2, 4, or 8 bars, that turns chaos into rhythm.
  • MIDI out per orb — each orb can drive an external synth on its own channel, with optional CC output for X/Y position.
  • OpenGL visuals — 3D geodesic sphere with bloom, motion trails, collision particles. Every sound has a visual counterpart.
  • 8 colour themes, 8 factory presets, full state save/recall.
Mental model Gravity is a "generative performer." You don't write a sequence — you set up conditions. The orbs do the playing; you do the curating.

Quick Start

From plugin load to first melodic orbit in about a minute.

  1. Load Gravity on an instrument track. In VST3 use, it outputs both audio and MIDI; in standalone, audio only.
  2. Pick a preset from the top bar — Orbital Chimes is a gentle starting point.
  3. Press PLAY (or run your DAW transport).
  4. Fling an orb: click and drag it from one point to another, then release. The drag vector becomes its velocity.
  5. Drag the central mass — the small circle near the middle. It's a gravity well; moving it changes the orbital paths.
  6. Try a pulse: set Pulse in the top bar to 2 bars. Every two bars the central mass briefly inhales, pulling orbs toward it and creating a rhythmic swell.
The core loop Fling · Tune physics · Route to a voice · Let it run. Adjust scale when the key needs to move.

The Interface

A dark top bar, the physics plane in the centre, a left strip for scale and key, a tabbed right panel for everything else, and an optional scale-sequencer timeline along the bottom.

Top Bar

PLAY / STOP
Standalone transport; ignored when a DAW transport is running.
BPM
Tempo. 60–240 BPM. Follows host when present.
Reset Orbs
Puts all four orbs back at rest on the floor. Use when physics has drifted somewhere unusable.
Pulse
Gravity-pulse interval: Off · 1 · 2 · 4 · 8 bars. When on, the central mass surges at that interval, locked to transport.
Presets
Dropdown + Save / Del. Eight factories ship built-in; saving adds user presets.
Hide Panels
Collapses the side panels for a full-screen physics view — useful on a touch screen or for performance.
Theme
Opens the theme picker. Eight CVD-friendly palettes.

Left Panel — Scale & Key

Orb Enables
Four buttons (Red, Blue, Green, Yellow) to enable or mute each orb.
Scale
16-option grid. Chromatic · Major · Minor · Dorian · Phrygian · Lydian · Mixolydian · Locrian · Pentatonic · Blues · Harmonic Minor · Melodic Minor · Whole Tone · Diminished H-W · Diminished W-H · C Major Arp.
Root
12-option grid, C through B.
Octave
−2 … +2.
Key Range
How many semitones the wall spans — 6 · 12 · 24 · 36 · 48. Larger ranges = more pitches along each wall.
Quantize (global)
Grid snap for collisions: None · 1/32 · 1/16 · 1/8 · 1/4 · 1/2. Per-orb quantize overrides this.
Orb Collisions
Toggle. When on, orbs collide with each other and generate a note from the midpoint of their last two wall notes, snapped to scale.
Scale Seq
Toggles the scale sequencer. While on, Scale/Root pickers dim — the timeline drives the key.

Right Panel — Four Tabs

Covered in detail in § Physics Controls, § Sound Design, § Visuals, and § MIDI & CC Output. The four tabs are:

  • PHYSICS — gravity, damping, friction, mass.
  • SOUND — global pluck engine + reverb, and per-orb pitch / volume / quantize / mass.
  • VISUALS — trails, particles, bloom, 3D intensity.
  • MIDI — per-orb MIDI channel, note-output toggle, CC output for X/Y.

The Physics Plane

The centre of the window — a 2D arena where everything happens. Gravity pulls down; walls bound the space; orbs bounce; a central mass attracts.

What you can touch

Orb
Click/tap and drag. While held, the orb follows your cursor. Release to fling — the drag vector becomes velocity.
Central mass
The small circle in the middle of the plane. Drag to reposition the gravitational attractor. Stronger mass = tighter orbits.

What you'll see

  • Coloured trails — each orb leaves a fading tail. Length and opacity are tweakable.
  • Wall glow — the wall segment flashes in the orb's colour at the moment of impact. That position along the wall is the note that played.
  • Collision particles — a brief burst on impact. Purely cosmetic but a good visual beat marker.
  • 3D sphere — an OpenGL geodesic wireframe with bloom floats over the plane. Visual-only; it reacts to activity.
How a wall becomes a melody Each wall is divided into N pitches where N depends on the Key Range and scale. The position of impact (0 on one end, 1 on the other) picks the note. Hit the wall near its centre and you're near the middle of the scale; hit near an edge and you're at the extremes.

Orbs & the Shared Voice

Four orbs, one instrument. Every orb's wall-collisions feed a single polyphonic pluck engine — so four orbs playing together are four simultaneous voices of the same instrument, the way Gravity sounds when you route all four MIDI channels to a piano in your DAW. The orb selector at the top of the SOUND / MIDI tabs picks which orb's per-orb settings (pitch offset, volume, quantize, mass, MIDI channel, CC) you're editing.

ORB 1 · RED
ORB 2 · BLUE
ORB 3 · GREEN
ORB 4 · YELLOW

Voice signal chain

Noise burst  ─▶  Delay line (fractional)  ─▶  Damping LP  ─▶  Stiffness (2× allpass)  ─▶  Decay gain  ─┐
    ▲                                                                                                  │
    └────────────────────────────── feedback ──────────────────────────────────────────────────────────┘
                                    │
                                    ▼
                        16 voices summed  ─▶  Reverb  ─▶  Output

A Karplus-Strong pluck: the short noise burst exciting the feedback loop sets the attack character; the loop's damping and decay settle the tail; cascaded allpass filters add piano-like inharmonicity when you raise stiffness.

Orb properties

Enabled
On the left panel. Disabled orbs still exist in physics but don't trigger notes.
Colour / ID
Fixed: 1=Red, 2=Blue, 3=Green, 4=Yellow. These match the left-panel enable buttons.
Size
Per-orb visual radius (0.015–0.08). Larger orbs collide with walls sooner.
Mass
Global (0.1–5.0) or per-orb override. Heavier orbs resist deflection and fall faster under gravity.
Pitch / Volume
Per-orb on the SOUND tab. Pitch offsets this orb's notes by up to ±24 semitones; volume scales its velocity.

Physics Controls

The PHYSICS tab of the right panel. This is where the feel of the world lives.

Physics Feel (XY pad)

X — Gravity
0–1. How hard everything is pulled down. Low values feel zero-G; high values make orbs slam back to the floor.
Y — Damping
0–1. How much energy an orb loses on bounce. High damping = quick settling; low = infinite bouncing.

Central Mass (XY pad)

X — Strength
0–1. How strongly the mass attracts orbs. At 0 it's a free plane; at 1 it's a black hole.
Y — Size
0.1–1.0. Visual radius of the attractor and the range over which its influence falls off.

Friction

Vertical strip, 0–1. Surface drag — not related to damping. With high friction, orbs rolling along the floor slow quickly; with low friction they slide forever.

Orb Mass

Vertical strip, 0.1–5.0. Global mass shared by all orbs unless overridden per-orb on the SOUND tab.

Orb Size

Four vertical strips, one per orb (0.015–0.08).

Orb-to-orb collisions are toggled from the left panel, just above Scale Seq. When on, an orb hitting another orb plays a note from the midpoint of the two orbs' most recent wall notes (snapped to scale) — a cheap way to create call-and-response harmonies.

A feel starter Low gravity (≈0.2) + low damping (≈0.15) + low friction (≈0.1) = long, floaty orbits. Add a moderate central mass and you're making ambient music in thirty seconds.

Sound Design

The SOUND tab. Four global XY pads up top shape the shared pluck engine and its reverb; below, the orb selector picks which orb's per-orb dynamics you're editing.

Global — Instrument

Instrument (XY pad)
X — Brightness 0–1. HF content of the excitation burst — dark and woody at the bottom, bright and glassy at the top. Y — Decay 0–1. How long notes sustain. High decay reaches piano-like ring-outs; low is a short pluck.
Character (XY pad)
X — Warmth 0–1. HF rolloff inside the feedback loop — low is metallic and nasal, high is dark and mellow. Y — Stiffness 0–1. Dispersion. Zero is an ideal string; raising it pulls overtones upward into piano-like inharmonicity.

Global — Reverb

Reverb (XY pad)
X — Size 0–1. Small room to large hall. Y — Mix 0–1. Dry-to-wet crossfade applied to the whole instrument bus.
Reverb Depth (XY pad)
X — Damping 0–1. How fast high frequencies die in the tail — low is bright/glassy, high is dark/plate-like. Y — Width 0–1. Stereo spread of the reverb (0 mono · 1 full stereo).

Per-orb

Dynamics (XY pad)
X — Pitch −24 … +24 semitones. Transposes this orb's output. Y — Volume 0–1. Scales velocity for this orb.
Quantize
Per-orb collision grid: Global · None · 1/32 · 1/16 · 1/8 · 1/4 · 1/2. When set to anything other than Global, this orb ignores the global quantize and uses its own.
Mass
Toggle Global / Custom plus a strip. Lets this orb have a unique mass without changing the others.

How quantize works

When a collision happens, the note can fire immediately (None) or be held until the next grid boundary (1/16, 1/8, etc.). This turns freeform physics bounces into rhythmically tight patterns. Use per-orb quantize to mix loose and tight rhythms — e.g. one orb on 1/4, another on None.

Piano vs. harp vs. glass For a jazz-piano feel, raise Stiffness to ~0.3–0.5, Decay to ~0.85, Warmth to ~0.4, Brightness to ~0.6. For classical harp, drop Stiffness to near zero and keep Brightness high. For a glassy ambient bell, raise Brightness and Decay, pull Warmth down, and push Reverb Size + Mix high.

Scales & Scale Sequencer

Everything Gravity plays is scale-quantized. Pick a key manually, or let the timeline modulate it.

Manual mode

  1. Set Scale, Root, and Octave on the left panel.
  2. Adjust Key Range to change how many pitches fit along each wall (wider range = bigger leaps between adjacent collision points).

Scale sequencer

Enable Scale Seq on the left panel. A timeline appears along the bottom of the window:

  • Segments — each is a root + scale + bar length. Durations available: 1, 2, 3, 4, 6, 8, 12, 16 bars.
  • Playhead — a vertical cursor that sweeps across. When it enters a new segment, the key changes, synced to transport.
  • Add+ to insert a new segment (up to 16 total).
  • Edit — click a segment to open a popup with scale / root / bars pickers and a mini-keyboard preview. DEL removes it (when more than one exists).
Progressions as automation Build C Maj → A Min → F Maj → G Maj and Gravity plays a four-bar progression continuously — your orbs re-harmonize on each bar line without touching anything.

MIDI & CC Output

Each orb can drive an external synth on its own MIDI channel, independent of the internal voice. The internal synth still plays unless you mute it at the DAW level.

Per-orb MIDI controls (MIDI tab)

Channel
1–16. Defaults: Orb 1 → Ch 1, Orb 2 → Ch 2, Orb 3 → Ch 3, Orb 4 → Ch 4.
Note Output
Toggle. Notes On emits a MIDI note for every collision on this orb. Notes Off keeps the internal voice audible but sends nothing out.
CC Output
Toggle plus two CC-number strips. When on, the orb's X and Y positions are transmitted as MIDI CCs. Defaults: CC 16 / CC 17. Use these to modulate filters, effects, or anything else on a downstream instrument.

Full signal flow

USER INPUT                                    DAW TRANSPORT
  Fling orb · Drag central mass · Enables            │
        │                                            │
        ▼                                            │
  Physics Engine (60 fps)  ◀─ gravity/damping/friction ─┤
        │                                            │
        │  collision detected                        │
        ▼                                            │
  CollisionEvent FIFO (lock-free)                    │
        │                                            │
        ▼                                            │
  Collision Processing                                │
    · map wall position → scale note                 │
    · apply per-orb quantization  ◀──────────────────┘
    · trigger internal voice
    · optional MIDI note out (per-orb channel)
        │
        ▼
  Pluck Engine (16-voice poly) ─▶ Reverb ─▶ Audio Out
                                      +
                             MIDI Out (notes + CC)

Routing patterns

  • Gravity's internal pluck — do nothing. The built-in engine handles all four orbs polyphonically in standalone or in a DAW.
  • Route to a piano (or any poly synth) — point all four orb MIDI channels at the same instrument track. You get the "jazz piano being played by four hands" behaviour that motivates the design.
  • Four synths in parallel — one instrument track per lane in the DAW, each listening on Ch 1/2/3/4. Full sonic independence, still driven by the same physics.
  • Gravity as MIDI-only source — turn down Gravity's track volume; keep Note Output on. The internal pluck is silent, external synths respond.
  • Orbs as expression controllers — enable CC Output on one orb, point its X/Y CCs at a filter cutoff and resonance on your main synth. The orb becomes a slow, organic modulation source.

Visuals, Themes & Presets

Visuals tab

Visuals
Master on/off for all visual effects. Disable for lower GPU load.
Particles
Collision burst particles on impact.
Trail (XY)
X length · Y opacity. Long low-opacity trails read as ghosts; short high-opacity trails as comets.
Glow (XY)
X bloom intensity on the 3D sphere · Y overall 3D intensity.

Themes

Eight colour themes accessible from the top-bar Theme button. All are tested for colour-vision accessibility — the four orb colours (Red/Blue/Green/Yellow) remain distinguishable under each palette.

Ember
Ocean
Forest
Amethyst
Infrared
Arctic
Neon
Midnight

Factory presets

PresetScale / RootCharacterTheme
InitMajor / CClean starting pointEmber
Orbital ChimesPentatonic / CLow gravity, long decays, central-mass orbitsOcean
Chaos BounceChromaticHigh gravity, no attractor, short clicky hitsInfrared
Ambient DriftHarmonic Minor / DVery low gravity, long decays, slow evolutionArctic
Rhythmic GridMajor / FGlobal 1/8 quantize for tight groovesNeon
Dark OrbitsBlues / AOctave −1, moderate gravity, broodingMidnight
Gamelan GardenPentatonic / EPer-orb masses for layered polyphonyForest
Pulse MachineBlues / A100 BPM, 1/4 quantize, driving pulseAmethyst

Use Save in the top bar to add your own; Del removes the current user preset.

Workflows & Recipes

Concrete ways to use Gravity. Each is a few minutes of setup.

Recipe 1 · Hypnotic orbital ostinato

  1. Load Orbital Chimes. Turn Gravity down to ~0.2 and Central Mass Strength up to ~0.6.
  2. Drag the central mass slightly off-centre — orbits become elliptical.
  3. Enable Pulse = 4 bars. Every four bars, the mass inhales and the orbits tighten.
  4. Set Key Range = 24 for wider melodic leaps.

Recipe 2 · Rhythmic machine

  1. Start from Rhythmic Grid.
  2. High gravity (≈0.8), high damping (≈0.7) — orbs bounce fast and settle quickly.
  3. Set global Quantize = 1/16. Every collision snaps to a 16th.
  4. Per-orb: Orb 3 → Quantize = 1/4. The "kick" orb now plays only on beats while the others chatter around it.
  5. Enable Orb Collisions for surprise harmonies.

Recipe 3 · External-synth trigger

  1. In your DAW, create four instrument tracks. Point each at a different synth, listening on channels 1–4 respectively.
  2. Open Gravity. Under the MIDI tab, set Note Output = Notes On on all four orbs.
  3. (Optional) Mute Gravity's audio output so only the external synths are heard.
  4. Fling orbs — each plays its own synth on its own channel.

Recipe 4 · XY as a modulator

  1. Pick one orb. Disable its Note Output. Enable CC Output, set CC X = 1 (mod wheel), CC Y = 74 (filter).
  2. Drop Gravity to ~0.05 so the orb drifts slowly.
  3. Drag the orb high into the plane and release with a slow horizontal motion — CC 1 and 74 now lazily modulate your target synth for as long as the orb drifts.

Recipe 5 · Chord changes without editing notes

  1. Get a pattern playing with any preset.
  2. Enable Scale Seq on the left panel.
  3. Add segments: C Maj · 1 bar, A Min · 1 bar, F Maj · 1 bar, G Maj · 1 bar.
  4. The orbs keep doing their thing; the progression rides over top, bar-synced.

Tips & Troubleshooting

Tips

  • Start from a preset, not from Init. Gravity's parameter space is wide; presets are curated into playable zones.
  • Low gravity + low damping = long evolution. High gravity + high damping = tight rhythm. Everything else is in between.
  • Pulse is the metronome. If a patch feels arrhythmic, turn the pulse on before touching anything else.
  • Key Range is a composition tool. Smaller ranges stay close to tonic; larger ranges give you full melodic range but bigger jumps between adjacent wall positions.
  • Use per-orb quantize for layered time. One orb on 1/4, one on 1/16, one on None — instant polyrhythm.
  • Hide Panels for performance. The full-screen physics plane is great on a tablet or in a live rig.

Troubleshooting

Nothing plays
Check orb enables on the left panel, Volume per orb, and that the transport is running. If you're expecting external MIDI, check Note Output = Notes On.
Orbs fall off-screen or behave oddly
Use Reset Orbs in the top bar.
Can't change scale manually
Scale Seq is enabled — disable it, or edit segments on the timeline.
Collisions feel sloppy
Raise global or per-orb Quantize. Raise Damping so orbs settle rather than micro-bouncing.
Runaway feedback / orbits spiralling in
Lower Central Mass Strength. It's the usual culprit when orbs pile up at the centre.
CPU high
Turn Visuals off on the VISUALS tab. The OpenGL sphere and particle system are the heaviest costs.
Orb-orb collisions not triggering
The Orb Collisions toggle on the PHYSICS tab is off, or both orbs haven't recorded a wall note yet (needed to compute the midpoint note).

Control Reference

Alphabetical index. Every top-level control, where it lives, and what it accepts.

ControlLocationValuesNotes
BPMTop bar60–240Follows host when available.
CC OutputMIDI tabtoggle + 2 × 0–127Per-orb X / Y CCs.
Central MassPhysics tab · XYStrength 0–1 · Size 0.1–1.0Also draggable on the plane.
ChannelMIDI tab1–16Per orb.
DampingPhysics tab · XY (Y)0–1Energy loss on bounce.
DecaySound tab · XY (X)10–2000 msPer-orb amp envelope.
DynamicsSound tab · XYPitch ±24 · Volume 0–1Per orb.
FrictionPhysics tab0–1Surface drag.
GlowVisuals tab · XYBloom 0–1 · 3D intensity 0–1Affects OpenGL sphere.
GravityPhysics tab · XY (X)0–1Downward force.
Hide PanelsTop bartoggleFull-screen physics view.
Key RangeLeft panel6 · 12 · 24 · 36 · 48Semitones spanned per wall.
Note OutputMIDI tabtogglePer-orb MIDI note emission.
OctaveLeft panel−2 … +2Global octave offset.
Orb CollisionsPhysics tabtoggleMidpoint-note generation.
Orb EnablesLeft panel4 togglesMutes per orb.
Orb MassPhysics tab0.1–5.0Global; overridable per orb.
Orb SizePhysics tab0.015–0.08Per orb.
ParticlesVisuals tabtoggleCollision burst FX.
PLAY / STOPTop bartoggleStandalone transport.
PresetsTop bardropdown + Save / Del8 factory + user.
PulseTop barOff · 1 · 2 · 4 · 8 barsGravity-pulse interval.
Quantize (global)Left panelNone · 1/32 … 1/2Collision grid snap.
Quantize (per orb)Sound tabGlobal · None · 1/32 … 1/2Overrides global for that orb.
Reset OrbsTop barbuttonSends orbs to default rest.
RootLeft panelC–BDimmed when Scale Seq active.
ScaleLeft panel16 scalesDimmed when Scale Seq active.
Scale SeqLeft paneltoggleEnables timeline automation.
ThemeTop bar8 themesCVD-friendly palettes.
ToneSound tab · XY (Y)0–1Per-orb filter brightness.
TrailVisuals tab · XYLength 0–1 · Opacity 0–1Orb motion trails.
VisualsVisuals tabtoggleMaster switch.