-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
35 lines (29 loc) · 954 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const audioContext = new AudioContext()
const bufferSize = 2 * audioContext.sampleRate
const noiseBuffer = audioContext.createBuffer(1, bufferSize, audioContext.sampleRate)
const output = noiseBuffer.getChannelData(0);
const whiteNoise = audioContext.createBufferSource();
const container = document.querySelector('.container')
const play = '▶'
const pause = '❚❚'
let playing = false
for (let i = 0; i < bufferSize; i++) {
output[i] = Math.random() * 2 - 1
}
whiteNoise.buffer = noiseBuffer
whiteNoise.loop = true
whiteNoise.start(0)
whiteNoise.connect(audioContext.destination)
audioContext.suspend()
document.querySelector('button').addEventListener('click', event => {
if (playing) {
audioContext.suspend()
event.target.innerHTML = play
container.classList.add('hide')
} else {
audioContext.resume()
event.target.innerHTML = pause
container.classList.remove('hide')
}
playing = !playing
})