58 lines
1.1 KiB
JavaScript
58 lines
1.1 KiB
JavaScript
const body = document.getElementById('body')
|
|
const media = document.querySelector("video");
|
|
const sun = document.getElementById('sun')
|
|
|
|
let saturation = 1;
|
|
let freq = 1000;
|
|
let gain = 0;
|
|
let audioSource = null;
|
|
let filter = null;
|
|
|
|
function showVideo() {
|
|
sun.style.display = 'none';
|
|
media.style.display = 'flex';
|
|
}
|
|
|
|
function hideVideo() {
|
|
sun.style.display = 'flex';
|
|
media.style.display = 'none';
|
|
}
|
|
|
|
function increaseValues() {
|
|
saturation += 1;
|
|
gain += 5;
|
|
freq += 1000;
|
|
}
|
|
|
|
function createFilter() {
|
|
if (audioSource === null) {
|
|
const context = new AudioContext();
|
|
audioSource = context.createMediaElementSource(media);
|
|
filter = context.createBiquadFilter();
|
|
audioSource.connect(filter);
|
|
filter.connect(context.destination);
|
|
filter.type = "lowshelf";
|
|
}
|
|
|
|
return filter;
|
|
}
|
|
|
|
sun.addEventListener('click', (event) => {
|
|
event.preventDefault();
|
|
|
|
const filter = createFilter();
|
|
filter.frequency.value = freq;
|
|
filter.gain.value = gain;
|
|
|
|
showVideo();
|
|
media.play();
|
|
media.style.filter = `saturate(${saturation})`;
|
|
|
|
increaseValues();
|
|
})
|
|
|
|
media.addEventListener('ended', () => {
|
|
hideVideo();
|
|
media.currentTime = 0;
|
|
})
|