環境
・macOS Big Sur ver. 12.6 (21G115)
・MacBook Air M1, 2020 メモリ 8GB
・go1.18.3 darwin/arm64
やっていること
Go WebAssemblyでブラウザ上でGoを実行する その2 Go側からJavascriptを操作する
この二つのサイトを組み合わせて,一つ目のサイトにおけるsrc/webassembly.goを,二つ目のサイトの440Hzでsin波を鳴らしているものに変更させ,Go言語からJavaSciptでWeb Audio APIを制御してシンセサイザーを鳴らそうとしています.
それぞれ単体では実行することに成功しました.
WebAssembly.go
Go
1package main 2 3import ( 4 "syscall/js" 5) 6 7func main() { 8 // グローバルオブジェクト(window)を取得します 9 window := js.Global() 10 11 // document オブジェクトを取得します 12 document := window.Get("document") 13 14 // bodyを取得します 15 body := document.Get("body") 16 17 // h1 のDOMを作成します 18 h1 := document.Call("createElement", "h1") 19 h1.Set("innerHTML", "Hello Webassembly!") 20 21 // h1をbodyに追加します 22 body.Call("appendChild", h1) 23 24 // プログラムが終了しないように待機します 25 select {} 26 27}
sin波を生成するJavaScript
JavaScript
1// デフォルト設定でAudioContextを取得 2let ctx = new AudioContext() 3// 基本的な音を発するオシレータのAudioNodeをコンテキストの中に作成 4// 周波数は440Hz、波形はサイン波 5let osc = new OscillatorNode(ctx) 6osc.frequency = 440 7osc.type = "sine" 8// オシレータノードの出力をコンテキストのスピーカーに接続 9osc.connect(ctx.destination) 10// オシレータの処理を開始 11osc.start()
問題
以前の質問の関連で教えていただいていたサイト
や,簡単なJavaScriptをGoに変換するツール
を用いて変換していこうと思ったのですが,初手のnew演算子によるインスタンス生成の部分の書き換え方がわからず,先に進めなくなってしまいました.

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/18 12:10