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
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import Tone from 'tone'
import StartAudioContext from './startAudioContext'
import { is_mobile } from '../util'
export function requestAudioContext (fn) {
if (is_mobile) {
const container = document.createElement('div')
const button = document.createElement('div')
button.innerHTML = 'Tap to start - please unmute your phone'
Object.assign(container.style, {
display: 'block',
position: 'absolute',
width: '100%',
height: '100%',
zIndex: '10000',
top: '0px',
left: '0px',
backgroundColor: 'rgba(0, 0, 0, 0.8)',
})
Object.assign(button.style, {
display: 'block',
position: 'absolute',
left: '50%',
top: '50%',
padding: '20px',
backgroundColor: '#7F33ED',
color: 'white',
fontFamily: 'monospace',
borderRadius: '3px',
transform: 'translate3D(-50%,-50%,0)',
textAlign: 'center',
lineHeight: '1.5',
width: '150px',
})
container.appendChild(button)
document.body.appendChild(container)
StartAudioContext.setContext(Tone.context)
StartAudioContext.on(button)
StartAudioContext.onStarted(_ => {
container.remove()
fn()
})
} else {
fn()
}
}
|