Field Sampler — interface walkthrough

branch develop · commit 42e7e45 · Sun, 11 Oct 2026 20:30:25 GMT · iPad Air (5th gen) landscape, 1180×820 pt @2×, touch; Chromium · CI run

55/55 All checks passed 21 steps. Audio is what the app sent to the speakers, captured in the page. Grey (i) rows are measurements to look at, not pass/fail.

Listen through 17 clips · 0:30

Every sound the walkthrough played, in order, in one file: a soft tick before each clip. Tap a row to jump to it; the row playing is highlighted. Download to listen anywhere.

NowPress play, or tap a clip.

1First launch0.5 s

The app opens on a blank session: no dialogs, a prompt to record or import, and every control in place.

Empty session on an iPad Air in landscape (1180×820 pt).
Empty session on an iPad Air in landscape (1180×820 pt).

2Demo take0.6 s

Demo loads a built-in synthetic recording (knocks, thuds, plucked notes) so the app is playable without a microphone.

The demo take, sliced.
The demo take, sliced.

3Record from the microphone3.1 s

Rec starts recording at once; the waveform scrolls in live. Rec again stops, analyses and saves the take. (The microphone here is a fake device playing the demo file.)

Recording: live waveform, elapsed time on the Rec button.
Recording: live waveform, elapsed time on the Rec button.
Recorded take, sliced and saved.
Recorded take, sliced and saved.

4Import a file0.9 s

Import opens a file (here the walkthrough take: footsteps, knocks, a plucked A3, a quiet knock, a wind gust, glass, bird chirps, dropped keys). Analysis runs off the main thread and the take is saved.

Ground truth: footstep 0.4s · footstep 1s · footstep 1.6s · knock 2.3s · knock 2.55s · pluck 3.2s · quiet knock 5.8s · glass 6.4s · bird chirp 7.6s · keys 8.3s · footstep 9.3s · bell 10.3s

The imported file itself.
Imported take, sliced. Faint audio is trimmed background no pad plays.
Imported take, sliced. Faint audio is trimmed background no pad plays.

5Keys arm the most tonal slice0.6 s

After analysis the keys arm the slice that makes the best instrument (pitch confidence × ring length), not slice 1. Its detected root labels the keys.

Keys panel: the armed slice, its root, and the root key (●).
Keys panel: the armed slice, its root, and the root key (●).

6Pads play trimmed slices1.3 s

A pad plays its slice from just before the attack to where the sound dies into the background, not to the next hit. Faint regions on the waveform are what gets trimmed.

Pad 1: the first footstep. Level, dBFS

Listen for: A short footstep thump that stops cleanly: no room hiss trailing after it.

-10-30-50-700.0s0.5s1.0snext hit
Pad flashes on touch; its slice is selected on the waveform.
Pad flashes on touch; its slice is selected on the waveform.

7Normalization3.2 s

With Norm on (default), every slice plays at the same peak level, so a distant knock is as playable as a close one. Norm off plays slices at their recorded level.

Knock, Norm on. Level, dBFS

Listen for: A knock at full level.

-10-30-50-700.0s0.5s
Quiet knock (10 dB softer in the file), Norm on. Level, dBFS

Listen for: Another knock, as loud as the previous one (it is 10 dB softer in the file).

-10-30-50-700.0s0.5s
Knock, Norm off. Level, dBFS

Listen for: Norm off: the knock at its recorded level.

-10-30-50-700.0s0.5s
Quiet knock, Norm off. Level, dBFS

Listen for: Norm off: clearly softer than the previous knock.

-20-40-60-800.0s0.5s
Norm toggled off (bottom right of the pads).
Norm toggled off (bottom right of the pads).

8Waveform: tap, double-tap, arrows3.9 s

Tapping a slice selects and auditions it (Delete acts on the selection). Double-tapping arms it on the keys. The ‹ › arrows step the armed slice. A glass and a bell have no clean harmonic series, so their roots are best guesses, marked ≈ with no cents: the glass by its lowest partial, the bell by its hum (the right note, an octave below the strike).

Tap on the second knock: auditions it. Level, dBFS

Listen for: The second knock, auditioned by tapping its slice on the waveform.

0-20-40-600.0s0.5s
Double-tap armed the glass slice.
Double-tap armed the glass slice.
Double-tap armed the bell: its root is a best guess, marked ≈.
Double-tap armed the bell: its root is a best guess, marked ≈.

9Keys: pitch matches the label7.8 s

Each key plays the armed slice at that key's pitch, tuned against the detected root. Touching low on a key plays it dry (no smear). Measured: the pitch of what comes out of the speakers.

Key root (MIDI 57), held 1 s, dry. Level, dBFS

Listen for: The plucked string at its own pitch (A3), steady, no warble.

-10-30-50-700.0s0.5s1.0s
Key lowest (MIDI 48), held 1 s, dry. Level, dBFS

Listen for: The same pluck lower (C3), same character, no warble.

-10-30-50-700.0s0.5s1.0s
Key highest (MIDI 60), held 1 s, dry. Level, dBFS

Listen for: The same pluck higher (C4), same character, no warble.

