Skip to content

Fix play-button crash: only sync-start stems once a render clock exists - #80

Merged
sanylax0 merged 1 commit into
mainfrom
claude/repo-review-improvements-yvk3t7-p5-play-at-hardening
Jul 18, 2026
Merged

sanylax0 merged 1 commit into
mainfrom
claude/repo-review-improvements-yvk3t7-p5-play-at-hardening

Conversation

@sanylax2

Copy link
Copy Markdown
Collaborator

What

Fixes the crash on pressing play introduced by #77. The stem-sync change called play(at:) with a host-time anchor unconditionally — but on the very first start after the engine is built, the player node hasn't seen an IO cycle and has no render clock, and play(at:) throws the AVFAudio start-time exception. The crash lands immediately after the session-activation log line, which is the last thing printed before the deck starts.

How

Deck.play() now anchors the shared start to the node's own lastRenderTime only when it's host-time valid; on a cold start it falls back to two plain play() calls — the exact pre-#77 behavior (where the back-to-back calls on a freshly started engine land on the same quantum in practice). Pause→resume and post-seek starts, where drift was actually observed, still get the synchronized start.

Testing

Please confirm on device: press play on a stem-separated track right after launch (previously crashing), then pause/resume mid-track.

🤖 Generated with Claude Code

https://claude.ai/code/session_013TJoWkqg8bzkGdzxWhWjWP


Generated by Claude Code

The shared host-time anchor introduced for stem start sync used
play(at:) unconditionally; on the very first start after the engine is
built the player node has no render clock yet, and play(at:) throws the
AVFAudio start-time exception — crashing on the play button. Anchor to
the node's own lastRenderTime when it's host-time valid, and fall back
to plain play() (the pre-sync behavior) on a cold start.
@sanylax0
sanylax0 merged commit 17c5bfa into main Jul 18, 2026
1 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants