Web Audio APIとFetch APIで音を鳴らすスニペット
Web Audio APIとFetch API
HTML5 RocksのサンプルをFetch APIを利用して書き換えたもの.エラーハンドリングは面倒なので省略.
以下のスニペットはFlowのtype annotationがついているので,Flowを使わない場合はいい感じに省略すること.
export default class SoundPlayer { static AudioContext = window.AudioContext || window.webkitAudioContext; uri: string; context: AudioContext; buffer: AudioBuffer; constructor(uri: string) { this.uri = uri; this.context = new SoundPlayer.AudioContext(); } fetch(): Promise<AudioBuffer> { return fetch(this.uri) .then(res => res.arrayBuffer()) .then(data => this.context.decodeAudioData(data)) .then(buf => (this.buffer = buf)); } play() { const source = this.context.createBufferSource(); source.buffer = this.buffer; source.connect(this.context.destination); source.start(0); } }
このクラスをimportして適当にやる.
import SoundPlayer from "./sound-player"; import soundUri from "./sound.mp3"; const player = new SoundPlayer(soundUri); player.fetch(() => { player.play(); });
References
- Getting Started with Web Audio API - HTML5 Rocks
- Flow | A static type checker for JavaScript
- Fetch API - Web APIs | MDN

HTML5+Web Audio APIによるオーディオデータプロセッシング―「音」の理論から生成、分析、オリジナル電子楽器の開
- 作者: 遠藤理平
- 出版社/メーカー: カットシステム
- 発売日: 2015/11
- メディア: 単行本
- この商品を含むブログ (1件) を見る

Web Audio API: Advanced Sound for Games and Interactive Apps
- 作者: Boris Smus
- 出版社/メーカー: O'Reilly Media
- 発売日: 2013/03/11
- メディア: Kindle版
- この商品を含むブログを見る