Slide 1

Slide 1 text

JavaScript, JavaScript… Rocks You!

Slide 2

Slide 2 text

Vitalii Bobrov Lead JS Engineer @ EPAM @AngularWroclaw organizer Loves rock music @bobrov1989 https://bobrov.dev

Slide 3

Slide 3 text

Wroclaw, Poland

Slide 4

Slide 4 text

Web Audio

Slide 5

Slide 5 text

a uni-directed graph containing audio nodes https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Using_Web_Audio_API

Slide 6

Slide 6 text

Uni-directed Graph input output effects

Slide 7

Slide 7 text

Guitar Stack input output

Slide 8

Slide 8 text

Guitar Stack input output effects

Slide 9

Slide 9 text

Connect a Guitar

Slide 10

Slide 10 text

Stream Source https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Media Stream Constraints https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints/audio

Slide 13

Slide 13 text

Connect to Destination https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode

Slide 14

Slide 14 text

Volume Control

Slide 15

Slide 15 text

Gain Control sin(x) 0.5sin(x)

Slide 16

Slide 16 text

Gain Node https://developer.mozilla.org/en-US/docs/Web/API/GainNode

Slide 17

Slide 17 text

Distortion

Slide 18

Slide 18 text

group of effects shaping a sound wave

Slide 19

Slide 19 text

Overdrive Distortion Fuzz Effects

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

Wave Shape sin(x) (PI + k) * x / (PI + k * abs(x))

Slide 22

Slide 22 text

Distortion vs Overdrive vs Fuzz

Slide 23

Slide 23 text

Wave Shaper Node https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode

Slide 24

Slide 24 text

Tone Control

Slide 25

Slide 25 text

Low Pass Filter

Slide 26

Slide 26 text

Biquad Filter Node https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode

Slide 27

Slide 27 text

Cabinet

Slide 28

Slide 28 text

Impulse Response a short sample with impulse characteristics record

Slide 29

Slide 29 text

Convolver Node https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode

Slide 30

Slide 30 text

Equalizer

Slide 31

Slide 31 text

Three Band Equalizer Bass < 500 Hz Middle ~1500 Hz Treble > 3000 Hz

Slide 32

Slide 32 text

Biquad Filter Nodes https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode

Slide 33

Slide 33 text

Reverb

Slide 34

Slide 34 text

Reverb Graph Channel Splitter Node Channel Merger Node “Dry”
 Gain Node “Wet”
 Gain Node Delay Node Biquad Filter Node Convolver Node

Slide 35

Slide 35 text

Reverb Nodes https://developer.mozilla.org/en-US/docs/Web/API/ChannelSplitterNode https://developer.mozilla.org/en-US/docs/Web/API/DelayNode

Slide 36

Slide 36 text

Connect Nodes https://developer.mozilla.org/en-US/docs/Web/API/ChannelMergerNode

Slide 37

Slide 37 text

Connect line to destination Gain Node Distortion Wave Shaper Node Biquad Filter Node Cabinet Convolver Node Reverb Channel Merger/Splitter Node Delay Node Recap

Slide 38

Slide 38 text

Rock it!

Slide 39

Slide 39 text

@bobrov1989 https://bobrov.dev https://github.com/vitaliy-bobrov/js-rocks