diff --git a/src/main/base/store.ts b/src/main/base/store.ts index f5553f5b..fc96d5dd 100644 --- a/src/main/base/store.ts +++ b/src/main/base/store.ts @@ -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 diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index 455743e3..547f9b5a 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -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,44 +691,94 @@ const CiderAudio = { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth CiderAudio.analogWarmth_h2_3(true, 3); - 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.analogWarmth[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial') + 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 { // Vibrant Bass, CAP, Analog Warmth, Spatial + else { app.cfg.audio.normalization = true; - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Spatial') + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Atmosphere Realizer') } } - else { - app.cfg.audio.normalization = true; - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth') + + 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; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial') + } + 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.analogWarmth[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Spatial') + } + } + else { + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth') + } } } else { - 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.llpw[0]); - app.cfg.audio.normalization = true - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Maikiwi Spatial') + 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 { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Spatial') + else { + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Atmosphere Realizer') } } - else { - app.cfg.audio.normalization = true; - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP') + else { + 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.llpw[0]); + app.cfg.audio.normalization = true + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Spatial') + } + } + else { + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP') + } } } } @@ -637,43 +787,93 @@ const CiderAudio = { CiderAudio.analogWarmth_h2_3(true, 2); app.cfg.audio.normalization = true; - 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.analogWarmth[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Maikiwi Spatial') + 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 { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Spatial') + 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 { - app.cfg.audio.normalization = true; - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth') + + else { + 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.analogWarmth[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Spatial') + } + } + else { + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth') + } } } else { - 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.vibrantbassNode[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Maikiwi Spatial') + 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 { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.vibrantbassNode[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Spatial') + 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) { + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.vibrantbassNode[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Spatial') + } + } + else { + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); + console.debug('[Cider][Audio] Equalizer, Vibrant Bass') } } - else { - app.cfg.audio.normalization = true; - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); - console.debug('[Cider][Audio] Equalizer, Vibrant Bass') - } + } } } @@ -685,41 +885,90 @@ const CiderAudio = { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { CiderAudio.analogWarmth_h2_3(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.analogWarmth[0]); - app.cfg.audio.normalization = true; - console.debug('[Cider][Audio] Equalizer, CAP, Analog Warmth, Maikiwi Spatial') + 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.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Equalizer, CAP, Analog Warmth, Spatial') + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Equalizer, CAP and Analog Warmth, Atmosphere Realizer') } } - else { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Equalizer, CAP and Analog Warmth') + + else { + + 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.analogWarmth[0]); + app.cfg.audio.normalization = true; + console.debug('[Cider][Audio] Equalizer, CAP, Analog Warmth, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Equalizer, CAP, Analog Warmth, Spatial') + } + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Equalizer, CAP and Analog Warmth') + } } } else { - 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.llpw[0]); - app.cfg.audio.normalization = true; - console.debug('[Cider][Audio] Equalizer, CAP, Maikiwi Spatial') + 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.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); - console.debug('[Cider][Audio] Equalizer, CAP, Spatial') + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Equalizer, CAP, Atmosphere Realizer') } } + else { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); - console.debug('[Cider][Audio] Equalizer, CAP') + 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.llpw[0]); + app.cfg.audio.normalization = true; + console.debug('[Cider][Audio] Equalizer, CAP, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); + console.debug('[Cider][Audio] Equalizer, CAP, Spatial') + } + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); + console.debug('[Cider][Audio] Equalizer, CAP') + } } } } // CAP ends here @@ -727,41 +976,89 @@ const CiderAudio = { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { CiderAudio.analogWarmth_h2_3(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.analogWarmth[0]); - app.cfg.audio.normalization = true; - console.debug('[Cider][Audio] Equalizer, Analog Warmth, Maikiwi Spatial') + 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.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Equalizer, Analog Warmth, Spatial') + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Equalizer, Analog Warmth, Atmosphere Realizer') } } - else { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Equalizer, Analog Warmth') + + else { + 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.analogWarmth[0]); + app.cfg.audio.normalization = true; + console.debug('[Cider][Audio] Equalizer, Analog Warmth, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Equalizer, Analog Warmth, Spatial') + } + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Equalizer, Analog Warmth') + } } } else { - 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.audioBands[0]); - app.cfg.audio.normalization = true; - console.debug('[Cider][Audio] Equalizer, Maikiwi Spatial') + 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.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.audioBands[0]); - console.debug('[Cider][Audio] Equalizer, Spatial') + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Equalizer, Atmosphere Realizer') } } - else { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]); - console.debug('[Cider][Audio] Equalizer') + + else { + 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.audioBands[0]); + app.cfg.audio.normalization = true; + console.debug('[Cider][Audio] Equalizer, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.audioBands[0]); + console.debug('[Cider][Audio] Equalizer, Spatial') + } + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]); + console.debug('[Cider][Audio] Equalizer') + } } } } @@ -777,45 +1074,96 @@ const CiderAudio = { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth CiderAudio.analogWarmth_h2_3(true, 3); - 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.analogWarmth[0]); - console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial') + 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 { // Vibrant Bass, CAP, Analog Warmth, Spatial + else { app.cfg.audio.normalization = true; - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Spatial') + 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; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial') + } + 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.analogWarmth[0]); + console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Spatial') + } + } + else { + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth') } - } - else { - app.cfg.audio.normalization = true; - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth') } } else { // if (app.cfg.audio.maikiwiAudio.analogWarmth) !== true - 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.llpw[0]); - app.cfg.audio.normalization = true - console.debug('[Cider][Audio] Vibrant Bass, CAP, Maikiwi Spatial') + 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 { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); - console.debug('[Cider][Audio] Vibrant Bass, CAP, Spatial') + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Vibrant Bass, CAP, Atmosphere Realizer') } } + else { - app.cfg.audio.normalization = true; - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); - console.debug('[Cider][Audio] Vibrant Bass, CAP') - } + 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.llpw[0]); + app.cfg.audio.normalization = true + console.debug('[Cider][Audio] Vibrant Bass, CAP, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); + console.debug('[Cider][Audio] Vibrant Bass, CAP, Spatial') + } + } + else { + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); + console.debug('[Cider][Audio] Vibrant Bass, CAP') + } + } } } else { @@ -823,42 +1171,92 @@ const CiderAudio = { CiderAudio.analogWarmth_h2_3(true, 2); app.cfg.audio.normalization = true; - 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.analogWarmth[0]); - console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Maikiwi Spatial') + 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 { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Spatial') + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Atmosphere Realizer') } } + else { - app.cfg.audio.normalization = true; - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth') + 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.analogWarmth[0]); + console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Spatial') + } + } + else { + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth') + } } + } else { - 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.vibrantbassNode[0]); - console.debug('[Cider][Audio] Vibrant Bass, Maikiwi Spatial') + 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 { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.vibrantbassNode[0]); - console.debug('[Cider][Audio] Vibrant Bass, Spatial') + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Vibrant Bass, Atmosphere Realizer') } } + else { - app.cfg.audio.normalization = true; - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); - console.debug('[Cider][Audio] Vibrant Bass') + 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.vibrantbassNode[0]); + console.debug('[Cider][Audio] Vibrant Bass, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.vibrantbassNode[0]); + console.debug('[Cider][Audio] Vibrant Bass, Spatial') + } + } + else { + app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); + console.debug('[Cider][Audio] Vibrant Bass') + } } } } @@ -871,41 +1269,89 @@ const CiderAudio = { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { CiderAudio.analogWarmth_h2_3(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.analogWarmth[0]); - app.cfg.audio.normalization = true; - console.debug('[Cider][Audio] CAP, Analog Warmth, Maikiwi Spatial') + 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.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] CAP, Analog Warmth, Spatial') + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] CAP and Analog Warmth, Atmosphere Realizer') } } + else { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] CAP and Analog Warmth') + 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.analogWarmth[0]); + app.cfg.audio.normalization = true; + console.debug('[Cider][Audio] CAP, Analog Warmth, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] CAP, Analog Warmth, Spatial') + } + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] CAP and Analog Warmth') + } } } else { - 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.llpw[0]); - app.cfg.audio.normalization = true; - console.debug('[Cider][Audio] CAP, Maikiwi Spatial') + 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.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); - console.debug('[Cider][Audio] CAP, Spatial') + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] CAP, Atmosphere Realizer') } } + else { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); - console.debug('[Cider][Audio] CAP') + 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.llpw[0]); + app.cfg.audio.normalization = true; + console.debug('[Cider][Audio] CAP, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); + console.debug('[Cider][Audio] CAP, Spatial') + } + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); + console.debug('[Cider][Audio] CAP') + } } } } // CAP ends here @@ -913,47 +1359,95 @@ const CiderAudio = { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { CiderAudio.analogWarmth_h2_3(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.analogWarmth[0]); - app.cfg.audio.normalization = true; - console.debug('[Cider][Audio] Analog Warmth, Maikiwi Spatial') + 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.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Analog Warmth, Spatial') + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Analog Warmt, Atmosphere Realizer') } } + else { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.debug('[Cider][Audio] Analog Warmth') - } + 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.analogWarmth[0]); + app.cfg.audio.normalization = true; + console.debug('[Cider][Audio] Analog Warmth, Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Analog Warmth, Spatial') + } + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.debug('[Cider][Audio] Analog Warmth') + } + } } else { - 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.context.destination); - app.cfg.audio.normalization = true; - console.debug('[Cider][Audio] Maikiwi Spatial') + 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.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.context.destination); - console.debug('[Cider][Audio] Spatial') + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); + console.debug('[Cider][Audio] Atmosphere Realizer') } } else { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination); - console.debug('[Cider][Audio] Literal Nothing') + 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.context.destination); + app.cfg.audio.normalization = true; + console.debug('[Cider][Audio] Maikiwi Spatial') + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.context.destination); + console.debug('[Cider][Audio] Spatial') + } + } + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination); + console.debug('[Cider][Audio] Literal Nothing') + } } } } } } CiderAudio.intelliGainComp_h0_0(); + CiderAudio.audioNodes.intelliGainComp.connect(CiderAudio.audioNodes.gainNode); console.debug("[Cider][Audio] Finished hierarchical loading"); }, diff --git a/src/renderer/audio/impulses/AtmosphereRealizer_Natural+.wav b/src/renderer/audio/impulses/AtmosphereRealizer_Natural+.wav new file mode 100644 index 00000000..59124e6c Binary files /dev/null and b/src/renderer/audio/impulses/AtmosphereRealizer_Natural+.wav differ diff --git a/src/renderer/audio/impulses/AtmosphereRealizer_NaturalHigh.wav b/src/renderer/audio/impulses/AtmosphereRealizer_NaturalHigh.wav new file mode 100644 index 00000000..a7076d76 Binary files /dev/null and b/src/renderer/audio/impulses/AtmosphereRealizer_NaturalHigh.wav differ diff --git a/src/renderer/audio/impulses/AtmosphereRealizer_NaturalStandard.wav b/src/renderer/audio/impulses/AtmosphereRealizer_NaturalStandard.wav new file mode 100644 index 00000000..6b336ae8 Binary files /dev/null and b/src/renderer/audio/impulses/AtmosphereRealizer_NaturalStandard.wav differ diff --git a/src/renderer/audio/impulses/CiderSpatial_v70.421_Maikiwi.wav b/src/renderer/audio/impulses/CiderSpatial_v70.421_Maikiwi.wav deleted file mode 100644 index 30f9c847..00000000 Binary files a/src/renderer/audio/impulses/CiderSpatial_v70.421_Maikiwi.wav and /dev/null differ diff --git a/src/renderer/audio/impulses/CiderSpatial_v72.420_Maikiwi.wav b/src/renderer/audio/impulses/CiderSpatial_v72.420_Maikiwi.wav new file mode 100644 index 00000000..fd623166 Binary files /dev/null and b/src/renderer/audio/impulses/CiderSpatial_v72.420_Maikiwi.wav differ diff --git a/src/renderer/main/vueapp.js b/src/renderer/main/vueapp.js index 191eb244..0736cb4f 100644 --- a/src/renderer/main/vueapp.js +++ b/src/renderer/main/vueapp.js @@ -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 } @@ -763,9 +763,10 @@ const app = new Vue({ ipcRenderer.on('SoundCheckTag', (event, tag) => { // let replaygain = self.parseSCTagToRG(tag) - try { - if (app.mk.nowPlayingItem.type !== 'song') { - CiderAudio.audioNodes.gainNode.gain.value = 0.70794578438;} + try { + if (app.mk.nowPlayingItem.type !== 'song') { + 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 @@ -2531,7 +2532,7 @@ const app = new Vue({ this.loadYTLyrics(); } else { // if (app.cfg.lyrics.enable_mxm) { - this.loadMXM(); + this.loadMXM(); // } else { // this.loadAMLyrics(); // } @@ -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) diff --git a/src/renderer/views/pages/audiolabs.ejs b/src/renderer/views/pages/audiolabs.ejs index 82594b29..6448dec7 100644 --- a/src/renderer/views/pages/audiolabs.ejs +++ b/src/renderer/views/pages/audiolabs.ejs @@ -1,271 +1,288 @@ - - - + + \ No newline at end of file