74 lines
1.6 KiB
JavaScript
74 lines
1.6 KiB
JavaScript
module.exports = {
|
|
preload,
|
|
play
|
|
}
|
|
|
|
const config = require('../../config')
|
|
const path = require('path')
|
|
|
|
const VOLUME = 0.15
|
|
|
|
/* Cache of Audio elements, for instant playback */
|
|
const cache = {}
|
|
|
|
const sounds = {
|
|
ADD: {
|
|
url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'add.wav'),
|
|
volume: VOLUME
|
|
},
|
|
DELETE: {
|
|
url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'delete.wav'),
|
|
volume: VOLUME
|
|
},
|
|
DISABLE: {
|
|
url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'disable.wav'),
|
|
volume: VOLUME
|
|
},
|
|
DONE: {
|
|
url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'done.wav'),
|
|
volume: VOLUME
|
|
},
|
|
ENABLE: {
|
|
url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'enable.wav'),
|
|
volume: VOLUME
|
|
},
|
|
ERROR: {
|
|
url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'error.wav'),
|
|
volume: VOLUME
|
|
},
|
|
PLAY: {
|
|
url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'play.wav'),
|
|
volume: VOLUME
|
|
},
|
|
STARTUP: {
|
|
url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'startup.wav'),
|
|
volume: VOLUME * 2
|
|
}
|
|
}
|
|
|
|
function preload () {
|
|
for (let name in sounds) {
|
|
if (!cache[name]) {
|
|
const sound = sounds[name]
|
|
const audio = cache[name] = new window.Audio()
|
|
audio.volume = sound.volume
|
|
audio.src = sound.url
|
|
}
|
|
}
|
|
}
|
|
|
|
function play (name) {
|
|
let audio = cache[name]
|
|
if (!audio) {
|
|
const sound = sounds[name]
|
|
if (!sound) {
|
|
throw new Error('Invalid sound name')
|
|
}
|
|
audio = cache[name] = new window.Audio()
|
|
audio.volume = sound.volume
|
|
audio.src = sound.url
|
|
}
|
|
audio.currentTime = 0
|
|
audio.play()
|
|
}
|