diff --git a/OpenUtau/Strings/Strings.axaml b/OpenUtau/Strings/Strings.axaml index 9daf39aff..b018e925d 100644 --- a/OpenUtau/Strings/Strings.axaml +++ b/OpenUtau/Strings/Strings.axaml @@ -550,6 +550,7 @@ General Rename track Select Renderer Select Singer + (Singer default) Solo Solo additionally (which not removes solo from other tracks) Solo this only (which removes solo from other tracks) diff --git a/OpenUtau/ViewModels/TrackHeaderViewModel.cs b/OpenUtau/ViewModels/TrackHeaderViewModel.cs index e43f64808..c31a75e90 100644 --- a/OpenUtau/ViewModels/TrackHeaderViewModel.cs +++ b/OpenUtau/ViewModels/TrackHeaderViewModel.cs @@ -373,11 +373,27 @@ public string GetPhonemizerGroupHeader(string key){ return key; } + PhonemizerFactory? FindPhonemizerByName(string name){ + return DocManager.Inst.PhonemizerFactories.FirstOrDefault( + factory => factory.type.FullName == name); + } + public void RefreshPhonemizers() { var items = new List(); + //Singer default + if (track != null && track.Singer != null && track.Singer.Found){ + var factory = FindPhonemizerByName(track.Singer.DefaultPhonemizer); + if(factory != null){ + items.Add(new MenuItemViewModel() { + Header = ThemeManager.GetString("tracks.singerdefault") + factory.ToString(), + Command = SelectPhonemizerCommand, + CommandParameter = factory, + }); + } + } //Recently used phonemizers items.AddRange(Preferences.Default.RecentPhonemizers - .Select(name => DocManager.Inst.PhonemizerFactories.FirstOrDefault(factory => factory.type.FullName == name)) + .Select(name => FindPhonemizerByName(name)) .OfType() .OrderBy(factory => factory.tag) .Select(factory => new MenuItemViewModel() {