Merge branch 'ciderapp:develop' into develop

This commit is contained in:
Amaru8 2022-04-09 07:35:56 +00:00 committed by GitHub
commit 9188ca8812
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 1034 additions and 497 deletions

View file

@ -72,6 +72,8 @@ export class Store {
"ciderPPE_value": "MAIKIWI",
"analogWarmth": false,
"analogWarmth_value": "SMOOTH",
"atmosphereRealizer": false,
"atmosphereRealizer_value": "NATURAL_STANDARD",
"spatial": false,
"spatialProfile": "71_420maikiwi",
"vibrantBass": { // Hard coded into the app. Don't include any of this config into exporting presets in store.ts

View file

@ -11,6 +11,7 @@ const CiderAudio = {
analogWarmth: null,
recorderNode: null,
intelliGainComp: null,
atmosphereRealizer: null,
},
ccON: false,
mediaRecorder: null,
@ -41,6 +42,7 @@ const CiderAudio = {
analogWarmth: null,
recorderNode: null,
intelliGainComp: null,
atmosphereRealizer: null,
}
} catch (e) { }
CiderAudio.source.connect(CiderAudio.context.destination);
@ -72,24 +74,27 @@ const CiderAudio = {
},
spatialProfiles: [
{
"id": "71_420maikiwi",
"file": './audio/impulses/CiderSpatial_v71.420_Maikiwi.wav',
"id": "72_420maikiwi",
"file": './audio/impulses/CiderSpatial_v72.420_Maikiwi.wav',
"name": "Maikiwi",
"description": "",
"gainComp": "1.3381352151540196",
"img": "./assets/audiolabs/focused.png",
},
{
"id": "70_421maikiwi",
"file": './audio/impulses/CiderSpatial_v70.421_Maikiwi.wav',
"name": "Aggressive",
"id": "71_420maikiwi",
"file": './audio/impulses/CiderSpatial_v71.420_Maikiwi.wav',
"name": "Soundstage",
"description": "",
"img": "./assets/audiolabs/classic.png",
"gainComp": "1.3963683610559376",
"img": "./assets/audiolabs/expansive.png",
},
{
"id": "70_422maikiwi",
"file": './audio/impulses/CiderSpatial_v70.422_Maikiwi.wav',
"name": "Relaxed",
"name": "Separation",
"description": "",
"gainComp": "1.30767553892022",
"img": "./assets/audiolabs/classic.png",
},
{
@ -97,6 +102,7 @@ const CiderAudio = {
"file": './audio/impulses/CiderSpatial_v69_Standard.wav',
"name": "Minimal",
"description": "",
"gainComp": "1.2647363474711515",
"img": "./assets/audiolabs/minimal.png",
}
],
@ -147,7 +153,22 @@ const CiderAudio = {
if (CiderAudio.audioNodes.audioBands !== null) {filters = filters.concat(CiderAudio.audioNodes.audioBands)}
if (CiderAudio.audioNodes.vibrantbassNode !== null) {filters = filters.concat(CiderAudio.audioNodes.vibrantbassNode)}
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw.length > 1) {filters = filters.concat(CiderAudio.audioNodes.llpw);}
if (!filters || filters.length === 0) {CiderAudio.audioNodes.intelliGainComp.gain.value = 1; return}
if (!filters || filters.length === 0) {
let filterlessGain = 1;
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw.length == 1) {filterlessGain = filterlessGain * 1.109174815262401}
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer == true) {filterlessGain = filterlessGain * 1.096478196143185}
if (app.cfg.audio.maikiwiAudio.spatial == true) {
let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) {
return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile;
});
filterlessGain = filterlessGain * spatialProfile.gainComp}
filterlessGain = Math.pow(10, (-1 * (20 * Math.log10(filterlessGain))) / 20).toFixed(4);
filterlessGain > 1.0 ? CiderAudio.audioNodes.intelliGainComp.gain.value = 1 : CiderAudio.audioNodes.intelliGainComp.gain.value = filterlessGain;
console.debug(`[Cider][Audio] IntelliGainComp: ${filterlessGain > 1.0 ? 0 : (20 * Math.log10(filterlessGain)).toFixed(2)} dB (${filterlessGain > 1.0 ? 1 : filterlessGain})`)
return;
}
filters.shift();
let steps = Math.ceil(96000 / precisionHz);
// Generate input array for getFrequencyResponse method
@ -171,15 +192,19 @@ const CiderAudio = {
}
}
// Find max gain
let maxGain = -120;
let maxGain = -120
for (let i = 0; i < steps; i++) {
let gain = totalAmplitudeResp[i];
if (gain > maxGain)
maxGain = gain;
}
if (maxGain == -120) {maxGain = 1}
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw[0].buffer !== null) {maxGain = maxGain * 1.0592537251772889}
if (app.cfg.audio.maikiwiAudio.spatial === true && app.cfg.audio.maikiwiAudio.spatialProfile === 'standard' || app.cfg.audio.maikiwiAudio.spatial === true && app.cfg.audio.maikiwiAudio.spatialProfile === '71_420maikiwi') {maxGain = maxGain * 1.1885022274370185}
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw.length == 1) {maxGain = maxGain * 1.109174815262401}
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer == true) {maxGain = maxGain * 1.096478196143185}
if (app.cfg.audio.maikiwiAudio.spatial == true) {
let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) {
return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile;
});
maxGain = maxGain * spatialProfile.gainComp}
maxGain = Math.pow(10, (-1 * (20 * Math.log10(maxGain))) / 20).toFixed(4);
maxGain > 1.0 ? CiderAudio.audioNodes.intelliGainComp.gain.value = 1 : CiderAudio.audioNodes.intelliGainComp.gain.value = maxGain;
console.debug(`[Cider][Audio] IntelliGainComp: ${maxGain > 1.0 ? 0 : (20 * Math.log10(maxGain)).toFixed(2)} dB (${maxGain > 1.0 ? 1 : maxGain})`);
@ -347,6 +372,81 @@ const CiderAudio = {
// CiderAudio.ccON = false;
}
},
atmosphereRealizer_h2_4: function (status, hierarchy) {
if (status === true) {
switch (app.cfg.audio.maikiwiAudio.atmosphereRealizer_value) {
case "NATURAL_STANDARD":
CiderAudio.audioNodes.atmosphereRealizer = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.atmosphereRealizer.normalize = false;
fetch('./audio/impulses/AtmosphereRealizer_NaturalStandard.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.atmosphereRealizer.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
break;
case "NATURAL_HIGH":
CiderAudio.audioNodes.atmosphereRealizer = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.atmosphereRealizer.normalize = false;
fetch('./audio/impulses/AtmosphereRealizer_NaturalHigh.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.atmosphereRealizer.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
break;
case "NATURAL_PLUS":
CiderAudio.audioNodes.atmosphereRealizer = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.atmosphereRealizer.normalize = false;
fetch('./audio/impulses/AtmosphereRealizer_Natural+.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.atmosphereRealizer.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
break;
default:
CiderAudio.audioNodes.atmosphereRealizer = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.atmosphereRealizer.normalize = false;
fetch('./audio/impulses/AtmosphereRealizer_Standard.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.atmosphereRealizer.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
app.cfg.audio.maikiwiAudio.atmosphereRealizer_value = "STANDARD";
break;
}
switch (hierarchy) {
case 4:
try{
CiderAudio.audioNodes.atmosphereRealizer.connect(CiderAudio.audioNodes.analogWarmth[0]);
} catch (e) {}
break;
case 3:
try {
CiderAudio.audioNodes.atmosphereRealizer.connect(CiderAudio.audioNodes.llpw[0]);
} catch (e) { }
break;
case 2:
try {
CiderAudio.audioNodes.atmosphereRealizer.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
} catch (e) { }
break;
case 1:
try {
CiderAudio.audioNodes.atmosphereRealizer.connect(CiderAudio.audioNodes.audioBands[0]);
} catch (e) { }
break;
case 0:
try { CiderAudio.audioNodes.atmosphereRealizer.connect(CiderAudio.context.destination); } catch (e) { }
break;
}
}
},
analogWarmth_h2_3: function (status, hierarchy) {
if (status === true) { // 23 Band Adjustment
let WARMTH_FREQUENCIES = [10.513, 15.756, 224.01, 677.77, 1245.4, 2326.8, 2847.3, 4215.3, 11057, 12793, 16235, 16235, 17838, 18112, 18112, 19326, 19372, 19372, 20061, 20280, 20280, 20853, 22276];
@ -567,6 +667,7 @@ const CiderAudio = {
try { CiderAudio.audioNodes.spatialNode.disconnect(); } catch (e) { }
try {CiderAudio.audioNodes.intelliGainComp.disconnect();} catch (e) { }
try { CiderAudio.audioNodes.gainNode.disconnect(); } catch (e) { }
try { CiderAudio.audioNodes.atmosphereRealizer.disconnect(); CiderAudio.audioNodes.atmosphereRealizer = null } catch (e) { }
try { for (var i of CiderAudio.audioNodes.analogWarmth) { i.disconnect(); } CiderAudio.audioNodes.analogWarmth = null } catch (e) { }
try { for (var i of CiderAudio.audioNodes.llpw) { i.disconnect(); } CiderAudio.audioNodes.llpw = null } catch (e) { }
try { for (var i of CiderAudio.audioNodes.vibrantbassNode) { i.disconnect(); } CiderAudio.audioNodes.vibrantbassNode = null } catch (e) { }
@ -577,7 +678,6 @@ const CiderAudio = {
},
hierarchical_loading: function () {
CiderAudio.hierarchical_unloading();
CiderAudio.audioNodes.intelliGainComp.connect(CiderAudio.audioNodes.gainNode);
if (Math.max(...app.cfg.audio.equalizer.gain) != 0) {
CiderAudio.equalizer(true, 0);
@ -591,6 +691,31 @@ const CiderAudio = {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth
CiderAudio.analogWarmth_h2_3(true, 3);
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 4);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { // Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer')
}
else { // Vibrant Bass, CAP, Analog Warmth, Spatial
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Spatial, Atmosphere Realizer')
}
}
else {
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { // Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial
app.cfg.audio.normalization = true;
@ -611,6 +736,30 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth')
}
}
}
else {
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 3)
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
app.cfg.audio.normalization = true
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Spatial, Atmosphere Realizer')
}
}
else {
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -632,11 +781,35 @@ const CiderAudio = {
}
}
}
}
else {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 2);
app.cfg.audio.normalization = true;
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 4)
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Spatial, Atmosphere Realizer')
}
}
else {
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -655,6 +828,31 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth')
}
}
}
else {
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 2)
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Spatial, Atmosphere Realizer')
}
}
else {
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -675,6 +873,8 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, Vibrant Bass')
}
}
}
}
}
// Vibrant Bass ends here
@ -685,6 +885,30 @@ const CiderAudio = {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 3);
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 4);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
app.cfg.audio.normalization = true;
console.debug('[Cider][Audio] Equalizer, CAP, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, CAP, Analog Warmth, Spatial, Atmosphere Realizer')
}
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, CAP and Analog Warmth, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -703,6 +927,30 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, CAP and Analog Warmth')
}
}
}
else {
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 3);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
app.cfg.audio.normalization = true;
console.debug('[Cider][Audio] Equalizer, CAP, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, CAP, Spatial, Atmosphere Realizer')
}
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, CAP, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -722,11 +970,35 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, CAP')
}
}
}
} // CAP ends here
else {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 1);
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 4);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
app.cfg.audio.normalization = true;
console.debug('[Cider][Audio] Equalizer, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Analog Warmth, Spatial, Atmosphere Realizer')
}
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Analog Warmth, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -745,6 +1017,30 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, Analog Warmth')
}
}
}
else {
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 1);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
app.cfg.audio.normalization = true;
console.debug('[Cider][Audio] Equalizer, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Spatial, Atmosphere Realizer')
}
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Equalizer, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -767,6 +1063,7 @@ const CiderAudio = {
}
}
}
}
else { //if (Math.max(...app.cfg.audio.equalizer.gain) == 0)
if (app.cfg.audio.equalizer.vibrantBass !== '0') { // Vibrant Bass
CiderAudio.vibrantbass_h2_1(true, 0)
@ -777,6 +1074,31 @@ const CiderAudio = {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth
CiderAudio.analogWarmth_h2_3(true, 3);
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 4);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { // Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer')
}
else { // Vibrant Bass, CAP, Analog Warmth, Spatial
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Spatial, Atmosphere Realizer')
}
}
else {
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { // Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial
app.cfg.audio.normalization = true;
@ -797,7 +1119,32 @@ const CiderAudio = {
console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth')
}
}
}
else { // if (app.cfg.audio.maikiwiAudio.analogWarmth) !== true
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 3);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
app.cfg.audio.normalization = true
console.debug('[Cider][Audio] Vibrant Bass, CAP, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, CAP, Spatial, Atmosphere Realizer')
}
}
else {
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, CAP, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -818,11 +1165,35 @@ const CiderAudio = {
}
}
}
}
else {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 2);
app.cfg.audio.normalization = true;
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 4);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Spatial, Atmosphere Realizer')
}
}
else {
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -841,6 +1212,32 @@ const CiderAudio = {
console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth')
}
}
}
else {
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 2);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, Spatial, Atmosphere Realizer')
}
}
else {
app.cfg.audio.normalization = true;
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Vibrant Bass, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -863,6 +1260,7 @@ const CiderAudio = {
}
}
}
}
// Vibrant Bass ends here
else {
if (app.cfg.audio.maikiwiAudio.ciderPPE === true) {
@ -871,6 +1269,29 @@ const CiderAudio = {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 3);
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 4);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
app.cfg.audio.normalization = true;
console.debug('[Cider][Audio] CAP, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] CAP, Analog Warmth, Spatial, Atmosphere Realizer')
}
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] CAP and Analog Warmth, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -889,6 +1310,30 @@ const CiderAudio = {
console.debug('[Cider][Audio] CAP and Analog Warmth')
}
}
}
else {
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 3);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
app.cfg.audio.normalization = true;
console.debug('[Cider][Audio] CAP, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] CAP, Spatial, Atmosphere Realizer')
}
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] CAP, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -908,11 +1353,35 @@ const CiderAudio = {
console.debug('[Cider][Audio] CAP')
}
}
}
} // CAP ends here
else {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 0);
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 4);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
app.cfg.audio.normalization = true;
console.debug('[Cider][Audio] Analog Warmth, Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Analog Warmth, Spatial, Atmosphere Realizer')
}
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Analog Warmt, Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -931,6 +1400,29 @@ const CiderAudio = {
console.debug('[Cider][Audio] Analog Warmth')
}
}
}
else {
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) {
CiderAudio.atmosphereRealizer_h2_4(true, 0);
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
app.cfg.audio.normalization = true;
console.debug('[Cider][Audio] Maikiwi Spatial, Atmosphere Realizer')
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Spatial, Atmosphere Realizer')
}
}
else {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer);
console.debug('[Cider][Audio] Atmosphere Realizer')
}
}
else {
if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -953,7 +1445,9 @@ const CiderAudio = {
}
}
}
}
CiderAudio.intelliGainComp_h0_0();
CiderAudio.audioNodes.intelliGainComp.connect(CiderAudio.audioNodes.gainNode);
console.debug("[Cider][Audio] Finished hierarchical loading");
},

