63 lines
No EOL
2.3 KiB
JavaScript
63 lines
No EOL
2.3 KiB
JavaScript
var CiderAudio = {
|
|
context : null,
|
|
source : null,
|
|
audioNodes : {
|
|
gainNode : null,
|
|
compressorNode : null,
|
|
},
|
|
init: function (cb = function () { }) {
|
|
//AudioOutputs.fInit = true;
|
|
searchInt = setInterval(function () {
|
|
if (document.getElementById("apple-music-player")) {
|
|
//AudioOutputs.eqReady = true;
|
|
document.getElementById("apple-music-player").crossOrigin = "anonymous";
|
|
CiderAudio.connectContext(document.getElementById("apple-music-player"), 0);
|
|
|
|
cb();
|
|
clearInterval(searchInt);
|
|
}
|
|
}, 1000);
|
|
},
|
|
connectContext: function (mediaElem){
|
|
CiderAudio.context = new (window.AudioContext || window.webkitAudioContext);
|
|
CiderAudio.source = CiderAudio.context.createMediaElementSource(mediaElem);
|
|
CiderAudio.audioNodes.gainNode = CiderAudio.context.createGain()
|
|
CiderAudio.source.connect(CiderAudio.audioNodes.gainNode);
|
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination);
|
|
if(app.cfg.audio.normalization){
|
|
CiderAudio.normalizerOn()
|
|
}
|
|
},
|
|
normalizerOn: function (){
|
|
let tuna = Tuna(CiderAudio.context)
|
|
if (!CiderAudio.audioNodes.compressorNode){
|
|
CiderAudio.audioNodes.compressorNode = new tuna.Compressor({
|
|
threshold: -80, //-100 to 0
|
|
makeupGain: 5, //0 and up (in decibels)
|
|
attack: 2, //0 to 1000
|
|
release: 200, //0 to 3000
|
|
ratio: 8, //1 to 20
|
|
knee: 0, //0 to 40
|
|
automakeup: false, //true/false
|
|
bypass: 0
|
|
});
|
|
}
|
|
try{
|
|
CiderAudio.audioNodes.gainNode.disconnect(CiderAudio.context.destination);
|
|
} catch (e){}
|
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.compressorNode);
|
|
CiderAudio.audioNodes.compressorNode.connect(CiderAudio.context.destination);
|
|
},
|
|
normalizerOff: function (){
|
|
try{
|
|
CiderAudio.audioNodes.compressorNode.disconnect();
|
|
CiderAudio.audioNodes.compressorNode = null
|
|
} catch (e){}
|
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination);
|
|
}
|
|
|
|
}
|
|
if (app.cfg.advanced.AudioContext){
|
|
CiderAudio.init()
|
|
|
|
} |