Audio compressor
This commit is contained in:
1 parent
03c3d3ec42
commit
492393c186
2 files changed
+27
-7
No files matched your search
+1
-1
@@ -128,4 +128,4 @@ export const FONT_WIDTH = 3;
|
|||||||
export const FONT_HEIGHT = 5;
|
export const FONT_HEIGHT = 5;
|
||||||
|
|
||||||
export const SOUND_MUSIC_VOLUME = 0.3;
|
export const SOUND_MUSIC_VOLUME = 0.3;
|
||||||
export const SOUND_SFX_VOLUME = 0.05;
|
export const SOUND_SFX_VOLUME = 0.1;
|
||||||
+26
-6
@@ -2,14 +2,18 @@ import {SOUND_MUSIC_VOLUME, SOUND_SFX_VOLUME} from './constants.js';
|
|||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
export const audio = new (window.AudioContext || window.webkitAudioContext)();
|
export const audio = new (window.AudioContext || window.webkitAudioContext)();
|
||||||
|
export const volume = createGain(1);
|
||||||
|
volume.connect(audio.destination);
|
||||||
|
|
||||||
export const music = audio.createGain(audio);
|
export const music = createCompressor();
|
||||||
music.gain.setValueAtTime(SOUND_MUSIC_VOLUME, audio.currentTime);
|
export const musicGain = createGain(SOUND_MUSIC_VOLUME);
|
||||||
music.connect(audio.destination);
|
music.connect(musicGain);
|
||||||
|
musicGain.connect(volume);
|
||||||
|
|
||||||
export const sfx = audio.createGain(audio);
|
export const sfx = createCompressor();
|
||||||
sfx.gain.setValueAtTime(SOUND_SFX_VOLUME, audio.currentTime);
|
export const sfxGain = createGain(SOUND_SFX_VOLUME);
|
||||||
sfx.connect(audio.destination);
|
sfx.connect(sfxGain);
|
||||||
|
sfxGain.connect(volume);
|
||||||
|
|
||||||
export async function createAudioLoop(src) {
|
export async function createAudioLoop(src) {
|
||||||
const file = await fetch(src);
|
const file = await fetch(src);
|
||||||
@@ -30,6 +34,22 @@ export function createOsc(type='triangle') {
|
|||||||
return osc;
|
return osc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function createGain(amount) {
|
||||||
|
const gain = audio.createGain();
|
||||||
|
gain.gain.setValueAtTime(amount, audio.currentTime);
|
||||||
|
return gain;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createCompressor() {
|
||||||
|
let compressor = audio.createDynamicsCompressor();
|
||||||
|
compressor.threshold.setValueAtTime(-30, audio.currentTime);
|
||||||
|
compressor.knee.setValueAtTime(40, audio.currentTime);
|
||||||
|
compressor.ratio.setValueAtTime(12, audio.currentTime);
|
||||||
|
compressor.attack.setValueAtTime(0, audio.currentTime);
|
||||||
|
compressor.release.setValueAtTime(0.25, audio.currentTime);
|
||||||
|
return compressor;
|
||||||
|
}
|
||||||
|
|
||||||
export function playTickSound() {
|
export function playTickSound() {
|
||||||
const osc = createOsc('triangle');
|
const osc = createOsc('triangle');
|
||||||
osc.frequency.setValueAtTime(440, audio.currentTime);
|
osc.frequency.setValueAtTime(440, audio.currentTime);
|
||||||
|
|||||||
Reference in new issue
Block a user