2026-07-28 14:26:14 -04:00
2026-07-27 03:51:03 -04:00
2026-07-28 14:26:14 -04:00

ReaSampler

A native C++ REAPER extension that captures any arbitrary audio source into a per-project sample bank (cached files + a docked grid), decoupled from the arrange view, with keyboard/MIDI-bindable capture and placement. Built as a precision tool: deterministic, non-destructive, no clutter.

The two artifacts

reaper_reasampler — the REAPER extension. Captures audio into a named, per-project sample bank, displays it in a docked panel, and provides bindable actions for capture and placement.

ReaSampler 9000 (reasampler_9000.vst3) — a Windows-only VST3 sampler instrument that plays bank captures back across a MIDI keyboard. The VST3 target (reasampler_vst) is gated on the vendored vendor/vst3sdk slice; configure quietly omits it if the slice is absent.

A beta channel build is available via -DREASAMPLER_CHANNEL=beta at configure time, producing reaper_reasampler_beta and reasampler_9000_beta.vst3. The two channels coexist in one REAPER installation and do not share state.

The load-bearing principle

Capture and placement are separate acts. Capturing audio writes a file to the bank and adds an index entry. It never puts an item in the arrange view. Placement is a distinct, on-demand action. Any code path that auto-inserts a capture into the timeline violates the purpose of the tool.

One-time setup

git submodule update --init

Vendors three submodules:

  • vendor/reaper-sdksdk/reaper_plugin.h, sdk/reaper_plugin_functions.h, SWELL headers

  • vendor/WDL — WDL utilities and the SWELL cross-platform Win32 layer

  • vendor/vst3sdk — Steinberg VST3 SDK (Windows-only; requires a nested init after the top-level init):

    git submodule update --init vendor/vst3sdk
    cd vendor/vst3sdk && git submodule update --init pluginterfaces base public.sdk
    

Build and test

cmake -B build -S .
cmake --build build
ctest --test-dir build

Pure modules have <module>_tests targets that run without REAPER or a DAW. CMakeLists.txt is the authoritative list of all targets.

Beta channel

cmake -B build-beta -S . -DREASAMPLER_CHANNEL=beta
cmake --build build-beta

macOS / Linux dialog resources

src/resource.rc must be pre-processed by SWELL's resgen once per platform:

php vendor/WDL/WDL/swell/swell_resgen.php src/resource.rc   # macOS; Linux reuses the output

Add the generated file to the appropriate APPLE / Linux target_sources block in CMakeLists.txt. The SWS extension build is the canonical reference for this step.

Install

Copy the built binary into REAPER's UserPlugins/ folder (Options → Show REAPER resource path), then restart REAPER. Extensions load at startup only; there is no hot reload.

Repo layout

The codebase is organized around one discipline: pure, REAPER-free testable core split from REAPER-facing shells.

  • src/ — pure core modules (no REAPER types, unit-testable outside the DAW) and REAPER-facing shells (extension entry point, panel, actions, capture backends, etc.)
  • src/vst/ — the VST3 instrument: pure voice engine + zone payload + editor UI pure modules, and the VST3 shells
  • tests/ — unit tests for the pure core modules
  • vendor/ — git submodules

See CLAUDE.md for the full module inventory, architectural contracts, and the precise boundary between pure core and REAPER-facing shells.

Further reading

  • CLAUDE.md — architecture, module inventory, and build/API contracts
  • CONTEXT.md — the authoritative spec (large: ~186k — grep the relevant section rather than reading whole)
  • CONTEXT-ARCHIVE.md — build detail for landed work
  • PLAN.md — roadmap
  • COMPLETED.md — landed milestones
S
Description
REAPER Extension for first-class resampling
Readme AGPL-3.0 10 MiB
Languages
C++ 98.7%
CMake 1.2%