argentum384 / flmml-on-html5

Porting of FlMML to HTML5
BSD 3-Clause "New" or "Revised" License
29 stars 8 forks source link

AudioWorklet 導入 #31

Closed argentum384 closed 3 years ago

argentum384 commented 3 years ago

概要

音声再生に利用している ScriptProcessorNode はすでに deprecated なので、代替機能である AudioWorklet に差し替える。

AudioWorklet では一度に送信するオーディオバッファのサイズが 128 サンプルで固定なので、シーケンサ側で作成したバッファがより長い場合でもバッファ長の違いを吸収する仕組みを考える。

argentum384 commented 3 years ago

備忘: バッファサイズについては以下注意

https://github.com/argentum384/flmml-on-html5/blob/66624f691558f2033eb8d22dfafc3122255fff95/src/common/Consts.ts#L3-L6

サンプリングレートについては現存するサウンドデバイスの出力レートが 44.1kHz, 48kHz, 96kHz のどれかのパターンしか考えてないけど他は無視する。誤差があっても再生できないわけではないので (そもそも v1.x では 8192 だったので #7 で対応してからわずかながら誤差がありうる状態だった)