2f2cb3a066
Per md/38_FLOWCLIENT.md analysis: - Add _initPromise to serialize concurrent init calls (no duplicate worklet) - audioContext.resume() before worklet.loadModule - selectInstrument creates AudioContext + awaits init if not ready - playNote tries SpessaSynth first, falls back to oscillator on error - All MIDI commands wrapped in try/catch with oscillator fallback