feat: merge temp cleanup on close + v1.4 changelog + README (Phase 2)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,13 @@ All clips are exactly 8 seconds — the standard length for foley sound datasets
|
|||||||
- **Waveform preview** — a read-only strip of the current area (↻ to refresh; decode length-capped so long areas don't stall)
|
- **Waveform preview** — a read-only strip of the current area (↻ to refresh; decode length-capped so long areas don't stall)
|
||||||
- **Audition** — Play/Stop the current area with the edits applied
|
- **Audition** — Play/Stop the current area with the edits applied
|
||||||
|
|
||||||
|
### Audio merge (crossfade)
|
||||||
|
|
||||||
|
- **Merge pane** — assemble multiple clips into one, crossfading every join (ffmpeg `acrossfade`)
|
||||||
|
- **Add clips** — the current audio area (with its edits) or audio files from disk; reorder or remove them
|
||||||
|
- **Crossfade length** — one global crossfade applied at each join (0 = butt-join); clips shorter than the crossfade are flagged before rendering
|
||||||
|
- **Preview / Save** — audition the merged result, or render and save-as (WAV/MP3/FLAC/…)
|
||||||
|
|
||||||
### Audio scanning
|
### Audio scanning
|
||||||
|
|
||||||
- **Embedding models** — WAV2VEC2 (base/large), HuBERT (base/large/xlarge), BEATs
|
- **Embedding models** — WAV2VEC2 (base/large), HuBERT (base/large/xlarge), BEATs
|
||||||
|
|||||||
@@ -5031,9 +5031,17 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
# ── Changelog ────────────────────────────────────────────
|
# ── Changelog ────────────────────────────────────────────
|
||||||
|
|
||||||
APP_VERSION = "1.3"
|
APP_VERSION = "1.4"
|
||||||
_SPLIT_HEADER_H = 22 # deck split-column header height (keep both deck spots in sync)
|
_SPLIT_HEADER_H = 22 # deck split-column header height (keep both deck spots in sync)
|
||||||
CHANGELOG: list[tuple[str, list[str]]] = [
|
CHANGELOG: list[tuple[str, list[str]]] = [
|
||||||
|
("1.4", [
|
||||||
|
"<b>Merge (crossfade)</b> — a new <b>Merge</b> pane in the Audio tab "
|
||||||
|
"assembles multiple clips into one, crossfading every join. Add the "
|
||||||
|
"current audio area (with its edits) or files from disk, reorder or "
|
||||||
|
"remove them, set the crossfade length, then <b>Preview</b> to "
|
||||||
|
"audition or <b>Merge & Save</b> to render. Clips shorter than "
|
||||||
|
"the crossfade are flagged before rendering.",
|
||||||
|
]),
|
||||||
("1.3", [
|
("1.3", [
|
||||||
"<b>Audio workspace tab</b> — the <b>Scan</b> control-deck tab is "
|
"<b>Audio workspace tab</b> — the <b>Scan</b> control-deck tab is "
|
||||||
"now <b>Audio</b>, a <code>QToolBox</code> with two panes. "
|
"now <b>Audio</b>, a <code>QToolBox</code> with two panes. "
|
||||||
@@ -8646,6 +8654,14 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
def closeEvent(self, event):
|
def closeEvent(self, event):
|
||||||
_log("Shutting down…")
|
_log("Shutting down…")
|
||||||
|
# Stop any running audition and clean up merge temp WAVs.
|
||||||
|
self._stop_audition()
|
||||||
|
for _t in list(self._merge_temps):
|
||||||
|
try:
|
||||||
|
os.remove(_t)
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
self._merge_temps.clear()
|
||||||
# Save file-list tabs for resume (per-profile).
|
# Save file-list tabs for resume (per-profile).
|
||||||
self._save_playlist_tabs()
|
self._save_playlist_tabs()
|
||||||
# Cancel background workers to prevent callbacks into dead objects.
|
# Cancel background workers to prevent callbacks into dead objects.
|
||||||
|
|||||||
Reference in New Issue
Block a user