You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
keep piano roll and transport playback routed through canonical track.instrument state with legacy fallback helpers where needed
add a dedicated SynthInstrumentEditor shell for subtractive and FM instruments inside Piano Roll
let the piano roll instrument selector switch directly between subtractive presets, FM, and Quick Sampler while always writing canonical instrument state
add regression coverage for the new editor wiring and the sampler -> fm -> subtractive selector flow
FM still falls back to the legacy synth voice in the playback engine for now; this PR adds the canonical FM state path and editor shell, not a full FM voice implementation yet.
Quick Sampler sample metadata still uses the legacy sampler mirrors for playback, but track identity and editor routing now come from track.instrument.
Browser smoke automation was attempted locally, but the desktop Playwright/Chrome environment was unreliable in this session, so this update is backed by typecheck, unit coverage, and build verification.
Reason: Main has since landed the InstrumentEngine / InstrumentFactory architecture (#1038, #1064), which fundamentally conflicts with this stack's SynthPlaybackChain / SynthRuntimeSpec / RuntimeModulationRack approach. Cherry-picking was attempted but the SynthEngine rewrite (384→623 lines) cannot be cleanly layered on top of the current main.
What to do instead: The sprint plan docs merged in #982 still apply. New PRs should build on top of main's current InstrumentEngine pattern rather than replacing it. Specific pieces from this stack (e.g., SynthInstrumentEditor UI, filter envelope controls, glide runtime) can be extracted into new standalone PRs that respect the current architecture.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
track.instrumentstate with legacy fallback helpers where neededSynthInstrumentEditorshell for subtractive and FM instruments inside Piano Rollsampler -> fm -> subtractiveselector flowVerification
npx tsc --noEmitnpx vitest run tests/unit/SynthInstrumentEditor.test.tsx tests/unit/PianoRoll.test.tsx tests/unit/VirtualKeyboard.test.tsx tests/unit/trackPresets.test.tsx src/utils/__tests__/trackInstrument.test.ts tests/unit/pianoRollContextMenu.test.tsx tests/unit/sessionLaunchModes.test.ts tests/unit/sessionLegato.test.tsnpm run buildNotes
track.instrument.