# Audio Editor

> Trim, fade, normalize, loop-crossfade and re-encode a sound file from its lossless original, with a waveform, draggable trim handles and a looping preview.

- Source: https://diceytable.com/docs/editor/item-editors/audio
- Last verified: 2026-09-30

Double-click a sound in the asset explorer's **Sounds** folder — or press **Edit audio** under a
[sound emitter](https://diceytable.com/docs/editor/working/room-and-lighting#sounds)'s **Sound** picker — and it opens
as a tab: a waveform, a preview transport and file details on the left, and on the right the
**Trim**, **Fades**, **Level**, **Loop** and **Output** panels.

It is the tool for the things you would otherwise leave the editor to do: cut the silence off
the start of a recording, give a one-shot a short fade-out, bring a quiet file up to level, and
make a recording that was never meant to loop loop without a seam.

See [the tab strip conventions](https://diceytable.com/docs/editor/item-editors/model#the-tab-strip) — dirty dots,
closing, cycling and mounted-but-hidden tabs apply here too.

## How a sound gets into the project

Import audio the way you import anything else: **Upload** in the asset explorer, drop the file
on the explorer, or **Import sound…** under an emitter's **Sound** picker. It lands in
`sounds/` and shows up in the **Sounds** folder.

The importer takes **MP3, WAV, OGG, FLAC, M4A/AAC, AIFF, Opus and WebM**, and converts on the
way in:

| You import | What is stored |
|---|---|
| An **MP3** | The file, as-is. It is already the format players get, and re-encoding a lossy file only loses quality. |
| **Anything else** | An MP3 at the **Balanced** quality preset — mixed to **mono** when both channels are identical — plus a lossless copy of the source at `originals/<name>.wav`. |

Whether a given format decodes is up to your browser. FLAC, AIFF, M4A and Opus depend on it,
and a file it cannot read is refused by name. Convert that one to WAV or MP3 and import that
instead.

### Why MP3

A mod may only publish `.mp3`, `.ogg` and `.wav` audio (see
[Assets](https://diceytable.com/docs/mods/files/assets)). WAV is uncompressed and far too large to download, and Ogg
Vorbis does not decode reliably in every browser. **MP3 is the only compressed format of the
three that every browser plays**, so it is what every sound becomes.

### Downloaded, then played

Players download each sound **whole**, then play it. Nothing streams, and nothing is served from
DiceyTable's servers — the file comes from your mod's repository like every other asset. That
is why file size matters: a smaller file starts sooner for everyone at the table.

## The waveform and preview

The metadata row shows the **Length** (with the untrimmed length beside it once you trim),
**Channels** (Mono or Stereo), **Format**, **Size**, and the **Original** it is rendered from,
when there is one.

- **Trim handles.** The two white handles on the waveform are the start and end of the part
  that is kept. Drag either one. Clicking anywhere else on the waveform moves the **nearer**
  handle to that point, which is the quickest way to trim.
- **Play / Stop** plays the edited result — trim, fades, level and crossfade included — so what
  you hear is what you will save.
- **Loop preview** repeats it. Turn it on whenever the sound is going to loop in the room: it is
  the only way to hear the seam.

## Trim

**Start (s)** and **End (s)**, the same two points the handles drag. Anything outside them is
dropped from the saved file.

## Fades

**Fade in (s)** and **Fade out (s)**. A bed that loops wants neither — a fade at a loop point is
an audible dip. A one-shot that plays on a delay usually wants a short fade-out, so it does not
end on a click.

## Level

- **Normalize** — scales the sound so its loudest peak sits at **-1 dBFS**. Use it on a quiet
  recording before you touch the emitter's **Volume**.
- **Gain (dB)** — -40 to +24, applied after normalizing.

Leave some headroom. Every player also applies their own **Environment** and **Master**
volume, and an emitter's own **Volume** can only turn a sound down.

## Loop

**Crossfade (s)** blends the end of the sound into its start, so a recording that was never
made to loop — a minute of rain, a fire — loops without a seam. The saved file is shorter by
the crossfade length, because its last sample now leads straight into its first. Listen with
**Loop preview** on while you set it.

You do **not** need a crossfade just to make a loop gapless. An MP3 normally carries a few
milliseconds of silence at each end, which clicks at a loop point. DiceyTable writes a loop tag
into every MP3 it saves. The tag records exactly where the sound starts and ends, so an emitter
on **Loop** plays the file with no gap in any browser. The crossfade is for recordings whose end
and start simply do not match.

## Output

- **Quality** — **Small** (about 64 kbps, mono — fine for background beds and distant sounds),
  **Balanced** (about 96–130 kbps — transparent for almost every ambient sound; what imports
  use) or **High** (about 170–190 kbps — for music and sounds heard up close).
- **Mono** — mix to one channel, which roughly halves the file. A 3D positional emitter is heard
  as a single point anyway, so stereo only matters for a sound with **3D positional** off.
  **Small** is always mono.

## Saving

- **Save & optimize** re-encodes the file with your settings and replaces it **in place**. Its
  path does not change, so every emitter that plays it keeps working and picks up the new file.
  The status line reports the new size, quality and length.
- **Discard changes** puts the sliders back to what was last saved.
- **Reset all** returns every setting to its default. It does not save until you press **Save &
  optimize**.

While the settings differ from what was saved, the tab shows **Unsaved** and a dirty dot, and
the project's own Save flushes it too.

### Nothing degrades, however often you save

Editing is **non-destructive**. Every save renders from the lossless original under
`originals/`, never from the previous MP3, and your settings are stored inside the MP3 itself.
Reopen a sound and every slider is where you left it. Save it ten times and it has still been
encoded exactly once.

A sound imported as an MP3 has no lossless original yet. On its first save the editor decodes it
and keeps that decode as `originals/<name>.wav`, so later saves never re-encode the first save's
output.

⚠ **Only MP3 files are edited in place.** An `.ogg` or `.wav` that reached the project some
other way — an older upload, or a file you committed to the repository yourself — opens with
its waveform and preview, but the panels are disabled. Import it again: it is converted to MP3
automatically. Then point your emitters at the new file.

## See also

- [Room and lighting § Sounds](https://diceytable.com/docs/editor/working/room-and-lighting#sounds) — placing sound
  emitters in the room
- [The Asset Explorer](https://diceytable.com/docs/editor/interface/asset-explorer) — the Sounds folder and Upload
- [Assets](https://diceytable.com/docs/mods/files/assets) — which audio types a mod may publish