View file

@ -579,11 +579,11 @@ const app = new Vue({
this.setTheme(this.cfg.visual.theme)
}
if(this.platform == "darwin") {
if (this.platform == "darwin") {
this.chrome.windowControlPosition = "left"
}
if(this.cfg.visual.nativeTitleBar) {
if (this.cfg.visual.nativeTitleBar) {
this.chrome.nativeControls = true
}
@ -765,7 +765,8 @@ const app = new Vue({
// let replaygain = self.parseSCTagToRG(tag)
try {
if (app.mk.nowPlayingItem.type !== 'song') {
CiderAudio.audioNodes.gainNode.gain.value = 0.70794578438;}
CiderAudio.audioNodes.gainNode.gain.value = 0.70794578438;
}
else {
let soundcheck = tag.split(" ")
let numbers = []
@ -775,14 +776,14 @@ const app = new Vue({
}
numbers.shift()
let peak = Math.max(numbers[6], numbers[7]) / 32768.0
let gain = Math.pow(10, ((-2.5 - (Math.log10(peak) * 20)) / 20))// EBU R 128 Compliant
let gain = Math.pow(10, ((-1 - (Math.log10(peak) * 20)) / 20))// EBU R 128 Compliant
console.debug(`[Cider][MaikiwiSoundCheck] Peak Gain: '${(Math.log10(peak) * 20).toFixed(2)}' dB | Adjusting '${(Math.log10(gain) * 20).toFixed(2)}' dB`)
try {
//CiderAudio.audioNodes.gainNode.gain.value = (Math.min(Math.pow(10, (replaygain.gain / 20)), (1 / replaygain.peak)))
CiderAudio.audioNodes.gainNode.gain.value = gain
} catch (e) {}
} catch (e) { }
}
} catch (e) {ipcRenderer.send('SoundCheckTag', event, tag);} // brute force until it works
} catch (e) { ipcRenderer.send('SoundCheckTag', event, tag); } // brute force until it works
})
ipcRenderer.on('play', function (_event, mode, id) {
@ -952,7 +953,7 @@ const app = new Vue({
less.refresh()
}
},
macOSEmu () {
macOSEmu() {
this.chrome.forceDirectives["macosemu"] = {
value: true
}
@ -989,8 +990,8 @@ const app = new Vue({
classes.simplebg = true
}
if(this.platform !== "darwin") {
switch(parseInt(this.cfg.visual.windowControlPosition)) {
if (this.platform !== "darwin") {
switch (parseInt(this.cfg.visual.windowControlPosition)) {
default:
case 0:
this.chrome.windowControlPosition = "right"
@ -1010,10 +1011,10 @@ const app = new Vue({
if (this.getThemeDirective('windowLayout') == 'twopanel') {
classes.twopanel = true
}
if(this.getThemeDirective("appNavigation") == "seperate"){
if (this.getThemeDirective("appNavigation") == "seperate") {
classes.navbar = true
}
if(this.getThemeDirective("macosemu") == true){
if (this.getThemeDirective("macosemu") == true) {
classes.macosemu = true
}
return classes
@ -3342,7 +3343,7 @@ const app = new Vue({
return "https://beta.music.apple.com/assets/product/MissingArtworkMusic.svg"
}
height = parseInt(height * window.devicePixelRatio)
if(width) {
if (width) {
width = parseInt(width * window.devicePixelRatio)
}
let newurl = `${url.replace('{w}', width ?? height).replace('{h}', height).replace('{f}', "webp").replace('{c}', ((width === 900) ? "sr" : "cc"))}`;
@ -3784,10 +3785,33 @@ const app = new Vue({
app.songLinkShare((u.data.data.length && u.data.data.length > 0) ? u.data.data[0].attributes.url : u.data.data.attributes.url)
})
}
},
{
"id": "equalizer",
"icon": "../views/svg/speaker.svg",
"name": app.getLz('term.equalizer'),
"hidden": true,
"action": function () {
app.modals.equalizer = true
app.modals.audioSettings = false
}
},
{
"id": "audioLab",
"icon": "../views/svg/speaker.svg",
"name": app.getLz('settings.option.audio.audioLab'),
"hidden": true,
"action": function () {
app.appRoute('audiolabs')
}
},
]
}
}
if(this.cfg.advanced.AudioContext) {
menus.normal.items.find(i => i.id === 'audioLab').hidden = false
menus.normal.items.find(i => i.id === 'equalizer').hidden = false
}
if (this.contextExt) {
if (this.contextExt.normal) {
menus.normal.items = menus.normal.items.concat(this.contextExt.normal)

View file

@ -77,6 +77,33 @@
</select>
</div>
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
<div class="md-option-segment">
Cider Atmosphere Realizer™
<br>
<small>Realizes a different musical atmosphere modelled after the state of the art audio setups.</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.atmosphereRealizer"
v-on:change="CiderAudio.hierarchical_loading();" switch/>
</div>
</div>
<div class="md-option-line" v-show="app.cfg.audio.maikiwiAudio.atmosphereRealizer === true">
<div class="md-option-segment">
Cider Atmosphere Realizer™ Mode
<br>
<small>Changes the mode of operation of the Atmosphere Realizer module.</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<select class="md-select" style="width:180px;"
v-model="app.cfg.audio.maikiwiAudio.atmosphereRealizer_value"
v-on:change="CiderAudio.hierarchical_loading()">
<option value="NATURAL_STANDARD">Natural (Standard)</option>
<option value="NATURAL_HIGH">Natural (High)</option>
<option value="NATURAL_PLUS">Natural (Plus)</option>
</select>
</div>
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
<div class="md-option-segment">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization')}}
@ -133,22 +160,6 @@
<div class="md-option-header">
<span>{{$root.getLz('settings.header.unfinished')}}</span>
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
<div class="md-option-segment">
Cider Atmosphere Realizer™
<br>
<small>Realizes an entirely different musical atmosphere only to be found on state of the
art audio setups.</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn">
Signature
</button>
<button class="md-btn">
Signature+
</button>
</div>
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
<div class="md-option-segment">
Cider Origami™ Vocal Enhancer/Remasterer
@ -263,6 +274,12 @@
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.75;
}
break;
default:
app.cfg.audio.maikiwiAudio.analogWarmth_value = "SMOOTH";
for (let i = 0; i < 23; i++) {
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.25;
}
break;
}
},