a9a / Docs

Editing Waveforms

Working in the detail view — auditioning a selection, and setting fades, loops, trims, silence trims, and reverse — with the equivalent CLI operations.

Everything on this page is non-destructive. The original audio file is left untouched while you edit, and your adjustments are written to a file when you export. Use Undo (Windows: Ctrl+Z, macOS: Cmd+Z) to step back.

Opening the detail view

Select exactly one file in the list and run Show Details (Details on macOS) in the View menu. The shortcut is Ctrl+I on Windows and Cmd+I on macOS.

The detail view is available only while exactly one file is selected. It cannot be opened with a multi-file selection.

The whole detail view. The waveform and time ruler at the top, with the loop lane and the gain and fade settings panels below them.
The detail view: waveform and time ruler, the loop lane, and the gain and fade panels

Inspecting the waveform

Hover over the waveform to see the time at the cursor position. When the loudness timeline is available, Momentary Loudness and Short-term Loudness are shown as well. Until the analysis finishes, Loudness: Loading... is displayed.

Click on the waveform to move the playback position there.

Zoom with the following:

ActionWindowsmacOS
Horizontal zoomCtrl + mouse wheelCmd + mouse wheel
Zoom inCtrl++Cmd++
Zoom outCtrl+-Cmd+-
Reset zoomCtrl+0Cmd+0

Zoom in far enough and the display switches from the amplitude envelope to a line connecting the actual sample values, and further still to dots at each sample position. The zoom normally tops out at eight pixels per sample (for an extremely short file whose whole-file view already exceeds that, the whole-file magnification is the limit), and at sufficiently high sample rates the time ruler goes below one millisecond. The trace shows the real sample values with gain, fades, reverse, and trim applied, so even tiny changes — such as gain applied to a near-silent region — are visible.

Auditioning a selection

Drag on the waveform to make a selection range. A selection is used to specify trims and loop ranges, and also to replay just that part of the file.

While a selection exists, playing with Space plays only the selection, starting from its head. What happens at the end depends on the loop mode.

Loop modeBehavior with a selection
OffPlayback stops at the end of the selection
AllThe selection plays repeatedly
SelectionLoops at the loop points as usual only when the loop-point range lies entirely inside the selection; otherwise playback runs to the end and stops

Pausing with Space during playback resumes from that position on the next press. If you changed the selection while paused, playback restarts from the head of the new selection. Press Esc to clear the selection, and Space behaves as usual again.

Cycle the loop mode with the Loop button on the transport, or with the shortcut (Windows: Ctrl+L, macOS: Cmd+L), which steps through Selection → All → Off.

Inspecting silent regions

Enable Show Silence Regions in the View menu (Windows: Ctrl+Shift+S, macOS: Cmd+Shift+S) to highlight the regions treated as silence on the detail view waveform, with Silence Head / Tail / Total (the leading and trailing silence lengths and the total) shown under the file name. Hover over a highlight to see the region’s start and end times.

Silence is detected by checking whether the RMS level of each short block falls below a threshold (default -60 dBFS), and only regions at least as long as the minimum length (default 100 ms) are highlighted. The leading and trailing silence lengths are shown regardless of the minimum length. The threshold and minimum length can be changed under Silence Detection in General under Preferences.

The display is off by default, and no analysis runs while it is off. Detection works on the audio with trims, reverse, gain, and fades applied, and is recomputed after each edit.

Adding fades

One file at a time

Fade In and Fade Out in the detail view each let you toggle the fade, choose its curve, and set its length. You can also drag the fade handles on the waveform left and right to change the length directly. The display updates while you drag, and the value is confirmed when you release the mouse.

The maximum length is the file’s effective length. While a trim is active, the trimmed length is the maximum.

In bulk

From Fade in the Edit menu, open Selected... (the selected files) or All... (every file). Enable Fade In and Fade Out as needed, set the curve and length, and press Apply. Combinations you use often can be stored in the Preset selector.

Setting up a loop

Toggle the loop on and off with Loop. The start and end times can be entered directly in mm:ss.mmm or hh:mm:ss.mmm format, or edited on the loop lane.

A loop range on the loop lane. Arrows point at the left and right handles and at the drag position in the middle of the range.
Working with the loop range handles

The loop lane supports the following:

ActionResult
Drag on an empty partCreate a new loop range
Drag the left or right handleMove the start or end point
Drag the middle of the rangeMove the whole range, keeping its length
Click an existing rangeToggle the loop on and off
Double-click the laneReset the range to the whole file

To set a loop by ear, build it from a waveform selection. Drag on the waveform to make a selection, then right-click the selection and choose Set Loop to Selection. The selection becomes the loop range and the loop is enabled.

