REAPER fixture¶
python3 tools/reaper-validation/instrument.py --format clap \
--bundle target/plugins/debug/ravet-synth-plugin.clap --reaper /path/to/reaper
# Use --format vst3 or lv2 and that format's bundle for the other cases.
python3 -m unittest discover -s tools/reaper-validation -p 'test*.py'
The sibling of the Delay harness reuses its new work
folder, private configuration, scan paths, process timeout and normal-resource
snapshot guard. It starts REAPER with that work folder as its current directory.
Only native macOS/Linux CLAP, VST3 and LV2 runs are provided by this sibling;
its --windows-root route is refused. It never copies a licence fixture or
normal REAPER configuration. On macOS its private app uses the distinct bundle
identifier org.ravet.reaper-instrument-harness.
The generated MIDI item contains notes at 0.5 and 1 seconds (velocity 127), with CC 1 = 64 at 0.9 seconds. Four two-second stereo 48 kHz renders check:
pdc: 32 reported samples, with REAPER PDC aligning both click onsets to samples 24,000 and 48,000.zero: latency changed to 0, with the same aligned onsets.cc_off: latency 32, CC response disabled; both amplitudes are 0.25.echo: first-instance audio pins disconnected and its latency 0; a second instance receives MIDI and produces the expected CC-scaled clicks. Its latency is 32. No first-instance audio contributes to this render.
Every rendered sample is checked (tolerance 1e-5 for host PCM rounding), including
polarity, amplitude and silence after exactly 64 samples. The second click is
0.25 * 64 / 127 except in cc_off. The script also checks REAPER's reported
first-instance PDC field. Two serial instruments with both lookaheads enabled
would cause REAPER to compensate two audio delays despite undelayed MIDI echo;
the fixture deliberately avoids that ambiguous timing setup. Format fixture
checks independently verify generated MIDI bytes and offsets; the REAPER render
alone does not inspect MIDI packet bytes or exclude a host MIDI-through route.
See the dated receipt and support matrix. Linux REAPER 7.82 passes CLAP/VST3/LV2. macOS host attempts are recorded as startup failures, with no instrument render evidence. Validators and offline tests do not establish DAW/device support, audible quality, polyphony or real-time deadlines. AAX SDK 2.8 exposes no tail report in this adapter, and LV2 has no exported tail port; the shared processor's finite tail is measured in their audio tests.