Calling stopAudio() before deserialize+rebuildGraph broke the audio graph because rebuildGraph needs isRunning=true to work properly. Now follows the same pattern as loadPreset(): deserialize then rebuildGraph (which destroys and recreates all nodes internally). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>