Docs file normalization.
This commit is contained in:
parent
dd32143bf8
commit
619c2d0808
46 changed files with 3587 additions and 2579 deletions
|
|
@ -1,66 +1,146 @@
|
|||
# Audio source editor workflows
|
||||
# Audio Source Editor Workflows
|
||||
|
||||
The editor uses the existing bounded mono WAV reader. Stereo input is downmixed;
|
||||
these are offline control-thread tools, not stereo restoration or time stretching.
|
||||
The project format remains 16. No new dependencies are required.
|
||||
these are offline control-thread tools, not stereo restoration or time
|
||||
stretching. The project format remains 16. No new dependencies are required.
|
||||
|
||||
## Source inspection
|
||||
---
|
||||
|
||||
## Source Inspection
|
||||
|
||||
Select an audio clip and use View / Sample editor or double-click it. The modal
|
||||
editor loads an independent snapshot of the complete source, up to 4,194,304 frames
|
||||
(about 87 seconds at 48 kHz). Drag or enter half-open native frame bounds; zoom
|
||||
1..64 and View start control the visible region. Statistics show raw mono min/max,
|
||||
RMS and mean/DC before clip gain, fades or mixer processing. Display clamps to
|
||||
±1; sample statistics retain finite over-range values. Editing project MIDI still
|
||||
opens the piano roll. This editor does not audition or stream long files.
|
||||
editor loads an independent snapshot of the complete source, up to 4,194,304
|
||||
frames (about 87 seconds at 48 kHz). Drag or enter half-open native frame
|
||||
bounds; zoom 1..64 and View start control the visible region. Statistics show
|
||||
raw mono min/max, RMS and mean/DC before clip gain, fades or mixer processing.
|
||||
Display clamps to ±1; sample statistics retain finite over-range values. Editing
|
||||
project MIDI still opens the piano roll. This editor does not audition or stream
|
||||
long files.
|
||||
|
||||
## Trim clip to selection
|
||||
---
|
||||
|
||||
Trim clip to selection applies source-frame endpoints within the current audible clip. Start rounds up and end rounds down to musical ticks; empty sub-tick ranges reject. Leading removal moves the timeline start by the same amount, preserving alignment. Source content, reference and clip gain/fade settings remain intact; project Undo restores the prior trim.
|
||||
## Trim Clip to Selection
|
||||
|
||||
## Export and relink
|
||||
Trim clip to selection applies source-frame endpoints within the current audible
|
||||
clip. Start rounds up and end rounds down to musical ticks; empty sub-tick
|
||||
ranges reject. Leading removal moves the timeline start by the same amount,
|
||||
preserving alignment. Source content, reference and clip gain/fade settings
|
||||
remain intact; project Undo restores the prior trim.
|
||||
|
||||
Export selected frames writes a new mono float32 WAV of the half-open selection at native rate. Save full copy and relink writes the complete source and relinks only the selected clip after successful preparation. The original source is never overwritten. Full-copy adoption requires matching source frame count/rate. Project undo restores the reference but retains the new file, which may be referenced by redo/history or other projects. Failed adoption removes its owned new file. Export/copy runs synchronously outside audio callbacks.
|
||||
---
|
||||
|
||||
## Reverse selection
|
||||
## Export and Relink
|
||||
|
||||
Reverse selection changes only the chosen source frames in a new local snapshot. Undo / redo toggles the most recent processing step; selection and view are unchanged. Processing does not affect playback until Save full copy and relink. Close discards unsaved local processing. Sources are bounded to 16 MiB of float samples; preparing a new edit can temporarily retain three snapshots (48 MiB), then two (32 MiB).
|
||||
Export selected frames writes a new mono float32 WAV of the half-open selection
|
||||
at native rate. Save full copy and relink writes the complete source and relinks
|
||||
only the selected clip after successful preparation. The original source is
|
||||
never overwritten. Full-copy adoption requires matching source frame count/rate.
|
||||
Project undo restores the reference but retains the new file, which may be
|
||||
referenced by redo/history or other projects. Failed adoption removes its owned
|
||||
new file. Export/copy runs synchronously outside audio callbacks.
|
||||
|
||||
## Invert polarity
|
||||
---
|
||||
|
||||
Invert polarity negates selected float samples; it is not time reversal. Over-range finite samples remain over-range; no implicit limiting is performed. Outside-selection frames are bit-preserved in the copied snapshot.
|
||||
## Reverse Selection
|
||||
|
||||
## Remove DC offset
|
||||
Reverse selection changes only the chosen source frames in a new local snapshot.
|
||||
Undo / redo toggles the most recent processing step; selection and view are
|
||||
unchanged. Processing does not affect playback until Save full copy and relink.
|
||||
Close discards unsaved local processing. Sources are bounded to 16 MiB of float
|
||||
samples; preparing a new edit can temporarily retain three snapshots (48 MiB),
|
||||
then two (32 MiB).
|
||||
|
||||
Remove DC offset subtracts the mean of the selected range from only that range. This is a constant offset correction, not a high-pass filter. Selection boundaries may acquire discontinuities; use fades or zero-crossing tools where appropriate. Finite over-range results are retained; float overflow rejects the edit.
|
||||
---
|
||||
|
||||
## Sample fades
|
||||
## Invert Polarity
|
||||
|
||||
Sample fades offers four offline curves: linear in/out and equal-power in/out (sinusoidal amplitude). The entire selection is the fade duration; both endpoints are included in the curve. Fewer than two frames reject. These curves change copied sample data and stack with existing playback clip fades after adoption; they do not form a linked clip crossfade.
|
||||
Invert polarity negates selected float samples; it is not time reversal.
|
||||
Over-range finite samples remain over-range; no implicit limiting is performed.
|
||||
Outside-selection frames are bit-preserved in the copied snapshot.
|
||||
|
||||
## Gain and normalize
|
||||
---
|
||||
|
||||
Gain / normalize processes only selected samples. Mode 0 accepts linear gain 0..16; mode 1 accepts a linear peak target above 0 and at most 1, rejecting silent selections or required gain above 16. Finite values above unity are not clipped; float overflow rejects atomically. This changes sample data in the local snapshot, unlike the existing clip-gain normalization command; it provides neither true-peak nor LUFS processing.
|
||||
## Remove DC Offset
|
||||
|
||||
## Select audible bounds
|
||||
Remove DC offset subtracts the mean of the selected range from only that range.
|
||||
This is a constant offset correction, not a high-pass filter. Selection
|
||||
boundaries may acquire discontinuities; use fades or zero-crossing tools where
|
||||
appropriate. Finite over-range results are retained; float overflow rejects the
|
||||
edit.
|
||||
|
||||
Select audible bounds finds the first and last sample strictly above the chosen dBFS threshold and pads within the existing selection. It only changes selection; use Trim clip to selection to apply a nondestructive timeline trim, or export the selection. Entirely silent/below-threshold ranges leave selection unchanged. This is boundary detection, not automatic removal of internal gaps or a noise gate.
|
||||
---
|
||||
|
||||
## Snap to zero crossings
|
||||
## Sample Fades
|
||||
|
||||
Snap to zero crossings searches each selected boundary within a source-frame radius up to 65,536. It uses the mono source, chooses earlier positions on equal distance and changes both endpoints only if both searches yield a nonempty range. Source edges qualify only when their adjacent sample is zero. This can reduce boundary discontinuities but does not guarantee click-free output; musical-tick trimming/slicing can move a boundary away from the exact crossing.
|
||||
Sample fades offers four offline curves: linear in/out and equal-power in/out
|
||||
(sinusoidal amplitude). The entire selection is the fade duration; both
|
||||
endpoints are included in the curve. Fewer than two frames reject. These curves
|
||||
change copied sample data and stack with existing playback clip fades after
|
||||
adoption; they do not form a linked clip crossfade.
|
||||
|
||||
## Detect attacks
|
||||
---
|
||||
|
||||
Detect attacks uses absolute sample amplitude, an initial armed state, rearming below one quarter of the threshold and a minimum frame gap between retained attacks. It marks up to 128 source positions in orange; hovering the statistics shows exact frame indices. This is a threshold detector, not spectral onset detection, beat detection or tempo estimation. Selection/processing changes invalidate the markers. Slice clip at attacks splits the current clip reference at those positions in one project undo step and closes the editor. Edits in the local buffer must be saved/relinked first if the slices should use processed audio. Source positions round to nearest musical ticks; out-of-trim, edge and coalesced cuts are skipped. No usable cuts rejects. Left ID, source references and outside fades remain; inner explicit fades clear. Long explicit fades and existing automatic region fades can sound different after splitting. Timeline/source rounding may differ by one sample, so this is not sample-accurate timeline slicing. The no-explicit-fade aligned regression fixture remains bit-identical across slicing. No media files are written by slicing.
|
||||
## Gain and Normalize
|
||||
|
||||
## Validation and timing limits
|
||||
Gain / normalize processes only selected samples. Mode 0 accepts linear gain
|
||||
0..16; mode 1 accepts a linear peak target above 0 and at most 1, rejecting
|
||||
silent selections or required gain above 16. Finite values above unity are not
|
||||
clipped; float overflow rejects atomically. This changes sample data in the
|
||||
local snapshot, unlike the existing clip-gain normalization command; it provides
|
||||
neither true-peak nor LUFS processing.
|
||||
|
||||
Focused model and GUI checks pass for each operation.
|
||||
The integrated checks add allocation failure/cleanup, oversized sources, overflow,
|
||||
clip ID rollback, exact selected samples, persistence, no-fade render comparison,
|
||||
plugin fixtures, software JACK, Clang analysis, ASan/UBSan and install layouts.
|
||||
The actual source editor and attack markers are shown in the
|
||||
---
|
||||
|
||||
## Select Audible Bounds
|
||||
|
||||
Select audible bounds finds the first and last sample strictly above the chosen
|
||||
dBFS threshold and pads within the existing selection. It only changes
|
||||
selection; use Trim clip to selection to apply a nondestructive timeline trim,
|
||||
or export the selection. Entirely silent/below-threshold ranges leave selection
|
||||
unchanged. This is boundary detection, not automatic removal of internal gaps or
|
||||
a noise gate.
|
||||
|
||||
---
|
||||
|
||||
## Snap to Zero Crossings
|
||||
|
||||
Snap to zero crossings searches each selected boundary within a source-frame
|
||||
radius up to 65,536. It uses the mono source, chooses earlier positions on equal
|
||||
distance and changes both endpoints only if both searches yield a nonempty
|
||||
range. Source edges qualify only when their adjacent sample is zero. This can
|
||||
reduce boundary discontinuities but does not guarantee click-free output;
|
||||
musical-tick trimming/slicing can move a boundary away from the exact crossing.
|
||||
|
||||
---
|
||||
|
||||
## Detect Attacks
|
||||
|
||||
Detect attacks uses absolute sample amplitude, an initial armed state, rearming
|
||||
below one quarter of the threshold and a minimum frame gap between retained
|
||||
attacks. It marks up to 128 source positions in orange; hovering the statistics
|
||||
shows exact frame indices. This is a threshold detector, not spectral onset
|
||||
detection, beat detection or tempo estimation. Selection/processing changes
|
||||
invalidate the markers. Slice clip at attacks splits the current clip reference
|
||||
at those positions in one project undo step and closes the editor. Edits in the
|
||||
local buffer must be saved/relinked first if the slices should use processed
|
||||
audio. Source positions round to nearest musical ticks; out-of-trim, edge and
|
||||
coalesced cuts are skipped. No usable cuts rejects. Left ID, source references
|
||||
and outside fades remain; inner explicit fades clear. Long explicit fades and
|
||||
existing automatic region fades can sound different after splitting.
|
||||
Timeline/source rounding may differ by one sample, so this is not
|
||||
sample-accurate timeline slicing. The no-explicit-fade aligned regression
|
||||
fixture remains bit-identical across slicing. No media files are written by
|
||||
slicing.
|
||||
|
||||
---
|
||||
|
||||
## Validation and Timing Limits
|
||||
|
||||
Focused model and GUI checks pass for each operation. The integrated checks add
|
||||
allocation failure/cleanup, oversized sources, overflow, clip ID rollback, exact
|
||||
selected samples, persistence, no-fade render comparison, plugin fixtures,
|
||||
software JACK, Clang analysis, ASan/UBSan and install layouts. The actual source
|
||||
editor and attack markers are shown in the
|
||||
[screenshot gallery](../screenshots/README.md).
|
||||
|
||||
Trim placement preserves alignment in musical ticks; independent source/timeline
|
||||
|
|
@ -69,5 +149,5 @@ click-free transitions are promised. Clip source data outside a local processing
|
|||
selection remains intact; exported selections contain only their chosen frames.
|
||||
Closing the editor discards unsaved local processing. Successful project Undo
|
||||
keeps generated files for redo/history; only failed adoption removes its owned
|
||||
new output. Rejecting sources above the editor's frame limit may temporarily
|
||||
use the existing WAV reader's larger decode bound before rejecting them.
|
||||
new output. Rejecting sources above the editor's frame limit may temporarily use
|
||||
the existing WAV reader's larger decode bound before rejecting them.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue