sequencer play fix.
This commit is contained in:
parent
e664414796
commit
d6ded83beb
16 changed files with 372 additions and 16 deletions
|
|
@ -12,9 +12,12 @@ Creation adds an instrument-to-output route if no instrument exists. Existing
|
|||
instruments retain their routes; use Modular Graph to connect them as needed.
|
||||
Scheduled MIDI clips now apply their track mix/automation before summing to
|
||||
paired stereo instrument buffers; live input stays centered and unassigned. No
|
||||
hardware ports are connected automatically. Connect a MIDI source to the
|
||||
backend's `midi_in` JACK port, and route audio output explicitly to hear it
|
||||
while Play is running.
|
||||
hardware ports are needed for built-in song playback. Preferences can restore
|
||||
selected MIDI routes on Play/Record; disconnected devices are skipped with a
|
||||
warning and their names remain saved for the next start. See
|
||||
[MIDI device preferences](MIDI_WORKFLOWS.md). You can also connect a MIDI source
|
||||
to the backend's `midi_in` JACK port manually. Route audio output explicitly to
|
||||
hear it while Play is running.
|
||||
|
||||
The piano roll shows all 128 pitches and edits clip-source time. Click blank
|
||||
space to draw a one-beat note (velocity 100, filtered channel or channel 0);
|
||||
|
|
|
|||
|
|
@ -50,8 +50,11 @@ ports are visible only when the host exposes them through its MIDI bridge.
|
|||
Input channel `-1` accepts all channels; `0..15` selects MIDI channel 1..16.
|
||||
Output channel `-1` preserves note channels; `0..15` forces a channel. Thru
|
||||
defaults off. Apply saves these choices; the next Play/Record restores the
|
||||
selected routes. A missing port rejects that start and stops the backend,
|
||||
preserving the saved choice for retry. Reconnect audio after server loss, then
|
||||
available selected routes. Missing ports produce a nonblocking warning; playback
|
||||
continues with built-in instruments and audio clips. Saved device choices remain
|
||||
unchanged and are checked again on every start, including Record. An available
|
||||
counterpart still connects. Backend activation and other routing errors remain
|
||||
errors. Reconnect audio after server loss, then
|
||||
retry Play. Defaults also apply when playback resumes after a loop edit. MIDI
|
||||
input/thru currently requires active transport. Existing editing and
|
||||
project_defaults tabs contain note length, velocity, channel, filters and
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue