Skip to content

feat: add guarded group voice copy - #13

Merged
zhoupengjie merged 3 commits into
SynthVCopilot:mainfrom
DDDMUC:feat/copy-group-voice
Sep 28, 2026
Merged

zhoupengjie merged 3 commits into
SynthVCopilot:mainfrom
DDDMUC:feat/copy-group-voice

Conversation

@DDDMUC

@DDDMUC DDDMUC commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

Adds a guarded public copy_group_voice action. It copies documented Group Voice parameters and Vocal Mode axes from one vocal Group Reference to another through the same one-Undo, postcondition-verified path as set_group_voice.

This does not and cannot select, read, or change the singer/voice database identity. The user must still choose the voicebank manually in SynthV. Host template clone remains the wrong mechanism here: real-host verification reproduced the existing SynthV 2.2.1 native crash, so this PR deliberately does not enable or wrap that path.

The new action is classified experimental until it has its own real-host Voice-copy matrix, while the underlying write path is already verified.

Verification:

  • PATH=/tmp/lua-5.4.8/src:$PATH SYNTHV_AGENT_LUA54=/tmp/lua-5.4.8/src/lua npm run check
  • 257 tests passed, including Lua Fake Host coverage for parameter/Vocal Mode copy, target Guard use, one Undo record, and the manual voicebank-identity boundary.

Copy link
Copy Markdown
Collaborator

Thanks for the PR! I ran focused smoke tests of the original PR revision in Synthesizer V Studio 2 Pro 2.2.1, covering Voice/Vocal Mode copying, target guards, Undo, and the Smart Pitch array fix.

I've pushed a follow-up commit, 74698fb, to this branch:

  • Registered copy_group_voice as a Lua project write, so an executor build mismatch returns BUILD_MISMATCH before any mutation or undo record is created. Added a regression test for this path.
  • Documented the existing merge semantics: only stored source parameters and Vocal Mode axes are copied. Target-only modes and values absent from the source remain unchanged. Added coverage for preserving those values.
  • Exposed the merge-only and manual voicebank-selection notices through the public sv_command warnings, with a test at the public tool boundary.

Validation of the updated commit: 261 local tests passed, with zero skips, and the required syntax and API coverage checks passed. GitHub CI is also green for Node 20, Node 22, and Lua. The follow-up changes were verified with automated tests; the live-host smoke tests above apply to the original PR revision. The capability remains experimental.

Could you review the follow-up and confirm that preserving target-only modes and values absent from the source matches your intended copy behavior? I'll wait for your confirmation before merging.

@DDDMUC

DDDMUC commented Sep 28, 2026

Copy link
Copy Markdown
Contributor Author

Confirmed. I reviewed 74698fb and the merge-only behavior is what I intended: copy only stored source parameters and Vocal Mode axes, preserve target-only modes, axes, and values absent from the source, and do not reset defaults. The build guard, public warnings, and CI coverage look good. Please proceed with the merge. Thanks!

@zhoupengjie
zhoupengjie merged commit 720a416 into SynthVCopilot:main Sep 28, 2026
3 checks passed
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.

3 participants