diff --git a/OpenUtau/Strings/Strings.axaml b/OpenUtau/Strings/Strings.axaml
index 2f33ba911..aff8de7b5 100644
--- a/OpenUtau/Strings/Strings.axaml
+++ b/OpenUtau/Strings/Strings.axaml
@@ -191,6 +191,7 @@ Warning: this option removes custom presets.
Phonetic Assistant
Copy
+ Batch Edits
Lyrics
Replace "-" with "+"
Edit Lyrics
@@ -222,6 +223,7 @@ Warning: this option removes custom presets.
Remove tail "R"
Part
Legacy Plugin (Experimental)
+ Singer and Oto settings
View Final Pitch to Render (R)
View Note Parameters (\)
View Phonemes (O)
diff --git a/OpenUtau/Strings/Strings.ja-JP.axaml b/OpenUtau/Strings/Strings.ja-JP.axaml
index cee266ddd..c3c341fc3 100644
--- a/OpenUtau/Strings/Strings.ja-JP.axaml
+++ b/OpenUtau/Strings/Strings.ja-JP.axaml
@@ -191,6 +191,7 @@
音素変換アシスタント
コピー
+ 一括編集
歌詞
"-" を "+" に置き換え
歌詞を編集
@@ -220,6 +221,7 @@
ビブラートをリセット
パート
従来のプラグイン (試験中)
+ シンガーと原音設定
最終的なピッチを表示 (R)
音符のパラメータを表示 (\)
音素を表示 (O)
diff --git a/OpenUtau/Views/PianoRollWindow.axaml b/OpenUtau/Views/PianoRollWindow.axaml
index 9be15409b..1e490f82a 100644
--- a/OpenUtau/Views/PianoRollWindow.axaml
+++ b/OpenUtau/Views/PianoRollWindow.axaml
@@ -374,7 +374,24 @@
diff --git a/OpenUtau/Views/PianoRollWindow.axaml.cs b/OpenUtau/Views/PianoRollWindow.axaml.cs
index 18c3d55dd..cd396fe76 100644
--- a/OpenUtau/Views/PianoRollWindow.axaml.cs
+++ b/OpenUtau/Views/PianoRollWindow.axaml.cs
@@ -71,6 +71,17 @@ void OnMenuPointerLeave(object sender, PointerEventArgs args) {
Focus(); // Force unfocus menu for key down events.
}
+ void OnMenuSingers(object sender, RoutedEventArgs args) {
+ MainWindow?.OpenSingersWindow();
+ try {
+ if (ViewModel.NotesViewModel.Part != null && !ViewModel.NotesViewModel.Selection.IsEmpty && ViewModel.NotesViewModel.Part.phonemes.Count() > 0) {
+ USinger singer = ViewModel.NotesViewModel.Project.tracks[ViewModel.NotesViewModel.Part.trackNo].Singer;
+ UOto oto = ViewModel.NotesViewModel.Part.phonemes.First(p => p.Parent == ViewModel.NotesViewModel.Selection.First()).oto;
+ DocManager.Inst.ExecuteCmd(new GotoOtoNotification(singer, oto));
+ }
+ } catch { }
+ }
+
void ReplaceLyrics() {
if (ViewModel.NotesViewModel.Part == null) {
return;