Skip to content

feat: align offline renders with canonical instruments#1019

Closed
ChuxiJ wants to merge 1 commit intofeat/v0.0.x-sprint-01-modulation-runtimefrom
feat/v0.0.x-sprint-01-offline-render-parity
Closed

feat: align offline renders with canonical instruments#1019
ChuxiJ wants to merge 1 commit intofeat/v0.0.x-sprint-01-modulation-runtimefrom
feat/v0.0.x-sprint-01-offline-render-parity

Conversation

@ChuxiJ
Copy link
Copy Markdown

@ChuxiJ ChuxiJ commented Mar 27, 2026

Summary

  • align offline piano-roll rendering with canonical track.instrument state instead of relying on legacy synthPreset mirrors
  • reuse the same synth playback chain for live and offline rendering so FM and subtractive runtime settings stay in parity
  • cover the new canonical render-source behavior with focused export, freeze, and helper tests

Details

  • export a shared createSynthPlaybackChain(...) from SynthEngine and reuse it in offlineRender
  • let offline MIDI rendering consume canonical FM/subtractive instrument payloads, including the modulation rack introduced in the previous PR
  • add getTrackInstrumentPlaybackSource(...) and getTrackSamplerPlaybackState(...) helpers to normalize piano-roll render inputs across callers
  • update exportMix, bounceInPlace, freezeTrack, and projectSharingService to use the canonical playback helpers
  • add a focused exportMix test file plus helper/freeze-service assertions for canonical FM and sampler paths

Validation

  • npx tsc --noEmit
  • npx vitest run --environment node src/engine/__tests__/SynthEngine.test.ts src/utils/__tests__/trackInstrument.test.ts src/engine/__tests__/exportMix.test.ts src/services/__tests__/freezeTrackService.test.ts
  • npm run build
  • curl --noproxy '*' -I http://127.0.0.1:4175/ returned 200 OK during local smoke after starting the dev server

Notes

  • This PR is stacked on top of feat: add synth runtime modulation rack #1018.
  • Browser automation smoke was limited by the current local Playwright/Chrome persistent-session issue, so validation focused on typecheck, node-environment tests, build, and local dev-server reachability.

Copy link
Copy Markdown
Author

ChuxiJ commented Mar 27, 2026

Triage: Stacked draft PR — This is stacked on #1018 (synth modulation runtime). Both are drafts. These form a synth improvement chain (#1015#1018#1019#1060). Recommend: review and merge the full chain together once the base (#1015) is rebased and validated.


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