[Audio] Web Audio API hates me.

This commit is contained in:
maikirakiwi 2022-04-08 14:45:58 -07:00
parent f5e4bd253a
commit 70197fb0ce
9 changed files with 978 additions and 480 deletions

View file

@ -72,6 +72,8 @@ export class Store {
"ciderPPE_value": "MAIKIWI", "ciderPPE_value": "MAIKIWI",
"analogWarmth": false, "analogWarmth": false,
"analogWarmth_value": "SMOOTH", "analogWarmth_value": "SMOOTH",
"atmosphereRealizer": false,
"atmosphereRealizer_value": "NATURAL_STANDARD",
"spatial": false, "spatial": false,
"spatialProfile": "71_420maikiwi", "spatialProfile": "71_420maikiwi",
"vibrantBass": { // Hard coded into the app. Don't include any of this config into exporting presets in store.ts "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, analogWarmth: null,
recorderNode: null, recorderNode: null,
intelliGainComp: null, intelliGainComp: null,
atmosphereRealizer: null,
}, },
ccON: false, ccON: false,
mediaRecorder: null, mediaRecorder: null,
@ -41,6 +42,7 @@ const CiderAudio = {
analogWarmth: null, analogWarmth: null,
recorderNode: null, recorderNode: null,
intelliGainComp: null, intelliGainComp: null,
atmosphereRealizer: null,
} }
} catch (e) { } } catch (e) { }
CiderAudio.source.connect(CiderAudio.context.destination); CiderAudio.source.connect(CiderAudio.context.destination);
@ -72,24 +74,27 @@ const CiderAudio = {
}, },
spatialProfiles: [ spatialProfiles: [
{ {
"id": "71_420maikiwi", "id": "72_420maikiwi",
"file": './audio/impulses/CiderSpatial_v71.420_Maikiwi.wav', "file": './audio/impulses/CiderSpatial_v72.420_Maikiwi.wav',
"name": "Maikiwi", "name": "Maikiwi",
"description": "", "description": "",
"gainComp": "1.3381352151540196",
"img": "./assets/audiolabs/focused.png", "img": "./assets/audiolabs/focused.png",
}, },
{ {
"id": "70_421maikiwi", "id": "71_420maikiwi",
"file": './audio/impulses/CiderSpatial_v70.421_Maikiwi.wav', "file": './audio/impulses/CiderSpatial_v71.420_Maikiwi.wav',
"name": "Aggressive", "name": "Soundstage",
"description": "", "description": "",
"img": "./assets/audiolabs/classic.png", "gainComp": "1.3963683610559376",
"img": "./assets/audiolabs/expansive.png",
}, },
{ {
"id": "70_422maikiwi", "id": "70_422maikiwi",
"file": './audio/impulses/CiderSpatial_v70.422_Maikiwi.wav', "file": './audio/impulses/CiderSpatial_v70.422_Maikiwi.wav',
"name": "Relaxed", "name": "Separation",
"description": "", "description": "",
"gainComp": "1.30767553892022",
"img": "./assets/audiolabs/classic.png", "img": "./assets/audiolabs/classic.png",
}, },
{ {
@ -97,6 +102,7 @@ const CiderAudio = {
"file": './audio/impulses/CiderSpatial_v69_Standard.wav', "file": './audio/impulses/CiderSpatial_v69_Standard.wav',
"name": "Minimal", "name": "Minimal",
"description": "", "description": "",
"gainComp": "1.2647363474711515",
"img": "./assets/audiolabs/minimal.png", "img": "./assets/audiolabs/minimal.png",
} }
], ],
@ -178,8 +184,12 @@ const CiderAudio = {
maxGain = gain; maxGain = gain;
} }
if (maxGain == -120) {maxGain = 1} if (maxGain == -120) {maxGain = 1}
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw[0].buffer !== null) {maxGain = maxGain * 1.0592537251772889} if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw.length == 1) {maxGain = maxGain * 1.109174815262401}
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 (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 = 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; 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})`); console.debug(`[Cider][Audio] IntelliGainComp: ${maxGain > 1.0 ? 0 : (20 * Math.log10(maxGain)).toFixed(2)} dB (${maxGain > 1.0 ? 1 : maxGain})`);
@ -347,6 +357,81 @@ const CiderAudio = {
// CiderAudio.ccON = false; // 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) { analogWarmth_h2_3: function (status, hierarchy) {
if (status === true) { // 23 Band Adjustment 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]; 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 +652,7 @@ const CiderAudio = {
try { CiderAudio.audioNodes.spatialNode.disconnect(); } catch (e) { } try { CiderAudio.audioNodes.spatialNode.disconnect(); } catch (e) { }
try {CiderAudio.audioNodes.intelliGainComp.disconnect();} catch (e) { } try {CiderAudio.audioNodes.intelliGainComp.disconnect();} catch (e) { }
try { CiderAudio.audioNodes.gainNode.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.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.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) { } try { for (var i of CiderAudio.audioNodes.vibrantbassNode) { i.disconnect(); } CiderAudio.audioNodes.vibrantbassNode = null } catch (e) { }
@ -577,7 +663,6 @@ const CiderAudio = {
}, },
hierarchical_loading: function () { hierarchical_loading: function () {
CiderAudio.hierarchical_unloading(); CiderAudio.hierarchical_unloading();
CiderAudio.audioNodes.intelliGainComp.connect(CiderAudio.audioNodes.gainNode);
if (Math.max(...app.cfg.audio.equalizer.gain) != 0) { if (Math.max(...app.cfg.audio.equalizer.gain) != 0) {
CiderAudio.equalizer(true, 0); CiderAudio.equalizer(true, 0);
@ -591,6 +676,31 @@ const CiderAudio = {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth
CiderAudio.analogWarmth_h2_3(true, 3); 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.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { // Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial if (app.cfg.audio.maikiwiAudio.spatial === true) { // Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial
app.cfg.audio.normalization = true; app.cfg.audio.normalization = true;
@ -611,6 +721,30 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth') 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 { else {
if (app.cfg.audio.spatial === true) { if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -632,11 +766,35 @@ const CiderAudio = {
} }
} }
} }
}
else { else {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 2); CiderAudio.analogWarmth_h2_3(true, 2);
app.cfg.audio.normalization = true; 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.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -655,6 +813,31 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth') 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 { else {
if (app.cfg.audio.spatial === true) { if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -675,6 +858,8 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, Vibrant Bass') console.debug('[Cider][Audio] Equalizer, Vibrant Bass')
} }
} }
}
} }
} }
// Vibrant Bass ends here // Vibrant Bass ends here
@ -685,6 +870,30 @@ const CiderAudio = {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 3); 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.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -703,6 +912,30 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, CAP and Analog Warmth') 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 { else {
if (app.cfg.audio.spatial === true) { if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -722,11 +955,35 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, CAP') console.debug('[Cider][Audio] Equalizer, CAP')
} }
} }
}
} // CAP ends here } // CAP ends here
else { else {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 1); 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.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -745,6 +1002,30 @@ const CiderAudio = {
console.debug('[Cider][Audio] Equalizer, Analog Warmth') 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 { else {
if (app.cfg.audio.spatial === true) { if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -767,6 +1048,7 @@ const CiderAudio = {
} }
} }
} }
}
else { //if (Math.max(...app.cfg.audio.equalizer.gain) == 0) else { //if (Math.max(...app.cfg.audio.equalizer.gain) == 0)
if (app.cfg.audio.equalizer.vibrantBass !== '0') { // Vibrant Bass if (app.cfg.audio.equalizer.vibrantBass !== '0') { // Vibrant Bass
CiderAudio.vibrantbass_h2_1(true, 0) CiderAudio.vibrantbass_h2_1(true, 0)
@ -777,6 +1059,31 @@ const CiderAudio = {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth
CiderAudio.analogWarmth_h2_3(true, 3); 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.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { // Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial if (app.cfg.audio.maikiwiAudio.spatial === true) { // Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial
app.cfg.audio.normalization = true; app.cfg.audio.normalization = true;
@ -797,7 +1104,32 @@ const CiderAudio = {
console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth') console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth')
} }
} }
}
else { // if (app.cfg.audio.maikiwiAudio.analogWarmth) !== true 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.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -818,11 +1150,35 @@ const CiderAudio = {
} }
} }
} }
}
else { else {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 2); CiderAudio.analogWarmth_h2_3(true, 2);
app.cfg.audio.normalization = true; 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.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -841,6 +1197,32 @@ const CiderAudio = {
console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth') 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 { else {
if (app.cfg.audio.spatial === true) { if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -863,6 +1245,7 @@ const CiderAudio = {
} }
} }
} }
}
// Vibrant Bass ends here // Vibrant Bass ends here
else { else {
if (app.cfg.audio.maikiwiAudio.ciderPPE === true) { if (app.cfg.audio.maikiwiAudio.ciderPPE === true) {
@ -871,6 +1254,29 @@ const CiderAudio = {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 3); 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.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -889,6 +1295,30 @@ const CiderAudio = {
console.debug('[Cider][Audio] CAP and Analog Warmth') 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 { else {
if (app.cfg.audio.spatial === true) { if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -908,11 +1338,35 @@ const CiderAudio = {
console.debug('[Cider][Audio] CAP') console.debug('[Cider][Audio] CAP')
} }
} }
}
} // CAP ends here } // CAP ends here
else { else {
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
CiderAudio.analogWarmth_h2_3(true, 0); 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.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
@ -931,6 +1385,29 @@ const CiderAudio = {
console.debug('[Cider][Audio] Analog Warmth') 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 { else {
if (app.cfg.audio.spatial === true) { if (app.cfg.audio.spatial === true) {
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
@ -953,7 +1430,9 @@ const CiderAudio = {
} }
} }
} }
}
CiderAudio.intelliGainComp_h0_0(); CiderAudio.intelliGainComp_h0_0();
CiderAudio.audioNodes.intelliGainComp.connect(CiderAudio.audioNodes.gainNode);
console.debug("[Cider][Audio] Finished hierarchical loading"); console.debug("[Cider][Audio] Finished hierarchical loading");
}, },

View file

@ -775,8 +775,8 @@ const app = new Vue({
} }
numbers.shift() numbers.shift()
let peak = Math.max(numbers[6], numbers[7]) / 32768.0 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, ((0.95 - (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`) console.debug(`[Cider][MaikiwiSoundCheck] Peak Gain: '${(Math.log10(peak) * 20).toFixed(2)}' dB | Adjusting '${((Math.log10(gain) * 20) - 0.05).toFixed(2)}' dB`)
try { try {
//CiderAudio.audioNodes.gainNode.gain.value = (Math.min(Math.pow(10, (replaygain.gain / 20)), (1 / replaygain.peak))) //CiderAudio.audioNodes.gainNode.gain.value = (Math.min(Math.pow(10, (replaygain.gain / 20)), (1 / replaygain.peak)))
CiderAudio.audioNodes.gainNode.gain.value = gain CiderAudio.audioNodes.gainNode.gain.value = gain

View file

@ -77,6 +77,33 @@
</select> </select>
</div> </div>
</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-line" v-show="app.cfg.advanced.AudioContext === true">
<div class="md-option-segment"> <div class="md-option-segment">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization')}}
@ -133,22 +160,6 @@
<div class="md-option-header"> <div class="md-option-header">
<span>{{$root.getLz('settings.header.unfinished')}}</span> <span>{{$root.getLz('settings.header.unfinished')}}</span>
</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 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-line" v-show="app.cfg.advanced.AudioContext === true">
<div class="md-option-segment"> <div class="md-option-segment">
Cider Origami™ Vocal Enhancer/Remasterer Cider Origami™ Vocal Enhancer/Remasterer
@ -263,6 +274,12 @@
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.75; CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.75;
} }
break; 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;
} }
}, },