Files
ravaged-planet/src/sound.js
T
2019-06-30 15:02:08 +02:00

47 lines
1.2 KiB
JavaScript

// @ts-ignore
export const audio = new (window.AudioContext || window.webkitAudioContext)();
export const music = audio.createGain(audio);
music.gain.setValueAtTime(0.4, audio.currentTime);
music.connect(audio.destination);
export const sfx = audio.createGain(audio);
sfx.gain.setValueAtTime(0.05, audio.currentTime);
sfx.connect(audio.destination);
export async function createAudioLoop(src) {
const file = await fetch(src);
const buffer = await file.arrayBuffer();
const source = audio.createBufferSource();
audio.decodeAudioData(buffer, (buffer) => {
source.buffer = buffer;
source.connect(music);
source.loop = true;
source.start(0);
})
}
export function createOsc() {
const osc = audio.createOscillator();
osc.type = 'triangle';
osc.connect(sfx);
return osc;
}
export function playTickSound() {
const osc = createOsc();
osc.frequency.setValueAtTime(440, audio.currentTime);
osc.frequency.setValueAtTime(0, audio.currentTime + 0.005);
osc.start();
osc.stop(audio.currentTime + 0.005);
}
function clickInit() {
const osc = createOsc();
osc.start();
osc.stop();
document.removeEventListener('keydown', clickInit);
}
document.addEventListener('keydown', clickInit);