From 9f26df3dbee73e34aacb4ec613fd3d206b62f895 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Mon, 27 Jul 2026 22:40:46 +0200 Subject: [PATCH] testhost: confirm multi-channel WAV output works via Pianoteq 8 (5 out) Resolves the open question in TODO.md about whether WavAudioFormat's "must be 1 or 2 channels" doc comment is an enforced limit - a 5-channel plugin recorded a valid, non-silent WAV with no clamping. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01JAZXxJbHD7PzdKaNE6Nuiv --- tools/testhost/TODO.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tools/testhost/TODO.md b/tools/testhost/TODO.md index 2769715..af28630 100644 --- a/tools/testhost/TODO.md +++ b/tools/testhost/TODO.md @@ -80,14 +80,16 @@ verified (PR https://git.jayfield.org/jens/JaySynth/pulls/1). DPF/JUCE VST2 lifecycle-ordering quirk rather than a testhost bug, but it hasn't been root-caused - worth a closer look if it turns out to affect correctness (not just log noise) for some other plugin. -- [ ] **`WavAudioFormat`'s base-class doc comment says channel count "must +- [x] **`WavAudioFormat`'s base-class doc comment says channel count "must be either 1 or 2"** (`AudioFormat::createWriterFor`'s Doxygen comment). `WavRecorder` passes through whatever `PluginHost::getNumOutputChannels()` - reports with no clamping, and this has worked fine for the 1- and 2-channel - plugins tested so far - but a plugin with more than 2 output channels - hasn't been tried, so it's unconfirmed whether JUCE's WAV writer actually - enforces that limit or the doc comment is just generic/stale boilerplate - shared across format subclasses. + reports with no clamping. Resolved: Pianoteq 8 (`Pianoteq 8.so`, V8.3.2) + loads as 0 in / **5 out** and rendered a held-note test cleanly through + `--wav` - the output is a valid, non-silent 5-channel/24-bit/44.1kHz WAV + (verified with Python's `wave` module: correct `nchannels`/`nframes`, + non-zero sample data). No clamping or writer error occurred, so the doc + comment is stale/generic boilerplate, not an enforced limit in this JUCE + version. ## Nice-to-have (not planned, just noted)