audio
audioOpen in playground

Drop audio here, paste, or press R to record

No scenario by those words

Your own agent, Claude Code, Codex, Pi, Gemini, Kimi or another, can measure and edit this sound. In a terminal, run

npx audio --bridge

and paste the key it prints below.

Filethe output as one file

Markers
Edit listthe cuts, for a video editor

Frames a second
Checkagainst a delivery spec
RuleAfterLimit

0:00.000

Nothing by that name

Click
Put the caret there, all else gone at once, and hear the moment under it; by a marker's line, on the marker. On a caret's line, drag the caret: the others stay
The time row
As a ruler's: a click puts the caret there alone, what is selected staying; a drag selects, with tracks through every track; held, the caret, dragged
Drag
Select a time range. An edge goes onto a cue or a marker within 3 px of it, which lights. Inside the selection, move its audio over what is there, silence where it was (past the end, silence up to it)
Double-click
Select the fragment: between the cues either side (where sounds start and end, where they hit; the markers); in a pause, the pause
Triple-click
Select the sound: between the pauses either side, a word spoken, a note held
Shift
Sums: a press extends the selection, or the caret, to it at once, from where it was begun, as in a text, and a drag goes on with it; a double-click extends to the fragment. The pointer, an I-beam with a chevron, says which way
Alt
Adds: a click another caret, the one Shift then extends (on one, takes it away); a drag another range; a double-click another fragment. Dragged inside the selection, a copy of its audio, put in where it is let go, what is there moving on after it. Held, as Figma's: every cue, faint, where a press would snap, and how far the pointer is from the selection or the caret, a line to it, the length on the time row (inside the selection, from each edge); over a waveform, its level at the pointer's time, dashed out to the axis, past the levels shown too (a clip). The pointer has a plus
⌘
Empowers: a range's end sets its length, as its square does; the cue under the pointer lights, and dragged moves, the audio either side stretching to meet it; on the spectrogram a press makes a box of time and frequency, a band (with Alt, another), and pressed while a range is dragged there, the range becomes one, from where it began. While dragging elsewhere, it aims finely: the pointer's moves go a quarter as far, and nothing snaps
A range's edge
Drag it, any range's, the others staying; past the other edge, the range turns over from it
The corners at its top
Shown, as its other handles and the caret's square, with the pointer on or by it; to a touch, always. Inward: fade it in from its start, out to its end. Outward: the audio past the edge goes, crossfading into it, the two sides drawn over each other across the seam as they will fade. A click: the next curve, as it says
The pill on its top edge
Up or down: its level, in steps (the settings), the pointer held where it was pressed meanwhile, so a drag goes on past the window's edge; the tools at its foot alike. The gain() it makes, its step chosen in the edits, draws its line over the sound, its points dragged
The tools at its foot
A voice's pitch, intonation and formants, side by side, each dragged up or down: its pitch, a few cents near where it was pressed and semitones further, 12 a picture's height away, the note it goes to said; its intonation, its rises and falls wider or flatter about their median; its formants alike, the pitch kept; each heard as it goes, from the first move
Pitch curve (View › Show, or a click on the pitch tool)
The picture turns to the spectrogram, framed on the voice, and draws the pitch curve on its harmonics: dragged up or down, the whole pitch line with it, by cents as the pitch tool goes; its bends (Praat's stylization, 2 semitones) as hollow handles, one dragged bending the voice between the handles either side; a click on it a point of the line, dragged as the gain line's, a double-click taking it away. On the waveform, the pitch line itself, one pitch() curve in semitones (an octave over half a lane)
A press held
0.4 s, still, in the picture or on the time row: the caret, dragged, the sound under it heard as it goes. On Play, the speed's line: one hold everywhere, gone if the press moves 3 px first
The square past its end
Its length: trimmed back or with silence added, stretched with the pitch kept, or sped up or slowed down with the pitch following. A click: the next. None of them while it plays
The square past the caret, |→
With nothing selected, drag it across: silence opens there, that long, as trimming out does. At the end, it is before the caret, and pulled out past the picture's edge the view widens, the silence as long as it goes
Right-click
The edits for what is under the pointer: the selection, else the caret put there; the methods used last, again; every method by kind, and the search for one; on a selection, an edit of the chain turned off over it alone. On a caret, an edge or a handle, all stays as it is
Play or pause: the selection (from where it paused, inside it), else from the caret. Put the caret elsewhere while it plays and it plays from there. While recording, it stops the recording
Play, held
Held, the speed's line shows. Dragged: faster to the right, to 4×; to the left slower, then backwards, to −2×. Let go, it plays on at that speed until stopped; at 0 or backwards, it stops there
Waveform, spectrogram
In the bar under the picture, after its levels: how the output shows. The one shown, pressed again, its dropdown: how it draws, every option in sight. The waveform's levels in sample values or dB, weighted as the ear hears them zoomed out (K or A), its colour for frequency (RGB, three bands, centroid, dominant) in a colormap, fill and lanes; the spectrogram's frequency scale (octaves, mel, ERB, hertz), its method (frames as they are, reassigned, by band, tapers), its colours (the colormaps the waveform takes), gamma, range and FFT size
Arrows, ⌥ arrows, ⌘ arrows
Move the caret a little, to the next cue, to the next sound, the selection kept; ⌘ ↑ ↓ (Home, End), to the start, the end; Shift extends
The time
The caret's, or the playhead's; after it, how long all that is selected is, or, nothing selected, all of the sound, softer; dashes while a sound is on its way. After the length, undo and redo. Pointed at, the selection and its samples. Clicked, the time brings the view to the caret or the playhead; the length shows the selection whole, again all of the sound. Out of sight, the caret or the playhead stays at the edge of the picture it is past, a chevron at its line's foot pointing out to it: clicked, the view goes there
The bar's right
What the sound is: one thing heard, chosen from its menu, pressed: the note at the caret or over the selection (a melody's compass), or where chords sound, the chords (playing, the chord at the playhead); or the key, or the tempo, each where it is clear. With tracks, of the track edited. Its level, one measure chosen the same way, its word before it: the peak, the RMS, or the loudness of all of it; pointed at, every level in a table (the peak and where it is, the RMS, the crest, the loudness, where it clips), the peak marked on the sound. What is being done stands where the level is, while it is; its rate and channels, a click from changing them; the depth the export writes, the file's kept unless another is picked there or in Export (the edits run in 32-bit float)
Wheel
Scroll: through time; up and down over zoomed-in frequencies or levels, through them. Pinch, or Ctrl and the wheel, zooms the axis under the pointer, twice as far as the fingers spread, a notch as far as = or −: the frequencies or the spectrum beside them, the levels (a quiet sound larger, or what goes over full scale), else time, while it plays about the playhead, the view following it on
Zoom in, out, show all (all the frequencies, full scale)
The palette: the edits for what is selected, and every method, found by typing (⌘K too)
Edit the selection; undo, redo, as the arrows after the length do. Each edit is a step of the chain, its seams crossfaded (the settings). What is copied pastes in any tab, and in another window of the editor; in Chrome, as a WAV in any page that takes one. ⌘V also pastes an audio file copied in the Finder or the Explorer
Playback repeats the selection, or all of it
Hear the file as it opened, level-matched, at the same place; B or Before again, the output. Before is on the deck, after Loop
Into the picture from the caret, drawn as the waveform or the spectrogram, its level and spectrum on the meters, over what is there, as a tape; into a selection, to its end (with the loop on, pass after pass, each a take, the last cut short left out). Stopped, the caret waits where the take ended: Record again records on. Recorded again where a take went in, one more take there. Undo takes it back. Into a track, the other tracks play as it records, the take lined up with what was heard (the device's latency read off its clocks)
Record a new track (or Record with Shift): an empty one under the last, recorded into from the caret as the others play
Another take (or Record with Alt, which adds): of the recording the caret is in, from where it went in to where it ends, one more take there, heard; with none there, a recording from the caret, the first
Takes
Recordings of one place, one heard, the others turned off; in the strip under their track's lanes, their place marked as a range is, ◢ their numbers ◣, lit over the sound while it or their numbers are pointed at, pressed selecting it, the one heard lit, a press on one hearing it, + adding an empty take there, heard, its place selected, for Record to record into (+ off till one has); their ends snap as a range's do. Playing, the one pressed takes over where it plays; the one heard, pressed again, is turned off, the sound heard as it was. Transport › Takes, or a right-click, lists them; Delete take there takes the one heard away, the one before heard in its place. In the code, a write() each, side by side, the others commented out; in the edits, the switch of one turns the others off
A marker at the caret, or over the selection, its name asked for, in the strip under the lanes: a moment, ▲ its name; a range, ◢ its name ◣, lit over the sound as it is pointed at. A press on a range there selects its audio and plays it while held, as a press on a note does; a click on a name renames it; a click on a triangle puts the caret there, dragged it moves the marker (a range's, that end, onto the other a moment again; a moment's with Alt, pulled apart into a range), Delete then takes it away; a named range pointed at shows a fork (⌥) at its end, which starts takes there; right-click it to name it or take it away
Edits
Every step of the chain, a panel. Choose one: the output up to it, and its settings; again, or Esc, the whole chain. An edit made then goes in right after it, the steps after it kept. Its power switch bypasses it, to hear the output without it; its × takes it away; open, its Δ: what it takes out. Dragged, a row goes where it is let go, into a group or out of one. Shift picks a range, ⌘G makes it a group, ⇧⌘G unmakes it, a double-click names it. Right-clicked, its menu: mute, move, group, flatten up to it or all of it (made one sound, kept as a take is), remove. A recipe's steps are one group under its name, folded; a press unfolds it, its switch and × act on all of them. Add an edit, under them: the palette
Recipes, Agent, Edits, Code, Export, Settings
At the top right, a panel each, beside the picture (on a phone, the buttons along the foot, the panel under the picture), which keeps where it starts and its scale: a goal's whole chain, found by its words, folded by what it is for, put after the script's own over the selection or all of it; your own agent, through the local bridge (npx audio --bridge, its key here), its words as they come, each call it makes in plain words, its conversations kept with the tab; the chain's steps; the script, its numbers dragged across, or selected and stepped by ↑ ↓ (Shift, ten steps), what each sets said by it; the file (its format, what it is written with, its markers, its name; ⌘S), the cuts as an edit list for a video editor (EDL, OTIO, FCPXML), the output checked against a delivery spec; the settings, what holds everywhere: what shows over the sound and how time reads, how an edit steps and joins, how a held caret sounds and a take records. Its button again closes it; its left edge drags its width
Tracks
Sounds side by side in time, a lane each, played and exported together. Each track's layer, on a head line over its lane: its look shows it as a waveform, a spectrogram or its notes, its name clicked names it anew (as a tab's, the one shown), the speaker mutes it (with Alt, solos it), the lock keeps presses off its lane. A lane's foot, the line under it, dragged, its height (with Alt, every track's); double-clicked, as it was made. Under the last, a press puts a new track's caret: R records into it, ⌘V pastes, a file dropped there opens there, each a track of its own; its right-click menu adds an empty one. More than the picture holds scroll up and down by the wheel or the bar at the right edge, time then by a swipe across or Shift and the wheel. A press selects within a track, never under them. What an edit is still making shows blurred, a light passing along it, till it is made, untouched by a press; an edit asked meanwhile is made then, and playing goes on as ever. Move to a new track (Track, right-click, ⌘P) takes the selection to a track of its own under this one, where it was, silence left behind, so it sounds as before and is edited alone; New track from a file (Track) adds a file; Split the voice to a new track (Track, right-click, ⌘P) puts a song's voice, by a separation model, on a track of its own, the rest left on this one, each then repaired alone; Split into four stems puts its voice, bass and drums on three, the rest left here; File › Export as › The track alone takes one elsewhere, to be remade, and Line up with (Track) puts what comes back, opened as a new track, where the original stood, Match with (Track) at its tone and loudness; Duck under (Track) takes the track 15 dB down while another sounds, a bed under a voice; Add a master (Track) puts the tracks' sum through steps of its own, a lane of its own, the last: in the code, `voice.clone().mix(bed)` and its steps. A press in a lane edits its track: the caret, the selection, the edits and their panel are its own, its layer's name bright. Dragged on the time row, a range runs through every track, an edit of it (Delete, a level, a fade, its audio dragged) each track's alike, so they stay in time; dragged up or down into another track's lane, a selection's audio goes into that track over what is there, silence where it was (Alt: a copy); dragged under the last, into a new track made for it. The speaker in a track's layer mutes it, at once; with Alt, solos it, the others muted, again every one heard. Taking away the step a split parted a track by (the voice's, the stems') takes the split with it, the sound whole again. In the code, each a sound declared, `let voice = audio(…)`, that no other reads
Tabs
Above the picture, a sound each, its own script and edits, dragged along to reorder. A sound opened goes into a tab of its own; + a new one, × closes one, ⇧⌘T opens the last closed again, as it was left. A tab left while its sound renders renders on: a ring turns in its × place till it is done, then a dot till it is shown. Tabs play at once, as a browser's: one left playing plays on, a speaker before its name, a press on it muting it. A selection dragged up onto them with Alt goes to a tab of its own, copied; with ⌘, moved. A tab dragged down onto the picture is a track of the sound there; Track › Move the track to its own tab, the other way
F10
The menu

The editor is open in another tab.