sequencer play fix.

This commit is contained in:
Johannes Findeisen 2026-11-06 22:00:35 +01:00
commit d6ded83beb
16 changed files with 372 additions and 16 deletions

View file

@ -3705,6 +3705,40 @@ is unaffected.
---
## Phase 112 — Playback without production MIDI devices
### Tasks and acceptance criteria
- [x] Reproduce the playback failure caused by disconnected saved MIDI devices.
- [x] Skip unavailable MIDI input/output routes in the GUI without changing saved
preferences; connect available counterparts and retry devices on each start.
- [x] Show a nonblocking warning while allowing built-in instruments and audio
playback. Preserve genuine enumeration, activation and routing failures.
- [x] Add a self-contained four-bar `examples/projects/playback-test.xtc` song.
- [x] Cover absent input/output/both, returning devices, retained preferences and
real backend failures in the fake-backend GUI regression.
- [x] Verify the example offline and test real Play/Stop/Space, playhead movement
and finite nonzero stereo output through a private JACK software probe.
- [x] Update MIDI/preferences help, example and integration-test documentation.
### Implementation status
Implemented on 2026-11-06. The saved-device failure was reproduced with the live
GUI test before the fix. GUI starts now enumerate optional MIDI routes before
calling the strict backend start API. Missing devices warn without preventing
playback; the C backend API retains its strict routing contract. No settings
format or audio callback changes are required. The example uses only a built-in
sine instrument, needs no external files or plugins, and renders eight seconds
at 120 BPM. Audio outputs still require normal JACK routing to hear speakers.
The live regression connects only to a private software probe and uses temporary
preferences; no physical listening/hardware qualification is claimed.
Validation: the warning-enabled CMake build and all 57 default CTests passed,
including offline example rendering and GUI MIDI-device regressions. The live
Play/Stop/Space/stereo check also passed. See the integration-test guide for commands.
---
## Recommended Execution Order
Reorder the phases when the audit reveals a blocking dependency. Do not mark a