audio visualization

28
HTML5 Audio Visualization 實戰經驗分享 @kmsheng

Upload: kuan-sheng

Post on 12-Jul-2015

1.746 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Audio Visualization

HTML5 Audio Visualization 實戰經驗分享

@kmsheng

Page 2: Audio Visualization

Who am I ?

• 盛貫銘 ( Kuan Min Sheng ) • 前 MOXA 與 PIXNET 軟體⼯工程師 • 喜歡畫畫、玩滑板與燒菜

Page 3: Audio Visualization

• 希望做出具有獨創性的網⾴頁元件!• !藉此研究 HTML5 Web Audio API!• 找回當初想學程式的初衷與熱情

為什麼要⾃自幹研究 ⾳音樂視覺化播放器?

Page 4: Audio Visualization

codepen.io 與 MDN 是你的好幫⼿手

Page 5: Audio Visualization

AudioContext.createScriptProcessor

AnalyserNode.getByteFrequencyData

ScriptProcesscorNode.onaudioprocess

注意! safari 是回傳空陣列喔

Page 6: Audio Visualization

模組的拆分⽅方式

Page 7: Audio Visualization

<ks-stereo> <ks-icosahedron></ks-icosahedron> <ks-vinyl></ks-vinyl> <music-control></music-control> </ks-stereo>

NOTE: icosahedron 與 vinyl 只負責畫圖

Page 8: Audio Visualization

Vinyl

Icosahedron

Stereo

HelperMath Util

Animation

music control

Audio

Enable Audio ContextCanvas Util

Three Renderer

Detector

Cache

Page 9: Audio Visualization

國中數學

Page 10: Audio Visualization

偵測滑⿏鼠指標是否在圓內

Page 11: Audio Visualization

已知圓⼼心座標與圓⼼心⾓角 G, 求 (x3, y3)

( x3, y3 )

( x1, y1 )

G

Page 12: Audio Visualization

已知半徑與弦⻑⾧長求弧⻑⾧長

?

Page 13: Audio Visualization

context.arc(x, y, radius, 0, RADIAN * progress)

RADIAN = Math.PI * 2

Page 14: Audio Visualization

動畫設計

Page 15: Audio Visualization

context.fillStyle = ‘rgba(r, g, b, a)’

i^2

Page 16: Audio Visualization

context.createRadialGradient

Page 17: Audio Visualization

THREE.IcosahedronGeometry

Page 18: Audio Visualization

魔⻤⿁鬼藏在細節裡...

壓下去與放開的觸感mouseup event 位置的判定

Page 19: Audio Visualization

Button Status Design

Page 20: Audio Visualization

fallback

Modernizr.audio

Modernizr.webaudio && (! Modernizr.touch)

Page 21: Audio Visualization

• browser memory leak!• cross browser support & fallback!• custom cursor loading issue!• html canvas animation stutter!• responsive handling!• webgl context gc bug

製作⾳音樂視覺化元件可能會遇到的問題

Page 22: Audio Visualization

https://github.com/kmsheng/angular-ks-

stereo

Pull Requests & Issues Welcome !

Page 23: Audio Visualization

What about test ?

Page 24: Audio Visualization

TONIGHT WE TEST

IN PRODUCTION

Page 25: Audio Visualization

kmsheng.com

Page 26: Audio Visualization

個⼈人⼯工作室純

Page 27: Audio Visualization

Q & A

Page 28: Audio Visualization

https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode

https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor

http://codepen.io/soulwire/pen/Dscga

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events

http://kenjiendo.com

Reference