(function (data) {
var core = {
"log": false,
"hostname": function (url) {
if ("blob:" === url.substring(0, 5)) {
url = url.replace("blob:", '');
url = unescape(url);
}
//
var match = url.match(/:\/\/(www[0-9]?\.)?(.[^/:]+)/i);
var flag = (match !== null) && (match.length > 2) && (typeof match[2] === "string") && (match[2].length > 0);
return flag ? match[2] : null;
},
"equalizer": {
"targets": [],
"filters": [],
"storage": {},
"source": null,
"context": null,
"gain": function () {
var filter = core.equalizer.context.createGain();
filter.channelCountMode = "explicit";
filter.gain.value = 1;
return filter;
},
"biquad": function (e) {
var filter = core.equalizer.context.createBiquadFilter();
filter.type = e.type || core.equalizer.storage.FT.LOWPASS;
filter.frequency.value = e.f || 0;
filter.gain.value = e.gain || 0;
filter.Q.value = 1;
return filter;
},
"set": function (o) {
if (o) {
if (o.eq &&
o.ch) {
if (core.equalizer.filters.length > 0) {
if (core.equalizer.filters[0]) {
core.equalizer.filters[0].channelCount = o.ch.mono ? 1 : (core.equalizer.filters[0]._defaultChannelCount ? core.equalizer.filters[0]._defaultChannelCount : 2);
core.equalizer.filters.forEach(function (f, i) {
f.gain.value = o.eq[i].gain;
});
}
}
}
}
},
"toggle": function (state) {
if (state) core.equalizer.storage.state = state;
//
if (core.equalizer.source && core.equalizer.context) {
if (core.equalizer.filters && core.equalizer.filters.length) {
if (core.equalizer.storage.state === "ON") {
core.equalizer.source.disconnect(core.equalizer.context.destination);
core.equalizer.source.connect(core.equalizer.filters[0]);
}
//
if (core.equalizer.storage.state === "OFF") {
core.equalizer.source.disconnect(core.equalizer.filters[0]);
core.equalizer.source.connect(core.equalizer.context.destination);
}
}
}
},
"load": function () {
if (core.log) console.error(" >> Searching for video/audio elements...");
core.equalizer.filters = [];
delete core.equalizer.context;
//
core.equalizer.context = new AudioContext();
for (var i = 0; i < core.equalizer.storage.eq.length; i++) {
var node = core.equalizer.storage.eq[i];
var filter = node.f ? core.equalizer.biquad(node) : core.equalizer.gain();
if (filter) {
core.equalizer.filters.push(filter);
}
}
//
if (core.log) console.error(" >> Equalizer is loaded!");
core.equalizer.attach(2);
},
"attach": function (w) {
if (!core.equalizer.context) core.equalizer.load();
else {
core.equalizer.targets.forEach(function (t, k) {
if (t.getAttribute("equalizer-state") !== "attached") {
var src = t.src ? t.src : t.currentSrc;
if (src) {
t.setAttribute("equalizer-state", "attached");
if (core.log) console.error(" >> Equalizer is attached, loc", w, t.className);
if (document.location.hostname !== core.hostname(src)) {
var crossorigin = t.getAttribute("crossorigin");
if (!crossorigin) {
if (src.substring(0, 5) !== "blob:") {
t.setAttribute("crossorigin", (crossorigin ? crossorigin : "anonymous"));
if (t.src) t.src = t.src + '';
else if (t.currentSrc) t.load();
}
}
}
//
try {
core.equalizer.source = core.equalizer.context.createMediaElementSource(t);
core.equalizer.filters[0]._defaultChannelCount = core.equalizer.source.channelCount ? core.equalizer.source.channelCount : 2;
var target = core.equalizer.storage.state === "OFF" ? core.equalizer.context.destination : core.equalizer.filters[0];
core.equalizer.source.connect(target);
//
for (var i = 0; i < core.equalizer.filters.length; i++) {
var current = core.equalizer.filters[i];
var next = core.equalizer.filters[i + 1];
//
current.gain.value = core.equalizer.storage.eq[i].gain;
if (next) current.connect(next);
}
//
var last = core.equalizer.filters[core.equalizer.filters.length - 1];
last.connect(core.equalizer.context.destination);
window.top.postMessage({"app": "audio-equalizer", "action": "app-icon-normal"}, '*');
} catch (e) {
window.top.postMessage({"app": "audio-equalizer", "action": "app-icon-error"}, '*');
}
}
}
});
}
}
}
};
//
core.equalizer.storage = data;
//
window.addEventListener("play", function (e) {
core.equalizer.targets.push(e.target);
core.equalizer.attach(0);
}, true);
//
window.addEventListener("message", function (e) {
if (
e.data.app === "audio-equalizer") {
if (e.data.action === "app-set") core.equalizer.set(e.data.value);
if (e.data.action === "app-toggle") core.equalizer.toggle(e.data.state);
}
}, false);
//
if (Audio) {
if (Audio.prototype) {
if (
Audio.prototype.play) {
const play =
Audio.prototype.play;
Audio.prototype.play = function () {
core.equalizer.targets.push(this);
core.equalizer.attach(1);
//
return play.apply(this, arguments);
};
}
}
}
})({"ch":{"snap":true,"mono":false},"eq":[{"label":"master","gain":"0"},{"label":"64","f":64,"gain":2.88,"type":"peaking"},{"label":"32","f":32,"gain":6.72,"type":"lowshelf"},{"label":"125","f":125,"gain":3.36,"type":"peaking"},{"label":"250","f":250,"gain":-1.92,"type":"peaking"},{"label":"500","f":500,"gain":-1.44,"type":"peaking"},{"label":"1k","f":1000,"gain":0.96,"type":"peaking"},{"label":"2k","f":2000,"gain":2.88,"type":"peaking"},{"label":"4k","f":4000,"gain":5.76,"type":"peaking"},{"label":"8k","f":8000,"gain":7.68,"type":"peaking"},{"label":"16k","f":16000,"gain":8.64,"type":"highshelf"}],"lastupdate":1588139376802,"presets":[{"name":"Club","default":true,"gains":[0,0,4.8,3.36,3.36,3.36,1.92,0,0,0]},{"name":"Live","default":true,"gains":[-2.88,0,2.4,3.36,3.36,3.36,2.4,1.44,1.44,1.44]},{"name":"Party","default":true,"gains":[4.32,4.32,0,0,0,0,0,0,4.32,4.32]},{"name":"Pop","default":true,"gains":[0.96,2.88,4.32,4.8,3.36,0,-1.44,-1.44,0.96,0.96]},{"name":"Soft","default":true,"gains":[2.88,0.96,0,-1.44,0,2.4,4.8,5.76,6.72,7.2]},{"name":"Ska","default":true,"gains":[-1.44,-2.88,-2.4,0,2.4,3.36,5.28,5.76,6.72,5.76]},{"name":"Reggae","default":true,"gains":[0,0,0,-3.36,0,3.84,3.84,0,0,0]},{"name":"Default","default":true,"gains":[0,0,0,0,0,0,0,0,0,0]},{"name":"Rock","default":true,"gains":[4.8,2.88,-3.36,-4.8,-1.92,2.4,5.28,6.72,6.72,6.72]},{"name":"Dance","default":true,"gains":[5.76,4.32,1.44,0,0,-3.36,-4.32,-4.32,0,0]},{"name":"Techno","default":true,"gains":[4.8,3.36,0,-3.36,-2.88,0,4.8,5.76,5.76,5.28]},{"name":"Headphones","default":true,"gains":[2.88,6.72,3.36,-1.92,-1.44,0.96,2.88,5.76,7.68,8.64]},{"name":"Soft rock","default":true,"gains":[2.4,2.4,1.44,0,-2.4,-3.36,-1.92,0,1.44,5.28]},{"name":"Classical","default":true,"gains":[0,0,0,0,0,0,-4.32,-4.32,-4.32,-5.76]},{"name":"Large Hall","default":true,"gains":[6.24,6.24,3.36,3.36,0,-2.88,-2.88,-2.88,0,0]},{"name":"Full Bass","default":true,"gains":[4.8,5.76,5.76,3.36,0.96,-2.4,-4.8,-6.24,-6.72,-6.72]},{"name":"Full Treble","default":true,"gains":[-5.76,-5.76,-5.76,-2.4,1.44,6.72,9.6,9.6,9.6,10.08]},{"name":"Laptop Speakers","default":true,"gains":[2.88,6.72,3.36,-1.92,-1.44,0.96,2.88,5.76,7.68,8.64]},{"name":"Full Bass & Treble","default":true,"gains":[4.32,3.36,0,-4.32,-2.88,0.96,4.8,6.72,7.2,7.2]}],"selected":{"name":"Laptop Speakers","default":true,"gains":[2.88,6.72,3.36,-1.92,-1.44,0.96,2.88,5.76,7.68,8.64]},"state":"OFF","whitelist":[]})