Commit Graph

171 Commits

Author SHA1 Message Date
daniel 53da916917 feat(persist): M4 bank persistence + Save-As relocation
Serialize BankIndex to project ext state ('reasampler'), reload on project
load, resolve paths project-relative. Save-As copies the bank to the new .rpp;
identity keyed off a minted GUID (not the recycled ReaProject*) so project
switches don't clobber banks. Pure classifyProjectTransition tested.
2026-07-22 19:55:09 -04:00
daniel a9ba532f07 Archive Milestone 3 in docs
Move completed M3 (offline capture spike) from PLAN.md to COMPLETED.md; close
the render-command and bank-format open questions; add capture_paths_tests to
the CLAUDE.md targets table and note M8 is dialog-free.
2026-07-22 18:54:43 -04:00
daniel 60379c06b6 Merge M3 fix: unsaved-project detection via .rpp filename 2026-07-22 18:47:39 -04:00
daniel 09a85737a8 fix(capture): detect unsaved project via EnumProjects .rpp filename
GetProjectPathEx returns REAPER's recording path (never empty); EnumProjects
returns the .rpp path (empty when unsaved) — the correct signal. Bank now
derives from the .rpp parent so it sits alongside the project file. Render
progress window documented as inherent to REAPER offline render.
2026-07-22 18:45:07 -04:00
daniel c7a8c75ef2 Merge M3 fixes: render format, project rate, unsaved-project handling 2026-07-22 17:03:14 -04:00
daniel a14d33aa75 Fix M3 capture: render format, project rate, unsaved-project handling
RENDER_FORMAT now uses the base64 float-WAV config (raw bytes were rejected
into a 16-bit/44.1 fallback); RENDER_SRATE pinned to the project rate.
Unsaved projects prompt Save then refuse if cancelled — no default-location
fallback. Harden deriveBankPaths against empty projectDir.
2026-07-22 17:02:15 -04:00
daniel d60fe9ace3 Merge M3: offline-render capture spike (master-mix / time-selection) 2026-07-22 13:08:37 -04:00
daniel d9ad8e4adf M3: offline-render capture spike (master-mix / time-selection)
ICaptureBackend/CaptureRequest seam + OfflineRenderBackend driving snapshotted
RENDER_* with dither/normalize forced off for bit-identical output, RenderFailed
via filesystem check, and a pure capture_paths lib with tests. Spike action registered.
2026-07-22 13:07:31 -04:00
daniel 93e2783098 Archive Milestone 2 in docs
Move completed M2 (peaks module) from PLAN.md to COMPLETED.md; add peaks_tests
to the CLAUDE.md targets table and update the pure-core status to M0-M2 done.
2026-07-22 10:00:32 -04:00
daniel 995e790ac0 Merge M2: pure peaks module (per-channel min/max envelope from PCM) 2026-07-22 09:58:18 -04:00
daniel 4cb40f6e34 peaks: pure per-channel min/max envelope from interleaved PCM
New STATIC lib + peaks_tests (CTest), mirroring bank_model. Float samples,
per-channel (no fold); exact integer bin spans handle remainder, short
buffers, and degenerate inputs with no OOB. Bin-span math guarded against
size_t overflow for pathological binCount.
2026-07-22 09:23:03 -04:00
daniel 57a137199e Archive Milestone 1 in docs
Move completed M1 (bank_model core) from PLAN.md to COMPLETED.md; record
the parseInt int64-to-int narrowing as a future-hardening note.
2026-07-22 07:23:24 -04:00
daniel 5ba2bd4dde Merge M1: pure bank_model core (Sample + BankIndex, dedup, tiers, JSON) 2026-07-21 22:59:24 -04:00
daniel 2862e1c865 Implement M1 bank_model: Sample + BankIndex, hash-dedup, tiers, JSON round-trip
Pure dependency-free core with self-contained JSON writer/parser. Absolute
paths (incl. drive-relative) rejected at the add boundary; \uXXXX decoded to
UTF-8 with surrogate pairs; malformed input returns nullopt.
2026-07-21 22:54:21 -04:00
daniel 82858fa484 CLion files 2026-07-21 21:45:36 -04:00
daniel 6fcb811668 Track CONTEXT.md spec and ignore worktrees dir
Commit the authoritative build spec that the docs reference, and add
/.claude/worktrees/ to .gitignore ahead of milestone worktrees.
2026-07-21 21:34:27 -04:00
daniel c60b3acc2b Reflect M0 landing in docs
Retarget README to ReaSampler and current build targets; reconcile
CLAUDE.md repo-identity + targets table to reaper_reasampler; archive
Milestone 0 from PLAN.md into new COMPLETED.md.
2026-07-21 21:27:31 -04:00
daniel acfc9daabc Retire MPE scaffold; stand up reaper_reasampler pure-core skeleton
Rename CMake project/module to reaper_reasampler, delete mpe_model/mpe_view,
add minimal pure bank_model lib + placeholder CTest. main.cpp loads, logs to
console, keeps the action-registration seam commented with the forever-stable
CEREBELLUM_REASAMPLER_ action-id prefix.
2026-07-21 21:18:51 -04:00
daniel bbc0b2c19e Vendor reaper-sdk and WDL as submodules
The REAPER extension and SWELL layer build against these vendored SDKs.
2026-07-21 21:18:25 -04:00
daniel 0b19d59f68 Add PLAN.md and TODO.md planning artifacts
PLAN.md: living 12-milestone roadmap from CONTEXT.md's build order,
each with a verify gate and its precision invariant; open questions
carried forward. TODO.md: near-term M0-M2 slice as ordered tasks.
2026-07-21 20:54:03 -04:00
daniel ad40c561bf Add CLAUDE.md project guidance 2026-07-21 20:48:01 -04:00