Monkey言語:WebAudioAPIを組み込む

目標

組み込み関数playを,WebAudioAPIを使ってシンセサイザーを鳴らすことができるようにする.


基にする記事


環境

・macOS Big Sur ver. 11.5.1(20G80) -> 12.6 (21G115)
・MacBook Air M1, 2020 メモリ 8GB
・go1.18.3 darwin/arm64


挙動が空の状態の,組み込み関数playはここで実装している.

動きを変更して音を鳴らす

evaluator/builtins.goのところに動きを書いていたので,その場所を変更して,WebAudioAPIを使ってシンセを鳴らす.

数字を返す処理自体は,返り値うんぬんの処理を変更するのが面倒なのでそのままにし,returnの前にシンセを鳴らす処理を挟む.

ひとまず,wasmできるように前の記事で作った環境をコピーして作る.
・docsフォルダはそのままコピー
・srcフォルダは名前をwasmにしてコピー

一度ディレクトリ構成を整理しよう,
monkeyを作った時のものと変更がないディレクトリについては中身は省略する.

├── ast
├── docs
│   ├── build.wasm
│   ├── index.html
│   └── wasm_exec.js
├── evaluator
├── lexer
├── object
├── parser
├── repl
├── server
│   └── server.go
├── token
├── wasm
│    └── webassembly.go
├── go.mod
├── go.sum
└── main.go

かなり沼って試行錯誤が長くなったからその部分の記録はこの記事にまとめる.



この記事が気に入ったらサポートをしてみませんか?