◆ 音声ファイルを準備しなくても WebAudio API だけで簡単な音を鳴らせる

自動で時間のかかる処理をするとき 別のウィンドウを開いたり PC から離れてたりするので 終わったときに音を鳴らしたいです
一種の通知なので通知機能を使えば OS の通知の設定で音がなったりしそうですが 通知は準備が手間なのとユーザ許可を必要としたりであまり気軽なものじゃありません

audio タグで十分と思うのですが これも通知の音を mp3 などで準備してロードさせる必要があります
もっとお手軽に音を鳴らせないのかと調べてみると WebAudio の API を使えば簡単にできました

これで音を鳴らせます

function sound(type, sec) {
const ctx = new AudioContext()
const osc = ctx.createOscillator()
osc.type = type
osc.connect(ctx.destination)
osc.start()
osc.stop(sec)
}

sound("square", 0.3)

AudioContext から oscillator というものを作ります
これで音の波形を作って音を鳴らせます

type に sign や square や triangle など波形の形を設定できます
ここでは設定してませんが周波数も設定でき これらで音の種類を決めます

AudioContext は作った時点からの経過時間をカウントしていて そのどこから音を鳴らし始めてどこで音を止めるかを start/stop で指定します
sound 関数では作った直後に鳴らして sec に指定した秒数後に止めています

引数で音の種類と鳴らす時間を指定できます

sound("sine", 0.5)
sound("triangle", 0.1)

もっと高度なことをしたければ周波数以外にもエフェクトをかけるなどできますが 通知音を鳴らす分にはこれだけで十分だと思います
こういうシンプルな音じゃなくもうちょっと凝った音にしたいなら 音声ファイルとして作ったほうが楽になりそうです
Data URL 形式にすれば 一行のコピペで音を鳴らせますし

new Audio("data:audio/ogg;base64,......").play()