diff --git a/index.html b/index.html index 62c774a..b55c70f 100644 --- a/index.html +++ b/index.html @@ -71,5 +71,12 @@ - + + diff --git a/src/models/Track.ts b/src/models/Track.ts index 1ea49d3..267f141 100644 --- a/src/models/Track.ts +++ b/src/models/Track.ts @@ -26,7 +26,8 @@ export default class Track { filterFrequency = 1; filterQuality = 0; - audioCtx = new AudioContext(); + audioCtx: AudioContext = new ((window as any).AudioContext || + (window as any).webkitAudioContext)(); gainNode = this.audioCtx.createGain(); filterNode = this.audioCtx.createBiquadFilter(); diff --git a/src/services/MpkController.ts b/src/services/MpkController.ts index c0a9be9..3d14b96 100644 --- a/src/services/MpkController.ts +++ b/src/services/MpkController.ts @@ -119,7 +119,13 @@ class MpkController { this.runIntroAnimBinded = this.runIntroAnim.bind(this); // Check if the user already granted access - (navigator).permissions.query({ name: 'midi', sysex: true }).then( + const permissions = (navigator).permissions; + if (!permissions || !permissions.query) { + this.setStatus(MpkStatus.incompatible); + return; + } + + permissions.query({ name: 'midi', sysex: true }).then( (status: any /* PermissionStatus */) => { if (status.state === 'granted') { this.accessDevice();