-10-30-50-700.0s0.5s1.0s

10Keys: a held note sustains9.3 s

Held past the end of its slice, a pitched note plays its natural decay, then hovers where it has fallen 12 dB: each grain comes from a random in-tune spot there, so there is no fixed loop to hear repeating. Release fades it out.

Root key held 4 s, then released. Level, dBFS

Listen for: The pluck rings, then settles into a steady, slightly grainy tone: no pulse, no audible loop, no re-strike. It fades at release.

-10-30-50-700.0s1.0s2.0s3.0s4.0srelease
Holding the root key: the key lights, grains show on the waveform.
Holding the root key: the key lights, grains show on the waveform.

11Smear7.1 s

Finger height on a key is the smear: low is dry, high freezes the sound into a grain cloud (live PaulStretch). Smeared notes release more slowly.

Root key touched near the top (smear ≈ 0.9), held 2.5 s. Level, dBFS

Listen for: A frozen, washy cloud made from the pluck, with a slow fade after release.

-10-30-50-700.0s1.0s2.0s3.0s4.0srelease
Smeared note: grain dots across the slice on the waveform.
Smeared note: grain dots across the slice on the waveform.

12Computer keyboard2.3 s

With a hardware keyboard: number row plays pads, A…K plays the keys, ← → step the armed slice, Z X shift octave.

Key 1 → pad 1. Level, dBFS

Listen for: Pad 1 (a footstep), from the hardware key 1.

-10-30-50-700.0s0.5s
A key held 0.6 s (lowest key). Level, dBFS

Listen for: The lowest key (C3), from the hardware key A.

-10-30-50-700.0s0.5s1.0s

13MIDI7.9 s

MIDI channel 1 plays pads from C1 (note 36); channels 2–16 play slices 1–15 pitched; velocity sets level; mod wheel sets smear. (Driven through the hook a native iPad wrapper uses: window.fieldSamplerMidi.)

Ch 1 note 36, velocity 127 → pad 1. Level, dBFS

Listen for: MIDI pad 1 at full velocity.

-10-30-50-700.0s0.5s
Ch 1 note 36, velocity 64. Level, dBFS

Listen for: The same pad, clearly softer (velocity 64).

-20-40-60-800.0s0.5s
Ch 7 note 69 (A4) → slice 6, the pluck, an octave up. Level, dBFS

Listen for: The pluck an octave up (A4), from a MIDI channel.

-10-30-50-700.0s0.5s1.0s
Same note with the mod wheel up (smear 1), held 1.5 s. Level, dBFS

Listen for: The same note with the mod wheel up: smeared, with a long tail.

-10-30-50-700.0s0.5s1.0s1.5s2.0s2.5snote off

14Delete and undo4.1 s

Delete a transient with the trash button under its marker (or the Delete key). Its audio is dropped; Undo brings it back.

Second knock selected: the trash button sits under its marker.
Second knock selected: the trash button sits under its marker.
After the trash tap: one hit fewer.
After the trash tap: one hit fewer.

15Add a transient1.7 s

Long-press on the waveform adds a transient at the finger. It gets its own natural end like any other hit.

A transient added by long-press at 7.95 s.
A transient added by long-press at 7.95 s.

16Sensitivity1.0 s

The slider beside the waveform filters precomputed candidates: instant, no re-analysis. Short ticks along the bottom show what the next stretch of the slider would add.

Sensitivity near the top: more hits.
Sensitivity near the top: more hits.
Sensitivity near the bottom: only the strongest hits.
Sensitivity near the bottom: only the strongest hits.

17Name, history and link2.5 s

Tap the name to rename. The ▾ menu lists this browser's takes and copies the take's link. Edits autosave.

Takes menu: Copy link and this browser's takes.
Takes menu: Copy link and this browser's takes.

18Shared link: view only, with a preview card0.8 s

Someone opening the link (another browser) gets the same take and can play it, but not change it. Messages and Slack show a preview card with the name and waveform.

The link opened in a fresh browser: "View only".
The link opened in a fresh browser: "View only".
The preview card image (og:image).
The preview card image (og:image).

19Reopen a take from history1.1 s

Choosing a take in the menu opens it (its URL becomes the address), with its own slicing and edits.

The recorded take, reopened from the menu.
The recorded take, reopened from the menu.

20Portrait2.2 s

Portrait works too (secondary): the same single screen, stacked.

iPad Air in portrait (820×1180 pt).
iPad Air in portrait (820×1180 pt).

21Console0.0 s

Errors the page logged during the whole walkthrough.

About the demo take

12 s, stereo, 48 kHz, built by e2e/fixture.mjs. Room tone ~−50 dBFS with a +0.01 DC offset and 6 Hz rumble; a wind gust 4.5–5.4 s. Hits: footstep 0.4 s · footstep 1 s · footstep 1.6 s · knock 2.3 s · knock 2.55 s · pluck 3.2 s (220.69 Hz) · quiet knock 5.8 s · glass 6.4 s (880.00 Hz) · bird chirp 7.6 s · keys 8.3 s · footstep 9.3 s · bell 10.3 s (440.00 Hz).