Skip to content

Language packages

A language package supplies the two operations that convert a vocal score into renderable language material:

Operation Purpose
plan Convert the authored track into a phoneme plan.
finalize Apply timing edits and return the engine score.

Declare the package as role = "language" in plugin.toml; do not set a hook stage for that role. Multiple language packages may be enabled together. At render time, Amadeus resolves each voice’s selected language to the first enabled package, in manifest order, that advertises support for that language.

Language packages should preserve stable phone identities when applying user timing edits, so edits remain associated with the intended phones after the plan is rebuilt. Treat lyric planning, manual pronunciation overrides, slurs, and timing corrections as authored musical data rather than incidental text conversion.

Condition Operation Required result
Lyrics, notes, overrides, or slurs change. plan Return a valid phoneme plan whose identities remain stable for unchanged material.
Timing Nudges change. finalize Apply the edits to their identified phones and return a renderable score.
The package cannot support the requested language or material. Either operation Return a user-readable diagnostic or supported failure result.

Use a separate post-pitch member when language-specific pitch shaping is needed. See Post-pitch hooks and the Plugin API.