回答編集履歴

2

コールバック関数が呼び出されるイメージ画像を追加

2020/03/17 00:36

投稿

mozukichi
mozukichi

スコア57

test CHANGED
@@ -23,6 +23,10 @@
23
23
 
24
24
 
25
25
  が実行されるタイミングで、`synth`関数の第3引数で`undefined`が渡され、意図しない結果となっていると思われます。
26
+
27
+
28
+
29
+ ![コールバック関数が呼び出されるイメージ](3cc06c85c9bb38107ca431686d335677.png)
26
30
 
27
31
 
28
32
 

1

プログラムの修正例を追記

2020/03/17 00:36

投稿

mozukichi
mozukichi

スコア57

test CHANGED
@@ -35,3 +35,31 @@
35
35
 
36
36
 
37
37
  `synth`関数の第4引数に、`AudioContext.createGain()`で得られた`GainNode`のオブジェクトを渡しているので、`fetchAsAudioBuffer`関数を呼び出す前に、`GainNode`のオブジェクトを得ておく必要があります。
38
+
39
+
40
+
41
+ ```JavaScript
42
+
43
+ (略)
44
+
45
+ :
46
+
47
+ const sound = {};
48
+
49
+ let instrument;
50
+
51
+ sound.volume = ctx.createGain(); // 先に sound.volume の GainNode を作っておく
52
+
53
+ fetchAsAudioBuffer(ctx, 'Myaudio.wav', function(audioBuffer) {
54
+
55
+ instrument = audioBuffer;
56
+
57
+ synth(ctx, ctx.currentTime, instrument, sound.volume);
58
+
59
+ });
60
+
61
+ :
62
+
63
+ (略)
64
+
65
+ ```