回答編集履歴

4

実装例の追記

2022/10/20 13:18

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -37,3 +37,7 @@
37
37
  panicが起きちゃうとWASMインスタンスは終了してアクセス不能になります。
38
38
  必ずユーザー操作イベントに紐づけてWebAudioの利用を開始するようにしていました。
39
39
 
40
+ ## 実装例
41
+
42
+ https://zenn.dev/nobonobo/articles/42d999fee88a1d
43
+

3

誤字修正

2022/10/20 12:25

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -33,6 +33,7 @@
33
33
  「Goを経由しない時には音が出せていたので」というのとは合致しません。
34
34
  音が出せていた時と状況が異なるようです。
35
35
 
36
- ただ、僕がWebAudioを試しているときもこの条件でpanic起きるので、
36
+ ただ、僕がWebAudioを試しているときもこの条件でpanic起きるので、
37
+ panicが起きちゃうとWASMインスタンスは終了してアクセス不能になります。
37
38
  必ずユーザー操作イベントに紐づけてWebAudioの利用を開始するようにしていました。
38
39
 

2

追記

2022/10/20 12:24

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -8,3 +8,31 @@
8
8
 
9
9
  `osc.Set("frequency", 440)`
10
10
 
11
+ ## 追記
12
+
13
+ ```html
14
+ <script>
15
+ // デフォルト設定でAudioContextを取得
16
+ let ctx = new AudioContext();
17
+ // 基本的な音を発するオシレータのAudioNodeをコンテキストの中に作成
18
+ // 周波数は440Hz、波形はサイン波
19
+ let osc = new OscillatorNode(ctx);
20
+ osc.frequency = 440;
21
+ osc.type = "sine";
22
+ // オシレータノードの出力をコンテキストのスピーカーに接続
23
+ osc.connect(ctx.destination);
24
+ // オシレータの処理を開始
25
+ osc.start();
26
+ </script>
27
+ ```
28
+
29
+ 以上の記述のHTMLをブラウザで表示しようとすると、
30
+ `The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.`
31
+ この表記がコンソールログに出力されます。
32
+
33
+ 「Goを経由しない時には音が出せていたので」というのとは合致しません。
34
+ 音が出せていた時と状況が異なるようです。
35
+
36
+ ただ、僕がWebAudioを試しているときもこの条件でpanicを起きるので、
37
+ 必ずユーザー操作イベントに紐づけてWebAudioの利用を開始するようにしていました。
38
+

1

補足追記

2022/10/19 04:15

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -1,3 +1,9 @@
1
+ - js.Value.Get(フィールド名)
2
+ - js.Value.Set(フィールド名, 値)
3
+ - js.Value.Call(フィールド名, params...)
4
+
5
+ これらのフィールド名にドット混じりは使えません。
6
+
1
7
  `osc := js.Global().Get("OscillatorNode").New(ctx)`にてoscオブジェクトを取得したのであればそれを使ってください。
2
8
 
3
9
  `osc.Set("frequency", 440)`