diff --git a/OpenUtau.Core/Ustx/UPhoneme.cs b/OpenUtau.Core/Ustx/UPhoneme.cs index 4bb8e08ba..1446cec05 100644 --- a/OpenUtau.Core/Ustx/UPhoneme.cs +++ b/OpenUtau.Core/Ustx/UPhoneme.cs @@ -126,8 +126,6 @@ void ValidateOverlap(UProject project, UTrack track, UPart part, UNote note) { if (autoPreutter - autoOverlap > prevDur * 0.5f) { maxPreutter = prevDur * 0.5f / (autoPreutter - autoOverlap) * autoPreutter; } - } else { // Plosive consonants - maxPreutter = Math.Min(maxPreutter, prevDur * 0.9); } maxPreutter = Math.Min(maxPreutter, prevDur); if (Prev.preutter < 5) { @@ -148,6 +146,10 @@ void ValidateOverlap(UProject project, UTrack track, UPart part, UNote note) { preutter = Math.Max(0, autoPreutter + (preutterDelta ?? 0)); overlap = autoOverlap + (overlapDelta ?? 0); if (Prev != null) { + if (Prev.DurationMs - preutter < 5) { + var minOverlap = 5 - (Prev.DurationMs - preutter); + overlap = Math.Max(overlap, minOverlap); + } Prev.tailIntrude = adjacent ? Math.Max(preutter, preutter - overlap) : 0; Prev.tailOverlap = adjacent ? Math.Max(overlap, 0) : 0; overlapped = adjacent && overlap > 0;