Calling kr.recall("chorus") when already in the chorus scene triggers an audible rebuild (audio dip + pattern restart). It should be a no-op if the current state already matches the target scene.
Reproduction:
- Set up verse/chorus scenes
with kr.transition(bars=4): kr.recall("chorus") — changes to chorus
with kr.transition(bars=4): kr.recall("chorus") again — audible rebuild even though nothing changed
Expected: Recalling the same scene you're already in should be a no-op (or at minimum, should not cause any audible artifact).
Root cause: recall() unconditionally clears all state and re-instantiates from the scene IR. It doesn't diff current state against target. Even identical state causes a full graph rebuild → audio interruption.
Related: #12, #13, #14 — all point to recall/rebuild being too destructive. The fix for all four may be the same: diff-based state application instead of clear+rebuild.