audio visualization english version

28
HTML5 Audio Visualization @kmsheng

Upload: kuan-sheng

Post on 06-Aug-2015

221 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Audio visualization English Version

HTML5 Audio Visualization

@kmsheng

Page 2: Audio visualization English Version

Who am I ?

• Kuan Min Sheng a.k.a kmsheng • Worked for MOXA and PIXNET as a

Software Engineer • Loves drawing, skateboarding and

cooking

Page 3: Audio visualization English Version

• Wanted to create unique web component !• !Study HTML5 Web Audio API!• Enjoy the joy of coding

Why would I want to implement my own audio player?

Page 4: Audio visualization English Version

codepen.io & MDN rule

Page 5: Audio visualization English Version

AudioContext.createScriptProcessor

AnalyserNode.getByteFrequencyData

ScriptProcesscorNode.onaudioprocess

Notice! In safari all elements in a channel array are 0

Page 6: Audio visualization English Version

Module Separation

Page 7: Audio visualization English Version

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

NOTE: icosahedron and vinyl take cares of drawing only

Page 8: Audio visualization English Version

Vinyl

Icosahedron

Stereo

HelperMath Util

Animation

music control

Audio

Enable Audio ContextCanvas Util

Three Renderer

Detector

Cache

Page 9: Audio visualization English Version

Elementary Math

Page 10: Audio visualization English Version

Checking if the mouse is inside a circle

Page 11: Audio visualization English Version

Given coordinates of a circle’s center and central angle G, find point (x3, y3)

( x3, y3 )

( x1, y1 )

G

Page 12: Audio visualization English Version

Given radius and chord, find minor arc

?

Page 13: Audio visualization English Version

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

RADIAN = Math.PI * 2

Page 14: Audio visualization English Version

Animation Design

Page 15: Audio visualization English Version

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

i^2

Page 16: Audio visualization English Version

context.createRadialGradient

Page 17: Audio visualization English Version

THREE.IcosahedronGeometry

Page 18: Audio visualization English Version

The devil is in the details.

Simulate press and release behaviors

mouseup event optimization (mousedown in circle and allow

mouseup triggers outside of circle)

Page 19: Audio visualization English Version

Button Status Design

Page 20: Audio visualization English Version

fallback

Modernizr.audio

Modernizr.webaudio && (! Modernizr.touch)

Page 21: Audio visualization English Version

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

Issues you may experience when creating an audio visualization

Page 22: Audio visualization English Version

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

stereo

Pull Requests & Issues Welcome !

Page 23: Audio visualization English Version

What about test ?

Page 24: Audio visualization English Version

TONIGHT WE TEST

IN PRODUCTION

Page 25: Audio visualization English Version

kmsheng.com

Page 26: Audio visualization English Version

Feel free to contact me via my website

Page 27: Audio visualization English Version

Q & A

Page 28: Audio visualization English Version

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