testhost: prove the actual chunk-based state path via raw VST2 dispatcher #3

Merged
jens merged 1 commits from testhost-chunk-coverage into master 2026-07-27 21:23:27 +02:00
Owner

Adds Vst2RawChunk, a raw effGetChunk/effSetChunk bypass around JUCE's VSTPluginInstance::usesChunks() gate, plus --loadBankChunk/--saveBankChunk/--loadPatchChunk/--savePatchChunk CLI flags and a new test_chunk_roundtrip regression test that positively asserts the saved file is genuinely zlib/XML (0x78 header, >1000 bytes) rather than a per-parameter fallback.

Building and exercising this bypass disproved an earlier documented finding in this tool's own docs: the compiled VST2 wrapper does set effFlagsProgramChunks, and usesChunks() is genuinely true - the previous "chunk-advertisement gap" theory was wrong. Corrected in tools/testhost/TODO.md and tools/testhost/tests/README.md. The real cause of old bundled .fxp sample files having no effect remains open, now narrowed to a JaySynth-side XML/schema parsing question rather than a host/plugin capability mismatch.

Also adds a PluginHost-method -> VST2-wiring -> covering-test coverage table to tests/README.md, and documents the remaining "exercised but not asserted" gaps (channel/param counts, DSP correctness) in TODO.md.

All 12 tests in tools/testhost/tests/run_tests.sh pass, including the two new chunk round-trip tests.

Adds `Vst2RawChunk`, a raw `effGetChunk`/`effSetChunk` bypass around JUCE's `VSTPluginInstance::usesChunks()` gate, plus `--loadBankChunk`/`--saveBankChunk`/`--loadPatchChunk`/`--savePatchChunk` CLI flags and a new `test_chunk_roundtrip` regression test that positively asserts the saved file is genuinely zlib/XML (`0x78` header, >1000 bytes) rather than a per-parameter fallback. Building and exercising this bypass disproved an earlier documented finding in this tool's own docs: the compiled VST2 wrapper *does* set `effFlagsProgramChunks`, and `usesChunks()` is genuinely `true` - the previous "chunk-advertisement gap" theory was wrong. Corrected in `tools/testhost/TODO.md` and `tools/testhost/tests/README.md`. The real cause of old bundled `.fxp` sample files having no effect remains open, now narrowed to a JaySynth-side XML/schema parsing question rather than a host/plugin capability mismatch. Also adds a `PluginHost`-method -> VST2-wiring -> covering-test coverage table to `tests/README.md`, and documents the remaining "exercised but not asserted" gaps (channel/param counts, DSP correctness) in `TODO.md`. All 12 tests in `tools/testhost/tests/run_tests.sh` pass, including the two new chunk round-trip tests.
jens added 1 commit 2026-07-27 21:22:50 +02:00
Add Vst2RawChunk, a raw effGetChunk/effSetChunk bypass around JUCE's
VSTPluginInstance::usesChunks() gate, plus --loadBankChunk/--saveBankChunk/
--loadPatchChunk/--savePatchChunk CLI flags and a new test_chunk_roundtrip
regression test asserting the saved file is genuinely zlib/XML (0x78 header,
>1000 bytes), not a per-parameter fallback.

Building and using this bypass disproved an earlier documented finding: the
compiled VST2 wrapper does set effFlagsProgramChunks and usesChunks() is
genuinely true, so the previous "chunk-advertisement gap" theory in TODO.md
and tests/README.md was wrong. Corrected in both places. The real cause of
old bundled .fxp sample files having no effect remains open and is now
narrowed to a JaySynth-side XML/schema parsing question, not a host/plugin
capability mismatch.

Also adds a PluginHost-method-to-VST2-wiring-to-test coverage table in
tests/README.md, and documents the remaining "exercised but not asserted"
gaps (channel/param counts, DSP correctness) in TODO.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011dhtwRLARk4eiPngcQykLJ
jens merged commit d7cf5b7399 into master 2026-07-27 21:23:27 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jens/JaySynth#3