Slide 1

Slide 1 text

Web Audio API で お手軽10 バンドイコライザー 廣田 洋平 @DRECOM

Slide 2

Slide 2 text

We are hiring!

Slide 3

Slide 3 text

Join us! #6 @DRECOM 10/13(thu)

Slide 4

Slide 4 text

自己紹介 廣田 洋平 (Yohei Hirota) ドリコム16 新卒入社 「 ちょこっとファー ム」 サー バー サイド Web Audio API 歴3 ヶ月とちょっと 作ったもの https://hiro-tan.github.io/

Slide 5

Slide 5 text

アジェンダ Web Audio API でイコライザー を作る イコライザー とは? Web Audio API で音声ファイルを読み込む 音声にフィルタをかける Web Audio API におけるのノー ドの概念 webaudio-controls を使ってみる

Slide 6

Slide 6 text

イコライザー とは? 音声信号の周波数特性を変更する音響機器 wikipedia「 イコライザー ( 音響機器)」 より ある特定の周波数帯域の波形を強調 / 減少させて 音作りを行うこと 周波数帯域をバンドという 10 バンド 10 箇所調整できる

Slide 7

Slide 7 text

DEMO https://hiro-tan.github.io/equalizer.html

Slide 8

Slide 8 text

音声ファイルを読み込む var context = new AudioContext(); var buffer = null; loadSound("path/to/source") var source = context.createBufferSource(); source.buffer = buffer; source.connetct(context.destination) source.start(0) function loadSound(url) { var req = new XMLHttpRequest(); req.open("GET", url, true); req.responseType = "arraybuffer"; req.onload = function() { context.decodeAudioData(req.response, function(b) { buffer = b; }, function() {}); } req.send(); }

Slide 9

Slide 9 text

音声にフィルタをかける Web Audio API では音を作る部分と 音を鳴らす部分を分けて考える パソコンとスピー カー のような関係 buffer destination この間にフィルタのノー ドを挟む buffer filter destination

Slide 10

Slide 10 text

音声にフィルタをかける var source = context.createBufferSource(); var filter = context.createBiquadFilter(); filter.type = "peaking"; filter.frequency.value = 440; filter.gain.value = 10; // 中略 source.buffer = buffer; source.connect(filter); filter.connect(context.destination); source.start(0);

Slide 11

Slide 11 text

まとめ 少ないコー ド量で音作りが楽しめる 変更がリアルタイムかつシー ムレスに反映される どのノー ドをどう繋ぐかは音楽の知識が必要 本格的にやろうとすると結構頭使う