When Snap loop boundaries to nearby zero crossings is enabled in General under Preferences, boundaries snap to a nearby zero crossing when confirmed, which avoids the click that can appear at a loop seam. Snapping searches within 128 frames on each side of the boundary, and a loop that spans the whole file (start to end) is kept exactly as specified.

The end time shown on screen is the time of the last sample included in the loop.

To carry a loop range into the exported file, choose a format that supports loop metadata — see Exporting.

Trimming (keeping a range)

Drag on the waveform to make a selection, then right-click the selection and choose Trim to Selection to keep only that range and cut away everything before and after it. The same action is available from the Edit menu (Windows: Ctrl+T, macOS: Cmd+T). With no selection, and with the silence display enabled, the same action behaves like “Trimming leading and trailing silence” below.

Trimming is non-destructive and never modifies the original file. It can be undone, and Clear Trim (from the right-click menu or the Edit menu) removes the trim at any time.

When you trim, an existing loop range is automatically remapped onto the new timeline. If the loop lies entirely outside the kept range, the loop is disabled (undo restores it).

Switching the trimmed display

Full Timeline for Trimmed Files in the View menu (Windows: Ctrl+Shift+T, macOS: Cmd+Shift+T) switches how trimmed files are drawn.

  • Enabled: the whole source timeline is shown and the trimmed-away regions are dimmed and inert (right-click a dimmed region to choose Clear Trim). Useful while you are still deciding where to cut. The dimmed regions show the unedited source waveform, without gain, fades, or other edits applied
  • Disabled: only the kept range is shown, matching what will be bounced

The choice is remembered across launches.

Files with an active trim show a [ ] icon next to their mini waveform in the list; hover over it to see the kept range. The mini waveform in the list always shows the trimmed content.

Trimming leading and trailing silence

Using the silence detection results, the silence running from the start and end can be cut away, keeping only the audible range. It is applied as the same non-destructive trim as a regular trim, so Undo and Clear Trim restore it at any time. An existing loop range is remapped onto the trimmed timeline. Files with no leading or trailing silence, and files that are silent throughout, are left unchanged.

To apply it to one file, use the Trim button on the Silence row in the detail view, or Trim Silence in the waveform’s right-click menu — both apply the detection results currently shown. The silence kept at each end follows Trim Margin in General under Preferences. With no selection, Trim in the Edit menu (Windows: Ctrl+T, macOS: Cmd+T) does the same. These one-click actions use the detection results on screen, so they are unavailable while Show Silence Regions is off (the bulk dialog below still works).

To apply it to many files at once, open Trim Silence in the Edit menu and choose Selected... (Windows: Ctrl+Shift+K, macOS: Cmd+Shift+K) or All... (Windows: Ctrl+Alt+K, macOS: Cmd+Option+K). It can also be opened from Trim Silence... in a list row’s right-click menu. Set the Threshold and Margin in the dialog and press Apply to trim the target files together. Values you use often can be stored in the Preset selector, and a single Undo restores every target, loop remapping included.

Reversing (reversed playback)

Reverses the audio’s time axis frame by frame. Toggle it with the Reverse button in the detail view; reversed files show a ◀◀ icon in the list.

Reverse applies to the whole file. While a trim is active, the kept range is reversed as-is, and clearing the trim leaves the whole file reversed. An existing loop range is automatically remapped to its reversed position. Fade-in and fade-out still apply to the beginning and end after reversing, so reversed material whose attack fades in can be exported directly.

To toggle reverse on many files at once, run Reverse in the Edit menu and choose Selected (Windows: Ctrl+Shift+R, macOS: Cmd+Shift+R) or All (Windows: Ctrl+Alt+R, macOS: Cmd+Option+R). When every target is already reversed, the action clears them all instead. A single Undo restores everything, loop remapping included.

The same thing in the CLI

Fades, loops, trims, silence trims, and reverse are specified with --op.

a9a_cli render input.wav \
  --out output.wav \
  --op trim-silence threshold=-60dBFS margin=10ms \
  --op fade-in duration=100ms curve=equal_power \
  --op fade-out duration=250ms curve=s_curve
OperationRequired keysOptional keys
fade-indurationcurve
fade-outdurationcurve
loopstart, endsnap
trimstart, end-
trim-silence-threshold, margin
reverse--

duration accepts 100ms, 1s, or an integer millisecond value without a suffix. curve accepts linear, equal_power, s_curve, log, and exp.

For loop and trim, start and end are frame counts and end is exclusive. Both require start < end. Loop boundaries snap to zero crossings by default; snap=off uses the given frames as-is.

trim-silence performs the same silence trim as the GUI’s bulk dialog, with a threshold (threshold, default -60dBFS) and a margin (margin, default 0ms). reverse takes no keys and toggles the reversed state each time it is specified.

This page was written with generative AI.