diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index 00d90c54..e6d542da 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -121,7 +121,11 @@ var CiderAudio = { let VIBRANTBASSBANDS = app.cfg.audio.vibrantBass.frequencies; let VIBRANTBASSGAIN = app.cfg.audio.vibrantBass.gain; let VIBRANTBASSQ = app.cfg.audio.vibrantBass.Q; - CiderAudio.audioNodes.audioBands = []; CiderAudio.audioNodes.vibrantbassNode = []; + LLPW_Q = [5, 1, 3.536, 1.25, 8.409, 1.25, 14.14, 7.071, 5, 0.625, 16.82, 20, 20, 20, 28.28, 28.28, 28.28, 20, 33.64, 33.64, 10, 28.28, 7.071, 3.856]; + LLPW_GAIN = [0.38, -1.81, -0.23, -0.51, 0.4, 0.84, 0.36, -0.34, 0.27, -1.2, -0.42, -0.67, 0.81, 1.31, -0.71, 0.68, -1.04, 0.79, -0.73, -1.33, 1.17, 0.57, 0.35, 6.33]; + LLPW_FREQUENCIES = [16.452, 24.636, 37.134, 74.483, 159.54, 308.18, 670.21, 915.81, 1200.7, 2766.4, 2930.6, 4050.6, 4409.1, 5395.2, 5901.6, 6455.5, 7164.1, 7724.1, 8449, 10573, 12368, 14198, 17910, 18916]; + CiderAudio.audioNodes.audioBands = []; CiderAudio.audioNodes.vibrantbassNode = []; + CiderAudio.audioNodes.llpw = []; for (i = 0; i < BANDS.length; i++) { CiderAudio.audioNodes.audioBands[i] = CiderAudio.context.createBiquadFilter(); @@ -130,7 +134,15 @@ var CiderAudio = { CiderAudio.audioNodes.audioBands[i].Q.value = Q[i]; CiderAudio.audioNodes.audioBands[i].gain.value = GAIN[i] * app.cfg.audio.equalizer.mix; } - + if (app.mk.nowPlayingItem != null && app.mk.nowPlayingItem['attributes']['lossless']) { + for (i = 0; i < LLPW_FREQUENCIES.length; i++) { + CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter(); + CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking'; + CiderAudio.audioNodes.llpw[i].frequency.value = LLPW_FREQUENCIES[i]; + CiderAudio.audioNodes.llpw[i].Q.value = LLPW_Q[i]; + CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i] * 0.5; + } + } CiderAudio.audioNodes.preampNode = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.preampNode.type = 'highshelf'; CiderAudio.audioNodes.preampNode.frequency.value = 0; // allow all @@ -153,7 +165,18 @@ var CiderAudio = { CiderAudio.audioNodes.gainNode.disconnect(CiderAudio.context.destination);} catch(e){} CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.preampNode); } - + if (app.mk.nowPlayingItem['attributes']['lossless']) { + console.log("LLPW RUNNING") + CiderAudio.audioNodes.llpw.connect(CiderAudio.audioNodes.preampNode[0]); + for (i = 1; i < LLPW_FREQUENCIES.length; i ++) { + CiderAudio.audioNodes.llpw[i-1].connect(CiderAudio.audioNodes.llpw[i]); + } + CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.preampNode[0]); + } + else { + console.log("LLPW DISABLED") + CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].disconnect(CiderAudio.audioNodes.preampNode[0]); + } CiderAudio.audioNodes.preampNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); for (i = 1; i < VIBRANTBASSBANDS.length; i ++) { diff --git a/src/renderer/index.js b/src/renderer/index.js index 9693438a..a4c43fc2 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -748,12 +748,13 @@ const app = new Vue({ } }) - ipcRenderer.on('play', function (_event, mode, id) { - if (mode !== 'url') { - self.mk.setQueue({[mode]: id}).then(() => { - app.mk.play() - }) - } else { + ipcRenderer.on('play', function(_event, mode, id) { + if (mode !== 'url'){ + self.mk.setQueue({[mode]: id}).then(() => { + app.mk.play() + }) + + } else { app.openAppleMusicURL(id) } }); @@ -775,7 +776,7 @@ const app = new Vue({ self.$refs.queue.updateQueue(); } this.currentSongInfo = a - + if (app.cfg.audio.normalization) { // get unencrypted audio previews to get SoundCheck's normalization tag @@ -799,6 +800,7 @@ const app = new Vue({ } catch (e) { } } + try { a = a.item.attributes; @@ -2302,7 +2304,7 @@ const app = new Vue({ showSearch() { this.page = "search" }, - loadLyrics() { + loadLyrics() { const musicType = (MusicKit.getInstance().nowPlayingItem != null) ? MusicKit.getInstance().nowPlayingItem["type"] ?? '' : ''; console.log("mt", musicType) if (musicType === "musicVideo") { @@ -2957,7 +2959,7 @@ const app = new Vue({ if (type.slice(-1) != "s") { type += "s" } - type = type.replace("library-", "") + type = type.replace("library-", "") let id = item.attributes.playParams.catalogId ?? item.id let index = types.findIndex(function (type) { diff --git a/src/renderer/views/main.ejs b/src/renderer/views/main.ejs index a4710132..cb23950d 100644 --- a/src/renderer/views/main.ejs +++ b/src/renderer/views/main.ejs @@ -37,8 +37,555 @@
{{ convertToMins(getSongProgress()) }}
+{{ convertToMins(mk.currentPlaybackDuration) }} +
+