Merge branch 'ciderapp:develop' into develop
This commit is contained in:
commit
140204ac0d
16 changed files with 13648 additions and 411 deletions
|
@ -39,6 +39,7 @@
|
|||
"@sentry/electron": "^3.0.2",
|
||||
"@sentry/integrations": "^6.18.1",
|
||||
"adm-zip": "0.4.10",
|
||||
|
||||
"castv2-client": "^1.2.0",
|
||||
"chokidar": "^3.5.3",
|
||||
"discord-rpc": "^4.0.1",
|
||||
|
@ -48,7 +49,7 @@
|
|||
"electron-notarize": "^1.1.1",
|
||||
"electron-store": "^8.0.1",
|
||||
"electron-updater": "^4.6.5",
|
||||
"electron-vibrancy-updated": "git+https://github.com/ciderapp/electron-vibrancy-updated",
|
||||
|
||||
"electron-window-state": "^5.0.3",
|
||||
"express": "^4.17.3",
|
||||
"get-port": "^5.1.1",
|
||||
|
@ -76,7 +77,7 @@
|
|||
"@types/express": "^4.17.13",
|
||||
"@types/qrcode-terminal": "^0.12.0",
|
||||
"@types/ws": "^8.5.1",
|
||||
"electron": "git+https://github.com/castlabs/electron-releases.git#16-x-y",
|
||||
"electron": "git+https://github.com/castlabs/electron-releases.git",
|
||||
"electron-builder": "^22.14.13",
|
||||
"electron-builder-notarize-pkg": "^1.2.0",
|
||||
"electron-webpack": "^2.8.2",
|
||||
|
@ -108,9 +109,9 @@
|
|||
}
|
||||
],
|
||||
"build": {
|
||||
"electronVersion": "16.0.7",
|
||||
"electronVersion": "17.1.0",
|
||||
"electronDownload": {
|
||||
"version": "16.0.7+wvcus",
|
||||
"version": "18.0.0-alpha.5+wvcus",
|
||||
"mirror": "https://github.com/castlabs/electron-releases/releases/download/v"
|
||||
},
|
||||
"appId": "cider",
|
||||
|
|
Binary file not shown.
|
@ -60,6 +60,7 @@ export class BrowserWindow {
|
|||
"pages/replay",
|
||||
"pages/audiolabs",
|
||||
"pages/zoo",
|
||||
"pages/plugin-renderer",
|
||||
"components/mediaitem-artwork",
|
||||
"components/artwork-material",
|
||||
"components/menu-panel",
|
||||
|
@ -90,8 +91,14 @@ export class BrowserWindow {
|
|||
"components/miniplayer",
|
||||
"components/castmenu",
|
||||
"components/artist-chip",
|
||||
"components/hello-world",
|
||||
],
|
||||
appRoutes: [
|
||||
{
|
||||
page: "plugin-renderer",
|
||||
component: `<plugin-renderer></plugin-renderer>`,
|
||||
condition: "page == 'plugin-renderer'"
|
||||
},
|
||||
{
|
||||
page: "zoo",
|
||||
component: "<cider-zoo></cider-zoo>",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require('v8-compile-cache');
|
||||
|
||||
import {app, components, ipcMain} from 'electron';
|
||||
const {app, components, ipcMain} = require('electron');
|
||||
import {join} from 'path';
|
||||
|
||||
if (!app.isPackaged) {
|
||||
|
@ -41,8 +41,7 @@ app.on('ready', () => {
|
|||
require('vue-devtools').install()
|
||||
}
|
||||
|
||||
app.whenReady().then(async () => {
|
||||
await components.whenReady();
|
||||
components.whenReady().then(async () => {
|
||||
const bw = new BrowserWindow()
|
||||
const win = await bw.createWindow()
|
||||
|
||||
|
@ -51,11 +50,11 @@ app.on('ready', () => {
|
|||
})
|
||||
|
||||
console.log('[Cider][Widevine] Status:', components.status());
|
||||
win.show();
|
||||
|
||||
win.on("ready-to-show", () => {
|
||||
Cider.bwCreated();
|
||||
CiderPlug.callPlugins('onReady', win);
|
||||
win.show();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -438,238 +438,190 @@ const CiderAudio = {
|
|||
},
|
||||
hierarchical_loading: function (){
|
||||
CiderAudio.hierarchical_unloading();
|
||||
|
||||
// Vibrant Bass, CAP, Analog Warmth, Spatial
|
||||
if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier !== 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === true &&
|
||||
app.cfg.audio.spatial === true &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
|
||||
|
||||
if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier !== 0) { // Vibrant Bass
|
||||
CiderAudio.vibrantbass_h2_1(true)
|
||||
CiderAudio.llpw_h2_2(true, 2);
|
||||
CiderAudio.analogWarmth_h2_3(true, 3);
|
||||
|
||||
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] Vibrant Bass, 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] Vibrant Bass, CAP, Analog Warmth, Spatial')
|
||||
}
|
||||
if (app.cfg.audio.maikiwiAudio.ciderPPE === true) { // Vibrant Bass, CAP
|
||||
CiderAudio.llpw_h2_2(true, 2);
|
||||
|
||||
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth
|
||||
CiderAudio.analogWarmth_h2_3(true, 3);
|
||||
|
||||
}
|
||||
// CAP, Analog Warmth, Spatial
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier === 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === true &&
|
||||
app.cfg.audio.spatial === true &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
|
||||
CiderAudio.llpw_h2_2(true, 1);
|
||||
CiderAudio.analogWarmth_h2_3(true, 3);
|
||||
|
||||
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')
|
||||
}
|
||||
}
|
||||
// Vibrant Bass, CAP, Spatial
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier !== 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === true &&
|
||||
app.cfg.audio.spatial === true &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === false) {
|
||||
|
||||
CiderAudio.vibrantbass_h2_1(true)
|
||||
CiderAudio.llpw_h2_2(true, 2);
|
||||
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')
|
||||
}
|
||||
|
||||
}
|
||||
// Vibrant Bass, CAP, Analog Warmth
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier !== 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === true &&
|
||||
app.cfg.audio.spatial === false &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
|
||||
CiderAudio.vibrantbass_h2_1(true)
|
||||
CiderAudio.llpw_h2_2(true, 2);
|
||||
CiderAudio.analogWarmth_h2_3(true, 3);
|
||||
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth')
|
||||
}
|
||||
// CAP, Spatial
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier === 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === true &&
|
||||
app.cfg.audio.spatial === true &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === false) {
|
||||
|
||||
CiderAudio.llpw_h2_2(true, 1);
|
||||
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')
|
||||
}
|
||||
}
|
||||
// Analog Warmth, Spatial
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier === 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === false &&
|
||||
app.cfg.audio.spatial === true &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
|
||||
CiderAudio.analogWarmth_h2_3(true, 1);
|
||||
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')
|
||||
}
|
||||
}
|
||||
// CAP, Analog Warmth
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier === 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === true &&
|
||||
app.cfg.audio.spatial === false &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
|
||||
CiderAudio.llpw_h2_2(true, 1);
|
||||
CiderAudio.analogWarmth_h2_3(true, 3);
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] CAP and Analog Warmth')
|
||||
}
|
||||
// Vibrant Bass, Analog Warmth
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier !== 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === false &&
|
||||
app.cfg.audio.spatial === false &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
|
||||
CiderAudio.vibrantbass_h2_1(true)
|
||||
CiderAudio.analogWarmth_h2_3(true, 2);
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth')
|
||||
}
|
||||
|
||||
// Vibrant Bass, CAP
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier !== 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === true &&
|
||||
app.cfg.audio.spatial === false &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === false) {
|
||||
|
||||
CiderAudio.vibrantbass_h2_1(true)
|
||||
CiderAudio.llpw_h2_2(true, 2);
|
||||
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]);
|
||||
console.debug('[Cider][Audio] Vibrant Bass, CAP')
|
||||
}
|
||||
// Vibrant Bass, Spatial
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier !== 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === false &&
|
||||
app.cfg.audio.spatial === true &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === false) {
|
||||
|
||||
CiderAudio.vibrantbass_h2_1(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')
|
||||
}
|
||||
|
||||
}
|
||||
// Vibrant Bass
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier !== 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === false &&
|
||||
app.cfg.audio.spatial === false &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === false) {
|
||||
|
||||
CiderAudio.vibrantbass_h2_1(true)
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
console.debug('[Cider][Audio] Vibrant Bass')
|
||||
|
||||
}
|
||||
// CAP
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier === 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === true &&
|
||||
app.cfg.audio.spatial === false &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === false) {
|
||||
CiderAudio.llpw_h2_2(true, 1);
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]);
|
||||
console.debug('[Cider][Audio] CAP')
|
||||
}
|
||||
// Analog Warmth
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier === 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === false &&
|
||||
app.cfg.audio.spatial === false &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
CiderAudio.analogWarmth_h2_3(true, 1);
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Analog Warmth')
|
||||
}
|
||||
// Spatial
|
||||
else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier === 0 &&
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE === false &&
|
||||
app.cfg.audio.spatial === true &&
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth === false){
|
||||
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]);
|
||||
console.debug('[Cider][Audio] Maikiwi Spatial')
|
||||
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 {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
|
||||
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.audioBands[0]);
|
||||
console.debug('[Cider][Audio] Spatial')
|
||||
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 {
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
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')
|
||||
}
|
||||
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')
|
||||
}
|
||||
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')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Nothing
|
||||
else {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]);
|
||||
console.debug('[Cider][Audio] Nothing') // If CAP & vibrant bass is disabled
|
||||
// Vibrant Bass ends here
|
||||
else {
|
||||
if (app.cfg.audio.maikiwiAudio.ciderPPE === true) {
|
||||
CiderAudio.llpw_h2_2(true, 1);
|
||||
|
||||
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')
|
||||
}
|
||||
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')
|
||||
}
|
||||
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
|
||||
else {
|
||||
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] 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.audioNodes.audioBands[0]);
|
||||
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.audioNodes.audioBands[0]);
|
||||
console.debug('[Cider][Audio] Spatial')
|
||||
}
|
||||
}
|
||||
else {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]);
|
||||
console.debug('[Cider][Audio] Direct Mode to Equalizer')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.debug("[Cider][Audio] Finished hierarchical loading");
|
||||
|
|
|
@ -1,17 +1,32 @@
|
|||
const MusicKitTools = {
|
||||
async v3Continuous (href, options = {}, reqOptions = {}) {
|
||||
async v3Continuous ({
|
||||
href,
|
||||
options = {},
|
||||
reqOptions = {},
|
||||
onProgress = () => {},
|
||||
onError = () => {},
|
||||
onSuccess = () => {}
|
||||
} = {}) {
|
||||
let returnData = []
|
||||
async function sendReq(href, options) {
|
||||
const response = await app.mk.api.v3.music(href, options)
|
||||
const response = await app.mk.api.v3.music(href, options).catch(error => onError)
|
||||
|
||||
returnData = returnData.concat(response.data.data)
|
||||
if(response.data.next) {
|
||||
await sendReq(response.data.next, options)
|
||||
onProgress({
|
||||
response: response,
|
||||
total: returnData.length
|
||||
})
|
||||
try {
|
||||
await sendReq(response.data.next, options)
|
||||
}catch(e){
|
||||
await sendReq(response.data.next, options)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await sendReq(href, options)
|
||||
|
||||
onSuccess(returnData)
|
||||
return returnData
|
||||
},
|
||||
getHeader() {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import {store} from './vuex-store.js';
|
||||
import { store } from './vuex-store.js';
|
||||
|
||||
Vue.use(VueHorizontal);
|
||||
Vue.use(VueObserveVisibility);
|
||||
|
@ -217,7 +217,11 @@ const app = new Vue({
|
|||
}
|
||||
},
|
||||
pauseButtonTimer: null,
|
||||
activeCasts: []
|
||||
activeCasts: [],
|
||||
pluginPages: {
|
||||
page: "hello-world",
|
||||
pages: [],
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
cfg: {
|
||||
|
@ -542,13 +546,13 @@ const app = new Vue({
|
|||
this.modals.addToPlaylist = false
|
||||
await app.mk.api.v3.music(
|
||||
`/v1/me/library/playlists/${playlist_id}/tracks`, {}, {
|
||||
fetchOptions: {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
data: pl_items
|
||||
})
|
||||
}
|
||||
fetchOptions: {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
data: pl_items
|
||||
})
|
||||
}
|
||||
}
|
||||
).then(() => {
|
||||
if (this.page == 'playlist_' + this.showingPlaylist.id) {
|
||||
this.getPlaylistFromID(this.showingPlaylist.id, true)
|
||||
|
@ -560,7 +564,7 @@ const app = new Vue({
|
|||
if (this.cfg.visual.theme != "default.less" && this.cfg.visual.theme != "") {
|
||||
this.setTheme(this.cfg.visual.theme)
|
||||
}
|
||||
|
||||
|
||||
this.setLz(this.cfg.general.language)
|
||||
this.setLzManual()
|
||||
clearTimeout(this.hangtimer)
|
||||
|
@ -1017,7 +1021,7 @@ const app = new Vue({
|
|||
console.log("playlist has no cache")
|
||||
}
|
||||
|
||||
if(cachedTrackMapping) {
|
||||
if (cachedTrackMapping) {
|
||||
console.log("using cached track mapping")
|
||||
this.playlists.trackMapping = cachedTrackMapping
|
||||
}
|
||||
|
@ -1033,7 +1037,7 @@ const app = new Vue({
|
|||
const playlistData = await app.mk.api.v3.music(`/v1/me/library/playlist-folders/${parent}/children/`)
|
||||
await asyncForEach(playlistData.data.data, async (playlist) => {
|
||||
playlist.parent = parent
|
||||
if(
|
||||
if (
|
||||
playlist.type != "library-playlist-folders" &&
|
||||
typeof playlist.attributes.playParams["versionHash"] != "undefined"
|
||||
) {
|
||||
|
@ -1103,12 +1107,12 @@ const app = new Vue({
|
|||
this.newPlaylist()
|
||||
}
|
||||
},
|
||||
{
|
||||
name: app.getLz('term.createNewPlaylistFolder'),
|
||||
action: () => {
|
||||
this.newPlaylistFolder()
|
||||
}
|
||||
{
|
||||
name: app.getLz('term.createNewPlaylistFolder'),
|
||||
action: () => {
|
||||
this.newPlaylistFolder()
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
this.showMenuPanel(menu, event)
|
||||
|
@ -1117,13 +1121,13 @@ const app = new Vue({
|
|||
let self = this
|
||||
this.mk.api.v3.music(
|
||||
`/v1/me/library/playlist-folders/${id}`, {}, {
|
||||
fetchOptions: {
|
||||
method: "PATCH",
|
||||
body: JSON.stringify({
|
||||
attributes: { name: name }
|
||||
})
|
||||
}
|
||||
fetchOptions: {
|
||||
method: "PATCH",
|
||||
body: JSON.stringify({
|
||||
attributes: { name: name }
|
||||
})
|
||||
}
|
||||
}
|
||||
).then(res => {
|
||||
self.refreshPlaylists()
|
||||
})
|
||||
|
@ -1132,13 +1136,13 @@ const app = new Vue({
|
|||
let self = this
|
||||
this.mk.api.v3.music(
|
||||
`/v1/me/library/playlists/${id}`, {}, {
|
||||
fetchOptions: {
|
||||
method: "PATCH",
|
||||
body: JSON.stringify({
|
||||
attributes: { name: name }
|
||||
})
|
||||
}
|
||||
fetchOptions: {
|
||||
method: "PATCH",
|
||||
body: JSON.stringify({
|
||||
attributes: { name: name }
|
||||
})
|
||||
}
|
||||
}
|
||||
).then(res => {
|
||||
self.refreshPlaylists()
|
||||
})
|
||||
|
@ -1401,7 +1405,7 @@ const app = new Vue({
|
|||
*/
|
||||
convertTime(time = 0, format = 'short') {
|
||||
|
||||
if(isNaN(time)) {
|
||||
if (isNaN(time)) {
|
||||
time = 0
|
||||
}
|
||||
if (typeof time !== "number") {
|
||||
|
@ -1488,6 +1492,11 @@ const app = new Vue({
|
|||
let page = hash[0]
|
||||
let id = hash[1]
|
||||
let isLibrary = hash[2] ?? false
|
||||
if(page == "plugin") {
|
||||
this.pluginPages.page = "plugin." + id
|
||||
this.page = "plugin-renderer"
|
||||
return
|
||||
}
|
||||
this.routeView({
|
||||
kind: page,
|
||||
id: id,
|
||||
|
@ -1516,10 +1525,10 @@ const app = new Vue({
|
|||
document.querySelector("#app-content").scrollTop = 0
|
||||
} else if (kind == "editorial-elements") {
|
||||
console.log(item)
|
||||
if (item.relationships?.contents?.data != null && item.relationships?.contents?.data.length > 0){
|
||||
if (item.relationships?.contents?.data != null && item.relationships?.contents?.data.length > 0) {
|
||||
this.routeView(item.relationships.contents.data[0])
|
||||
} else if (item.attributes?.link?.url != null){
|
||||
window.open(item.attributes.link.url)
|
||||
} else if (item.attributes?.link?.url != null) {
|
||||
window.open(item.attributes.link.url)
|
||||
}
|
||||
|
||||
} else if (kind.toString().includes("artist")) {
|
||||
|
@ -2048,7 +2057,7 @@ const app = new Vue({
|
|||
}
|
||||
let librarySongs = await CiderCache.getCache(cacheId)
|
||||
if (librarySongs) {
|
||||
this.library.songs.listing = librarySongs
|
||||
this.library.songs.listing.data = librarySongs
|
||||
this.searchLibrarySongs()
|
||||
}
|
||||
if (this.songstest) {
|
||||
|
@ -2058,8 +2067,9 @@ const app = new Vue({
|
|||
this.library.backgroundNotification.show = true
|
||||
this.library.backgroundNotification.message = app.getLz('notification.updatingLibrarySongs')
|
||||
|
||||
function downloadChunk() {
|
||||
const params = {
|
||||
library = await MusicKitTools.v3Continuous({
|
||||
href: `/v1/me/library/songs/`,
|
||||
options: {
|
||||
"include[library-songs]": "catalog,artists,albums",
|
||||
"fields[artists]": "name,url,id",
|
||||
"fields[albums]": "name,url,id",
|
||||
|
@ -2067,80 +2077,28 @@ const app = new Vue({
|
|||
"fields[catalog]": "artistUrl,albumUrl",
|
||||
"fields[songs]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url",
|
||||
limit: 100,
|
||||
l: self.mklang
|
||||
}
|
||||
const safeparams = {
|
||||
"platform": "web",
|
||||
"limit": 80
|
||||
}
|
||||
self.library.songs.downloadState = 1
|
||||
if (downloaded == null) {
|
||||
app.mk.api.v3.music(`/v1/me/library/songs/`, params).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading');
|
||||
app.mk.api.v3.music(`/v1/me/library/songs/`, safeparams).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading failed', error)
|
||||
app.library.songs.downloadState = 2
|
||||
app.library.backgroundNotification.show = false
|
||||
})
|
||||
})
|
||||
} else {
|
||||
if (downloaded.next != null) {
|
||||
app.mk.api.v3.music(downloaded.next, params).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading');
|
||||
app.mk.api.v3.music(downloaded.next, safeparams).then((response) => {
|
||||
processChunk(response.data)
|
||||
}).catch((error) => {
|
||||
console.log('safe loading failed', error)
|
||||
app.library.songs.downloadState = 2
|
||||
app.library.backgroundNotification.show = false
|
||||
})
|
||||
})
|
||||
} else {
|
||||
console.log("Download next", downloaded.next)
|
||||
}
|
||||
}
|
||||
}
|
||||
l: app.mklang,
|
||||
},
|
||||
onProgress: (data) => {
|
||||
console.log(`${data.total}/${data.response.data.meta.total}`)
|
||||
self.library.backgroundNotification.show = true
|
||||
self.library.backgroundNotification.message = app.getLz('notification.updatingLibrarySongs')
|
||||
self.library.backgroundNotification.total = data.response.data.meta.total
|
||||
self.library.backgroundNotification.progress = data.total
|
||||
},
|
||||
onSuccess: () => {
|
||||
|
||||
function processChunk(response) {
|
||||
downloaded = response
|
||||
library = library.concat(downloaded.data)
|
||||
self.library.backgroundNotification.show = true
|
||||
self.library.backgroundNotification.message = app.getLz('notification.updatingLibrarySongs')
|
||||
self.library.backgroundNotification.total = downloaded.meta.total
|
||||
self.library.backgroundNotification.progress = library.length
|
||||
}
|
||||
})
|
||||
|
||||
if (downloaded.meta.total == 0) {
|
||||
self.library.songs.downloadState = 3
|
||||
return
|
||||
}
|
||||
if (typeof downloaded.next == "undefined") {
|
||||
console.log("downloaded.next is undefined")
|
||||
self.library.songs.listing = library
|
||||
self.library.songs.downloadState = 2
|
||||
self.library.backgroundNotification.show = false
|
||||
self.searchLibrarySongs()
|
||||
CiderCache.putCache(cacheId, library)
|
||||
}
|
||||
if (downloaded.meta.total > library.length || typeof downloaded.meta.next != "undefined") {
|
||||
console.log(`downloading next chunk - ${library.length} songs so far`)
|
||||
downloadChunk()
|
||||
} else {
|
||||
self.library.songs.listing = library
|
||||
self.library.songs.downloadState = 2
|
||||
self.library.backgroundNotification.show = false
|
||||
self.searchLibrarySongs()
|
||||
CiderCache.putCache(cacheId, library)
|
||||
// console.log(library)
|
||||
}
|
||||
}
|
||||
self.library.songs.listing = library
|
||||
self.library.songs.downloadState = 2
|
||||
self.library.backgroundNotification.show = false
|
||||
self.searchLibrarySongs()
|
||||
CiderCache.putCache(cacheId, library)
|
||||
console.log("Done!")
|
||||
|
||||
downloadChunk()
|
||||
return
|
||||
},
|
||||
// copy the getLibrarySongsFull function except change Songs to Albums
|
||||
async getLibraryAlbumsFull(force = false, index) {
|
||||
|
@ -2239,7 +2197,7 @@ const app = new Vue({
|
|||
}
|
||||
if (downloaded.meta.total > library.length || typeof downloaded.meta.next != "undefined") {
|
||||
console.log(`downloading next chunk - ${library.length
|
||||
} albums so far`)
|
||||
} albums so far`)
|
||||
downloadChunk()
|
||||
} else {
|
||||
self.library.albums.listing = library
|
||||
|
@ -2348,7 +2306,7 @@ const app = new Vue({
|
|||
}
|
||||
if (downloaded.meta.total > library.length || typeof downloaded.meta.next != "undefined") {
|
||||
console.log(`downloading next chunk - ${library.length
|
||||
} artists so far`)
|
||||
} artists so far`)
|
||||
downloadChunk()
|
||||
} else {
|
||||
self.library.artists.listing = library
|
||||
|
@ -2484,13 +2442,13 @@ const app = new Vue({
|
|||
let self = this
|
||||
this.mk.api.v3.music(
|
||||
"/v1/me/library/playlist-folders/", {}, {
|
||||
fetchOptions: {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
attributes: { name: name }
|
||||
})
|
||||
}
|
||||
fetchOptions: {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
attributes: { name: name }
|
||||
})
|
||||
}
|
||||
}
|
||||
).then((res) => {
|
||||
let playlist = (res.data.data[0])
|
||||
self.playlists.listing.push({
|
||||
|
@ -3055,21 +3013,21 @@ const app = new Vue({
|
|||
if (ids.length > 0) {
|
||||
if (app.mk.queue._itemIDs.length > 0) {
|
||||
app.mk.playLater({ [kind + "s"]: itemsToPlay[kind] }).then(function () {
|
||||
ind += 1;
|
||||
console.log(ind, Object.keys(itemsToPlay).length)
|
||||
if (ind >= Object.keys(itemsToPlay).length) {
|
||||
app.mk.changeToMediaAtIndex(app.mk.queue._itemIDs.indexOf(item.attributes.playParams.id ?? item.id))
|
||||
}
|
||||
ind += 1;
|
||||
console.log(ind, Object.keys(itemsToPlay).length)
|
||||
if (ind >= Object.keys(itemsToPlay).length) {
|
||||
app.mk.changeToMediaAtIndex(app.mk.queue._itemIDs.indexOf(item.attributes.playParams.id ?? item.id))
|
||||
}
|
||||
}
|
||||
)
|
||||
} else {
|
||||
app.mk.setQueue({ [kind + "s"]: itemsToPlay[kind] }).then(function () {
|
||||
ind += 1;
|
||||
console.log(ind, Object.keys(itemsToPlay).length)
|
||||
if (ind >= Object.keys(itemsToPlay).length) {
|
||||
app.mk.changeToMediaAtIndex(app.mk.queue._itemIDs.indexOf(item.attributes.playParams.id ?? item.id))
|
||||
}
|
||||
ind += 1;
|
||||
console.log(ind, Object.keys(itemsToPlay).length)
|
||||
if (ind >= Object.keys(itemsToPlay).length) {
|
||||
app.mk.changeToMediaAtIndex(app.mk.queue._itemIDs.indexOf(item.attributes.playParams.id ?? item.id))
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -3379,7 +3337,7 @@ const app = new Vue({
|
|||
if (app.getThemeDirective("lcdArtworkSize") != "") {
|
||||
artworkSize = app.getThemeDirective("lcdArtworkSize")
|
||||
} else if (this.cfg.visual.directives.windowLayout == "twopanel") {
|
||||
artworkSize = 70
|
||||
artworkSize = 80
|
||||
}
|
||||
this.currentArtUrl = '';
|
||||
this.currentArtUrlRaw = '';
|
||||
|
@ -3648,36 +3606,36 @@ const app = new Vue({
|
|||
app.love(app.mk.nowPlayingItem)
|
||||
}
|
||||
},
|
||||
{
|
||||
"icon": "./assets/feather/heart.svg",
|
||||
"id": "unlove",
|
||||
"active": true,
|
||||
"name": app.getLz('action.unlove'),
|
||||
"hidden": true,
|
||||
"action": function () {
|
||||
app.unlove(app.mk.nowPlayingItem)
|
||||
}
|
||||
},
|
||||
{
|
||||
"icon": "./assets/feather/thumbs-down.svg",
|
||||
"id": "dislike",
|
||||
"name": app.getLz('action.dislike'),
|
||||
"hidden": false,
|
||||
"disabled": true,
|
||||
"action": function () {
|
||||
app.dislike(app.mk.nowPlayingItem)
|
||||
}
|
||||
},
|
||||
{
|
||||
"icon": "./assets/feather/thumbs-down.svg",
|
||||
"id": "undo_dislike",
|
||||
"name": app.getLz('action.undoDislike'),
|
||||
"active": true,
|
||||
"hidden": true,
|
||||
"action": function () {
|
||||
app.unlove(app.mk.nowPlayingItem)
|
||||
}
|
||||
},
|
||||
{
|
||||
"icon": "./assets/feather/heart.svg",
|
||||
"id": "unlove",
|
||||
"active": true,
|
||||
"name": app.getLz('action.unlove'),
|
||||
"hidden": true,
|
||||
"action": function () {
|
||||
app.unlove(app.mk.nowPlayingItem)
|
||||
}
|
||||
},
|
||||
{
|
||||
"icon": "./assets/feather/thumbs-down.svg",
|
||||
"id": "dislike",
|
||||
"name": app.getLz('action.dislike'),
|
||||
"hidden": false,
|
||||
"disabled": true,
|
||||
"action": function () {
|
||||
app.dislike(app.mk.nowPlayingItem)
|
||||
}
|
||||
},
|
||||
{
|
||||
"icon": "./assets/feather/thumbs-down.svg",
|
||||
"id": "undo_dislike",
|
||||
"name": app.getLz('action.undoDislike'),
|
||||
"active": true,
|
||||
"hidden": true,
|
||||
"action": function () {
|
||||
app.unlove(app.mk.nowPlayingItem)
|
||||
}
|
||||
},
|
||||
],
|
||||
items: [
|
||||
{
|
||||
|
@ -3868,14 +3826,15 @@ const app = new Vue({
|
|||
}
|
||||
},
|
||||
pinMiniPlayer(status = false) {
|
||||
if (!status){
|
||||
if (!this.cfg.visual.miniplayer_top_toggle) {
|
||||
ipcRenderer.send('windowontop', true)
|
||||
this.cfg.visual.miniplayer_top_toggle = true;
|
||||
if (!status) {
|
||||
if (!this.cfg.visual.miniplayer_top_toggle) {
|
||||
ipcRenderer.send('windowontop', true)
|
||||
this.cfg.visual.miniplayer_top_toggle = true;
|
||||
} else {
|
||||
ipcRenderer.send('windowontop', false)
|
||||
this.cfg.visual.miniplayer_top_toggle = false;
|
||||
}
|
||||
} else {
|
||||
ipcRenderer.send('windowontop', false)
|
||||
this.cfg.visual.miniplayer_top_toggle = false;
|
||||
}} else {
|
||||
ipcRenderer.send('windowontop', this.cfg.visual.miniplayer_top_toggle ?? false)
|
||||
}
|
||||
},
|
||||
|
|
13152
src/renderer/style.css
Normal file
13152
src/renderer/style.css
Normal file
File diff suppressed because it is too large
Load diff
|
@ -558,14 +558,14 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
|
|||
.app-sidebar-notification {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
min-height: 60px;
|
||||
min-height: 36px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-top: 1px solid rgb(200 200 200 / 15%);
|
||||
background: rgb(0 0 0 / 15%);
|
||||
flex-direction: column;
|
||||
padding: 20px 0px;
|
||||
padding: 10px 0px;
|
||||
|
||||
&.libraryNotification {
|
||||
flex-direction: row;
|
||||
|
|
40
src/renderer/themes/sweetener.css
Normal file
40
src/renderer/themes/sweetener.css
Normal file
|
@ -0,0 +1,40 @@
|
|||
.menu-panel .menu-panel-body {
|
||||
background-color: rgba(30, 30, 30, 0.45);
|
||||
backdrop-filter: blur(32px) saturate(180%);
|
||||
animation: menuIn 0.1s var(--appleEase);
|
||||
}
|
||||
@keyframes menuIn {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateY(-10px) translate3d(0, 0, 0);
|
||||
background: #1e1e1e;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
background: rgba(30, 30, 30, 0.45);
|
||||
}
|
||||
}
|
||||
.cd-mediaitem-square:not(.mediaitem-card) {
|
||||
transition: transform 0.2s var(--appleEase);
|
||||
transition-delay: 0.1s;
|
||||
padding: 12px;
|
||||
height: 250px;
|
||||
}
|
||||
.cd-mediaitem-square:not(.mediaitem-card) .artwork-container,
|
||||
.cd-mediaitem-square:not(.mediaitem-card) .info-rect {
|
||||
transition: transform 0.22s var(--appleEase);
|
||||
transition-delay: 0.05s;
|
||||
}
|
||||
.cd-mediaitem-square:not(.mediaitem-card):hover .artwork-container {
|
||||
transform: scale(1.1);
|
||||
transition: transform 0.1s var(--appleEase);
|
||||
transition-delay: 0s;
|
||||
transform-origin: center;
|
||||
}
|
||||
.cd-mediaitem-square:not(.mediaitem-card):hover .info-rect {
|
||||
z-index: 1;
|
||||
transition: transform 0.1s var(--appleEase);
|
||||
transition-delay: 0s;
|
||||
transform: translateY(8px) translate3d(0, 0, 0);
|
||||
}
|
|
@ -47,7 +47,7 @@
|
|||
|
||||
&:hover {
|
||||
.artwork-container {
|
||||
transform : scale(1.1) translate3d(0,0,0);
|
||||
transform : scale(1.1);
|
||||
transition : transform .1s var(--appleEase);
|
||||
transition-delay: 0s;
|
||||
transform-origin: center;
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
platformInfo: {requiresCDMAttachOnStart: !0, maxSecurityLevel: d, keySystemConfig: h},
|
||||
appData: {serviceName: "Apple Music"}
|
||||
}
|
||||
|
||||
this.hls.attachMedia(this.$refs.video);
|
||||
this.hls.loadSource(this.video);
|
||||
let u = this.hls;
|
||||
|
@ -80,8 +81,8 @@
|
|||
quality = qualities[qualities.length - 1].level
|
||||
}
|
||||
}
|
||||
|
||||
this.hls.loadLevel = parseInt( quality || 1);},200)
|
||||
try{
|
||||
this.hls.loadLevel = parseInt( quality || 1);} catch(e){}},200)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -295,11 +295,19 @@
|
|||
},
|
||||
changeVibrantBass() {
|
||||
app.cfg.audio.maikiwiAudio.vibrantBass.multiplier = app.cfg.audio.equalizer.vibrantBass / 10
|
||||
CiderAudio.hierarchical_loading();
|
||||
if (app.cfg.audio.equalizer.vibrantBass != 0) {
|
||||
for (var i = 0; i < 21; i++) {
|
||||
if (app.cfg.audio.equalizer.vibrantBass !== 0) {
|
||||
try {
|
||||
for (var i = 0; i < 21; i++) {
|
||||
CiderAudio.audioNodes.vibrantbassNode[i].gain.value = app.cfg.audio.maikiwiAudio.vibrantBass.gain[i] * (app.cfg.audio.equalizer.vibrantBass / 10);
|
||||
}}
|
||||
}}
|
||||
catch(e) {
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
},
|
||||
changeMix() {
|
||||
for (var i = 0; i < 10; i++) {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('hello-world', {
|
||||
var hw = Vue.component('hello-world', {
|
||||
template: '#hello-world',
|
||||
methods: {
|
||||
sayHello: function () {
|
||||
|
|
|
@ -30,10 +30,10 @@
|
|||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description')}}</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.5" v-model="app.cfg.audio.maikiwiAudio.ciderPPE_value" onclick="app.cfg.audio.maikiwiAudio.ciderPPE_value = 0.5; CiderAudio.hierarchical_loading();">
|
||||
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.5" v-model="app.cfg.audio.maikiwiAudio.ciderPPE_value" onclick="ciderPPEStandard">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard')}}
|
||||
</button>
|
||||
<button class="md-btn" style="margin-top: 5px;" :disabled="app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.55" v-model="app.cfg.audio.maikiwiAudio.ciderPPE_value" onclick="app.cfg.audio.maikiwiAudio.ciderPPE_value = 0.55; CiderAudio.hierarchical_loading();">
|
||||
<button class="md-btn" style="margin-top: 5px;" :disabled="app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.55" v-model="app.cfg.audio.maikiwiAudio.ciderPPE_value" onclick="ciderPPEClarity">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive')}}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -55,10 +55,10 @@
|
|||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description')}}</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.analogWarmth_value === 1.25" v-model="app.cfg.audio.maikiwiAudio.analogWarmth_value" onclick="app.cfg.audio.maikiwiAudio.analogWarmth_value = 1.25; CiderAudio.hierarchical_loading();">
|
||||
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.analogWarmth_value === 1.25" v-model="app.cfg.audio.maikiwiAudio.analogWarmth_value" onclick="analogWarmthSmooth">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth')}}
|
||||
</button>
|
||||
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.analogWarmth_value === 1.75" v-model="app.cfg.audio.maikiwiAudio.analogWarmth_value" onclick="app.cfg.audio.maikiwiAudio.analogWarmth_value = 1.75; CiderAudio.hierarchical_loading();">
|
||||
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.analogWarmth_value === 1.75" v-model="app.cfg.audio.maikiwiAudio.analogWarmth_value" onclick="analogWarmthWarm">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm')}}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -98,6 +98,59 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div style="opacity: 0.5; pointer-events: none">
|
||||
<div class="md-option-header">
|
||||
<span>{{$root.getLz('settings.header.unfinished')}}</span>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
Cider Atmosphere Realizer™️
|
||||
<br>
|
||||
<small>Realizes an entirely different musical atmosphere only to be found on state of the art audio setups.</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn">
|
||||
Signature
|
||||
</button>
|
||||
<button class="md-btn">
|
||||
Signature+
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
Cider Origami Vocal Enhance/Remaster™️
|
||||
<br>
|
||||
<small>Re-textures the vocals by carving out the frequencies and adjusts them to the selected profile.<br>
|
||||
<b>Modern:</b>
|
||||
Embracing 21st Century Equipment, this revives old recordings while preserving the Master's original intent.<br>
|
||||
<b>Intimate:</b>
|
||||
Bringing the vocals closer to your heart, communicating only the most personal connection between you and the artist.<br>
|
||||
<b>Breathy:</b>
|
||||
Giving the perfectionists a new voice, this adds naturality to the vocals by making them more breathy and more natural. <br>
|
||||
<b>Articulate:</b>
|
||||
Wrapping every detail of the vocal to your ear, resulting in a more expressive voice.
|
||||
</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<select class="md-select">
|
||||
<option value="none">{{$root.getLz('settings.header.visual.windowBackgroundStyle.none')}}
|
||||
</option>
|
||||
<option value="modern">
|
||||
Modern
|
||||
</option>
|
||||
<option value="intimate">
|
||||
Intimate
|
||||
</option>
|
||||
<option value="breathy">
|
||||
Breathy
|
||||
</option>
|
||||
<option value="articulate">
|
||||
Articulate
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
@ -125,5 +178,33 @@
|
|||
}
|
||||
|
||||
},
|
||||
ciderPPEStandard: function () {
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE_value = 0.5;
|
||||
let 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];
|
||||
for (let i = 0; i < 24; i++) {
|
||||
CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i];
|
||||
}
|
||||
},
|
||||
ciderPPEClarity: function () {
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE_value = 0.55;
|
||||
let c_LLPW_GAIN = [-0.11, 0.27, -0.8, 0.57, 1.84, -0.38, 0.47, -1.56, 0.83, 1.58, -1.79, -0.45, 0.48, 1.22, -1.58, -1.59, -2.03, 2.56, -2.2, -2.48, 4.75, 10.5, 1.43, 3.76];
|
||||
for (let i = 0; i < 24; i++) {
|
||||
CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i];
|
||||
}
|
||||
},
|
||||
analogWarmthSmooth: function () {
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth_value = 1.25
|
||||
let WARMTH_GAIN = [-4.81, 0.74, 0.55, -0.84, -1.52, 0.84, 0.66, -0.29, 0.29, 0.94, 1.67, 1.62, -0.53, -0.81, -4.98, 1.43, 0.86, 1.13, -1.06, -0.95, -1.13, 1.78, -3.86];
|
||||
for (let i = 0; i < 23; i++) {
|
||||
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.25;
|
||||
}
|
||||
},
|
||||
analogWarmthWarm: function () {
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth_value = 1.75
|
||||
let WARMTH_GAIN = [-4.81, 0.74, 0.55, -0.84, -1.52, 0.84, 0.66, -0.29, 0.29, 0.94, 1.67, 1.62, -0.53, -0.81, -4.98, 1.43, 0.86, 1.13, -1.06, -0.95, -1.13, 1.78, -3.86];
|
||||
for (let i = 0; i < 23; i++) {
|
||||
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.75;
|
||||
}
|
||||
}
|
||||
}})
|
||||
</script>
|
22
src/renderer/views/pages/plugin-renderer.ejs
Normal file
22
src/renderer/views/pages/plugin-renderer.ejs
Normal file
|
@ -0,0 +1,22 @@
|
|||
<script>
|
||||
Vue.component('plugin-renderer', {
|
||||
/*html*/
|
||||
template: `
|
||||
<component :is="getPage()"></component>
|
||||
`,
|
||||
data: function () {
|
||||
return {
|
||||
app: this.$root,
|
||||
}
|
||||
},
|
||||
props: {},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
getPage() {
|
||||
return this.$root.pluginPages.page
|
||||
}
|
||||
},
|
||||
}
|
||||
);
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue