Skip to content

SBP Update and Fixes - #2014

Open
Cadlaxa wants to merge 71 commits into
openutau:masterfrom
Cadlaxa:SBP-update
Open

SBP Update and Fixes#2014
Cadlaxa wants to merge 71 commits into
openutau:masterfrom
Cadlaxa:SBP-update

Conversation

@Cadlaxa

@Cadlaxa Cadlaxa commented Mar 19, 2026

Copy link
Copy Markdown
Member
  • Implemented pre-utterance alias length (reads the alias oto parameters from left blank to preutter) every child SBP phonemizer will implement this to their end:
// true: endings end in a 50-tick gap
// false: uses the alias length instead
protected override bool NoGap => true;

protected override double GetTransitionBasicLengthMs(string alias, int tone, PhonemeAttributes attr) {
    double otoLength = GetTransitionBasicLengthMsByOto(alias, tone, attr);
    return otoLength;
}
  • Fixed pitch suffix bug in AssignAllAffixes where it assigns wrong pitch to tones other than vowelTone
  • Implemented IsGlide to snap certain alias to the note's starting position
  • Implemented Global Dictionary
  • Implemented diphthong splits via yaml
  • Implemented vowel sustains via yaml
  • Small code refactor

@Cadlaxa
Cadlaxa requested a review from AnAndroNerd August 31, 2026 03:26
Comment thread OpenUtau.Plugin.Builtin/EnglishVCCVPhonemizer.cs
Comment thread OpenUtau.Plugin.Builtin/EnglishVCCVPhonemizer.cs Outdated
@Cadlaxa
Cadlaxa requested a review from AnAndroNerd August 31, 2026 09:46
Comment thread OpenUtau.Plugin.Builtin/EnglishVCCVPhonemizer.cs Outdated
@AnAndroNerd
AnAndroNerd self-requested a review September 1, 2026 05:08

@AnAndroNerd AnAndroNerd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VCCV still isn't right, I will fix it myself

int curIdx = unotes.IndexOf(curUN);
var prevUN = curIdx > 0 ? unotes[curIdx - 1] : null;
UNote curUN = null;
if (unotes.Count > 0) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all of these shouldn't use the phoneme notes, but instead unotes so that + notes work right. this also fixes other issues down the line

Image

if (GetNoteForPhoneme(phoneme, notes).lyric == "+" ||
GetNoteForPhoneme(phoneme, notes).lyric == "+~") {
vel = noteVel;
case "VC C": case "V-": case "V CC": case "CC-": case "CC":

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

case "CC" never happens (sorry!)

break;
case "onsetCC": case "-CC":
vel = nextVel ?? noteVel;
autoVel = prevVel ?? noteVel;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this needs a check for isGlide, it should be noteVel if it's enabled and nextVel if it isn't

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants