6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

KDDI エンジニア&デザイナーAdvent Calendar 2024

Day 4

Web MIDI APIは将来Web Workerから利用可能になりそうです!

Last updated at Posted at 2024-12-04

なんか、空いてるようなので小ネタで乱入します!

誰だお前?

趣味で音の鳴るアプリとか作って遊んでる人です。
最近作ってるアプリ。生成AIで作った画像からサウンドコラージュを無限に生成します

Web MIDI API が Web Worker で動作するように!

最近、Web MIDI API の仕様(Working Draft)がなんと9年ぶり!に更新されました。

すっごい気になる!内容が含まれていますので紹介します。

MIDIAccess.png

transfarable.png
引用元:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Transferable_objects

  • MIDIAccessMIDIInputMap MIDIOutputMap などのオブジェクトの動作コンテキストに Worker 追加

これ、どういう意味かというと、今までWindowコンテキスト(メインスレッド)でしか動作しなかった Web MIDI APIが Workerで動作するようになる、ということですね!

WorkerNavigatorrequestMIDIAccess()を生やす、という修正ではないので、あくまで Windowコンテキストでユーザーパーミッションを解決してから postMessage で Web Worker に MIDIAccess を転送し、そこで使ってもらう。という使い方になるようです。

実装が超楽しみですね!

まだブラウザには実装されてないので動きません。

仕様追加されてるけどChromeにまだ実装されてないよ!
という issue があげられています。

気になる方はチェックするようにしましょう!

最終コメントが

mj...@chromium.orgmj...@chromium.org #4Nov 22, 2024 03:43AM

Sorry for the delay, yes we haven't implemented this yet and we should. I will set to Available.

とのことで、めちゃくちゃ期待できますね!

おまけ。確認用コード!

実装されたら即確かめられるように、MIDIAccess を Web Workerに転送するだけのコードを作りました!

index.html
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1">
<title>MIDIAccess worker transfer test</title>
<style>
</style>
</head>
<body>
<script type="module">
const access = await navigator.requestMIDIAccess();
if(access == null){
  console.log("MIDI not supported.");
}else{
  console.log("MIDI supported.");
  const wk = new Worker("./worker.mjs",{type:"module"});
  wk.postMessage(access,[access]);
  console.log("MIDIAccess transfered.");
}
</script>  
</body>
</html>
worker.mjs .js
self.onmessage = (msg) ={
  let midiAccess = msg.data;
  console.log("midiAccess received");
};

現在は、まだ MIDIAccessを転送できないぞ!というエラーが出てWorkerに MIDIAccessを届けることができません。

まとめ

  • まだ実装されてないけど Web MIDI API が web worker で動くようになりそうです。
  • 宣伝:KTECのアドカレ も見てね!
6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?