From 1e2085b99000d5648d5f8ee5bae97b203150bf13 Mon Sep 17 00:00:00 2001 From: Thymue Date: Mon, 17 May 2021 12:33:43 +0200 Subject: [PATCH 1/3] compressor plugin --- plugins/audio-compressor/front.js | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 plugins/audio-compressor/front.js diff --git a/plugins/audio-compressor/front.js b/plugins/audio-compressor/front.js new file mode 100644 index 0000000000..67d7484c27 --- /dev/null +++ b/plugins/audio-compressor/front.js @@ -0,0 +1,32 @@ +const { + watchDOMElement +} = require("../../providers/dom-elements"); + +let videoElement; + +const applyCompressor = () => { + var audioContext = new AudioContext(); + + var compressor = audioContext.createDynamicsCompressor(); + compressor.threshold.value = -50; + compressor.ratio.value = 12; + compressor.knee.value = 40; + compressor.attack.value = 0; + compressor.release.value = 0.25; + + var source = audioContext.createMediaElementSource(videoElement); + + source.connect(compressor); + compressor.connect(audioContext.destination); +}; + +module.exports = () => { + watchDOMElement( + "video", + (document) => document.querySelector("video"), + (element) => { + videoElement = element; + applyCompressor(); + } + ); +}; From bae5155e1963062938769d19388d37686cb442a5 Mon Sep 17 00:00:00 2001 From: Thymue Date: Mon, 17 May 2021 13:42:27 +0200 Subject: [PATCH 2/3] use let and const instead of var --- plugins/audio-compressor/front.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/audio-compressor/front.js b/plugins/audio-compressor/front.js index 67d7484c27..8372a0f4f0 100644 --- a/plugins/audio-compressor/front.js +++ b/plugins/audio-compressor/front.js @@ -5,16 +5,16 @@ const { let videoElement; const applyCompressor = () => { - var audioContext = new AudioContext(); + const audioContext = new AudioContext(); - var compressor = audioContext.createDynamicsCompressor(); + let compressor = audioContext.createDynamicsCompressor(); compressor.threshold.value = -50; compressor.ratio.value = 12; compressor.knee.value = 40; compressor.attack.value = 0; compressor.release.value = 0.25; - var source = audioContext.createMediaElementSource(videoElement); + const source = audioContext.createMediaElementSource(videoElement); source.connect(compressor); compressor.connect(audioContext.destination); From e99c91ce6ef81fa3ba3d7bba81b5ce17c7e52cc3 Mon Sep 17 00:00:00 2001 From: Thymue Date: Wed, 19 May 2021 21:50:40 +0200 Subject: [PATCH 3/3] get rid of (hopefully) unnecessary watchDOMElement --- plugins/audio-compressor/front.js | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/plugins/audio-compressor/front.js b/plugins/audio-compressor/front.js index 8372a0f4f0..4f41a4d7e2 100644 --- a/plugins/audio-compressor/front.js +++ b/plugins/audio-compressor/front.js @@ -1,10 +1,12 @@ -const { - watchDOMElement -} = require("../../providers/dom-elements"); +const applyCompressor = () => { + const videoElement = document.querySelector("video"); -let videoElement; + // If video element is not loaded yet try again + if(videoElement === null) { + setTimeout(applyCompressor, 500); + return; + } -const applyCompressor = () => { const audioContext = new AudioContext(); let compressor = audioContext.createDynamicsCompressor(); @@ -20,13 +22,4 @@ const applyCompressor = () => { compressor.connect(audioContext.destination); }; -module.exports = () => { - watchDOMElement( - "video", - (document) => document.querySelector("video"), - (element) => { - videoElement = element; - applyCompressor(); - } - ); -}; +module.exports = applyCompressor; \ No newline at end of file