Skip to content

feat: connect synth runtime to canonical voices#1015

Draft
ChuxiJ wants to merge 1 commit intofeat/v0.0.x-sprint-01-engine-and-piano-rollfrom
feat/v0.0.x-sprint-01-runtime-voices
Draft

feat: connect synth runtime to canonical voices#1015
ChuxiJ wants to merge 1 commit intofeat/v0.0.x-sprint-01-engine-and-piano-rollfrom
feat/v0.0.x-sprint-01-runtime-voices

Conversation

@ChuxiJ
Copy link
Copy Markdown

@ChuxiJ ChuxiJ commented Mar 27, 2026

Summary

  • switch canonical subtractive playback from basic Tone.Synth voices to Tone.MonoSynth so filter, filter envelope, detune, and fat-oscillator unison settings affect real playback
  • switch canonical FM playback from legacy fallback presets to real Tone.FMSynth voices with mapped carrier/modulator settings
  • add runtime-spec regression tests so the engine-side parameter mapping stays stable as the editor evolves
  • update the FM editor note to reflect that live playback now uses the FM runtime path

Verification

  • npx tsc --noEmit
  • npx vitest run src/engine/__tests__/SynthEngine.test.ts 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.ts
  • npm run build

Notes

  • This is a stacked PR on top of feat: add piano roll synth editor shell #1007.
  • LFO and some higher-level character controls are still stored canonically but not fully rendered in the runtime yet; this slice focuses on the highest-signal playback gaps first.

Copy link
Copy Markdown
Author

ChuxiJ commented Mar 27, 2026

Triage: Base of synth chain — This is the base PR for the synth improvement stack (#1015#1018#1019#1060). Needs rebase and review before the rest of the chain can progress.


Generated by Claude Code

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.

1 participant