-
Notifications
You must be signed in to change notification settings - Fork 304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FrameAudioQueryの変更を反映できるようにする #1961
FrameAudioQueryの変更を反映できるようにする #1961
Conversation
// TODO: 助詞や拗音の扱いはあとで考える | ||
const lyric = note.lyric | ||
.replace("じょ", "ジョ") | ||
.replace("うぉ", "ウォ") | ||
.replace("は", "ハ") | ||
.replace("へ", "ヘ"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
この処理は無くても問題ないと思うので削除しました。
if (startRenderingRequested() || stopRenderingRequested()) { | ||
return; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
再レンダリング・レンダリング停止フラグのチェックは、歌い方の推論の直前(音声合成の直後)のみ行うようにしました。(時間がかかるのは音声合成なので、これで十分かなと思います)
@@ -906,7 +899,7 @@ export const singingStore = createPartialStore<SingingStoreTypes>({ | |||
frameAudioQuery: FrameAudioQuery | |||
) => { | |||
frameAudioQuery.volume = frameAudioQuery.volume.map((value) => { | |||
return value * Math.pow(10, volumeRangeAdjustment / 20); | |||
return value * decibelToLinear(volumeRangeAdjustment); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
decibelToLinear
を使用するようにしました。
const createPhrase = ( | ||
start: number, | ||
end: number, | ||
state: PhraseState | ||
): Phrase => { | ||
return { | ||
notes: [], | ||
startTicks: start * DEFAULT_TPQN, | ||
endTicks: end * DEFAULT_TPQN, | ||
keyRangeAdjustment: 0, | ||
volumeRangeAdjustment: 0, | ||
notes: [ | ||
{ | ||
id: uuidv4(), | ||
position: start * DEFAULT_TPQN, | ||
duration: (end - start) * DEFAULT_TPQN, | ||
noteNumber: 60, | ||
lyric: "ド", | ||
}, | ||
], | ||
state, | ||
tempos, | ||
tpqn: DEFAULT_TPQN, | ||
singer: { | ||
engineId: EngineId("00000000-0000-0000-0000-000000000000"), | ||
styleId: StyleId(0), | ||
}, | ||
}; | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
phrase.notes
からstartTicks
とendTicks
を計算する形に変更したので、ここの処理も変更しています。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ほぼLGTMです!!
細かいとこをいっぱいコメントしてしまいました 🙇
途中で気づいたのですが、singing style=歌い方、singing voice=歌声ですかね!
styleがエンジン側のスタイルと被ってしまうので、guideとかどうでしょう。
あと将来的に簡単なキャッシュ機構を持つクラスを定義してもいいかもと思いました!
for (const [notesHash, foundPhrase] of foundPhrases) { | ||
const phraseKey = notesHash; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
keyでありhashであることを示す便利ワードか規則があるとこの辺りすっと書けそうですね!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
良いワード・規則が思いつきませんでした…
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
実際に動かしてみたところ、キャラを変えて即時再生すると、レンダリング中の時に前のキャッシュが再生されるようになってるかもです!
(以前は確かダミーの音が流れてたはず?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!!!
(レビュー可能状態かわからないのですが、動かしてみた感じ問題なさそうだったので)
@sigprogramming さん的にレビューOKな状態であってたらマージで良さそう!
設計から実装まで大変だったと思います、おつです!!!!!
あ、@romot-co さん、 @sevenc-nanashi さん、 @y-chan さん、もしお手すきでしたら実行チェックをお願いできると心強いです! 🙏
もし可能ならもう少し小さめのPRだと嬉しいかもと思ったのですが、今回の変更を速度落とさずやるのは無理な気もしました。src/sing/domain.ts
関数分けを別PRにするくらい・・・?
まだまだ硬さよりも速度優先で良いフェーズだと思うので、もしいけそうだったらくらいの気持ちです 🙏
レビューOKです、レビューありがとうございます! 今回データ構造を一度に大きく変更したので、差分も大きくなってしまいました。 |
用語、仕様、処理の流れを整理してみました。 用語、仕様、処理の流れ用語フレーズ(
|
マージします! |
内容
FrameAudioQueryの変更を反映できるようにします。
関連 Issue
ref #1941
その他