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.
This commit is contained in:
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||||||
|
|
||||||
## Repo identity and current state
|
## Repo identity and current state
|
||||||
|
|
||||||
The CMake project and binary are now named `reaper_reasampler`. This is **ReaSampler** — a per-project audio sample-bank capture tool. The MPE modules (`mpe_model`, `mpe_view`) have been removed; `bank_model` exists as a pure-core placeholder (Milestone 0). The remaining sampler module set (`peaks`, `capture`, `insert`, `bank_panel`, `persist`, `actions`) is being built out per CONTEXT.md / PLAN.md. The *discipline* — pure REAPER-free testable core split from REAPER-facing shells — is **preserved** throughout.
|
The CMake project and binary are now named `reaper_reasampler`. This is **ReaSampler** — a per-project audio sample-bank capture tool. The MPE modules (`mpe_model`, `mpe_view`) have been removed. The pure core (M0–M2) is complete: `bank_model` (Sample metadata + BankIndex with JSON round-trip) and `peaks` (waveform min/max bin computation) are both implemented and fully tested. The REAPER-facing shells (`capture`, `insert`, `bank_panel`, `persist`, `actions`) are being built out per CONTEXT.md / PLAN.md. The *discipline* — pure REAPER-free testable core split from REAPER-facing shells — is **preserved** throughout.
|
||||||
|
|
||||||
CONTEXT.md is the authoritative spec and build roadmap. Read it first for any non-trivial task. Every REAPER API name cited there is correct-by-intent; verify argument order, types, and flag values against `vendor/reaper-sdk/sdk/reaper_plugin_functions.h` before use.
|
CONTEXT.md is the authoritative spec and build roadmap. Read it first for any non-trivial task. Every REAPER API name cited there is correct-by-intent; verify argument order, types, and flag values against `vendor/reaper-sdk/sdk/reaper_plugin_functions.h` before use.
|
||||||
|
|
||||||
@@ -22,11 +22,12 @@ Vendors two submodules (see `.gitmodules`):
|
|||||||
cmake --build build
|
cmake --build build
|
||||||
ctest --test-dir build
|
ctest --test-dir build
|
||||||
|
|
||||||
Two targets:
|
Three targets:
|
||||||
|
|
||||||
| Target | Kind | Purpose |
|
| Target | Kind | Purpose |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `bank_model_tests` | executable | Pure unit tests — no REAPER, no DAW. This is the fast iteration loop. |
|
| `bank_model_tests` | executable | Pure unit tests for `bank_model` — no REAPER, no DAW. |
|
||||||
|
| `peaks_tests` | executable | Pure unit tests for `peaks` — no REAPER, no DAW. |
|
||||||
| `reaper_reasampler` | loadable module | The actual extension binary (`.dll` / `.dylib` / `.so`). |
|
| `reaper_reasampler` | loadable module | The actual extension binary (`.dll` / `.dylib` / `.so`). |
|
||||||
|
|
||||||
### macOS / Linux: SWELL dialog resources
|
### macOS / Linux: SWELL dialog resources
|
||||||
|
|||||||
@@ -53,3 +53,17 @@ only** invariant enforced at the model boundary (no absolute path accepted/store
|
|||||||
- [x] Tests: full-field round-trip lossless; dedup collapses equal-hash adds;
|
- [x] Tests: full-field round-trip lossless; dedup collapses equal-hash adds;
|
||||||
tier filter/move correct; relative-path invariant rejects absolute paths;
|
tier filter/move correct; relative-path invariant rejects absolute paths;
|
||||||
empty-index and malformed-JSON edge cases.
|
empty-index and malformed-JSON edge cases.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Milestone 2 — peaks (pure)
|
||||||
|
**Goal:** Compute waveform min/max bins from raw PCM, dependency-free (not
|
||||||
|
REAPER's peak API). CONTEXT.md §Module architecture, §Non-goals.
|
||||||
|
**Verify:** CTest green. Fed a known signal (full-scale sine, ramp), asserted
|
||||||
|
min/max envelope per bin matches expected within tolerance; channel count
|
||||||
|
preserved; bin count honored for arbitrary sample lengths (incl. remainder bin).
|
||||||
|
|
||||||
|
- [x] Min/max bin computation from interleaved PCM given a target bin count.
|
||||||
|
- [x] Multi-channel handling (per-channel envelope; no silent fold).
|
||||||
|
- [x] Tests: sine envelope ≈ ±amplitude; ramp envelope monotonic; DC/silence →
|
||||||
|
zero envelope; short-buffer and non-divisible-length edge cases.
|
||||||
|
|||||||
@@ -14,20 +14,6 @@ it here and appends it to `COMPLETED.md`.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Milestone 2 — peaks (pure)
|
|
||||||
**Goal:** Compute waveform min/max bins from raw PCM, dependency-free (not
|
|
||||||
REAPER's peak API). CONTEXT.md §Module architecture, §Non-goals.
|
|
||||||
**Verify:** CTest green. Fed a known signal (full-scale sine, ramp), asserted
|
|
||||||
min/max envelope per bin matches expected within tolerance; channel count
|
|
||||||
preserved; bin count honored for arbitrary sample lengths (incl. remainder bin).
|
|
||||||
|
|
||||||
- [ ] Min/max bin computation from interleaved PCM given a target bin count.
|
|
||||||
- [ ] Multi-channel handling (per-channel envelope; no silent fold).
|
|
||||||
- [ ] Tests: sine envelope ≈ ±amplitude; ramp envelope monotonic; DC/silence →
|
|
||||||
zero envelope; short-buffer and non-divisible-length edge cases.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Milestone 3 — Offline capture spike (REAPER shell)
|
## Milestone 3 — Offline capture spike (REAPER shell)
|
||||||
**Goal:** Offline-render the time-selection master mix to a wav in the project
|
**Goal:** Offline-render the time-selection master mix to a wav in the project
|
||||||
bank folder, add a `Sample`, log it. The render-driving spike. CONTEXT.md
|
bank folder, add a `Sample`, log it. The render-driving spike. CONTEXT.md
|
||||||
|
|||||||
Reference in New Issue
Block a user