Skip to content
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

[project-s] AudioRenderer.tsのリファクタリングとコメントの追加 #1571

Merged

Conversation

sigprogramming
Copy link
Contributor

@sigprogramming sigprogramming commented Sep 20, 2023

内容

AudioRenderer.tsのリファクタリングとコメントの追加を行います。

用語の説明と補足

コンテキスト時刻

AudioContextの場合は、AudioContextを作成してからの経過時間になります。単位は秒です。
現在のコンテキスト時刻はcurrentTimeプロパティで取得できます。

// 現在のコンテキスト時刻を取得する
const contextTime = audioContext.currentTime;

Web Audio APIでは音声処理はレンダリングスレッドで行われるため、再生・停止のタイミングをメインスレッドから正確にコントロールするには、コンテキスト時刻で再生時刻・停止時刻を指定(スケジュール)する必要があります。

オフラインレンダリング

OfflineAudioContextを使用して行うレンダリングで、音声デバイスへの出力を行いません。

トランスポート(Transport

DAWのトランスポートのイメージです。
イベントスケジューラーを使用して複数のシーケンスのスケジューリングを行います。

シーケンス(Sequence

DAWのトラック、リージョンのイメージです。
音源とイベントを持ちます。

スケジューリング

トランスポートとイベントスケジューラーのスケジューリング処理は、以下のページを参考に実装しています。

関連 Issue

ref #1041

その他

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

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

LGTM!!!!!!

ドキュメントすごくありがたいです!!!
プルリクエストの説明も含めて、内容がなんとなくわかった気持ちになれました!

これは追加してくださいというよりも読んでみた感想なのですが、スケジューラー、イベント、シンセサイザー、ボイスあたりが未定義というか具体的な役割がまだちょっとつかめなかったかもです!
あとなんとなくですが、ユーザーがノートを置いてから、音声が作られ、AudioPlayerが再生するまでの一通りのデータの流れを、なんとなくのシーケンス図として書いてあげればだいぶ流れが掴みやすいかもと思いました!

プルリクエストでの説明がかなり有用なので、これもドキュメントに含めてあげたい気が少ししました。
docsディレクトリあたりに適当にメモファイル(project-s.mdでも何でも)を置いておいて、そこに全体用の説明をちょくちょく書いていく手もあるかもです!

@Hiroshiba
Copy link
Member

マージします!

@Hiroshiba Hiroshiba merged commit e3ac2c7 into VOICEVOX:project-s Sep 20, 2023
2 checks passed
@sigprogramming
Copy link
Contributor Author

sigprogramming commented Sep 21, 2023

レビュー&マージありがとうございます!
クラス・インターフェースを一通り整理できたら、ドキュメント(シーケンス図など)を書こうと思います!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants