web audio apiを使って可聴域を調べるアプリをつくってみた

15
Web Audio APIを使って 可聴域を調べるアプリを つくってみた @kubosho_

Upload: shota-kubota

Post on 19-Jul-2015

658 views

Category:

Engineering


5 download

TRANSCRIPT

Page 1: Web Audio APIを使って可聴域を調べるアプリをつくってみた

Web Audio APIを使って 可聴域を調べるアプリを

つくってみた@kubosho_

Page 2: Web Audio APIを使って可聴域を調べるアプリをつくってみた

自己紹介• /kubosho_?/

• 謎社所属「謎社」でググると一番上に出てきます

• http://blog.o2p.jp/

• へのへのもへじの人

• Web Audio APIに最近触れ始めました

Page 3: Web Audio APIを使って可聴域を調べるアプリをつくってみた

目次• 可聴域を調べるアプリをつくってみた

• ハマったところ

Page 4: Web Audio APIを使って可聴域を調べるアプリをつくってみた

可聴域を調べる アプリをつくってみた

Page 5: Web Audio APIを使って可聴域を調べるアプリをつくってみた

サンプルhttp://kubosho.github.io/hearing-test-app/

AndroidのかたはChromeを使ってください

Page 6: Web Audio APIを使って可聴域を調べるアプリをつくってみた

このアプリについて• 20Hz~20,000Hzまでの音を出力する

• 周波数はレンジを使って変更することができる

• 再生と停止ボタンを使って、自分で任意のタイミングで音を鳴らしたり、止めたりすることができる

Page 7: Web Audio APIを使って可聴域を調べるアプリをつくってみた

やってること• 最初に周波数を引数として、init()を呼びだす

内部ではcreateOscillator()で正弦波を作りだした後、その正弦波の周波数設定をおこなう

• connect()で作りだした音と出力先をつなぐ

• 再生が押されるとstart()が、停止が押されるとstop()が呼びだされる

Page 8: Web Audio APIを使って可聴域を調べるアプリをつくってみた

つくろうと思ったきっかけ

Page 9: Web Audio APIを使って可聴域を調べるアプリをつくってみた

つくろうと思ったきっかけ• Web Audio APIを使って何かしらつくりたかった

• 聴力検査という言葉にピコンときて、つくろうと思った

Page 10: Web Audio APIを使って可聴域を調べるアプリをつくってみた

ハマったところ

Page 11: Web Audio APIを使って可聴域を調べるアプリをつくってみた

OscillatorNodeが使い捨て• 再生し停止した後、ふたたび再生しようとしたら以下のエラーが出た

• Uncaught InvalidStateError: Failed to execute 'start' on 'OscillatorNode': cannot call start more than once.

Page 12: Web Audio APIを使って可聴域を調べるアプリをつくってみた

OscillatorNodeが使い捨て• OscillatorNodeに限らずAudioNodeは、条件を満たした際にガベージコレクションされる

• Vue.jsの$watchでisPlaySoundという再生状態かどうかのフラグを監視して、値がfalseだったら、音を再生成+作った音と出力をつなぐ

Page 13: Web Audio APIを使って可聴域を調べるアプリをつくってみた

終わり

Page 14: Web Audio APIを使って可聴域を調べるアプリをつくってみた

参考文献

Page 15: Web Audio APIを使って可聴域を調べるアプリをつくってみた

参考文献• Web Audio API (日本語訳): http://

g200kg.github.io/web-audio-api-ja/

• サウンドの生成 | Web Audio APIの基本処理 |

WEB SOUNDER - Web Audio API 解説 -

http://curtaincall.weblike.jp/portfolio-web-sounder/webaudioapi-basic/oscillator