3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

chrome53で、WebAudioAPI OscillatorNode と setValueAtTime のバグ

Last updated at Posted at 2016-09-18

事象

WebAudioAPIを使って、キーボードを作って遊んでいたのですが、
突如音階が変わらなくなりました。

サンプル↓
https://alf-ytakada.github.io/html5-oscillator-issue/

具体的に、OscillatorNodeのfrequencyに対して、setValueAtTimeを下記のように使うと、これまですぐに周波数が設定されていたのに、変わらなくなってしまいました(常に440hz出力)。

oscillator.frequency.setValueAtTime
     var oscillator    = ctx.createOscillator()
     var hz = 880;
     oscillator.frequency.setValueAtTime(hz, 0);
     oscillator.connect(ctx.destination);

OscillatorNodeは、frequencyを変更する時に、下記のやり方もあるのですが、

oscillator.frequency.value
     oscillator.frequency.value = hz;

これだと、同じoscillatorの周波数を変える際に、
元→先の途中の周波数が補完されてしまいます(グライド)。

今すぐ対処するには?

下記で良いようです。

     oscillator.frequency.setValueAtTime(hz, ctx.currentTime);

issue

ということで調べた所、ちゃんとバグ報告が上がっていました。
Immediate scheduling of AudioParam using setValueAtTime occasionally does not work.

治るのも時間の問題でしょう!

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?