Merge branch 'develop' into update-owo

This commit is contained in:
GamingLiamStudios 2022-03-22 09:35:59 +11:00
commit a95fffea47
No known key found for this signature in database
GPG key ID: 3650DE4EAFF62ADD
54 changed files with 1182 additions and 586 deletions

View file

@ -2,14 +2,18 @@ version: 2.1
orbs: # adds orbs to your configuration orbs: # adds orbs to your configuration
jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible
branches: branches:
ignore: i10n-develop ignore: feature/i10n
jobs: jobs:
build: build:
working_directory: ~/Cider working_directory: ~/Cider
docker: docker:
- image: circleci/node:16 - image: circleci/node:16
steps: steps:
- checkout - checkout
- run:
name: Set App Version
command: echo "export APP_VERSION=$(grep '"version":.*' package.json | cut -d '"' -f 4 | head -1)" >> $BASH_ENV
- run: - run:
name: Update Package Managers name: Update Package Managers
command: sudo npm update -g npm yarn command: sudo npm update -g npm yarn
@ -29,26 +33,32 @@ jobs:
name: Install system build dependencies name: Install system build dependencies
command: | command: |
sudo apt-get update -y sudo apt-get update -y
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt-get install -y dpkg fakeroot wine64 sudo apt-get install -y dpkg fakeroot wine64
sudo dpkg --add-architecture i386 sudo dpkg --add-architecture i386
sudo apt-get update -y sudo apt-get update -y
sudo apt-get install -y wine32 sudo apt-get install -y wine32
sudo apt install -y gh
- run: - run:
name: Append Commit BuildID to Version name: Fix Versioning and Add Channel
command: yarn circle:append-bid command: yarn circle:script
- run:
name: TypeScript Compile
command: yarn build
- run: - run:
name: Generate Builds (Linux) name: Generate Builds (Linux)
command: yarn dist -l -p never command: yarn electron-builder -l -p never
post-steps: post-steps:
- jira/notify - jira/notify
- run: - run:
name: Generate Builds (Windows) name: Generate Builds (Windows)
command: yarn dist -w --x64 -p never command: yarn electron-builder -w --x64 -p never
post-steps: post-steps:
- jira/notify - jira/notify
- run: - run:
name: Generate Builds (Winget) name: Generate Builds (Winget)
command: yarn winget -p never command: yarn electron-builder --win -c winget.json -p never
post-steps: post-steps:
- jira/notify - jira/notify
- run: - run:
@ -63,13 +73,7 @@ jobs:
mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts
- store_artifacts: - store_artifacts:
path: ~/Cider/dist/artifacts path: ~/Cider/dist/artifacts
publish-github-release:
docker:
- image: cibuilds/github:0.10
steps:
- attach_workspace:
at: ~/Cider/dist/artifacts
- run: - run:
name: "Publish Release on GitHub" name: Publish Release
command: | command: |
ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r "cider-releases" -c ${CIRCLE_SHA1} -n "${CIRCLE_BRANCH} build #${CIRCLE_BUILD_NUM}" -b "This release is made automatically from [this commit](https://github.com/ciderapp/Cider/commit/${CIRCLE_SHA1}) using [this CircleCI job.](${CIRCLE_BUILD_URL})" ~/Cider/dist/artifacts gh release create "v${APP_VERSION}.${CIRCLE_BUILD_NUM}" --title "Cider Version ${APP_VERSION} - Build ${CIRCLE_BUILD_NUM} (${CIRCLE_BRANCH})" --generate-notes -R ciderapp/cider-releases ~/Cider/dist/artifacts/*.deb ~/Cider/dist/artifacts/*.AppImage ~/Cider/dist/artifacts/*.snap ~/Cider/dist/artifacts/*.exe ~/Cider/dist/artifacts/*.yml ~/Cider/dist/artifacts/*.blockmap

View file

@ -28,6 +28,8 @@
[![Get it from Windows Package Manager](https://custom-icon-badges.herokuapp.com/badge/Get_It_via_Winget-100000?style=for-the-badge&logo=winstall)](https://winstall.app/apps/CiderCollective.Cider.Nightly) [![Get it from Windows Package Manager](https://custom-icon-badges.herokuapp.com/badge/Get_It_via_Winget-100000?style=for-the-badge&logo=winstall)](https://winstall.app/apps/CiderCollective.Cider.Nightly)
[![Get it from Flathub](https://img.shields.io/badge/Get_It_From_Flathub-100000?style=for-the-badge&logo=flathub)](https://flathub.org/apps/details/sh.cider.Cider)
<!-- <!--
[![Get it from Windows Package Manager](https://custom-icon-badges.herokuapp.com/badge/Get_It_via_Winget-100000?style=for-the-badge&logo=winstall)](https://winstall.app/apps/cryptofyre.AppleMusicElectron) [![Get it from Windows Package Manager](https://custom-icon-badges.herokuapp.com/badge/Get_It_via_Winget-100000?style=for-the-badge&logo=winstall)](https://winstall.app/apps/cryptofyre.AppleMusicElectron)
@ -36,6 +38,8 @@
--> -->
[![Get it from the AUR](https://img.shields.io/badge/Get_It_From_The_AUR-100000?style=for-the-badge&logo=archlinux)](https://aur.archlinux.org/packages/cider) [![Get it from the AUR](https://img.shields.io/badge/Get_It_From_The_AUR-100000?style=for-the-badge&logo=archlinux)](https://aur.archlinux.org/packages/cider)
[![Get it from Flathub](https://img.shields.io/badge/Get_It_From_Flathub-100000?style=for-the-badge&logo=flathub)](https://flathub.org/apps/details/sh.cider.Cider)
### Compiling and Configuration ### Compiling and Configuration
For more information surrounding configuration, compiling and other developer documentation, see the [compilation docs](https://cider.sh/compile.html). For more information surrounding configuration, compiling and other developer documentation, see the [compilation docs](https://cider.sh/compile.html).

View file

@ -7,7 +7,7 @@
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./build/index.js", "main": "./build/index.js",
"author": "Cider Collective <cryptofyre@cider.sh> (https://cider.sh)", "author": "Cider Collective <cryptofyre@cider.sh> (https://cider.sh)",
"repository": "https://github.com/ciderapp/Cider.git", "repository": "github:ciderapp/Cider",
"bugs": { "bugs": {
"url": "https://github.com/ciderapp/Cider/issues?q=is%3Aopen+is%3Aissue+label%3Abug" "url": "https://github.com/ciderapp/Cider/issues?q=is%3Aopen+is%3Aissue+label%3Abug"
}, },
@ -32,7 +32,7 @@
"winget": "yarn build && electron-builder --win -c winget.json", "winget": "yarn build && electron-builder --win -c winget.json",
"msft": "yarn build && electron-builder -c msft-package.json", "msft": "yarn build && electron-builder -c msft-package.json",
"postinstall": "electron-builder install-app-deps", "postinstall": "electron-builder install-app-deps",
"circle:append-bid": "node resources/appendCommitToVersion" "circle:script": "node resources/circle"
}, },
"dependencies": { "dependencies": {
"@sentry/electron": "^3.0.2", "@sentry/electron": "^3.0.2",
@ -69,7 +69,7 @@
"youtube-search-without-api-key": "^1.0.7" "youtube-search-without-api-key": "^1.0.7"
}, },
"devDependencies": { "devDependencies": {
"@types/discord-rpc": "^4.0.0", "@types/discord-rpc": "4.0.0",
"@types/express": "^4.17.13", "@types/express": "^4.17.13",
"@types/qrcode-terminal": "^0.12.0", "@types/qrcode-terminal": "^0.12.0",
"@types/ws": "^8.5.1", "@types/ws": "^8.5.1",
@ -105,9 +105,9 @@
} }
], ],
"build": { "build": {
"electronVersion": "16.0.10+wvcus", "electronVersion": "16.0.7",
"electronDownload": { "electronDownload": {
"version": "16.0.10+wvcus", "version": "16.0.7+wvcus",
"mirror": "https://github.com/castlabs/electron-releases/releases/download/v" "mirror": "https://github.com/castlabs/electron-releases/releases/download/v"
}, },
"appId": "cider", "appId": "cider",

View file

@ -1,21 +0,0 @@
if (!process.env['CIRCLECI']) {
console.log(`[CIRCLECI SCRIPT] CircleCI not found... Aborting script`)
return
}
let fs = require('fs')
var data = fs.readFileSync('package.json');
var package = JSON.parse(data);
pvers = package.version.match(/\d+\./g)
// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables
package.version = `${pvers[0]}${pvers[1]}${process.env['CIRCLE_BUILD_NUM']}`
fs.writeFile('package.json', JSON.stringify(package), err => {
// error checking
if(err) throw err;
console.log("VERSION CHANGED");
});

53
resources/circle.js Normal file
View file

@ -0,0 +1,53 @@
if (!process.env['CIRCLECI']) {
console.log(`[CIRCLECI SCRIPT] CircleCI not found... Aborting script`)
return
}
let fs = require('fs')
var data = fs.readFileSync('package.json');
var package = JSON.parse(data);
let channel;
if (process.env['CIRCLE_BRANCH'] === 'lts') {
channel = 'latest'
} else if (process.env['CIRCLE_BRANCH'] === 'main') {
channel = 'beta'
} else if (process.env['CIRCLE_BRANCH'] === 'develop') {
channel = 'alpha'
} else {
channel = process.env['CIRCLE_BRANCH'] // It won't have auto update support
}
// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables
var pvers = package.version.split('.')
package.version = `${pvers[0]}.${pvers[1]}.${pvers[2]}-${channel}.${process.env['CIRCLE_BUILD_NUM']}`
// package.build.channel = channel
package.publish = {
"provider": "github",
"repo": "cider-releases",
"owner": "ciderapp",
"vPrefixedTagName": true,
"tag": `v${package.version}`,
"channel": channel,
"releaseType": "release"
}
let {exec} = require('child_process')
exec('echo $APP_VERSION', {env: {'APP_VERSION': package.version}}, function (error, stdout, stderr)
{
console.log(stdout, stderr, error);
});
fs.writeFile('package.json', JSON.stringify(package), err => {
// error checking
if(err) throw err;
console.log(`VERSION CHANGED TO ${package.version}`);
});

View file

@ -194,3 +194,6 @@ Update 10/3/2022 14:00 UTC
* `settings.header.window.description`: Added for `en_US` * `settings.header.window.description`: Added for `en_US`
* `settings.option.window.openOnStartup`: Added for `en_US` * `settings.option.window.openOnStartup`: Added for `en_US`
* `settings.option.window.openOnStartup.hidden`: Added for `en_US` * `settings.option.window.openOnStartup.hidden`: Added for `en_US`
Update 20/3/2022 00:01 UTC
* `term.creditDesignedBy`: Added for `en_US`

View file

@ -225,7 +225,7 @@
"settings.option.audio.enableAdvancedFunctionality": "Povolit pokročilé funkce", "settings.option.audio.enableAdvancedFunctionality": "Povolit pokročilé funkce",
"settings.option.audio.enableAdvancedFunctionality.description": "Povolení funkce AudioContext umožní rozšířené zvukové funkce, jako je normalizace zvuku, ekvalizéry a vizualizéry, ale na některých systémech to může způsobit zadrhávání ve zvukových stopách.", "settings.option.audio.enableAdvancedFunctionality.description": "Povolení funkce AudioContext umožní rozšířené zvukové funkce, jako je normalizace zvuku, ekvalizéry a vizualizéry, ale na některých systémech to může způsobit zadrhávání ve zvukových stopách.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustická vylepšení, díky nimž vše zní bohatěji a živěji | Navrhl Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustická vylepšení, díky nimž vše zní bohatěji a živěji.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Síla CAP", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Síla CAP",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Změní sílu zpracování zvuku. (Agresivita může vést k nežádoucím výsledkům)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Změní sílu zpracování zvuku. (Agresivita může vést k nežádoucím výsledkům)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",

View file

@ -230,7 +230,7 @@
"settings.option.audio.enableAdvancedFunctionality": "Akiviere erweiterte Funktionalität", "settings.option.audio.enableAdvancedFunctionality": "Akiviere erweiterte Funktionalität",
"settings.option.audio.enableAdvancedFunctionality.description": "Das Aktivieren der erweiterten Funktionalität ermöglicht spezielle Features wie Audio-Normalisierung, Equalizer und Visualizer, jedoch könnte dies auf einigen Systemen zu Aussetzern in der Musik führen.", "settings.option.audio.enableAdvancedFunctionality.description": "Das Aktivieren der erweiterten Funktionalität ermöglicht spezielle Features wie Audio-Normalisierung, Equalizer und Visualizer, jedoch könnte dies auf einigen Systemen zu Aussetzern in der Musik führen.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustische Verbesserungen die die Musik lebensechter erscheinen lassen | Designed by Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustische Verbesserungen die die Musik lebensechter erscheinen lassen.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP ist nicht mit räumlichem Audio kompatibel. Bitte deaktiviere räumliches Audio zuerst.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP ist nicht mit räumlichem Audio kompatibel. Bitte deaktiviere räumliches Audio zuerst.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP-Stärke", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP-Stärke",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Ändert die Stärke der Nachbearbeitung. (Aggressiv könnte zu ungewünschten Änderungen führen)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Ändert die Stärke der Nachbearbeitung. (Aggressiv könnte zu ungewünschten Änderungen führen)",

View file

@ -293,7 +293,7 @@
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Wawm", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Wawm",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cidew Adwenyawinye Pwocessow\u2122\ufe0f", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cidew Adwenyawinye Pwocessow\u2122\ufe0f",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes evewything sound both wichew and mowe wivewy | Designyed by Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes evewything sound both wichew and mowe wivewy.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is nyot compatibwe with Spatiawization. Pwease disabwe Spatiawization to continyue.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is nyot compatibwe with Spatiawization. Pwease disabwe Spatiawization to continyue.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Stwength", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Stwength",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the stwength of the pwocessing donye to the audio. (Aggwessive may yiewd undesiwabwe wesuwts)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the stwength of the pwocessing donye to the audio. (Aggwessive may yiewd undesiwabwe wesuwts)",

View file

@ -233,7 +233,7 @@
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality", "settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality",
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.", "settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively | Designed by Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",

View file

@ -174,6 +174,7 @@
"term.plays": "Plays", "term.plays": "Plays",
"term.topGenres": "Top Genres", "term.topGenres": "Top Genres",
"term.confirmLogout": "Are you sure you want to logout?", "term.confirmLogout": "Are you sure you want to logout?",
"term.creditDesignedBy": "Designed by ${authorUsername}",
"home.title": "Home", "home.title": "Home",
"home.recentlyPlayed": "Recently Played", "home.recentlyPlayed": "Recently Played",
"home.recentlyAdded": "Recently Added", "home.recentlyAdded": "Recently Added",
@ -293,7 +294,7 @@
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively | Designed by Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
@ -301,6 +302,7 @@
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization", "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Managed by Audio Lab",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization", "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization",

View file

@ -225,7 +225,7 @@
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality", "settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality",
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.", "settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively | Designed by Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",

View file

@ -265,7 +265,7 @@
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Pszichoakusztikus Módosítások amik minden hangot felerősítenek és ütősebbé tesznek | Készítette Maikiwi", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Pszichoakusztikus Módosítások amik minden hangot felerősítenek és ütősebbé tesznek",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "A CAP nem kompatibilis a Térbeli Hanggal. Kapcsold ki a Térbeli Hangot a folytatáshoz.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "A CAP nem kompatibilis a Térbeli Hanggal. Kapcsold ki a Térbeli Hangot a folytatáshoz.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Erősség", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Erősség",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Megváltoztatja a hangra végzett feldolgozás erősségét. (Az Agresszív mód nemkívánatos eredményeket hozhat!)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Megváltoztatja a hangra végzett feldolgozás erősségét. (Az Agresszív mód nemkívánatos eredményeket hozhat!)",

View file

@ -225,7 +225,7 @@
"settings.option.audio.enableAdvancedFunctionality": "Aktifkan Fungsi Lanjutan", "settings.option.audio.enableAdvancedFunctionality": "Aktifkan Fungsi Lanjutan",
"settings.option.audio.enableAdvancedFunctionality.description": "Mengaktifkan fungsionalitas AudioContext memungkinkan fitur audio lanjutan seperti Normalisasi Audio, Equalizer dan Visualizer. Namun pada beberapa perangkat dapat menyebabkan tersendatnya audio.", "settings.option.audio.enableAdvancedFunctionality.description": "Mengaktifkan fungsionalitas AudioContext memungkinkan fitur audio lanjutan seperti Normalisasi Audio, Equalizer dan Visualizer. Namun pada beberapa perangkat dapat menyebabkan tersendatnya audio.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Peningkatan Psikoakustik yang membuat semuanya terdengar lebih jelas dan lebih hidup | Dirancang oleh Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Peningkatan Psikoakustik yang membuat semuanya terdengar lebih jelas dan lebih hidup.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Kekuatan CAP", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Kekuatan CAP",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Mengubah kekuatan pemrosesan yang dilakukan pada audio. (Agresif dapat menghasilkan hasil yang tidak diinginkan)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Mengubah kekuatan pemrosesan yang dilakukan pada audio. (Agresif dapat menghasilkan hasil yang tidak diinginkan)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standar", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standar",

View file

@ -279,7 +279,7 @@
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "부드러움", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "부드러움",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "따뜻함", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "따뜻함",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "모든 소리를 더욱 풍부하고 생생하게 만드는 음향 심리학적 향상입니다. | Designed by Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "모든 소리를 더욱 풍부하고 생생하게 만드는 음향 심리학적 향상입니다.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP는 공간화와 호환되지 않습니다. 계속하려면 공간화를 비활성화하십시오.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP는 공간화와 호환되지 않습니다. 계속하려면 공간화를 비활성화하십시오.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP 강도", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP 강도",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "오디오 처리 강도를 변경합니다. (적극적으로 설정 시 바람직하지 않은 결과를 초래할 수 있습니다.)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "오디오 처리 강도를 변경합니다. (적극적으로 설정 시 바람직하지 않은 결과를 초래할 수 있습니다.)",

View file

@ -219,7 +219,7 @@
"settings.option.audio.enableAdvancedFunctionality": "Ativar configurações avancadas", "settings.option.audio.enableAdvancedFunctionality": "Ativar configurações avancadas",
"settings.option.audio.enableAdvancedFunctionality.description": "Habilitar a funcionalidade AudioContext permitirá recursos de áudio estendidos, como Normalização de Áudio , Equalizadores e Visualizadores. No entanto, em alguns sistemas, isso pode causar travamentos nas faixas de áudio.", "settings.option.audio.enableAdvancedFunctionality.description": "Habilitar a funcionalidade AudioContext permitirá recursos de áudio estendidos, como Normalização de Áudio , Equalizadores e Visualizadores. No entanto, em alguns sistemas, isso pode causar travamentos nas faixas de áudio.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Melhoras psicoacusticas que fazem com que tudo soe mais vivo | feito por Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Melhoras psicoacusticas que fazem com que tudo soe mais vivo.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP não é compativel com Áudio Espacial. Por favor, desative-o para continuar.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP não é compativel com Áudio Espacial. Por favor, desative-o para continuar.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Potência do CAP", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Potência do CAP",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Muda a potência do processamento feito no áudio. (a função Agressiva pode levar a resultados não desejados.)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Muda a potência do processamento feito no áudio. (a função Agressiva pode levar a resultados não desejados.)",

View file

@ -249,7 +249,7 @@
"settings.option.audio.enableAdvancedFunctionality": "Включить расширенный функционал", "settings.option.audio.enableAdvancedFunctionality": "Включить расширенный функционал",
"settings.option.audio.enableAdvancedFunctionality.description": "Включение функции AudioContext позволит использовать расширенные функции звука, такие как нормализация звука, эквалайзеры и визуализаторы, однако в некоторых системах это может вызвать заикание звуковых дорожек.", "settings.option.audio.enableAdvancedFunctionality.description": "Включение функции AudioContext позволит использовать расширенные функции звука, такие как нормализация звука, эквалайзеры и визуализаторы, однако в некоторых системах это может вызвать заикание звуковых дорожек.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Психоакустические улучшения, благодаря которым все звучит богаче и живее | Разработано Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Психоакустические улучшения, благодаря которым все звучит богаче и живее.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP не совместим с пространственным звучанием. Пожалуйста, отключите пространственное звучание, чтобы продолжить.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP не совместим с пространственным звучанием. Пожалуйста, отключите пространственное звучание, чтобы продолжить.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Режим CAP", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Режим CAP",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Изменяет режим обработки звука. (Режим агрессии может привести к нежелаемым результатам)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Изменяет режим обработки звука. (Режим агрессии может привести к нежелаемым результатам)",

View file

@ -196,7 +196,7 @@
"settings.option.audio.enableAdvancedFunctionality": "Zapnút Pokročilé Nastavenia Zvuku", "settings.option.audio.enableAdvancedFunctionality": "Zapnút Pokročilé Nastavenia Zvuku",
"settings.option.audio.enableAdvancedFunctionality.description": "Zapnutie AudioContext funkcionality dovolí rozšírené funkcie zvuku ako Zvuková Normalizávia , Equalizéry a Visualízery, ale na niektorých systémoch to može spôsobiť problémy so zvukom.", "settings.option.audio.enableAdvancedFunctionality.description": "Zapnutie AudioContext funkcionality dovolí rozšírené funkcie zvuku ako Zvuková Normalizávia , Equalizéry a Visualízery, ale na niektorých systémoch to može spôsobiť problémy so zvukom.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustické Vylepšenia ktoré urobia zvuk viac bohatý a živý | Urobil Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustické Vylepšenia ktoré urobia zvuk viac bohatý a živý.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Sila", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Sila",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Zmení silu CAP (Agresívná môže spôsobiť nežiadané výsledky)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Zmení silu CAP (Agresívná môže spôsobiť nežiadané výsledky)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Štandardná", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Štandardná",

View file

@ -174,6 +174,7 @@
"term.plays": "Plays", "term.plays": "Plays",
"term.topGenres": "Top Genres", "term.topGenres": "Top Genres",
"term.confirmLogout": "Are you sure you want to logout?", "term.confirmLogout": "Are you sure you want to logout?",
"term.creditDesignedBy": "Designed by ${authorUsername}",
"home.title": "Home", "home.title": "Home",
"home.recentlyPlayed": "Recently Played", "home.recentlyPlayed": "Recently Played",
"home.recentlyAdded": "Recently Added", "home.recentlyAdded": "Recently Added",
@ -293,7 +294,7 @@
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively | Designed by Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
@ -301,6 +302,7 @@
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization", "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Managed by Audio Lab",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization", "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization",

View file

@ -228,7 +228,7 @@
"settings.option.audio.enableAdvancedFunctionality": "Kích hoạt chính năng nâng cao", "settings.option.audio.enableAdvancedFunctionality": "Kích hoạt chính năng nâng cao",
"settings.option.audio.enableAdvancedFunctionality.description": "Bật các chức năng nâng cao sẽ kích hoạt các chức năng như EQ, Chuẩn hoá âm lượng hay Visualizer, tuy nhiên có thể sẽ ảnh hưởng tới chất lượng âm thanh", "settings.option.audio.enableAdvancedFunctionality.description": "Bật các chức năng nâng cao sẽ kích hoạt các chức năng như EQ, Chuẩn hoá âm lượng hay Visualizer, tuy nhiên có thể sẽ ảnh hưởng tới chất lượng âm thanh",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Các tinh chỉnh về âm thanh giúp cho nhạc của bạn ấm và rõ hơn | Tạo bởi Maikiwi.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Các tinh chỉnh về âm thanh giúp cho nhạc của bạn ấm và rõ hơn.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP không tương thích với Âm thanh đa chiều. Hãy tắt Âm thanh đa chiều để kích hoạt.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP không tương thích với Âm thanh đa chiều. Hãy tắt Âm thanh đa chiều để kích hoạt.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Chỉnh mức độ ảnh hưởng của CAP đến âm thanh. (Chế độ Mạnh có thể ảnh hưởng đến âm thanh của bạn)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Chỉnh mức độ ảnh hưởng của CAP đến âm thanh. (Chế độ Mạnh có thể ảnh hưởng đến âm thanh của bạn)",

View file

@ -231,7 +231,7 @@
"settings.option.audio.enableAdvancedFunctionality": "進階功能", "settings.option.audio.enableAdvancedFunctionality": "進階功能",
"settings.option.audio.enableAdvancedFunctionality.description": "啟用 AudioContext 將解鎖類似音量平衡和均衡器的進階功能。但是會在一些電腦造成音樂卡頓。", "settings.option.audio.enableAdvancedFunctionality.description": "啟用 AudioContext 將解鎖類似音量平衡和均衡器的進階功能。但是會在一些電腦造成音樂卡頓。",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數碼音訊增強處理™️", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數碼音訊增強處理™️",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "能夠欺騙你的大腦讓你感受到近似無損壓縮的音質 | 由 Maikiwi 設計", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "能夠欺騙你的大腦讓你感受到近似無損壓縮的音質",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "音訊增強處理不兼容於空間音訊,請先停用空間音訊。", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "音訊增強處理不兼容於空間音訊,請先停用空間音訊。",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數碼音訊增強處理設定", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數碼音訊增強處理設定",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進程度(激進型選項有可能會引起雜訊)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進程度(激進型選項有可能會引起雜訊)",

View file

@ -237,7 +237,7 @@
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "溫和", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "溫和",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "溫暖", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "溫暖",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數位增強音訊處理™️", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數位增強音訊處理™️",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "將欺騙您的大腦讓您感受到近似保真壓縮的音質。| 由 Maikiwi 設計", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "將欺騙您的大腦讓您感受到近似保真壓縮的音質。",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數位增強音訊處理設定", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數位增強音訊處理設定",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進/振奮程度(增強選項有可能會引起雜訊)。", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進/振奮程度(增強選項有可能會引起雜訊)。",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "標準", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "標準",

View file

@ -185,7 +185,7 @@ export class BrowserWindow {
page: "library-albums", page: "library-albums",
component: `<cider-library-albums :data="library.songs"></cider-library-albums>`, component: `<cider-library-albums :data="library.songs"></cider-library-albums>`,
condition: `page == 'library-albums'`, condition: `page == 'library-albums'`,
onEnter: `getLibraryAlbumsFull(null, 1); getAlbumSort(); searchLibraryAlbums(1);` onEnter: `getLibraryAlbumsFull(null, 1); getAlbumSort(); searchLibraryAlbums(1); getLibrarySongsFull() ;searchLibraryAlbums(1);`
}, { }, {
page: "appleCurator", page: "appleCurator",
component: `<cider-applecurator :data="appleCurator"></cider-applecurator>`, component: `<cider-applecurator :data="appleCurator"></cider-applecurator>`,

View file

@ -55,11 +55,11 @@ export class Store {
"normalization": false, "normalization": false,
"maikiwiAudio": { "maikiwiAudio": {
"ciderPPE": false, "ciderPPE": false,
"ciderPPE_value": 0.5, "ciderPPE_value": "NATURAL",
"analogWarmth": false, "analogWarmth": false,
"analogWarmth_value": 1.25, "analogWarmth_value": "SMOOTH",
"spatial": false, "spatial": false,
"spatialType": 0, "spatialProfile": "420signature-B",
"vibrantBass": { // Hard coded into the app. Don't include any of this config into exporting presets in store.ts "vibrantBass": { // Hard coded into the app. Don't include any of this config into exporting presets in store.ts
'frequencies': [17.182, 42.169, 53.763, 112.69, 119.65, 264.59, 336.57, 400.65, 505.48, 612.7, 838.7, 1155.3, 1175.6, 3406.8, 5158.6, 5968.1, 6999.9, 7468.6, 8862.9, 9666, 10109], 'frequencies': [17.182, 42.169, 53.763, 112.69, 119.65, 264.59, 336.57, 400.65, 505.48, 612.7, 838.7, 1155.3, 1175.6, 3406.8, 5158.6, 5968.1, 6999.9, 7468.6, 8862.9, 9666, 10109],
'Q': [2.5, 0.388, 5, 5, 2.5, 7.071, 14.14, 10, 7.071, 14.14, 8.409, 0.372, 7.071, 10, 16.82, 7.071, 28.28, 20, 8.409, 40, 40], 'Q': [2.5, 0.388, 5, 5, 2.5, 7.071, 14.14, 10, 7.071, 14.14, 8.409, 0.372, 7.071, 10, 16.82, 7.071, 28.28, 20, 8.409, 40, 40],

View file

@ -134,24 +134,13 @@ export class utils {
bw.win.webContents.send('update-response', "update-error") bw.win.webContents.send('update-response', "update-error")
return; return;
} }
// Get the artifacts
const response = await fetch(`https://circleci.com/api/v1.1/project/gh/ciderapp/Cider/latest/artifacts?branch=${utils.getStoreValue('general.update_branch')}&filter=successful`)
if (response.status != 200) {
bw.win.webContents.send('update-response', 'update-timeout')
return;
}
// Get the urls
const jsonResponse = await response.json()
let base_url = jsonResponse[0].url
base_url = base_url.substring(0, base_url.lastIndexOf('/'))
const options: any = { const options: any = {
provider: 'generic', provider: 'github',
url: base_url, protocol: 'https',
owner: 'ciderapp',
repo: 'cider-releases',
allowDowngrade: true, allowDowngrade: true,
} }
let autoUpdater: any = null let autoUpdater: any = null
if (process.platform === 'win32') { //Windows if (process.platform === 'win32') { //Windows
autoUpdater = await new NsisUpdater(options) autoUpdater = await new NsisUpdater(options)

View file

@ -149,6 +149,12 @@ export default class Thumbar {
label: 'Volume Down', label: 'Volume Down',
accelerator: 'CommandOrControl+Down', accelerator: 'CommandOrControl+Down',
click: () => this._win.webContents.executeJavaScript(`app.volumeDown()`) click: () => this._win.webContents.executeJavaScript(`app.volumeDown()`)
},
{type: 'separator'},
{
label: 'Cast To Devices',
accelerator: 'CommandOrControl+Shift+C',
click: () => this._win.webContents.executeJavaScript(`app.modals.castMenu = true`)
} }
] ]
}, },

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

View file

@ -40,7 +40,8 @@ const CiderAudio = {
analogWarmth: null analogWarmth: null
} }
} catch (e) { } } catch (e) { }
CiderAudio.source.connect(CiderAudio.context.destination);} catch(e){} CiderAudio.source.connect(CiderAudio.context.destination);
} catch (e) { }
}, },
connectContext: function (mediaElem) { connectContext: function (mediaElem) {
if (!CiderAudio.context) { if (!CiderAudio.context) {
@ -64,36 +65,54 @@ const CiderAudio = {
normalizerOff: function () { normalizerOff: function () {
CiderAudio.audioNodes.gainNode.gain.setTargetAtTime(1, CiderAudio.context.currentTime + 1, 0.5); CiderAudio.audioNodes.gainNode.gain.setTargetAtTime(1, CiderAudio.context.currentTime + 1, 0.5);
}, },
spatialProfiles: [
{
"id": "420signature",
"file": './audio/impulses/CiderSpatial_v69.420_Audiophile.wav',
"name": "Signature (Classic)",
"description": "",
"img": "./assets/audiolabs/classic.png",
},
{
"id": "420signature-B",
"file": './audio/impulses/CiderSpatial_v69.420_Audiophile_B.wav',
"name": "Signature (Focused)",
"description": "",
"img": "./assets/audiolabs/focused.png",
},
{
"id": "standard",
"file": './audio/impulses/CiderSpatial_v69_Standard.wav',
"name": "Minimal",
"description": "",
"img": "./assets/audiolabs/minimal.png",
},
{
"id": "audiophile",
"file": './audio/impulses/CiderSpatial_v69_Audiophile.wav',
"name": "Expansive",
"description": "",
"img": "./assets/audiolabs/expansive.png",
}
],
spatialOn: function () { spatialOn: function () {
CiderAudio.audioNodes.spatialNode = null; CiderAudio.audioNodes.spatialNode = null;
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.audioNodes.spatialNode = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.spatialNode = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.spatialNode.normalize = true; CiderAudio.audioNodes.spatialNode.normalize = false;
switch (app.cfg.audio.maikiwiAudio.spatialType) {
case 0:
fetch('./audio/impulses/CiderSpatial_v69_Standard.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) {
return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile;
}); });
break;
case 1:
fetch('./audio/impulses/CiderSpatial_v69_Audiophile.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
}); if (spatialProfile === undefined) {
break; spatialProfile = CiderAudio.spatialProfiles[0];
default:
fetch('./audio/impulses/CiderSpatial_v69_Standard.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
app.cfg.audio.maikiwiAudio.spatialType = 0;
break;
} }
fetch(spatialProfile.file).then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
} }
else { else {
CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context); CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context);
@ -112,7 +131,8 @@ const CiderAudio = {
up: 'acoustic-ceiling-tiles', up: 'acoustic-ceiling-tiles',
}; };
CiderAudio.audioNodes.spatialNode.setRoomProperties(roomDimensions, roomMaterials); CiderAudio.audioNodes.spatialNode.setRoomProperties(roomDimensions, roomMaterials);
CiderAudio.audioNodes.spatialInput = CiderAudio.audioNodes.spatialNode.createSource();} CiderAudio.audioNodes.spatialInput = CiderAudio.audioNodes.spatialNode.createSource();
}
}, },
spatialOff: function () { spatialOff: function () {
CiderAudio.hierarchical_loading(); CiderAudio.hierarchical_loading();
@ -249,7 +269,8 @@ const CiderAudio = {
const audioData = data.audioBuffer; const audioData = data.audioBuffer;
const bufferSize = data.bufferSize; const bufferSize = data.bufferSize;
if ((audioData[0]).some(item => item !== 0) || (audioData[0]).some(item => item !== 0)) { if ((audioData[0]).some(item => item !== 0) || (audioData[0]).some(item => item !== 0)) {
ipcRenderer.send('writeWAV', audioData[0], audioData[1], bufferSize);} ipcRenderer.send('writeWAV', audioData[0], audioData[1], bufferSize);
}
break; break;
case "stop": case "stop":
break; break;
@ -262,11 +283,13 @@ const CiderAudio = {
clearInterval(searchInt); clearInterval(searchInt);
} }
}, 1000); }, 1000);
} else {if (CiderAudio.audioNodes.recorderNode != null && CiderAudio.context != null) { } else {
if (CiderAudio.audioNodes.recorderNode != null && CiderAudio.context != null) {
CiderAudio.audioNodes.recorderNode.parameters.get('isRecording').setValueAtTime(1, CiderAudio.context.currentTime); CiderAudio.audioNodes.recorderNode.parameters.get('isRecording').setValueAtTime(1, CiderAudio.context.currentTime);
// CiderAudio.audioNodes.recorderNode = null; // CiderAudio.audioNodes.recorderNode = null;
// CiderAudio.ccON = false; // CiderAudio.ccON = false;
}} }
}
}, },
stopAudio() { stopAudio() {
@ -283,14 +306,39 @@ const CiderAudio = {
let WARMTH_Q = [0.442, 3.536, 2.102, 8.409, 0.625, 16.82, 5, 2.973, 3.536, 2.5, 2.5, 11.89, 0.625, 1.487, 1.153, 5, 5.453, 5, 2.973, 3.386, 3.386, 14.14, 8.409]; let WARMTH_Q = [0.442, 3.536, 2.102, 8.409, 0.625, 16.82, 5, 2.973, 3.536, 2.5, 2.5, 11.89, 0.625, 1.487, 1.153, 5, 5.453, 5, 2.973, 3.386, 3.386, 14.14, 8.409];
CiderAudio.audioNodes.analogWarmth = [] CiderAudio.audioNodes.analogWarmth = []
switch (app.cfg.audio.maikiwiAudio.analogWarmth_value) {
case "SMOOTH":
for (let i = 0; i < WARMTH_FREQUENCIES.length; i++) { for (let i = 0; i < WARMTH_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.analogWarmth[i] = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.analogWarmth[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.analogWarmth[i].type = 'peaking'; // 'peaking'; CiderAudio.audioNodes.analogWarmth[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i]; CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i];
CiderAudio.audioNodes.analogWarmth[i].Q.value = WARMTH_Q[i]; CiderAudio.audioNodes.analogWarmth[i].Q.value = WARMTH_Q[i];
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * app.cfg.audio.maikiwiAudio.analogWarmth_value; CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.25;
} }
break;
case "WARM":
for (let i = 0; i < WARMTH_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.analogWarmth[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.analogWarmth[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i];
CiderAudio.audioNodes.analogWarmth[i].Q.value = WARMTH_Q[i];
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.75;
}
break;
default:
for (let i = 0; i < WARMTH_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.analogWarmth[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.analogWarmth[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i];
CiderAudio.audioNodes.analogWarmth[i].Q.value = WARMTH_Q[i];
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.25;
}
app.cfg.audio.maikiwiAudio.analogWarmth_value = "SMOOTH";
break;
}
for (let i = 1; i < WARMTH_FREQUENCIES.length; i++) { for (let i = 1; i < WARMTH_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.analogWarmth[i - 1].connect(CiderAudio.audioNodes.analogWarmth[i]); CiderAudio.audioNodes.analogWarmth[i - 1].connect(CiderAudio.audioNodes.analogWarmth[i]);
@ -299,15 +347,18 @@ const CiderAudio = {
switch (hierarchy) { switch (hierarchy) {
case 3: case 3:
try { try {
CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.llpw[0]);} catch(e){} CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length - 1].connect(CiderAudio.audioNodes.llpw[0]);
} catch (e) { }
break; break;
case 2: case 2:
try { try {
CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);} catch(e){} CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length - 1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
} catch (e) { }
break; break;
case 1: case 1:
try { try {
CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.audioBands[0]);} catch(e){} CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length - 1].connect(CiderAudio.audioNodes.audioBands[0]);
} catch (e) { }
break; break;
case 0: case 0:
try { CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length - 1].connect(CiderAudio.context.destination); } catch (e) { } try { CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length - 1].connect(CiderAudio.context.destination); } catch (e) { }
@ -327,38 +378,32 @@ const CiderAudio = {
let 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]; let 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.llpw = [] CiderAudio.audioNodes.llpw = []
if (app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.55) { switch (app.cfg.audio.maikiwiAudio.ciderPPE_value) {
for (let i = 0; i < c_LLPW_FREQUENCIES.length; i++) { case "NATURAL":
CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking'; CiderAudio.audioNodes.llpw[0].normalize = false;
CiderAudio.audioNodes.llpw[i].frequency.value = c_LLPW_FREQUENCIES[i]; fetch('./audio/impulses/CAP_Natural.wav').then(async (impulseData) => {
CiderAudio.audioNodes.llpw[i].Q.value = c_LLPW_Q[i]; let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.llpw[i].gain.value = c_LLPW_GAIN[i]; CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
} });
for (let i = 1; i < c_LLPW_FREQUENCIES.length; i ++) {
CiderAudio.audioNodes.llpw[i-1].connect(CiderAudio.audioNodes.llpw[i]);
}
switch (hierarchy) { switch (hierarchy) {
case 2: case 2:
try{ try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.vibrantbassNode[0]); } catch (e) { }
CiderAudio.audioNodes.llpw[c_LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);} catch(e){}
break; break;
case 1: case 1:
try{CiderAudio.audioNodes.llpw[c_LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.audioBands[0]);} catch(e){} try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.audioBands[0]); } catch (e) { }
break; break;
case 0: case 0:
try{CiderAudio.audioNodes.llpw[c_LLPW_FREQUENCIES.length-1].connect(CiderAudio.context.destination);} catch(e){} try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.context.destination); } catch (e) { }
break; break;
} }
console.debug("[Cider][Audio] CAP - Clarity Mode"); console.debug("[Cider][Audio] CAP - Natural Mode");
} break;
else if (app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.5) { case "STANDARD": // Standard
for (let i = 0; i < LLPW_FREQUENCIES.length; i++) { for (let i = 0; i < LLPW_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking'; CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking';
@ -366,8 +411,6 @@ const CiderAudio = {
CiderAudio.audioNodes.llpw[i].Q.value = LLPW_Q[i]; CiderAudio.audioNodes.llpw[i].Q.value = LLPW_Q[i];
CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i]; CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i];
} }
for (let i = 1; i < LLPW_FREQUENCIES.length; i++) { for (let i = 1; i < LLPW_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.llpw[i - 1].connect(CiderAudio.audioNodes.llpw[i]); CiderAudio.audioNodes.llpw[i - 1].connect(CiderAudio.audioNodes.llpw[i]);
} }
@ -384,7 +427,61 @@ const CiderAudio = {
break; break;
} }
console.debug("[Cider][Audio] CAP - Classic Mode"); console.debug("[Cider][Audio] CAP - Classic Mode");
break;
case "AGGRESSIVE": // Aggressive
for (let i = 0; i < c_LLPW_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.llpw[i].frequency.value = c_LLPW_FREQUENCIES[i];
CiderAudio.audioNodes.llpw[i].Q.value = c_LLPW_Q[i];
CiderAudio.audioNodes.llpw[i].gain.value = c_LLPW_GAIN[i];
}
for (let i = 1; i < c_LLPW_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.llpw[i - 1].connect(CiderAudio.audioNodes.llpw[i]);
}
switch (hierarchy) {
case 2:
try { CiderAudio.audioNodes.llpw[c_LLPW_FREQUENCIES.length - 1].connect(CiderAudio.audioNodes.vibrantbassNode[0]); } catch (e) { }
break;
case 1:
try { CiderAudio.audioNodes.llpw[c_LLPW_FREQUENCIES.length - 1].connect(CiderAudio.audioNodes.audioBands[0]); } catch (e) { }
break;
case 0:
try { CiderAudio.audioNodes.llpw[c_LLPW_FREQUENCIES.length - 1].connect(CiderAudio.context.destination); } catch (e) { }
break;
}
console.debug("[Cider][Audio] CAP - Clarity Mode");
break;
default:
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.llpw[0].normalize = false;
fetch('./audio/impulses/CAP_Natural.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
switch (hierarchy) {
case 2:
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.vibrantbassNode[0]); } catch (e) { }
break;
case 1:
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.audioBands[0]); } catch (e) { }
break;
case 0:
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.context.destination); } catch (e) { }
break;
}
app.cfg.audio.maikiwiAudio.ciderPPE_value = "NATURAL";
console.debug("[Cider][Audio] CAP - Natural Mode (Defaulted from broki config)");
break;
} }
} }
@ -411,7 +508,8 @@ const CiderAudio = {
switch (hierarchy) { switch (hierarchy) {
case 0: case 0:
try { try {
CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.context.destination);} catch(e){} CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.context.destination);
} catch (e) { }
break; break;
case 1: case 1:
try { CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.audioNodes.audioBands[0]); } catch (e) { } try { CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.audioNodes.audioBands[0]); } catch (e) { }
@ -835,7 +933,8 @@ const CiderAudio = {
switch (hierarchy) { switch (hierarchy) {
case 0: case 0:
try { try {
CiderAudio.audioNodes.audioBands[BANDS.length-1].connect(CiderAudio.context.destination);} catch(e){} CiderAudio.audioNodes.audioBands[BANDS.length - 1].connect(CiderAudio.context.destination);
} catch (e) { }
break; break;
} }

Binary file not shown.

View file

@ -105,7 +105,7 @@ function fallbackinitMusicKit() {
}) })
setTimeout(() => { setTimeout(() => {
app.init() app.init()
if(app.cfg.visual.window_background_style == "mica") { if(app.cfg.visual.window_background_style == "mica" && !app.isDev) {
app.spawnMica() app.spawnMica()
} }
}, 1000) }, 1000)
@ -134,7 +134,7 @@ document.addEventListener('musickitloaded', function () {
function waitForApp() { function waitForApp() {
if (typeof app.init !== "undefined") { if (typeof app.init !== "undefined") {
app.init() app.init()
if(app.cfg.visual.window_background_style == "mica") { if(app.cfg.visual.window_background_style == "mica" && !app.isDev) {
app.spawnMica() app.spawnMica()
} }
} }

View file

@ -7768,3 +7768,208 @@ fieldset:disabled .btn {
padding: 1rem 1rem; padding: 1rem 1rem;
color : #212529; color : #212529;
} }
// carousel
.carousel {
position: relative;
}
.carousel.pointer-event {
-ms-touch-action: pan-y;
touch-action: pan-y;
}
.carousel-inner {
position: relative;
width: 100%;
overflow: hidden;
}
.carousel-inner::after {
display: block;
clear: both;
content: "";
}
.carousel-item {
position: relative;
display: none;
float: left;
width: 100%;
margin-right: -100%;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transition: -webkit-transform 0.6s ease-in-out;
transition: transform 0.6s ease-in-out;
transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.carousel-item {
transition: none;
}
}
.carousel-item.active,
.carousel-item-next,
.carousel-item-prev {
display: block;
}
.carousel-item-next:not(.carousel-item-left),
.active.carousel-item-right {
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
.carousel-item-prev:not(.carousel-item-right),
.active.carousel-item-left {
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
.carousel-fade .carousel-item {
opacity: 0;
transition-property: opacity;
-webkit-transform: none;
transform: none;
}
.carousel-fade .carousel-item.active,
.carousel-fade .carousel-item-next.carousel-item-left,
.carousel-fade .carousel-item-prev.carousel-item-right {
z-index: 1;
opacity: 1;
}
.carousel-fade .active.carousel-item-left,
.carousel-fade .active.carousel-item-right {
z-index: 0;
opacity: 0;
transition: opacity 0s 0.6s;
}
@media (prefers-reduced-motion: reduce) {
.carousel-fade .active.carousel-item-left,
.carousel-fade .active.carousel-item-right {
transition: none;
}
}
.carousel-control-prev,
.carousel-control-next {
position: absolute;
top: 0;
bottom: 0;
z-index: 1;
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: center;
justify-content: center;
width: 15%;
padding: 0;
color: #fff;
text-align: center;
background: none;
border: 0;
opacity: 0.5;
transition: opacity 0.15s ease;
}
@media (prefers-reduced-motion: reduce) {
.carousel-control-prev,
.carousel-control-next {
transition: none;
}
}
.carousel-control-prev:hover, .carousel-control-prev:focus,
.carousel-control-next:hover,
.carousel-control-next:focus {
color: #fff;
text-decoration: none;
outline: 0;
opacity: 0.9;
}
.carousel-control-prev {
left: 0;
}
.carousel-control-next {
right: 0;
}
.carousel-control-prev-icon,
.carousel-control-next-icon {
display: inline-block;
width: 20px;
height: 20px;
background: 50% / 100% 100% no-repeat;
}
.carousel-control-prev-icon {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e");
}
.carousel-control-next-icon {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e");
}
.carousel-indicators {
position: absolute;
right: 0;
bottom: 0;
left: 0;
z-index: 15;
display: -ms-flexbox;
display: flex;
-ms-flex-pack: center;
justify-content: center;
padding-left: 0;
margin-right: 15%;
margin-left: 15%;
list-style: none;
}
.carousel-indicators li {
box-sizing: content-box;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
width: 30px;
height: 3px;
margin-right: 3px;
margin-left: 3px;
text-indent: -999px;
cursor: pointer;
background-color: #fff;
background-clip: padding-box;
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
opacity: .5;
transition: opacity 0.6s ease;
}
@media (prefers-reduced-motion: reduce) {
.carousel-indicators li {
transition: none;
}
}
.carousel-indicators .active {
opacity: 1;
}
.carousel-caption {
position: absolute;
right: 15%;
bottom: 20px;
left: 15%;
z-index: 10;
padding-top: 20px;
padding-bottom: 20px;
color: #fff;
text-align: center;
}

View file

@ -515,7 +515,7 @@
display : flex; display : flex;
justify-content: center; justify-content: center;
align-items : center; align-items : center;
z-index : 6; z-index : 10;
position : sticky; position : sticky;
margin-top : calc(var(--navigationBarHeight) * -1); margin-top : calc(var(--navigationBarHeight) * -1);
@ -841,6 +841,139 @@
} }
} }
// AudioLabs page
.audiolabs-page {
padding: 0px;
.md-option-header {
padding : 1.25em 1.25em;
border-bottom: unset;
border-top : unset;
font-weight : 600;
font-size : 1.0em;
background : rgb(255 255 255 / 3%);
}
.carousel-item>img {
object-fit: cover;
width:100%;
}
.spprofile-line {
height: 300px;
width: 100%;
max-width: 1024px;
padding: 16px;
margin: 0 auto;
.spprofile-viewport {
height: 100%;
position: relative;
border-radius: var(--mediaItemRadius);
overflow: hidden;
box-shadow: var(--mediaItemShadow-Shadow);
background: black;
.spprev, .nextprev {
position: absolute;
height: 100%;
width: 64px;
top: 0;
background: rgb(0 0 0 / 20%);
z-index: 1;
border: 0px;
transition: background 0.2s var(--appleEase), transform 0.2s var(--appleEase);
&:hover {
background: var(--selected);
transform: scale(1.1);
}
&:active {
transition: background 0s var(--appleEase);
background: var(--selected-click);
}
&:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #eee;
opacity: 1;
-webkit-mask-position: center;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 1em;
}
}
.spprev {
left: 0;
&:before {
-webkit-mask-image: url("./views/svg/chevron-left.svg");
}
}
.nextprev {
right: 0;
&:before {
-webkit-mask-image: url("./views/svg/chevron-right.svg");
}
}
.spslide {
position: absolute;
width: 100%;
height: 100%;
overflow: hidden;
background: black;
>img {
WIDTH: 100%;
height: 100%;
object-fit: cover;
}
.sptitle {
position: absolute;
bottom: 0px;
left: 0;
width: 100%;
text-align: center;
font-size: 18px;
text-shadow: 0px 2px 4px #00000033;
}
}
.spfade-enter-active,
.spfade-leave-active {
--transitionTime: 0.2s;
transition: opacity var(--transitionTime) var(--appleEase), transform var(--transitionTime) var(--appleEase);
will-change: opacity, transform;
}
.spfade-enter {
opacity: 0;
transform: scale(1.2) translate3d(0,0,0);
will-change: opacity, transform;
}
.spfade-leave-to {
opacity: 1;
transform: scale(1) translate3d(0,0,0);
will-change: opacity, transform;
}
}
}
.settings-option-body {
margin: 16px;
}
}
//Home //Home
.home-page { .home-page {
top : 0; top : 0;

View file

@ -1,4 +1,9 @@
async function spawnMica() { async function spawnMica() {
if(typeof window.micaSpawned !== "undefined") {
return
}else{
window.micaSpawned = true
}
const micaDiv = document.createElement('div'); const micaDiv = document.createElement('div');
const blurIterations = 6 const blurIterations = 6
micaDiv.id = 'micaEffect'; micaDiv.id = 'micaEffect';

View file

@ -2324,7 +2324,7 @@ const app = new Vue({
try { try {
if (app.showingPlaylist.relationships.tracks.data.length === 0) return "" if (app.showingPlaylist.relationships.tracks.data.length === 0) return ""
const timeInSeconds = Math.round([].concat(...app.showingPlaylist.relationships.tracks.data).reduce((a, {attributes: {durationInMillis}}) => a + durationInMillis, 0) / 1000); const timeInSeconds = Math.round([].concat(...app.showingPlaylist.relationships.tracks.data).reduce((a, {attributes: {durationInMillis}}) => a + durationInMillis, 0) / 1000);
return `${app.showingPlaylist.relationships.tracks.data.length} ${app.getLz(`term.${app.showingPlaylist.relationships.tracks.data.length === 1 ? "track" : "tracks"}`)}, ${app.convertTime(timeInSeconds, 'long')}` return `${app.showingPlaylist.relationships.tracks.data.length} ${app.getLz("term.track", {"count": app.showingPlaylist.relationships.tracks.data.length})}, ${app.convertTime(timeInSeconds, 'long')}`
} catch (err) { } catch (err) {
return "" return ""
} }

View file

@ -9889,7 +9889,7 @@ input[type=checkbox][switch]:checked:active::before {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
z-index: 6; z-index: 10;
position: sticky; position: sticky;
margin-top: calc(var(--navigationBarHeight) * -1); margin-top: calc(var(--navigationBarHeight) * -1);
} }

View file

@ -142,8 +142,8 @@ body.notransparency::before {
} }
#app { #app {
--color1: rgba(30, 30, 30, 30%); --color1: rgba(15, 15, 15, 30%);
--color2: rgba(15, 15, 15, 30%); --color2: rgba(30, 30, 30, 50%);
--bgColor: transparent; --bgColor: transparent;
--bgWidth: 0px; --bgWidth: 0px;
--bgHeight: 0px; --bgHeight: 0px;
@ -799,25 +799,28 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
opacity: 0.6; opacity: 0.6;
} }
} }
} }
.app-sidebar-item:hover { .app-sidebar-item:hover {
border: 1px solid rgb(200 200 200 / 5%); border: 1px solid rgb(200 200 200 / 0%);
background: rgb(200 200 200 / 15%); background: rgb(180 180 180 / 15%);
// cursor: pointer;
} }
.app-sidebar-item:active { .app-sidebar-item:active {
border: 1px solid rgb(200 200 200 / 5%); border: 1px solid rgb(200 200 200 / 0%);
background: rgb(200 200 200 / 15%); background: rgb(150 150 150 / 15%);
transform: scale(0.98); // transform: scale(0.98);
transition: transform 0s; transition: transform 0s;
} }
.app-sidebar-item.active { .app-sidebar-item.active {
border: 1px solid rgb(200 200 200 / 5%); border: 1px solid rgb(200 200 200 / 0%);
background: rgb(200 200 200 / 15%); background: rgb(200 200 200 / 15%);
transform: scale(1); transform: scale(1);
transition: transform 0s; transition: transform 0s;
cursor: default;
} }
.app-sidebar-item.active::after { .app-sidebar-item.active::after {
@ -830,6 +833,17 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
border-radius: 10px; border-radius: 10px;
left: 0px; left: 0px;
background: var(--keyColor); background: var(--keyColor);
animation: expandIndicator .2s cubic-bezier(0.25, 1, 0.5, 1);
@keyframes expandIndicator {
0% {
transform: scaleY(0);
}
100% {
transform: scaleY(1);
}
}
} }
.app-chrome { .app-chrome {
@ -1535,6 +1549,14 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
filter: none !important; filter: none !important;
} }
.lyric-body:hover > .lyric-line:not(.active) {
filter: none !important;
}
.lyric-body > .lyric-line:not(.active) {
transition: filter var(--appleEase) 0.5s ease;
}
.lyricWaiting { .lyricWaiting {
margin-top: 8px; margin-top: 8px;
display: none; display: none;

View file

@ -1,5 +1,5 @@
<script type="text/x-template" id="castmenu"> <script type="text/x-template" id="castmenu">
<div class="spatialproperties-panel castmenu modal-fullscreen" > <div class="spatialproperties-panel castmenu modal-fullscreen" @click.self="close()" @contextmenu.self="close()">
<div class="modal-window"> <div class="modal-window">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">Cast To Devices</div> <div class="modal-title">Cast To Devices</div>

View file

@ -1,5 +1,5 @@
<script type="text/x-template" id="eq-view"> <script type="text/x-template" id="eq-view">
<div class="modal-fullscreen equalizer-panel"> <div class="modal-fullscreen equalizer-panel" @click.self="close()" @contextmenu.self="close()">
<div class="modal-window" > <div class="modal-window" >
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{$root.getLz('term.equalizer')}}</div> <div class="modal-title">{{$root.getLz('term.equalizer')}}</div>

View file

@ -1,5 +1,5 @@
<script type="text/x-template" id="spatial-properties"> <script type="text/x-template" id="spatial-properties">
<div class="modal-fullscreen spatialproperties-panel"> <div class="modal-fullscreen spatialproperties-panel" @click.self="close()" @contextmenu.self="close()">
<div class="modal-window" v-if="ready"> <div class="modal-window" v-if="ready">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{$root.getLz('spatial.spatialProperties')}}</div> <div class="modal-title">{{$root.getLz('spatial.spatialProperties')}}</div>

View file

@ -16,9 +16,9 @@
<button onclick="window.open('https://ko-fi.com/cryptofyre')" class="md-btn sponsorBtn"><img src="./assets/ko_fi.svg"/>Ko-fi</button> <button onclick="window.open('https://ko-fi.com/cryptofyre')" class="md-btn sponsorBtn"><img src="./assets/ko_fi.svg"/>Ko-fi</button>
<button onclick="window.open('https://opencollective.com/ciderapp')" class="md-btn sponsorBtn"><img src="./assets/open_collective.svg"/>Open Collective</button> <button onclick="window.open('https://opencollective.com/ciderapp')" class="md-btn sponsorBtn"><img src="./assets/open_collective.svg"/>Open Collective</button>
<h3>{{$root.getLz('term.socials')}}</h3> <h3>{{$root.getLz('term.socials')}}</h3>
<button onclick="window.open('https://github.com/ciderapp/Cider')" class="md-btn sponsorBtn"><img style="width: 20.5px;" src="./assets/github.svg"/>{{$root.getLz('term.github')}}</button> <button onclick="window.open('https://github.com/ciderapp/Cider')" class="md-btn sponsorBtn"><img src="./assets/github.svg"/>{{$root.getLz('term.github')}}</button>
<button onclick="window.open('https://discord.gg/applemusic')" class="md-btn sponsorBtn"><img src="./assets/discord.svg"/>{{$root.getLz('term.discord')}}</button> <button onclick="window.open('https://discord.gg/applemusic')" class="md-btn sponsorBtn"><img style="height: 26px;" src="./assets/discord.svg"/>{{$root.getLz('term.discord')}}</button>
<button onclick="window.open('https://twitter.com/UseCider')" class="md-btn sponsorBtn"><img style="width: 20.5px;" src="./assets/twitter.svg"/>Twitter</button> <button onclick="window.open('https://twitter.com/UseCider')" class="md-btn sponsorBtn"><img src="./assets/twitter.svg"/>Twitter</button>
</div> </div>
<div class="col"> <div class="col">
@ -113,7 +113,7 @@
name: 'NoseySG', name: 'NoseySG',
link: 'https://twitter.com/noah_grose', link: 'https://twitter.com/noah_grose',
role: app.getLz('term.socialTeam'), role: app.getLz('term.socialTeam'),
avatar: 'https://pbs.twimg.com/profile_images/1422541289837535239/qg-aaoP9_400x400.jpg' avatar: 'https://pbs.twimg.com/profile_images/1496944907260420099/D5gl6H4J_400x400.jpg'
} }
] ]
} }

View file

@ -1,11 +1,13 @@
<script type="text/x-template" id="audiolabs-page"> <script type="text/x-template" id="audiolabs-page">
<div class="content-inner settings-page"> <div class="content-inner audiolabs-page ">
<div class="md-option-container"> <div class="md-option-container">
<div class="md-option-header">
<span>{{$root.getLz('settings.option.audio.audioLab')}}</span>
</div>
<div class="settings-option-body"> <div class="settings-option-body">
<div class="md-option-line" v-show="!app.cfg.advanced.AudioContext"> <div class="md-option-line">
<b-jumbotron :header="$root.getLz('settings.option.audio.audioLab')"
:lead="$root.getLz('term.creditDesignedBy').replace('${authorUsername}', 'Maikiwi')"></b-jumbotron>
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === false">
<div class="md-option-segment"> <div class="md-option-segment">
{{$root.getLz('settings.warn.audioLab.withoutAF')}} {{$root.getLz('settings.warn.audioLab.withoutAF')}}
</div> </div>
@ -13,29 +15,35 @@
{{$root.getLz('term.settings')}} {{$root.getLz('term.settings')}}
</button> </button>
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext"> <div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
<div class="md-option-segment"> <div class="md-option-segment">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE')}}
<br> <br>
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.ciderPPE" v-on:change="CiderAudio.hierarchical_loading();" switch/> <input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.ciderPPE"
v-on:change="CiderAudio.hierarchical_loading();" switch/>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext && app.cfg.audio.maikiwiAudio.ciderPPE === true"> <div class="md-option-line" v-show="app.cfg.audio.maikiwiAudio.ciderPPE === true">
<div class="md-option-segment"> <div class="md-option-segment">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength')}}
<br> <br>
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <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" v-on:click="ciderPPEStandard"> <select class="md-select" style="width:180px;"
v-model="app.cfg.audio.maikiwiAudio.ciderPPE_value"
v-on:change="CiderAudio.hierarchical_loading()">
<option value="NATURAL">Natural</option>
<option value="STANDARD">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard')}}
</button> </option>
<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" v-on:click="ciderPPEClarity"> <option value="AGGRESSIVE">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive')}}
</button> </option>
</select>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext"> <div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
@ -45,22 +53,28 @@
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmth.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmth.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.analogWarmth" v-on:change="CiderAudio.hierarchical_loading();" switch/> <input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.analogWarmth"
v-on:change="CiderAudio.hierarchical_loading();" switch/>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true && app.cfg.audio.maikiwiAudio.analogWarmth === true"> <div class="md-option-line"
v-show="app.cfg.advanced.AudioContext === true && app.cfg.audio.maikiwiAudio.analogWarmth === true">
<div class="md-option-segment"> <div class="md-option-segment">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity')}}
<br> <br>
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <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" v-on:click="ChangeanalogWarmth(1.25)"> <select class="md-select" style="width:180px;"
v-model="app.cfg.audio.maikiwiAudio.analogWarmth_value"
v-on:change="ChangeanalogWarmth()">
<option value="SMOOTH">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth')}}
</button> </option>
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.analogWarmth_value === 1.75" v-model="app.cfg.audio.maikiwiAudio.analogWarmth_value" v-on:click="ChangeanalogWarmth(1.75)"> <option value="WARM">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm')}}
</button> </option>
</select>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true"> <div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
@ -70,7 +84,9 @@
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.spatial" :disabled="app.cfg.audio.maikiwiAudio.spatial === true" v-on:change="toggleSpatial" switch/> <input type="checkbox" v-model="app.cfg.audio.spatial"
:disabled="app.cfg.audio.maikiwiAudio.spatial === true" v-on:change="toggleSpatial"
switch/>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true"> <div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
@ -80,22 +96,37 @@
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.spatial" :disabled="app.cfg.audio.spatial === false" v-on:change="toggleMaikiwiSpatial" switch/> <input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.spatial"
:disabled="app.cfg.audio.spatial === false" v-on:change="toggleMaikiwiSpatial" switch/>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.audio.maikiwiAudio.spatial === true && app.cfg.audio.spatial === true"> <div class="md-option-line"
v-show="app.cfg.audio.maikiwiAudio.spatial === true && app.cfg.audio.spatial === true">
<div class="md-option-segment"> <div class="md-option-segment">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile')}}
<br> <br>
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.spatialType === 0" v-model="app.cfg.audio.maikiwiAudio.spatialType" onclick="app.cfg.audio.maikiwiAudio.spatialType = 0"> <select class="md-select" style="width:180px;"
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard')}} v-model="$root.cfg.audio.maikiwiAudio.spatialProfile"
</button> v-on:change="toggleMaikiwiSpatial">
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.spatialType === 1" v-model="app.cfg.audio.maikiwiAudio.spatialType" onclick="app.cfg.audio.maikiwiAudio.spatialType = 1"> <option v-for="profile in spprofiles" :value="profile.id">{{ profile.name }}</option>
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile')}} </select>
</button> </div>
</div>
<div class="spprofile-line" v-show="app.cfg.audio.maikiwiAudio.spatial === true && app.cfg.audio.spatial === true">
<div class="spprofile-viewport">
<button class="spprev" @click="profilePrev"></button>
<button class="nextprev" @click="profileNext"></button>
<template v-for="profile in spprofiles" v-if="$root.cfg.audio.maikiwiAudio.spatialProfile == profile.id">
<transition name="spfade">
<div class="spslide" :key="profile.id">
<img v-if="profile.img" loading="eager" decoding="async" :src="profile.img" alt="">
<h1 class="sptitle">{{ profile.name }}</h1>
</div>
</transition>
</template>
</div> </div>
</div> </div>
<div style="opacity: 0.5; pointer-events: none"> <div style="opacity: 0.5; pointer-events: none">
@ -106,7 +137,8 @@
<div class="md-option-segment"> <div class="md-option-segment">
Cider Atmosphere Realizer™ Cider Atmosphere Realizer™
<br> <br>
<small>Realizes an entirely different musical atmosphere only to be found on state of the art audio setups.</small> <small>Realizes an entirely different musical atmosphere only to be found on state of the
art audio setups.</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<button class="md-btn"> <button class="md-btn">
@ -121,20 +153,25 @@
<div class="md-option-segment"> <div class="md-option-segment">
Cider Origami™ Vocal Enhancer/Remasterer Cider Origami™ Vocal Enhancer/Remasterer
<br> <br>
<small>Re-textures the vocals by carving out the frequencies and adjusts them to the selected profile.<br> <small>Re-textures the vocals by carving out the frequencies and adjusts them to the
selected profile.<br>
<b>Modern:</b> <b>Modern:</b>
Embracing 21st Century Equipment, this revives old recordings while preserving the Master's original intent.<br> Embracing 21st Century Equipment, this revives old recordings while preserving the
Master's original intent.<br>
<b>Intimate:</b> <b>Intimate:</b>
Bringing the vocals closer to your heart, communicating only the most personal connection between you and the artist.<br> Bringing the vocals closer to your heart, communicating only the most personal
connection between you and the artist.<br>
<b>Breathy:</b> <b>Breathy:</b>
Giving the perfectionists a new voice, this adds naturality to the vocals by making them more breathy and more natural. <br> Giving the perfectionists a new voice, this adds naturality to the vocals by making them
more breathy and more natural. <br>
<b>Articulate:</b> <b>Articulate:</b>
Wrapping every detail of the vocal to your ear, resulting in a more expressive voice. Wrapping every detail of the vocal to your ear, resulting in a more expressive voice.
</small> </small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select"> <select class="md-select">
<option value="none">{{$root.getLz('settings.header.visual.windowBackgroundStyle.none')}} <option value="none">
{{$root.getLz('settings.header.visual.windowBackgroundStyle.none')}}
</option> </option>
<option value="modern"> <option value="modern">
Modern Modern
@ -162,17 +199,51 @@
data: function () { data: function () {
return { return {
app: this.$root, app: this.$root,
spprofiles: CiderAudio.spatialProfiles
} }
}, },
mounted: function () { mounted: function () {
}, },
methods: { methods: {
profileNext() {
var next = this.spprofiles.find(function (profile) {
return profile.id === this.$root.cfg.audio.maikiwiAudio.spatialProfile;
}.bind(this));
if (next) {
next = this.spprofiles[this.spprofiles.indexOf(next) + 1];
if (next) {
this.$root.cfg.audio.maikiwiAudio.spatialProfile = next.id;
} else {
this.$root.cfg.audio.maikiwiAudio.spatialProfile = this.spprofiles[0].id;
}
} else {
this.$root.cfg.audio.maikiwiAudio.spatialProfile = this.spprofiles[0].id;
}
this.toggleMaikiwiSpatial()
},
profilePrev() {
// select the previous profile based on $root.cfg.audio.maikiwiAudio.spatialProfile
var prev = this.spprofiles.find(function (profile) {
return profile.id === this.$root.cfg.audio.maikiwiAudio.spatialProfile;
}.bind(this));
if (prev) {
prev = this.spprofiles[this.spprofiles.indexOf(prev) - 1];
if (prev) {
this.$root.cfg.audio.maikiwiAudio.spatialProfile = prev.id;
} else {
this.$root.cfg.audio.maikiwiAudio.spatialProfile = this.spprofiles[this.spprofiles.length - 1].id;
}
} else {
this.$root.cfg.audio.maikiwiAudio.spatialProfile = this.spprofiles[this.spprofiles.length - 1].id;
}
this.toggleMaikiwiSpatial()
},
toggleSpatial: function () { toggleSpatial: function () {
if (app.cfg.audio.spatial) { if (app.cfg.audio.spatial) {
CiderAudio.spatialOn() CiderAudio.spatialOn()
CiderAudio.hierarchical_loading(); CiderAudio.hierarchical_loading();
} } else {
else {
CiderAudio.spatialOff() CiderAudio.spatialOff()
} }
}, },
@ -180,37 +251,33 @@
if (app.cfg.audio.maikiwiAudio.spatial === true) { if (app.cfg.audio.maikiwiAudio.spatial === true) {
CiderAudio.spatialOn() CiderAudio.spatialOn()
CiderAudio.hierarchical_loading(); CiderAudio.hierarchical_loading();
let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) + 12) / 20)); //let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) - 14) / 20));
if (normalized > 1.0) {app.mk.volume = 1} //app.mk.volume = normalized
else {app.mk.volume = normalized} // -13dBFS Target
} } else {
else { //let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) + 14) / 20));
let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) - 12) / 20)); //app.mk.volume = normalized
app.mk.volume = normalized
CiderAudio.spatialOn() CiderAudio.spatialOn()
CiderAudio.hierarchical_loading(); CiderAudio.hierarchical_loading();
} }
}, },
ciderPPEStandard: function () { ChangeanalogWarmth: 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 = c_LLPW_GAIN[i];
}
},
ChangeanalogWarmth: function (multiplier) {
app.cfg.audio.maikiwiAudio.analogWarmth_value = multiplier
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]; 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];
switch (app.cfg.audio.maikiwiAudio.analogWarmth_value) {
case "SMOOTH":
for (let i = 0; i < 23; i++) { for (let i = 0; i < 23; i++) {
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * multiplier; CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.25;
} }
break;
case "WARM":
for (let i = 0; i < 23; i++) {
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.75;
}
break;
}
}, },
}}) }
})
</script> </script>

View file

@ -9,6 +9,7 @@
</div> </div>
<div class="col-auto nopadding flex-center"> <div class="col-auto nopadding flex-center">
<button class="cd-btn-seeall" @click="seeAllHistory()">{{app.getLz('term.history')}}</button> <button class="cd-btn-seeall" @click="seeAllHistory()">{{app.getLz('term.history')}}</button>
<button class="cd-btn-seeall" @click="seeAllRecentlyPlayed()">{{app.getLz('term.seeAll')}}</button>
</div> </div>
</div> </div>
<div class="well artistfeed-well"> <div class="well artistfeed-well">
@ -120,12 +121,19 @@
this.getListenNowData() this.getListenNowData()
await this.getArtistFeed() await this.getArtistFeed()
await this.getFavorites() await this.getFavorites()
await this.getRecentlyPlayed()
if (new Date().getMonth() == 11) { if (new Date().getMonth() == 11) {
this.seenReplay = false this.seenReplay = false
localStorage.setItem('seenReplay', false) localStorage.setItem('seenReplay', false)
} }
}, },
methods: { methods: {
async seeAllRecentlyPlayed() {
let hist = await app.mk.api.v3.music(`/v1/me/recent/played`, {
l: this.$root.mklang
})
app.showCollection(hist.data, app.getLz('home.recentlyPlayed'))
},
async seeAllHistory() { async seeAllHistory() {
let hist = await app.mk.api.v3.music(`/v1/me/recent/played/tracks`, { let hist = await app.mk.api.v3.music(`/v1/me/recent/played/tracks`, {
l: this.$root.mklang l: this.$root.mklang
@ -199,8 +207,11 @@
}) })
} catch (error) { } } catch (error) { }
}, },
getRecentlyPlayed() { async getRecentlyPlayed() {
let hist = await app.mk.api.v3.music(`/v1/me/recent/played`, {
l: this.$root.mklang
})
this.recentlyPlayed = hist.data.data
}, },
async getListenNowData() { async getListenNowData() {
let self = this let self = this
@ -216,7 +227,6 @@
self.sectionsReady.push("madeForYou") self.sectionsReady.push("madeForYou")
try { try {
self.recentlyPlayed = data.data.data[1].relationships.contents.data
self.friendsListeningTo = data.data.data.filter(section => { self.friendsListeningTo = data.data.data.filter(section => {
if (section.meta.metrics.moduleType == "11") { if (section.meta.metrics.moduleType == "11") {
return section return section

View file

@ -44,9 +44,11 @@
</div> </div>
</div> </div>
<div class="well"> <div class="well">
<div class="albums-square-container">
<mediaitem-square v-if="library.albums.viewAs == 'covers'" :item="item" <mediaitem-square v-if="library.albums.viewAs == 'covers'" :item="item"
v-for="item in library.albums.displayListing"> v-for="item in library.albums.displayListing">
</mediaitem-square> </mediaitem-square>
</div>
<mediaitem-list-item v-if="library.albums.viewAs == 'list'" :show-duration="false" :show-meta-data="true" <mediaitem-list-item v-if="library.albums.viewAs == 'list'" :show-duration="false" :show-meta-data="true"
:show-library-status="false" :item="item" :show-library-status="false" :item="item"
v-for="item in library.albums.displayListing"> v-for="item in library.albums.displayListing">

View file

@ -40,7 +40,7 @@
<mediaitem-square :item="artistData.relationships.artist.data[0]"></mediaitem-square> <mediaitem-square :item="artistData.relationships.artist.data[0]"></mediaitem-square>
</div> </div>
<div class="card-footer"> <div class="card-footer">
{{ artistData.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes')}}<br> {{ artistData.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes', {'count': artistData.attributes.listenTimeInMinutes})}}<br>
{{$root.getLz('term.listenedTo')}} {{ artistData.attributes.playCount }} {{$root.getLz('term.times')}} {{$root.getLz('term.listenedTo')}} {{ artistData.attributes.playCount }} {{$root.getLz('term.times')}}
</div> </div>
</div> </div>
@ -55,7 +55,7 @@
<mediaitem-square :item="albumData.relationships.album.data[0]"></mediaitem-square> <mediaitem-square :item="albumData.relationships.album.data[0]"></mediaitem-square>
</div> </div>
<div class="card-footer"> <div class="card-footer">
{{ albumData.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes')}}<br> {{ albumData.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes', {'count': albumData.attributes.listenTimeInMinutes})}}<br>
{{ albumData.attributes.playCount }} {{$root.getLz('term.plays')}} {{ albumData.attributes.playCount }} {{$root.getLz('term.plays')}}
</div> </div>
</div> </div>

View file

@ -24,6 +24,22 @@
<input type="checkbox" v-model="$root.cfg.general.privateEnabled" v-on:change="$root.mk.privateEnabled = $root.cfg.general.privateEnabled" switch/> <input type="checkbox" v-model="$root.cfg.general.privateEnabled" v-on:change="$root.mk.privateEnabled = $root.cfg.general.privateEnabled" switch/>
</div> </div>
</div> </div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.option.window.openOnStartup')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.general.onStartup.enabled" switch/>
</div>
</div>
<div class="md-option-line" v-show="app.cfg.general.onStartup.enabled">
<div class="md-option-segment">
{{$root.getLz('settings.option.window.openOnStartup.hidden')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.general.onStartup.hidden" switch/>
</div>
</div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
{{$root.getLz('settings.option.general.resumebehavior')}}<br> {{$root.getLz('settings.option.general.resumebehavior')}}<br>
@ -121,8 +137,13 @@
<br> <br>
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioNormalization.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioNormalization.description')}}</small>
</div> </div>
<div>
<span v-if="app.cfg.audio.equalizer.vibrantBass != 0 || app.cfg.audio.maikiwiAudio.spatial === true || app.cfg.audio.maikiwiAudio.ciderPPE === true">
<small style="font-weight: bold;">{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled')}}</small>
</span>
</div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.normalization" v-on:change="toggleNormalization" :disabled="app.cfg.audio.equalizer.vibrantBass !== '0' || app.cfg.audio.maikiwiAudio.spatial === true || app.cfg.audio.maikiwiAudio.ciderPPE === true" switch/> <input type="checkbox" v-model="app.cfg.audio.normalization" v-on:change="toggleNormalization" :disabled="app.cfg.audio.equalizer.vibrantBass != 0 || app.cfg.audio.maikiwiAudio.spatial === true || app.cfg.audio.maikiwiAudio.ciderPPE === true" switch/>
</div> </div>
</div> </div>
</div> </div>
@ -164,7 +185,7 @@
{{$root.getLz('settings.option.visual.windowBackgroundStyle')}} {{$root.getLz('settings.option.visual.windowBackgroundStyle')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" @change="$root.getNowPlayingArtworkBG(undefined, true)" <select class="md-select" @change="windowBgStyleChange"
v-model="app.cfg.visual.window_background_style"> v-model="app.cfg.visual.window_background_style">
<option value="none">{{$root.getLz('settings.header.visual.windowBackgroundStyle.none')}} <option value="none">{{$root.getLz('settings.header.visual.windowBackgroundStyle.none')}}
</option> </option>
@ -257,22 +278,6 @@
<span>{{$root.getLz('settings.header.window')}}</span> <span>{{$root.getLz('settings.header.window')}}</span>
</div> </div>
<div class="settings-option-body"> <div class="settings-option-body">
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.option.window.openOnStartup')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.general.onStartup.enabled" switch/>
</div>
</div>
<div class="md-option-line" v-show="app.cfg.general.onStartup.enabled">
<div class="md-option-segment">
{{$root.getLz('settings.option.window.openOnStartup.hidden')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.general.onStartup.hidden" switch/>
</div>
</div>
<div class="md-option-line" v-show="app.platform !== 'darwin'"> <div class="md-option-line" v-show="app.platform !== 'darwin'">
<div class="md-option-segment"> <div class="md-option-segment">
{{$root.getLz("settings.option.window.close_button_hide")}} {{$root.getLz("settings.option.window.close_button_hide")}}
@ -881,6 +886,12 @@
} }
}, },
methods: { methods: {
windowBgStyleChange() {
this.$root.getNowPlayingArtworkBG(undefined, true)
if(this.$root.cfg.visual.window_background_style == "mica") {
this.$root.spawnMica()
}
},
reinstallWidevineCDM () { reinstallWidevineCDM () {
bootbox.confirm("Are you sure you want to reinstall Widevine?", (ok)=>{ bootbox.confirm("Are you sure you want to reinstall Widevine?", (ok)=>{
if(ok) { if(ok) {

View file

@ -1,5 +1,5 @@
{ {
"electronVersion": "16.0.7", "electronVersion": "16.0.07",
"electronDownload": { "electronDownload": {
"version": "16.0.7+wvcus", "version": "16.0.7+wvcus",
"mirror": "https://github.com/castlabs/electron-releases/releases/download/v" "mirror": "https://github.com/castlabs/electron-releases/releases/download/v"