iPhoneの加速度センサーを使ってマラカス作成

WebMusicHackathon #3 に参加したので、WebAudio を使っておもちゃを作りました。

  • 発表資料

http://diary.awm.jp/~yoya/data/2014/09/13/iPhoneMaracas.pdf

http://diary.awm.jp/~yoya/data/2014/09/13/iPhoneMaracas.pptx

マラカスを振ると音が鳴るのを加速度センサーを使ってシミュレーションしようという話です。

作成イメージ


ハマったところ

  • Mobile Safari は Performance.now() が使えない。
  • 代わりに AudioContext の currentTime を使ったら、当初 0 しか返さず
  • Oscillatorを作る等しないとタイマーが動き出さないらしい。
    • 恐らく AudioParam のスケジューラで必要になるまで用意しないって事だろうけど。
  • 尚、Mobile Safari はタッチイベント等から呼び出さないと Oscillator を作っても無駄。osc.start() もそうなので似た話だと思う。

addEventListener("touchstart", function() {
var osc = audioctx.createOscillator();
});

で解決。connect しなくても大丈夫。start さえ要らない。