From 1da04c3d41a2e5043e72ac11f62b42548d5347bd Mon Sep 17 00:00:00 2001 From: maikirakiwi Date: Sat, 9 Apr 2022 17:12:57 -0700 Subject: [PATCH 1/7] [Audio] Normalization switch rework --- src/renderer/audio/audio.js | 186 +++++++++++++++++--------- src/renderer/views/pages/settings.ejs | 3 +- 2 files changed, 128 insertions(+), 61 deletions(-) diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index 547f9b5a..586ce131 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -68,6 +68,25 @@ const CiderAudio = { CiderAudio.hierarchical_loading(); }, normalizerOn: function () { + try { + let previewURL = null + try { + previewURL = app.mk.nowPlayingItem.previewURL + } catch (e) { + } + if (previewURL == null && ((app.mk.nowPlayingItem?._songId ?? (app.mk.nowPlayingItem["songId"] ?? app.mk.nowPlayingItem.relationships.catalog.data[0].id)) != -1)) { + app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/songs/${app.mk.nowPlayingItem?._songId ?? (app.mk.nowPlayingItem["songId"] ?? app.mk.nowPlayingItem.relationships.catalog.data[0].id)}`).then((response) => { + previewURL = response.data.data[0].attributes.previews[0].url + if (previewURL) + ipcRenderer.send('getPreviewURL', previewURL) + }) + } else { + if (previewURL) + ipcRenderer.send('getPreviewURL', previewURL) + } + + } catch (e) { + } }, normalizerOff: function () { CiderAudio.audioNodes.gainNode.gain.setTargetAtTime(1, CiderAudio.context.currentTime + 1, 0.5); @@ -153,6 +172,7 @@ 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 (CiderAudio.audioNodes.analogWarmth !== null) {filters = filters.concat(CiderAudio.audioNodes.analogWarmth)} if (!filters || filters.length === 0) { let filterlessGain = 1; @@ -162,6 +182,9 @@ const CiderAudio = { let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) { return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile; }); + if (spatialProfile === undefined) { + spatialProfile = CiderAudio.spatialProfiles[0]; + } 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; @@ -204,6 +227,9 @@ const CiderAudio = { let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) { return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile; }); + if (spatialProfile === undefined) { + spatialProfile = CiderAudio.spatialProfiles[0]; + } 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; @@ -696,20 +722,20 @@ const CiderAudio = { 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; + 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; + 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; + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Atmosphere Realizer') } @@ -718,20 +744,20 @@ const CiderAudio = { 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; + 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; + 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; + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth') } @@ -743,19 +769,20 @@ const CiderAudio = { 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); - app.cfg.audio.normalization = true console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Maikiwi Spatial, Atmosphere Realizer') } else { + 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, Spatial, Atmosphere Realizer') } } else { - app.cfg.audio.normalization = true; + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Atmosphere Realizer') } @@ -763,19 +790,20 @@ const CiderAudio = { 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.llpw[0]); - app.cfg.audio.normalization = true console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Maikiwi Spatial') } else { + app.cfg.audio.normalization = true 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; + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP') } @@ -785,25 +813,26 @@ const CiderAudio = { else { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { CiderAudio.analogWarmth_h2_3(true, 2); - app.cfg.audio.normalization = true; if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) { CiderAudio.atmosphereRealizer_h2_4(true, 4) if (app.cfg.audio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) { + 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, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer') } else { + 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, Analog Warmth, Spatial, Atmosphere Realizer') } } else { - app.cfg.audio.normalization = true; + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Atmosphere Realizer') } @@ -812,18 +841,19 @@ const CiderAudio = { 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.analogWarmth[0]); console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Maikiwi 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, 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') } @@ -835,19 +865,20 @@ const CiderAudio = { if (app.cfg.audio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) { - app.cfg.audio.normalization = 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 { + 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, Spatial, Atmosphere Realizer') } } else { - app.cfg.audio.normalization = true; + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Atmosphere Realizer') } @@ -856,19 +887,19 @@ const CiderAudio = { else { if (app.cfg.audio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) { - app.cfg.audio.normalization = 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 { + app.cfg.audio.normalization = true 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; + else { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); console.debug('[Cider][Audio] Equalizer, Vibrant Bass') } @@ -890,18 +921,20 @@ const CiderAudio = { 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); - app.cfg.audio.normalization = true; console.debug('[Cider][Audio] Equalizer, CAP, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer') } else { + 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, CAP, Analog Warmth, Spatial, Atmosphere Realizer') } } else { + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Equalizer, CAP and Analog Warmth, Atmosphere Realizer') } @@ -911,18 +944,20 @@ const CiderAudio = { 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.analogWarmth[0]); - app.cfg.audio.normalization = true; + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); console.debug('[Cider][Audio] Equalizer, CAP, Analog Warmth, Maikiwi 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, CAP, Analog Warmth, Spatial') } } else { + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); console.debug('[Cider][Audio] Equalizer, CAP and Analog Warmth') } @@ -934,18 +969,20 @@ const CiderAudio = { 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); - app.cfg.audio.normalization = true; + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Equalizer, CAP, Maikiwi Spatial, Atmosphere Realizer') } else { + 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, CAP, Spatial, Atmosphere Realizer') } } else { + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Equalizer, CAP, Atmosphere Realizer') } @@ -954,18 +991,20 @@ const CiderAudio = { 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.llpw[0]); - app.cfg.audio.normalization = true; console.debug('[Cider][Audio] Equalizer, CAP, Maikiwi Spatial') } else { + app.cfg.audio.normalization = true 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 { + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); console.debug('[Cider][Audio] Equalizer, CAP') } @@ -981,18 +1020,20 @@ const CiderAudio = { 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); - app.cfg.audio.normalization = true; console.debug('[Cider][Audio] Equalizer, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer') } else { + 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, Analog Warmth, Spatial, Atmosphere Realizer') } } else { + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Equalizer, Analog Warmth, Atmosphere Realizer') } @@ -1001,12 +1042,13 @@ const CiderAudio = { 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.analogWarmth[0]); - app.cfg.audio.normalization = true; console.debug('[Cider][Audio] Equalizer, Analog Warmth, Maikiwi 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, Analog Warmth, Spatial') @@ -1024,18 +1066,20 @@ const CiderAudio = { 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); - app.cfg.audio.normalization = true; console.debug('[Cider][Audio] Equalizer, Maikiwi Spatial, Atmosphere Realizer') } else { + 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, Spatial, Atmosphere Realizer') } } else { + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Equalizer, Atmosphere Realizer') } @@ -1044,19 +1088,20 @@ const CiderAudio = { 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.audioBands[0]); - app.cfg.audio.normalization = true; console.debug('[Cider][Audio] Equalizer, Maikiwi Spatial') } else { + app.cfg.audio.normalization = true 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]); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]); console.debug('[Cider][Audio] Equalizer') } } @@ -1079,21 +1124,21 @@ const CiderAudio = { 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; + 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; + 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); + app.cfg.audio.normalization = true + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Atmosphere Realizer') } @@ -1101,21 +1146,21 @@ const CiderAudio = { 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; + 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; + 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]); + app.cfg.audio.normalization = true + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth') } } @@ -1126,19 +1171,20 @@ const CiderAudio = { 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 + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Vibrant Bass, CAP, Maikiwi Spatial, Atmosphere Realizer') } else { + 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, Spatial, Atmosphere Realizer') } } else { - app.cfg.audio.normalization = true; + app.cfg.audio.normalization = true CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Vibrant Bass, CAP, Atmosphere Realizer') } @@ -1147,12 +1193,13 @@ const CiderAudio = { 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 + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]); console.debug('[Cider][Audio] Vibrant Bass, CAP, Maikiwi Spatial') } else { + app.cfg.audio.normalization = true; 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') @@ -1169,18 +1216,19 @@ const CiderAudio = { else { if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { CiderAudio.analogWarmth_h2_3(true, 2); - app.cfg.audio.normalization = true; if (app.cfg.audio.maikiwiAudio.atmosphereRealizer === true) { CiderAudio.atmosphereRealizer_h2_4(true, 4); if (app.cfg.audio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) { + 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, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer') } else { + 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, Analog Warmth, Spatial, Atmosphere Realizer') @@ -1196,11 +1244,13 @@ const CiderAudio = { 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.analogWarmth[0]); console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Maikiwi 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, Analog Warmth, Spatial') @@ -1226,6 +1276,7 @@ const CiderAudio = { console.debug('[Cider][Audio] Vibrant Bass, Maikiwi Spatial, Atmosphere Realizer') } else { + 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, Spatial, Atmosphere Realizer') @@ -1247,13 +1298,13 @@ const CiderAudio = { console.debug('[Cider][Audio] Vibrant Bass, Maikiwi Spatial') } else { + app.cfg.audio.normalization = true; 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') } @@ -1274,18 +1325,20 @@ const CiderAudio = { 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; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] CAP, Analog Warmth, Maikiwi Spatial, Atmosphere Realizer') } else { + 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] CAP, Analog Warmth, Spatial, Atmosphere Realizer') } } else { + app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] CAP and Analog Warmth, Atmosphere Realizer') } @@ -1294,18 +1347,20 @@ const CiderAudio = { 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; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); console.debug('[Cider][Audio] CAP, Analog Warmth, Maikiwi 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] CAP, Analog Warmth, Spatial') } } else { + app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); console.debug('[Cider][Audio] CAP and Analog Warmth') } @@ -1317,18 +1372,20 @@ const CiderAudio = { 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; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] CAP, Maikiwi Spatial, Atmosphere Realizer') } else { + 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] CAP, Spatial, Atmosphere Realizer') } } else { + app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] CAP, Atmosphere Realizer') } @@ -1337,18 +1394,20 @@ const CiderAudio = { 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; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]); console.debug('[Cider][Audio] CAP, Maikiwi Spatial') } else { + app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); console.debug('[Cider][Audio] CAP, Spatial') } } else { + app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); console.debug('[Cider][Audio] CAP') } @@ -1364,38 +1423,42 @@ const CiderAudio = { 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); - app.cfg.audio.normalization = true; console.debug('[Cider][Audio] Analog Warmth, Maikiwi Spatial, Atmosphere Realizer') } else { + 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] Analog Warmth, Spatial, Atmosphere Realizer') } } else { + app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); - console.debug('[Cider][Audio] Analog Warmt, Atmosphere Realizer') + console.debug('[Cider][Audio] Analog Warmth, Atmosphere Realizer') } } else { if (app.cfg.audio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); - CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); app.cfg.audio.normalization = true; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); console.debug('[Cider][Audio] Analog Warmth, Maikiwi 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] Analog Warmth, Spatial') } } else { + app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); console.debug('[Cider][Audio] Analog Warmth') } @@ -1407,18 +1470,20 @@ const CiderAudio = { 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; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Maikiwi Spatial, Atmosphere Realizer') } else { + 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] Spatial, Atmosphere Realizer') } } else { + app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer); console.debug('[Cider][Audio] Atmosphere Realizer') } @@ -1426,12 +1491,13 @@ const CiderAudio = { 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; + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.context.destination); console.debug('[Cider][Audio] Maikiwi Spatial') } else { + app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.context.destination); console.debug('[Cider][Audio] Spatial') diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index 6b141f31..9a8c4d02 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -204,7 +204,8 @@ {{app.cfg.audio.equalizer.vibrantBass != 0 || app.cfg.audio.maikiwiAudio.spatial === true || app.cfg.audio.maikiwiAudio.ciderPPE === true ? `${$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioNormalization.description')}\n${$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled')}` : $root.getLz('settings.option.audio.enableAdvancedFunctionality.audioNormalization.description')}}
- +
From d61f5017d465834e97b5124330d920d622662d6f Mon Sep 17 00:00:00 2001 From: maikirakiwi Date: Sat, 9 Apr 2022 17:19:46 -0700 Subject: [PATCH 2/7] [Audio] Speed up EQ preset loading --- src/renderer/views/components/equalizer.ejs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/renderer/views/components/equalizer.ejs b/src/renderer/views/components/equalizer.ejs index 827f3ef7..e7ae2d2a 100644 --- a/src/renderer/views/components/equalizer.ejs +++ b/src/renderer/views/components/equalizer.ejs @@ -403,10 +403,16 @@ Object.assign(this.$root.cfg.audio.equalizer, preset) this.changeVibrantBass() for (var i = 0; i < 10; i++) { - this.changeGain(i) - this.changeFreq(i) - this.changeQ(i) + try {CiderAudio.audioNodes.audioBands[i].gain.value = app.cfg.audio.equalizer.gain[i] * app.cfg.audio.equalizer.mix} + catch(e){ + CiderAudio.hierarchical_loading(); + CiderAudio.audioNodes.audioBands[i].gain.value = app.cfg.audio.equalizer.gain[i] * app.cfg.audio.equalizer.mix + } + + CiderAudio.audioNodes.audioBands[i].frequency.value = app.cfg.audio.equalizer.frequencies[i] + CiderAudio.audioNodes.audioBands[i].Q.value = app.cfg.audio.equalizer.Q[i] } + CiderAudio.intelliGainComp_h0_0(); }, changePreset(id) { let userPresets = app.cfg.audio.equalizer.presets From 3f7e241dd24af78640f16bd42e0fa60b9a9bf522 Mon Sep 17 00:00:00 2001 From: maikirakiwi Date: Sat, 9 Apr 2022 17:20:01 -0700 Subject: [PATCH 3/7] [Audio] Added IntelliGain for AW --- src/renderer/views/pages/audiolabs.ejs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/renderer/views/pages/audiolabs.ejs b/src/renderer/views/pages/audiolabs.ejs index 6448dec7..4a8aa644 100644 --- a/src/renderer/views/pages/audiolabs.ejs +++ b/src/renderer/views/pages/audiolabs.ejs @@ -268,17 +268,20 @@ for (let i = 0; i < 23; i++) { CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.25; } + CiderAudio.intelliGainComp_h0_0(); break; case "WARM": for (let i = 0; i < 23; i++) { CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.75; } + CiderAudio.intelliGainComp_h0_0(); 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; } + CiderAudio.intelliGainComp_h0_0(); break; } From 4aab68798fc7623cc954cc66cfbcba6d0f9522dd Mon Sep 17 00:00:00 2001 From: maikirakiwi Date: Sat, 9 Apr 2022 17:31:47 -0700 Subject: [PATCH 4/7] [Audio] Seamless Auto Gain --- src/renderer/audio/audio.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index 586ce131..78ff5fef 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -89,7 +89,7 @@ const CiderAudio = { } }, normalizerOff: function () { - CiderAudio.audioNodes.gainNode.gain.setTargetAtTime(1, CiderAudio.context.currentTime + 1, 0.5); + CiderAudio.audioNodes.gainNode.gain.exponentialRampToValueAtTime(1.0, CiderAudio.context.currentTime + 0.5); }, spatialProfiles: [ { @@ -187,7 +187,7 @@ const CiderAudio = { } 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; + filterlessGain > 1.0 ? CiderAudio.audioNodes.intelliGainComp.gain.exponentialRampToValueAtTime(1.0, CiderAudio.context.currentTime + 0.3) : CiderAudio.audioNodes.intelliGainComp.gain.exponentialRampToValueAtTime(filterlessGain, CiderAudio.context.currentTime + 0.3); console.debug(`[Cider][Audio] IntelliGainComp: ${filterlessGain > 1.0 ? 0 : (20 * Math.log10(filterlessGain)).toFixed(2)} dB (${filterlessGain > 1.0 ? 1 : filterlessGain})`) return; } @@ -232,7 +232,7 @@ const CiderAudio = { } 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; + maxGain > 1.0 ? CiderAudio.audioNodes.intelliGainComp.gain.exponentialRampToValueAtTime(1.0, CiderAudio.context.currentTime + 0.3) : CiderAudio.audioNodes.intelliGainComp.gain.exponentialRampToValueAtTime(maxGain, CiderAudio.context.currentTime + 0.3); console.debug(`[Cider][Audio] IntelliGainComp: ${maxGain > 1.0 ? 0 : (20 * Math.log10(maxGain)).toFixed(2)} dB (${maxGain > 1.0 ? 1 : maxGain})`); }, sendAudio: function () { @@ -691,7 +691,6 @@ const CiderAudio = { hierarchical_unloading: function () { try { CiderAudio.audioNodes.spatialNode.output.disconnect(); } catch (e) { } 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) { } @@ -1513,7 +1512,6 @@ const CiderAudio = { } } CiderAudio.intelliGainComp_h0_0(); - CiderAudio.audioNodes.intelliGainComp.connect(CiderAudio.audioNodes.gainNode); console.debug("[Cider][Audio] Finished hierarchical loading"); }, From 2be877179d1193012c025614154f9115a4d69dce Mon Sep 17 00:00:00 2001 From: yazninja Date: Sun, 10 Apr 2022 11:13:27 +0800 Subject: [PATCH 5/7] make usermenu follow window controls --- src/renderer/less/macosemu.less | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/renderer/less/macosemu.less b/src/renderer/less/macosemu.less index d1b95e90..02688a48 100644 --- a/src/renderer/less/macosemu.less +++ b/src/renderer/less/macosemu.less @@ -42,4 +42,8 @@ } } } + .usermenu-body{ + left: calc(100vw - 260px); + position: relative; + } } \ No newline at end of file From 2edbc243d056899aa23c4dfa5765659d112fcecb Mon Sep 17 00:00:00 2001 From: booploops <49113086+booploops@users.noreply.github.com> Date: Sun, 10 Apr 2022 00:23:35 -0700 Subject: [PATCH 6/7] added caching for mica effect, improving startup time --- src/main/base/browserwindow.ts | 5 ++++- src/renderer/main/mica.js | 34 +++++++++++++++++++++++++++------- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index 492bf4a4..f3308f78 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -622,7 +622,10 @@ export class BrowserWindow { const wpBase64: string = await readFileSync(wpPath, 'base64') // add the data:image properties const wpData: string = `data:image/png;base64,${wpBase64}` - event.returnValue = wpData; + event.returnValue = { + path: wpPath, + data: wpData + }; }) ipcMain.handle("reinstall-widevine-cdm", () => { diff --git a/src/renderer/main/mica.js b/src/renderer/main/mica.js index a27161f7..189c9cee 100644 --- a/src/renderer/main/mica.js +++ b/src/renderer/main/mica.js @@ -1,7 +1,9 @@ +import { CiderCache } from "./cidercache.js" + async function spawnMica() { - if(typeof window.micaSpawned !== "undefined") { + if (typeof window.micaSpawned !== "undefined") { return - }else{ + } else { window.micaSpawned = true } const micaDiv = document.createElement('div'); @@ -19,20 +21,38 @@ async function spawnMica() { let lastScreenWidth; let lastScreenHeight; + let regen = true let imgSrc = await ipcRenderer.sendSync("get-wallpaper") + + let micaCache = await CiderCache.getCache("mica-cache") + if (!micaCache) { + micaCache = { + path: "", + data: "" + } + } + if (micaCache.path == imgSrc.path) { + regen = false + imgSrc = micaCache + } let canvas = document.createElement('canvas'); let ctx = canvas.getContext('2d'); let img = new Image(); - img.src = imgSrc; + img.src = imgSrc.data; img.onload = function () { canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); - for (let i = 0; i < blurIterations; i++) { - StackBlur.canvasRGB(canvas, 0, 0, img.width, img.height, 128); + if (regen) { + for (let i = 0; i < blurIterations; i++) { + StackBlur.canvasRGB(canvas, 0, 0, img.width, img.height, 128); + } + micaCache.path = imgSrc.path + micaCache.data = canvas.toDataURL() + CiderCache.putCache("mica-cache", micaCache) } let imgData = ctx.getImageData(0, 0, canvas.width, canvas.height); - micaDiv.style.backgroundImage = `url(${canvas.toDataURL()})`; + micaDiv.style.backgroundImage = `url(${micaCache.data})`; document.body.appendChild(micaDiv); // on animation finished set animation to unset micaDiv.addEventListener('animationend', function () { @@ -84,4 +104,4 @@ async function spawnMica() { return true } -export {spawnMica} \ No newline at end of file +export { spawnMica } \ No newline at end of file From d7132cfe8e9e1b079065db952ef1cb65256c890b Mon Sep 17 00:00:00 2001 From: booploops <49113086+booploops@users.noreply.github.com> Date: Sun, 10 Apr 2022 00:34:22 -0700 Subject: [PATCH 7/7] added UI Scale option under visual --- src/i18n/en_US.json | 1 + src/i18n/source/en_US.json | 1 + src/main/base/store.ts | 3 ++- src/renderer/main/vueapp.js | 7 +++++-- src/renderer/views/main.ejs | 2 +- src/renderer/views/pages/settings.ejs | 8 ++++++++ 6 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index 455a926e..1b71dabe 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -348,6 +348,7 @@ "settings.option.visual.hardwareAcceleration.description": "Requires relaunch", "settings.header.visual.hardwareAcceleration.default": "Default", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", + "settings.option.visual.uiscale": "UI Scale", "settings.header.visual.theme": "Theme", "settings.option.visual.theme.github.download": "Install from GitHub URL", "settings.option.visual.theme.github.explore": "Explore GitHub Themes", diff --git a/src/i18n/source/en_US.json b/src/i18n/source/en_US.json index 455a926e..1b71dabe 100644 --- a/src/i18n/source/en_US.json +++ b/src/i18n/source/en_US.json @@ -348,6 +348,7 @@ "settings.option.visual.hardwareAcceleration.description": "Requires relaunch", "settings.header.visual.hardwareAcceleration.default": "Default", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", + "settings.option.visual.uiscale": "UI Scale", "settings.header.visual.theme": "Theme", "settings.option.visual.theme.github.download": "Install from GitHub URL", "settings.option.visual.theme.github.explore": "Explore GitHub Themes", diff --git a/src/main/base/store.ts b/src/main/base/store.ts index fc96d5dd..6d59627f 100644 --- a/src/main/base/store.ts +++ b/src/main/base/store.ts @@ -129,7 +129,8 @@ export class Store { "windowLayout": "default" }, "windowControlPosition": 0, // 0 default right - "nativeTitleBar": false + "nativeTitleBar": false, + "uiScale": 1.0 }, "lyrics": { "enable_mxm": false, diff --git a/src/renderer/main/vueapp.js b/src/renderer/main/vueapp.js index 0736cb4f..1cb68db9 100644 --- a/src/renderer/main/vueapp.js +++ b/src/renderer/main/vueapp.js @@ -465,8 +465,11 @@ const app = new Vue({ history.forward() }, getHTMLStyle() { - // document.querySelector("html").style.background = "#222"; - document.querySelector("body").classList.add("notransparency") + if(app.cfg.visual.uiScale != 1) { + document.querySelector("#app").style.zoom = app.cfg.visual.uiScale + }else{ + document.querySelector("#app").style.zoom = "" + } }, resetState() { this.menuPanel.visible = false; diff --git a/src/renderer/views/main.ejs b/src/renderer/views/main.ejs index 59c221eb..15f02bf9 100644 --- a/src/renderer/views/main.ejs +++ b/src/renderer/views/main.ejs @@ -61,7 +61,7 @@ - +
<%- include("../assets/cider-round.svg") %>
diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index 9a8c4d02..a21bee83 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -310,6 +310,14 @@ +
+
+ {{$root.getLz('settings.option.visual.uiscale')}} +
+
+ +
+
{{$root.getLz('settings.option.visual.hardwareAcceleration')}}