From 6d868a63c4ddc4df670c312b259b2bf12a13f251 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Fri, 6 Nov 2026 12:24:10 +0100 Subject: [PATCH] feat(crucible): keep every captured take With Keep takes on (default), each capture is written to /takes/ as a WAV named by time, tempo and length, so a take is not lost when the next capture replaces it. Files are never overwritten: a clash gets a numbered suffix. Saving runs off the UI thread and the status line shows the path or the error. --- docs/crucible/CHANGELOG.md | 7 ++++ docs/crucible/README.md | 5 ++- docs/crucible/assets/editor.png | Bin 225756 -> 228520 bytes plugins/crucible/core/src/export.rs | 46 ++++++++++++++++++++++++++ plugins/crucible/core/src/lib.rs | 2 +- plugins/crucible/core/src/settings.rs | 3 ++ plugins/crucible/core/tests/core.rs | 15 +++++++++ plugins/crucible/ui/src/lib.rs | 40 ++++++++++++++++++++-- 8 files changed, 114 insertions(+), 4 deletions(-) diff --git a/docs/crucible/CHANGELOG.md b/docs/crucible/CHANGELOG.md index b65519a..9ab8af5 100644 --- a/docs/crucible/CHANGELOG.md +++ b/docs/crucible/CHANGELOG.md @@ -1,5 +1,12 @@ # Crucible changelog +## Unreleased + +- **Keep takes** (on by default) saves every capture's loop to a `takes` + subfolder of the export folder at once. Takes are still not part of the + project, but a reload or a crash no longer loses them. Existing files are + never overwritten. + ## 0.2.0 - Change the CLAP ID to `io.narl.bass-foundry.crucible`. Hosts see this as a new diff --git a/docs/crucible/README.md b/docs/crucible/README.md index 1876b2c..d351141 100644 --- a/docs/crucible/README.md +++ b/docs/crucible/README.md @@ -52,7 +52,10 @@ the playlist or Edison. **Open folder** shows the latest export in Explorer. Crucible adds no latency and passes audio through untouched. Auditioned slices are mixed into its output only while they play. The history holds 72 s, enough for 16 bars at 60 BPM. The newest eight takes stay in memory until the plugin is -removed; they are not saved with the project, so export what you want to keep. +removed; they are not saved with the project. With **Keep takes** on (the +default), every capture's loop is also written at once to +`takes/_