Merge branch 'develop' into update-owo
This commit is contained in:
commit
a95fffea47
54 changed files with 1182 additions and 586 deletions
|
@ -2,14 +2,18 @@ version: 2.1
|
|||
orbs: # adds orbs to your configuration
|
||||
jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible
|
||||
branches:
|
||||
ignore: i10n-develop
|
||||
ignore: feature/i10n
|
||||
jobs:
|
||||
build:
|
||||
working_directory: ~/Cider
|
||||
docker:
|
||||
- image: circleci/node:16
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
name: Set App Version
|
||||
command: echo "export APP_VERSION=$(grep '"version":.*' package.json | cut -d '"' -f 4 | head -1)" >> $BASH_ENV
|
||||
- run:
|
||||
name: Update Package Managers
|
||||
command: sudo npm update -g npm yarn
|
||||
|
@ -29,26 +33,32 @@ jobs:
|
|||
name: Install system build dependencies
|
||||
command: |
|
||||
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 dpkg --add-architecture i386
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y wine32
|
||||
sudo apt install -y gh
|
||||
- run:
|
||||
name: Append Commit BuildID to Version
|
||||
command: yarn circle:append-bid
|
||||
name: Fix Versioning and Add Channel
|
||||
command: yarn circle:script
|
||||
- run:
|
||||
name: TypeScript Compile
|
||||
command: yarn build
|
||||
- run:
|
||||
name: Generate Builds (Linux)
|
||||
command: yarn dist -l -p never
|
||||
command: yarn electron-builder -l -p never
|
||||
post-steps:
|
||||
- jira/notify
|
||||
- run:
|
||||
name: Generate Builds (Windows)
|
||||
command: yarn dist -w --x64 -p never
|
||||
command: yarn electron-builder -w --x64 -p never
|
||||
post-steps:
|
||||
- jira/notify
|
||||
- run:
|
||||
name: Generate Builds (Winget)
|
||||
command: yarn winget -p never
|
||||
command: yarn electron-builder --win -c winget.json -p never
|
||||
post-steps:
|
||||
- jira/notify
|
||||
- run:
|
||||
|
@ -62,14 +72,8 @@ jobs:
|
|||
mv ~/Cider/dist/*.yml ~/Cider/dist/artifacts
|
||||
mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts
|
||||
- store_artifacts:
|
||||
path: ~/Cider/dist/artifacts
|
||||
publish-github-release:
|
||||
docker:
|
||||
- image: cibuilds/github:0.10
|
||||
steps:
|
||||
- attach_workspace:
|
||||
at: ~/Cider/dist/artifacts
|
||||
path: ~/Cider/dist/artifacts
|
||||
- run:
|
||||
name: "Publish Release on GitHub"
|
||||
name: Publish Release
|
||||
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
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
|
||||
[](https://winstall.app/apps/CiderCollective.Cider.Nightly)
|
||||
|
||||
[](https://flathub.org/apps/details/sh.cider.Cider)
|
||||
|
||||
<!--
|
||||
|
||||
[](https://winstall.app/apps/cryptofyre.AppleMusicElectron)
|
||||
|
@ -36,6 +38,8 @@
|
|||
-->
|
||||
[](https://aur.archlinux.org/packages/cider)
|
||||
|
||||
[](https://flathub.org/apps/details/sh.cider.Cider)
|
||||
|
||||
### Compiling and Configuration
|
||||
For more information surrounding configuration, compiling and other developer documentation, see the [compilation docs](https://cider.sh/compile.html).
|
||||
|
||||
|
|
10
package.json
10
package.json
|
@ -7,7 +7,7 @@
|
|||
"license": "AGPL-3.0",
|
||||
"main": "./build/index.js",
|
||||
"author": "Cider Collective <cryptofyre@cider.sh> (https://cider.sh)",
|
||||
"repository": "https://github.com/ciderapp/Cider.git",
|
||||
"repository": "github:ciderapp/Cider",
|
||||
"bugs": {
|
||||
"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",
|
||||
"msft": "yarn build && electron-builder -c msft-package.json",
|
||||
"postinstall": "electron-builder install-app-deps",
|
||||
"circle:append-bid": "node resources/appendCommitToVersion"
|
||||
"circle:script": "node resources/circle"
|
||||
},
|
||||
"dependencies": {
|
||||
"@sentry/electron": "^3.0.2",
|
||||
|
@ -69,7 +69,7 @@
|
|||
"youtube-search-without-api-key": "^1.0.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/discord-rpc": "^4.0.0",
|
||||
"@types/discord-rpc": "4.0.0",
|
||||
"@types/express": "^4.17.13",
|
||||
"@types/qrcode-terminal": "^0.12.0",
|
||||
"@types/ws": "^8.5.1",
|
||||
|
@ -105,9 +105,9 @@
|
|||
}
|
||||
],
|
||||
"build": {
|
||||
"electronVersion": "16.0.10+wvcus",
|
||||
"electronVersion": "16.0.7",
|
||||
"electronDownload": {
|
||||
"version": "16.0.10+wvcus",
|
||||
"version": "16.0.7+wvcus",
|
||||
"mirror": "https://github.com/castlabs/electron-releases/releases/download/v"
|
||||
},
|
||||
"appId": "cider",
|
||||
|
|
|
@ -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
53
resources/circle.js
Normal 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}`);
|
||||
});
|
||||
|
|
@ -8,4 +8,4 @@
|
|||
]
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -193,4 +193,7 @@ Update 10/3/2022 14:00 UTC
|
|||
* `settings.header.window`: Added for `en_US`
|
||||
* `settings.header.window.description`: 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`
|
|
@ -225,7 +225,7 @@
|
|||
"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.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.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",
|
||||
|
|
|
@ -230,7 +230,7 @@
|
|||
"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.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.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)",
|
||||
|
|
|
@ -293,7 +293,7 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
|
||||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Wawm",
|
||||
"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.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)",
|
||||
|
|
|
@ -233,7 +233,7 @@
|
|||
"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.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.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)",
|
||||
|
|
|
@ -174,6 +174,7 @@
|
|||
"term.plays": "Plays",
|
||||
"term.topGenres": "Top Genres",
|
||||
"term.confirmLogout": "Are you sure you want to logout?",
|
||||
"term.creditDesignedBy": "Designed by ${authorUsername}",
|
||||
"home.title": "Home",
|
||||
"home.recentlyPlayed": "Recently Played",
|
||||
"home.recentlyAdded": "Recently Added",
|
||||
|
@ -293,7 +294,7 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
|
||||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
|
||||
"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.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)",
|
||||
|
@ -301,6 +302,7 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
|
||||
"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.disabled": "Managed by Audio Lab",
|
||||
"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.tunedAudioSpatialization": "Cider Tuned Spatialization",
|
||||
|
|
|
@ -225,7 +225,7 @@
|
|||
"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.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.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",
|
||||
|
|
|
@ -265,7 +265,7 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
|
||||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
|
||||
"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.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!)",
|
||||
|
|
|
@ -225,7 +225,7 @@
|
|||
"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.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.description": "Mengubah kekuatan pemrosesan yang dilakukan pada audio. (Agresif dapat menghasilkan hasil yang tidak diinginkan)",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standar",
|
||||
|
|
|
@ -279,7 +279,7 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "부드러움",
|
||||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "따뜻함",
|
||||
"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.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP 강도",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "오디오 처리 강도를 변경합니다. (적극적으로 설정 시 바람직하지 않은 결과를 초래할 수 있습니다.)",
|
||||
|
|
|
@ -219,7 +219,7 @@
|
|||
"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.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.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.)",
|
||||
|
|
|
@ -249,7 +249,7 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality": "Включить расширенный функционал",
|
||||
"settings.option.audio.enableAdvancedFunctionality.description": "Включение функции AudioContext позволит использовать расширенные функции звука, такие как нормализация звука, эквалайзеры и визуализаторы, однако в некоторых системах это может вызвать заикание звуковых дорожек.",
|
||||
"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.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Режим CAP",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Изменяет режим обработки звука. (Режим агрессии может привести к нежелаемым результатам)",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"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.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.description": "Zmení silu CAP (Agresívná môže spôsobiť nežiadané výsledky)",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Štandardná",
|
||||
|
|
|
@ -174,6 +174,7 @@
|
|||
"term.plays": "Plays",
|
||||
"term.topGenres": "Top Genres",
|
||||
"term.confirmLogout": "Are you sure you want to logout?",
|
||||
"term.creditDesignedBy": "Designed by ${authorUsername}",
|
||||
"home.title": "Home",
|
||||
"home.recentlyPlayed": "Recently Played",
|
||||
"home.recentlyAdded": "Recently Added",
|
||||
|
@ -293,7 +294,7 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
|
||||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
|
||||
"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.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)",
|
||||
|
@ -301,6 +302,7 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
|
||||
"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.disabled": "Managed by Audio Lab",
|
||||
"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.tunedAudioSpatialization": "Cider Tuned Spatialization",
|
||||
|
|
|
@ -228,7 +228,7 @@
|
|||
"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.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.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)",
|
||||
|
|
|
@ -231,7 +231,7 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality": "進階功能",
|
||||
"settings.option.audio.enableAdvancedFunctionality.description": "啟用 AudioContext 將解鎖類似音量平衡和均衡器的進階功能。但是會在一些電腦造成音樂卡頓。",
|
||||
"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.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數碼音訊增強處理設定",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進程度(激進型選項有可能會引起雜訊)",
|
||||
|
|
|
@ -237,7 +237,7 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "溫和",
|
||||
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "溫暖",
|
||||
"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.description": "將更改音訊處理的激進/振奮程度(增強選項有可能會引起雜訊)。",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "標準",
|
||||
|
|
|
@ -185,7 +185,7 @@ export class BrowserWindow {
|
|||
page: "library-albums",
|
||||
component: `<cider-library-albums :data="library.songs"></cider-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",
|
||||
component: `<cider-applecurator :data="appleCurator"></cider-applecurator>`,
|
||||
|
|
|
@ -55,11 +55,11 @@ export class Store {
|
|||
"normalization": false,
|
||||
"maikiwiAudio": {
|
||||
"ciderPPE": false,
|
||||
"ciderPPE_value": 0.5,
|
||||
"ciderPPE_value": "NATURAL",
|
||||
"analogWarmth": false,
|
||||
"analogWarmth_value": 1.25,
|
||||
"analogWarmth_value": "SMOOTH",
|
||||
"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
|
||||
'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],
|
||||
|
|
|
@ -134,24 +134,13 @@ export class utils {
|
|||
bw.win.webContents.send('update-response', "update-error")
|
||||
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 = {
|
||||
provider: 'generic',
|
||||
url: base_url,
|
||||
provider: 'github',
|
||||
protocol: 'https',
|
||||
owner: 'ciderapp',
|
||||
repo: 'cider-releases',
|
||||
allowDowngrade: true,
|
||||
}
|
||||
|
||||
let autoUpdater: any = null
|
||||
if (process.platform === 'win32') { //Windows
|
||||
autoUpdater = await new NsisUpdater(options)
|
||||
|
|
|
@ -149,6 +149,12 @@ export default class Thumbar {
|
|||
label: 'Volume Down',
|
||||
accelerator: 'CommandOrControl+Down',
|
||||
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`)
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
BIN
src/renderer/assets/audiolabs/classic.png
Normal file
BIN
src/renderer/assets/audiolabs/classic.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 139 KiB |
BIN
src/renderer/assets/audiolabs/expansive.png
Normal file
BIN
src/renderer/assets/audiolabs/expansive.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 186 KiB |
BIN
src/renderer/assets/audiolabs/focused.png
Normal file
BIN
src/renderer/assets/audiolabs/focused.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 138 KiB |
BIN
src/renderer/assets/audiolabs/minimal.png
Normal file
BIN
src/renderer/assets/audiolabs/minimal.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 184 KiB |
|
@ -1,11 +1,11 @@
|
|||
const CiderAudio = {
|
||||
context : null,
|
||||
source : null,
|
||||
audioNodes : {
|
||||
gainNode : null,
|
||||
spatialNode : null,
|
||||
context: null,
|
||||
source: null,
|
||||
audioNodes: {
|
||||
gainNode: null,
|
||||
spatialNode: null,
|
||||
spatialInput: null,
|
||||
audioBands : null,
|
||||
audioBands: null,
|
||||
vibrantbassNode: null,
|
||||
llpw: null,
|
||||
analogWarmth: null,
|
||||
|
@ -16,84 +16,103 @@ const CiderAudio = {
|
|||
init: function (cb = function () { }) {
|
||||
//AudioOutputs.fInit = true;
|
||||
let searchInt = setInterval(function () {
|
||||
if (document.getElementById("apple-music-player")) {
|
||||
//AudioOutputs.eqReady = true;
|
||||
document.getElementById("apple-music-player").crossOrigin = "anonymous";
|
||||
CiderAudio.connectContext(document.getElementById("apple-music-player"), 0);
|
||||
|
||||
cb();
|
||||
clearInterval(searchInt);
|
||||
}
|
||||
if (document.getElementById("apple-music-player")) {
|
||||
//AudioOutputs.eqReady = true;
|
||||
document.getElementById("apple-music-player").crossOrigin = "anonymous";
|
||||
CiderAudio.connectContext(document.getElementById("apple-music-player"), 0);
|
||||
|
||||
cb();
|
||||
clearInterval(searchInt);
|
||||
}
|
||||
}, 1000);
|
||||
},
|
||||
off: function(){
|
||||
try{
|
||||
off: function () {
|
||||
try {
|
||||
CiderAudio.hierarchical_unloading();
|
||||
try{
|
||||
CiderAudio.audioNodes = {
|
||||
gainNode : null,
|
||||
spatialNode : null,
|
||||
spatialInput: null,
|
||||
audioBands : null,
|
||||
vibrantbassNode: null,
|
||||
llpw: null,
|
||||
analogWarmth: null
|
||||
}
|
||||
} catch (e) {}
|
||||
CiderAudio.source.connect(CiderAudio.context.destination);} catch(e){}
|
||||
try {
|
||||
CiderAudio.audioNodes = {
|
||||
gainNode: null,
|
||||
spatialNode: null,
|
||||
spatialInput: null,
|
||||
audioBands: null,
|
||||
vibrantbassNode: null,
|
||||
llpw: null,
|
||||
analogWarmth: null
|
||||
}
|
||||
} catch (e) { }
|
||||
CiderAudio.source.connect(CiderAudio.context.destination);
|
||||
} catch (e) { }
|
||||
},
|
||||
connectContext: function (mediaElem){
|
||||
if (!CiderAudio.context){
|
||||
CiderAudio.context = new (window.AudioContext || window.webkitAudioContext);
|
||||
connectContext: function (mediaElem) {
|
||||
if (!CiderAudio.context) {
|
||||
CiderAudio.context = new (window.AudioContext || window.webkitAudioContext);
|
||||
}
|
||||
if (!CiderAudio.source){
|
||||
CiderAudio.source = CiderAudio.context.createMediaElementSource(mediaElem);
|
||||
} else {try{CiderAudio.source.disconnect(CiderAudio.context.destination)}catch(e){}}
|
||||
if (!CiderAudio.source) {
|
||||
CiderAudio.source = CiderAudio.context.createMediaElementSource(mediaElem);
|
||||
} else { try { CiderAudio.source.disconnect(CiderAudio.context.destination) } catch (e) { } }
|
||||
CiderAudio.audioNodes.gainNode = CiderAudio.context.createGain()
|
||||
CiderAudio.source.connect(CiderAudio.audioNodes.gainNode);
|
||||
if(app.cfg.audio.normalization){
|
||||
if (app.cfg.audio.normalization) {
|
||||
CiderAudio.normalizerOn()
|
||||
}
|
||||
if (app.cfg.audio.spatial){
|
||||
if (app.cfg.audio.spatial) {
|
||||
CiderAudio.spatialOn()
|
||||
}
|
||||
}
|
||||
CiderAudio.hierarchical_loading();
|
||||
},
|
||||
normalizerOn: function (){
|
||||
normalizerOn: function () {
|
||||
},
|
||||
normalizerOff: function (){
|
||||
CiderAudio.audioNodes.gainNode.gain.setTargetAtTime(1, CiderAudio.context.currentTime+ 1, 0.5);
|
||||
normalizerOff: function () {
|
||||
CiderAudio.audioNodes.gainNode.gain.setTargetAtTime(1, CiderAudio.context.currentTime + 1, 0.5);
|
||||
},
|
||||
|
||||
spatialOn: function (){
|
||||
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 () {
|
||||
CiderAudio.audioNodes.spatialNode = null;
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.spatialNode = CiderAudio.context.createConvolver();
|
||||
CiderAudio.audioNodes.spatialNode.normalize = true;
|
||||
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);
|
||||
|
||||
});
|
||||
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);
|
||||
|
||||
});
|
||||
break;
|
||||
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;
|
||||
}
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.spatialNode = CiderAudio.context.createConvolver();
|
||||
CiderAudio.audioNodes.spatialNode.normalize = false;
|
||||
|
||||
let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) {
|
||||
return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile;
|
||||
});
|
||||
|
||||
if (spatialProfile === undefined) {
|
||||
spatialProfile = CiderAudio.spatialProfiles[0];
|
||||
}
|
||||
fetch(spatialProfile.file).then(async (impulseData) => {
|
||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||
CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
|
||||
}
|
||||
else {
|
||||
CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context);
|
||||
|
@ -112,12 +131,13 @@ const CiderAudio = {
|
|||
up: 'acoustic-ceiling-tiles',
|
||||
};
|
||||
CiderAudio.audioNodes.spatialNode.setRoomProperties(roomDimensions, roomMaterials);
|
||||
CiderAudio.audioNodes.spatialInput = CiderAudio.audioNodes.spatialNode.createSource();}
|
||||
},
|
||||
spatialOff: function (){
|
||||
CiderAudio.audioNodes.spatialInput = CiderAudio.audioNodes.spatialNode.createSource();
|
||||
}
|
||||
},
|
||||
spatialOff: function () {
|
||||
CiderAudio.hierarchical_loading();
|
||||
},
|
||||
sendAudio: function (){
|
||||
sendAudio: function () {
|
||||
if (!CiderAudio.ccON) {
|
||||
CiderAudio.ccON = true
|
||||
let searchInt = setInterval(async function () {
|
||||
|
@ -236,89 +256,120 @@ const CiderAudio = {
|
|||
registerProcessor('recorder-worklet', RecorderWorkletProcessor);`
|
||||
let blob = new Blob([worklet], { type: 'application/javascript' });
|
||||
await CiderAudio.context.audioWorklet.addModule(URL.createObjectURL(blob))
|
||||
.then(() => {
|
||||
|
||||
const channels = 2;
|
||||
CiderAudio.audioNodes.recorderNode = new window.AudioWorkletNode(CiderAudio.context,
|
||||
'recorder-worklet',
|
||||
{ parameterData: { numberOfChannels: channels } });
|
||||
CiderAudio.audioNodes.recorderNode.port.onmessage = (e) => {
|
||||
const data = e.data;
|
||||
switch (data.eventType) {
|
||||
case "data":
|
||||
const audioData = data.audioBuffer;
|
||||
const bufferSize = data.bufferSize;
|
||||
if((audioData[0]).some(item => item !== 0) || (audioData[0]).some(item => item !== 0)){
|
||||
ipcRenderer.send('writeWAV', audioData[0], audioData[1], bufferSize);}
|
||||
break;
|
||||
case "stop":
|
||||
break;
|
||||
}
|
||||
}
|
||||
CiderAudio.audioNodes.recorderNode.parameters.get('isRecording').setValueAtTime(1, CiderAudio.context.currentTime);
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.recorderNode);
|
||||
.then(() => {
|
||||
|
||||
});
|
||||
const channels = 2;
|
||||
CiderAudio.audioNodes.recorderNode = new window.AudioWorkletNode(CiderAudio.context,
|
||||
'recorder-worklet',
|
||||
{ parameterData: { numberOfChannels: channels } });
|
||||
CiderAudio.audioNodes.recorderNode.port.onmessage = (e) => {
|
||||
const data = e.data;
|
||||
switch (data.eventType) {
|
||||
case "data":
|
||||
const audioData = data.audioBuffer;
|
||||
const bufferSize = data.bufferSize;
|
||||
if ((audioData[0]).some(item => item !== 0) || (audioData[0]).some(item => item !== 0)) {
|
||||
ipcRenderer.send('writeWAV', audioData[0], audioData[1], bufferSize);
|
||||
}
|
||||
break;
|
||||
case "stop":
|
||||
break;
|
||||
}
|
||||
}
|
||||
CiderAudio.audioNodes.recorderNode.parameters.get('isRecording').setValueAtTime(1, CiderAudio.context.currentTime);
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.recorderNode);
|
||||
|
||||
});
|
||||
clearInterval(searchInt);
|
||||
}
|
||||
}, 1000);
|
||||
} else {if (CiderAudio.audioNodes.recorderNode != null && CiderAudio.context != null) {
|
||||
CiderAudio.audioNodes.recorderNode.parameters.get('isRecording').setValueAtTime(1, CiderAudio.context.currentTime);
|
||||
// CiderAudio.audioNodes.recorderNode = null;
|
||||
// CiderAudio.ccON = false;
|
||||
}}
|
||||
|
||||
} else {
|
||||
if (CiderAudio.audioNodes.recorderNode != null && CiderAudio.context != null) {
|
||||
CiderAudio.audioNodes.recorderNode.parameters.get('isRecording').setValueAtTime(1, CiderAudio.context.currentTime);
|
||||
// CiderAudio.audioNodes.recorderNode = null;
|
||||
// CiderAudio.ccON = false;
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
stopAudio(){
|
||||
stopAudio() {
|
||||
if (CiderAudio.audioNodes.recorderNode != null && CiderAudio.context != null) {
|
||||
CiderAudio.audioNodes.recorderNode.parameters.get('isRecording').setValueAtTime(0, CiderAudio.context.currentTime);
|
||||
// CiderAudio.audioNodes.recorderNode = null;
|
||||
// CiderAudio.ccON = false;
|
||||
}
|
||||
},
|
||||
analogWarmth_h2_3: function (status, hierarchy){
|
||||
analogWarmth_h2_3: function (status, hierarchy) {
|
||||
if (status === true) { // 23 Band Adjustment
|
||||
let WARMTH_FREQUENCIES = [10.513, 15.756, 224.01, 677.77, 1245.4, 2326.8, 2847.3, 4215.3, 11057, 12793, 16235, 16235, 17838, 18112, 18112, 19326, 19372, 19372, 20061, 20280, 20280, 20853, 22276];
|
||||
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_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 = []
|
||||
|
||||
|
||||
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] * app.cfg.audio.maikiwiAudio.analogWarmth_value;
|
||||
}
|
||||
|
||||
for (let i = 1; i < WARMTH_FREQUENCIES.length; i ++) {
|
||||
CiderAudio.audioNodes.analogWarmth[i-1].connect(CiderAudio.audioNodes.analogWarmth[i]);
|
||||
|
||||
switch (app.cfg.audio.maikiwiAudio.analogWarmth_value) {
|
||||
case "SMOOTH":
|
||||
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
switch (hierarchy) {
|
||||
|
||||
for (let i = 1; i < WARMTH_FREQUENCIES.length; i++) {
|
||||
CiderAudio.audioNodes.analogWarmth[i - 1].connect(CiderAudio.audioNodes.analogWarmth[i]);
|
||||
}
|
||||
|
||||
switch (hierarchy) {
|
||||
case 3:
|
||||
try{
|
||||
CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.llpw[0]);} catch(e){}
|
||||
try {
|
||||
CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length - 1].connect(CiderAudio.audioNodes.llpw[0]);
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 2:
|
||||
try{
|
||||
CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);} catch(e){}
|
||||
try {
|
||||
CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length - 1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 1:
|
||||
try{
|
||||
CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.audioBands[0]);} catch(e){}
|
||||
try {
|
||||
CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length - 1].connect(CiderAudio.audioNodes.audioBands[0]);
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 0:
|
||||
try{CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length-1].connect(CiderAudio.context.destination);} catch(e){}
|
||||
case 0:
|
||||
try { CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length - 1].connect(CiderAudio.context.destination); } catch (e) { }
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
llpw_h2_2: function (status, hierarchy){
|
||||
if (status === true) {
|
||||
llpw_h2_2: function (status, hierarchy) {
|
||||
if (status === true) {
|
||||
let c_LLPW_Q = [1.250, 0.131, 10, 2.5, 2.293, 0.110, 14.14, 1.552, 28.28, 7.071, 2.847, 5, 0.625, 7.071, 3.856, 3.856, 20, 28.28, 20, 14.14, 2.102, 6.698, 3.536, 10];
|
||||
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];
|
||||
let c_LLPW_FREQUENCIES = [400.83, 5812.8, 8360, 10413, 10658, 12079, 12899, 13205, 14848, 15591, 15778, 15783, 16716, 16891, 17255, 17496, 18555, 18622, 19219, 19448, 19664, 21341, 21353, 22595];
|
||||
|
@ -326,76 +377,122 @@ const CiderAudio = {
|
|||
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];
|
||||
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 = []
|
||||
|
||||
if (app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.55) {
|
||||
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];
|
||||
|
||||
switch (app.cfg.audio.maikiwiAudio.ciderPPE_value) {
|
||||
case "NATURAL":
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
console.debug("[Cider][Audio] CAP - Natural Mode");
|
||||
break;
|
||||
|
||||
case "STANDARD": // Standard
|
||||
for (let i = 0; i < LLPW_FREQUENCIES.length; i++) {
|
||||
CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter();
|
||||
CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking';
|
||||
CiderAudio.audioNodes.llpw[i].frequency.value = LLPW_FREQUENCIES[i];
|
||||
CiderAudio.audioNodes.llpw[i].Q.value = LLPW_Q[i];
|
||||
CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i];
|
||||
}
|
||||
for (let i = 1; i < LLPW_FREQUENCIES.length; i++) {
|
||||
CiderAudio.audioNodes.llpw[i - 1].connect(CiderAudio.audioNodes.llpw[i]);
|
||||
}
|
||||
|
||||
switch (hierarchy) {
|
||||
case 2:
|
||||
try { CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length - 1].connect(CiderAudio.audioNodes.vibrantbassNode[0]); } catch (e) { }
|
||||
break;
|
||||
case 1:
|
||||
try { CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length - 1].connect(CiderAudio.audioNodes.audioBands[0]); } catch (e) { }
|
||||
break;
|
||||
case 0:
|
||||
try { CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length - 1].connect(CiderAudio.context.destination); } catch (e) { }
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
else if (app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.5) {
|
||||
for (let i = 0; i < LLPW_FREQUENCIES.length; i++) {
|
||||
CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter();
|
||||
CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking';
|
||||
CiderAudio.audioNodes.llpw[i].frequency.value = LLPW_FREQUENCIES[i];
|
||||
CiderAudio.audioNodes.llpw[i].Q.value = LLPW_Q[i];
|
||||
CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i];
|
||||
}
|
||||
|
||||
|
||||
for (let i = 1; i < LLPW_FREQUENCIES.length; i ++) {
|
||||
CiderAudio.audioNodes.llpw[i-1].connect(CiderAudio.audioNodes.llpw[i]);
|
||||
}
|
||||
|
||||
switch (hierarchy) {
|
||||
case 2:
|
||||
try{CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);} catch(e){}
|
||||
break;
|
||||
case 1:
|
||||
try{CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.audioBands[0]);} catch(e){}
|
||||
break;
|
||||
case 0:
|
||||
try{CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].connect(CiderAudio.context.destination);} catch(e){}
|
||||
break;
|
||||
|
||||
}
|
||||
console.debug("[Cider][Audio] CAP - Classic Mode");
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
vibrantbass_h2_1: function (status, hierarchy){
|
||||
if (status === true) {
|
||||
vibrantbass_h2_1: function (status, hierarchy) {
|
||||
if (status === true) {
|
||||
let VIBRANTBASSBANDS = app.cfg.audio.maikiwiAudio.vibrantBass.frequencies;
|
||||
let VIBRANTBASSGAIN = app.cfg.audio.maikiwiAudio.vibrantBass.gain;
|
||||
let VIBRANTBASSQ = app.cfg.audio.maikiwiAudio.vibrantBass.Q;
|
||||
CiderAudio.audioNodes.vibrantbassNode = []
|
||||
|
||||
|
||||
for (let i = 0; i < VIBRANTBASSBANDS.length; i++) {
|
||||
CiderAudio.audioNodes.vibrantbassNode[i] = CiderAudio.context.createBiquadFilter();
|
||||
CiderAudio.audioNodes.vibrantbassNode[i].type = 'peaking'; // 'peaking';
|
||||
|
@ -404,58 +501,59 @@ const CiderAudio = {
|
|||
CiderAudio.audioNodes.vibrantbassNode[i].gain.value = VIBRANTBASSGAIN[i] * (app.cfg.audio.equalizer.vibrantBass / 10);
|
||||
}
|
||||
|
||||
for (let i = 1; i < VIBRANTBASSBANDS.length; i ++) {
|
||||
CiderAudio.audioNodes.vibrantbassNode[i-1].connect(CiderAudio.audioNodes.vibrantbassNode[i]);
|
||||
for (let i = 1; i < VIBRANTBASSBANDS.length; i++) {
|
||||
CiderAudio.audioNodes.vibrantbassNode[i - 1].connect(CiderAudio.audioNodes.vibrantbassNode[i]);
|
||||
}
|
||||
|
||||
switch (hierarchy) {
|
||||
case 0:
|
||||
try{
|
||||
CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.context.destination);} catch(e){}
|
||||
switch (hierarchy) {
|
||||
case 0:
|
||||
try {
|
||||
CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.context.destination);
|
||||
} catch (e) { }
|
||||
break;
|
||||
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) { }
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
hierarchical_unloading: function (){
|
||||
try {CiderAudio.audioNodes.spatialNode.output.disconnect();} catch(e){}
|
||||
try {CiderAudio.audioNodes.spatialNode.disconnect();} catch(e){}
|
||||
try {CiderAudio.audioNodes.gainNode.disconnect();} catch(e){}
|
||||
try {for (var i of CiderAudio.audioNodes.analogWarmth){i.disconnect();} CiderAudio.audioNodes.analogWarmth = null} catch(e){}
|
||||
try {for (var i of CiderAudio.audioNodes.llpw){i.disconnect();} CiderAudio.audioNodes.llpw = null} catch(e){}
|
||||
try {for (var i of CiderAudio.audioNodes.vibrantbassNode){i.disconnect();} CiderAudio.audioNodes.vibrantbassNode = null} catch(e){}
|
||||
try {for (var i of CiderAudio.audioNodes.audioBands) {i.disconnect();} CiderAudio.audioNodes.audioBands = null} catch(e){}
|
||||
hierarchical_unloading: function () {
|
||||
try { CiderAudio.audioNodes.spatialNode.output.disconnect(); } catch (e) { }
|
||||
try { CiderAudio.audioNodes.spatialNode.disconnect(); } catch (e) { }
|
||||
try { CiderAudio.audioNodes.gainNode.disconnect(); } catch (e) { }
|
||||
try { for (var i of CiderAudio.audioNodes.analogWarmth) { i.disconnect(); } CiderAudio.audioNodes.analogWarmth = null } catch (e) { }
|
||||
try { for (var i of CiderAudio.audioNodes.llpw) { i.disconnect(); } CiderAudio.audioNodes.llpw = null } catch (e) { }
|
||||
try { for (var i of CiderAudio.audioNodes.vibrantbassNode) { i.disconnect(); } CiderAudio.audioNodes.vibrantbassNode = null } catch (e) { }
|
||||
try { for (var i of CiderAudio.audioNodes.audioBands) { i.disconnect(); } CiderAudio.audioNodes.audioBands = null } catch (e) { }
|
||||
|
||||
console.debug("[Cider][Audio] Finished hierarchical unloading");
|
||||
|
||||
|
||||
},
|
||||
hierarchical_loading: function (){
|
||||
hierarchical_loading: function () {
|
||||
CiderAudio.hierarchical_unloading();
|
||||
|
||||
|
||||
if (Math.max(...app.cfg.audio.equalizer.gain) != 0) {
|
||||
CiderAudio.equalizer(true, 0);
|
||||
|
||||
if (app.cfg.audio.equalizer.vibrantBass !== '0') {
|
||||
if (app.cfg.audio.equalizer.vibrantBass !== '0') {
|
||||
CiderAudio.vibrantbass_h2_1(true, 1);
|
||||
|
||||
|
||||
if (app.cfg.audio.maikiwiAudio.ciderPPE === true) { // Vibrant Bass, CAP
|
||||
CiderAudio.llpw_h2_2(true, 2);
|
||||
|
||||
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth
|
||||
CiderAudio.analogWarmth_h2_3(true, 3);
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) { // Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial')
|
||||
}
|
||||
else { // Vibrant Bass, CAP, Analog Warmth, Spatial
|
||||
app.cfg.audio.normalization = true;
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
|
||||
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, CAP, Analog Warmth, Spatial')
|
||||
|
@ -469,7 +567,7 @@ const CiderAudio = {
|
|||
}
|
||||
else {
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]);
|
||||
app.cfg.audio.normalization = true
|
||||
|
@ -489,17 +587,17 @@ const CiderAudio = {
|
|||
}
|
||||
}
|
||||
else {
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
CiderAudio.analogWarmth_h2_3(true, 2);
|
||||
app.cfg.audio.normalization = true;
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Maikiwi Spatial')
|
||||
}
|
||||
else {
|
||||
else {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
|
||||
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Analog Warmth, Spatial')
|
||||
|
@ -512,8 +610,8 @@ const CiderAudio = {
|
|||
}
|
||||
}
|
||||
else {
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
|
@ -525,7 +623,7 @@ const CiderAudio = {
|
|||
console.debug('[Cider][Audio] Equalizer, Vibrant Bass, Spatial')
|
||||
}
|
||||
}
|
||||
else {
|
||||
else {
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
console.debug('[Cider][Audio] Equalizer, Vibrant Bass')
|
||||
|
@ -537,15 +635,15 @@ const CiderAudio = {
|
|||
else { // if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier) === 0
|
||||
if (app.cfg.audio.maikiwiAudio.ciderPPE === true) {
|
||||
CiderAudio.llpw_h2_2(true, 1);
|
||||
|
||||
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
CiderAudio.analogWarmth_h2_3(true, 3);
|
||||
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
app.cfg.audio.normalization = true;
|
||||
app.cfg.audio.normalization = true;
|
||||
console.debug('[Cider][Audio] Equalizer, CAP, Analog Warmth, Maikiwi Spatial')
|
||||
}
|
||||
else {
|
||||
|
@ -561,10 +659,10 @@ const CiderAudio = {
|
|||
}
|
||||
else {
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]);
|
||||
app.cfg.audio.normalization = true;
|
||||
app.cfg.audio.normalization = true;
|
||||
console.debug('[Cider][Audio] Equalizer, CAP, Maikiwi Spatial')
|
||||
}
|
||||
else {
|
||||
|
@ -582,12 +680,12 @@ const CiderAudio = {
|
|||
else {
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
CiderAudio.analogWarmth_h2_3(true, 1);
|
||||
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
app.cfg.audio.normalization = true;
|
||||
app.cfg.audio.normalization = true;
|
||||
console.debug('[Cider][Audio] Equalizer, Analog Warmth, Maikiwi Spatial')
|
||||
}
|
||||
else {
|
||||
|
@ -603,10 +701,10 @@ const CiderAudio = {
|
|||
}
|
||||
else {
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.audioBands[0]);
|
||||
app.cfg.audio.normalization = true;
|
||||
app.cfg.audio.normalization = true;
|
||||
console.debug('[Cider][Audio] Equalizer, Maikiwi Spatial')
|
||||
}
|
||||
else {
|
||||
|
@ -616,7 +714,7 @@ const CiderAudio = {
|
|||
}
|
||||
}
|
||||
else {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]);
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]);
|
||||
console.debug('[Cider][Audio] Equalizer')
|
||||
}
|
||||
}
|
||||
|
@ -626,22 +724,22 @@ const CiderAudio = {
|
|||
else { //if (Math.max(...app.cfg.audio.equalizer.gain) == 0)
|
||||
if (app.cfg.audio.equalizer.vibrantBass !== '0') { // Vibrant Bass
|
||||
CiderAudio.vibrantbass_h2_1(true, 0)
|
||||
|
||||
|
||||
if (app.cfg.audio.maikiwiAudio.ciderPPE === true) { // Vibrant Bass, CAP
|
||||
CiderAudio.llpw_h2_2(true, 2);
|
||||
|
||||
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) { // Vibrant Bass, CAP, Analog Warmth
|
||||
CiderAudio.analogWarmth_h2_3(true, 3);
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) { // Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial')
|
||||
}
|
||||
else { // Vibrant Bass, CAP, Analog Warmth, Spatial
|
||||
app.cfg.audio.normalization = true;
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
|
||||
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Spatial')
|
||||
|
@ -655,7 +753,7 @@ const CiderAudio = {
|
|||
}
|
||||
else { // if (app.cfg.audio.maikiwiAudio.analogWarmth) !== true
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]);
|
||||
app.cfg.audio.normalization = true
|
||||
|
@ -675,17 +773,17 @@ const CiderAudio = {
|
|||
}
|
||||
}
|
||||
else {
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
CiderAudio.analogWarmth_h2_3(true, 2);
|
||||
app.cfg.audio.normalization = true;
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Maikiwi Spatial')
|
||||
}
|
||||
else {
|
||||
else {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);
|
||||
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth, Spatial')
|
||||
|
@ -698,8 +796,8 @@ const CiderAudio = {
|
|||
}
|
||||
}
|
||||
else {
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
|
@ -711,7 +809,7 @@ const CiderAudio = {
|
|||
console.debug('[Cider][Audio] Vibrant Bass, Spatial')
|
||||
}
|
||||
}
|
||||
else {
|
||||
else {
|
||||
app.cfg.audio.normalization = true;
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
console.debug('[Cider][Audio] Vibrant Bass')
|
||||
|
@ -721,17 +819,17 @@ const CiderAudio = {
|
|||
}
|
||||
// Vibrant Bass ends here
|
||||
else {
|
||||
if (app.cfg.audio.maikiwiAudio.ciderPPE === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.ciderPPE === true) {
|
||||
CiderAudio.llpw_h2_2(true, 0);
|
||||
|
||||
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
CiderAudio.analogWarmth_h2_3(true, 3);
|
||||
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
app.cfg.audio.normalization = true;
|
||||
app.cfg.audio.normalization = true;
|
||||
console.debug('[Cider][Audio] CAP, Analog Warmth, Maikiwi Spatial')
|
||||
}
|
||||
else {
|
||||
|
@ -747,10 +845,10 @@ const CiderAudio = {
|
|||
}
|
||||
else {
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]);
|
||||
app.cfg.audio.normalization = true;
|
||||
app.cfg.audio.normalization = true;
|
||||
console.debug('[Cider][Audio] CAP, Maikiwi Spatial')
|
||||
}
|
||||
else {
|
||||
|
@ -768,12 +866,12 @@ const CiderAudio = {
|
|||
else {
|
||||
if (app.cfg.audio.maikiwiAudio.analogWarmth === true) {
|
||||
CiderAudio.analogWarmth_h2_3(true, 0);
|
||||
|
||||
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]);
|
||||
app.cfg.audio.normalization = true;
|
||||
app.cfg.audio.normalization = true;
|
||||
console.debug('[Cider][Audio] Analog Warmth, Maikiwi Spatial')
|
||||
}
|
||||
else {
|
||||
|
@ -789,10 +887,10 @@ const CiderAudio = {
|
|||
}
|
||||
else {
|
||||
if (app.cfg.audio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.context.destination);
|
||||
app.cfg.audio.normalization = true;
|
||||
app.cfg.audio.normalization = true;
|
||||
console.debug('[Cider][Audio] Maikiwi Spatial')
|
||||
}
|
||||
else {
|
||||
|
@ -802,7 +900,7 @@ const CiderAudio = {
|
|||
}
|
||||
}
|
||||
else {
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination);
|
||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination);
|
||||
console.debug('[Cider][Audio] Literal Nothing')
|
||||
}
|
||||
}
|
||||
|
@ -810,16 +908,16 @@ const CiderAudio = {
|
|||
}
|
||||
}
|
||||
console.debug("[Cider][Audio] Finished hierarchical loading");
|
||||
|
||||
|
||||
},
|
||||
|
||||
equalizer: function (status, hierarchy){ // h1_1
|
||||
if (status === true) {
|
||||
equalizer: function (status, hierarchy) { // h1_1
|
||||
if (status === true) {
|
||||
let BANDS = app.cfg.audio.equalizer.frequencies;
|
||||
let GAIN = app.cfg.audio.equalizer.gain;
|
||||
let Q = app.cfg.audio.equalizer.Q;
|
||||
|
||||
CiderAudio.audioNodes.audioBands = [];
|
||||
CiderAudio.audioNodes.audioBands = [];
|
||||
for (let i = 0; i < BANDS.length; i++) {
|
||||
CiderAudio.audioNodes.audioBands[i] = CiderAudio.context.createBiquadFilter();
|
||||
CiderAudio.audioNodes.audioBands[i].type = 'peaking'; // 'peaking';
|
||||
|
@ -827,19 +925,20 @@ const CiderAudio = {
|
|||
CiderAudio.audioNodes.audioBands[i].Q.value = Q[i];
|
||||
CiderAudio.audioNodes.audioBands[i].gain.value = GAIN[i] * app.cfg.audio.equalizer.mix;
|
||||
}
|
||||
|
||||
for (let i = 1; i < BANDS.length; i ++) {
|
||||
CiderAudio.audioNodes.audioBands[i-1].connect(CiderAudio.audioNodes.audioBands[i]);
|
||||
}
|
||||
|
||||
switch (hierarchy) {
|
||||
case 0:
|
||||
try{
|
||||
CiderAudio.audioNodes.audioBands[BANDS.length-1].connect(CiderAudio.context.destination);} catch(e){}
|
||||
break;
|
||||
}
|
||||
|
||||
for (let i = 1; i < BANDS.length; i++) {
|
||||
CiderAudio.audioNodes.audioBands[i - 1].connect(CiderAudio.audioNodes.audioBands[i]);
|
||||
}
|
||||
|
||||
switch (hierarchy) {
|
||||
case 0:
|
||||
try {
|
||||
CiderAudio.audioNodes.audioBands[BANDS.length - 1].connect(CiderAudio.context.destination);
|
||||
} catch (e) { }
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
export {CiderAudio}
|
||||
export { CiderAudio }
|
BIN
src/renderer/audio/impulses/CAP_Natural.wav
Normal file
BIN
src/renderer/audio/impulses/CAP_Natural.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CiderSpatial_v69.420_Audiophile.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_v69.420_Audiophile.wav
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -105,7 +105,7 @@ function fallbackinitMusicKit() {
|
|||
})
|
||||
setTimeout(() => {
|
||||
app.init()
|
||||
if(app.cfg.visual.window_background_style == "mica") {
|
||||
if(app.cfg.visual.window_background_style == "mica" && !app.isDev) {
|
||||
app.spawnMica()
|
||||
}
|
||||
}, 1000)
|
||||
|
@ -134,7 +134,7 @@ document.addEventListener('musickitloaded', function () {
|
|||
function waitForApp() {
|
||||
if (typeof app.init !== "undefined") {
|
||||
app.init()
|
||||
if(app.cfg.visual.window_background_style == "mica") {
|
||||
if(app.cfg.visual.window_background_style == "mica" && !app.isDev) {
|
||||
app.spawnMica()
|
||||
}
|
||||
}
|
||||
|
|
205
src/renderer/less/bootstrap.less
vendored
205
src/renderer/less/bootstrap.less
vendored
|
@ -7768,3 +7768,208 @@ fieldset:disabled .btn {
|
|||
padding: 1rem 1rem;
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -515,7 +515,7 @@
|
|||
display : flex;
|
||||
justify-content: center;
|
||||
align-items : center;
|
||||
z-index : 6;
|
||||
z-index : 10;
|
||||
position : sticky;
|
||||
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-page {
|
||||
top : 0;
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
async function spawnMica() {
|
||||
if(typeof window.micaSpawned !== "undefined") {
|
||||
return
|
||||
}else{
|
||||
window.micaSpawned = true
|
||||
}
|
||||
const micaDiv = document.createElement('div');
|
||||
const blurIterations = 6
|
||||
micaDiv.id = 'micaEffect';
|
||||
|
|
|
@ -2324,7 +2324,7 @@ const app = new Vue({
|
|||
try {
|
||||
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);
|
||||
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) {
|
||||
return ""
|
||||
}
|
||||
|
|
|
@ -9889,7 +9889,7 @@ input[type=checkbox][switch]:checked:active::before {
|
|||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 6;
|
||||
z-index: 10;
|
||||
position: sticky;
|
||||
margin-top: calc(var(--navigationBarHeight) * -1);
|
||||
}
|
||||
|
|
|
@ -142,8 +142,8 @@ body.notransparency::before {
|
|||
}
|
||||
|
||||
#app {
|
||||
--color1: rgba(30, 30, 30, 30%);
|
||||
--color2: rgba(15, 15, 15, 30%);
|
||||
--color1: rgba(15, 15, 15, 30%);
|
||||
--color2: rgba(30, 30, 30, 50%);
|
||||
--bgColor: transparent;
|
||||
--bgWidth: 0px;
|
||||
--bgHeight: 0px;
|
||||
|
@ -799,25 +799,28 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
|
|||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.app-sidebar-item:hover {
|
||||
border: 1px solid rgb(200 200 200 / 5%);
|
||||
background: rgb(200 200 200 / 15%);
|
||||
border: 1px solid rgb(200 200 200 / 0%);
|
||||
background: rgb(180 180 180 / 15%);
|
||||
// cursor: pointer;
|
||||
}
|
||||
|
||||
.app-sidebar-item:active {
|
||||
border: 1px solid rgb(200 200 200 / 5%);
|
||||
background: rgb(200 200 200 / 15%);
|
||||
transform: scale(0.98);
|
||||
border: 1px solid rgb(200 200 200 / 0%);
|
||||
background: rgb(150 150 150 / 15%);
|
||||
// transform: scale(0.98);
|
||||
transition: transform 0s;
|
||||
}
|
||||
|
||||
.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%);
|
||||
transform: scale(1);
|
||||
transition: transform 0s;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.app-sidebar-item.active::after {
|
||||
|
@ -830,6 +833,17 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
|
|||
border-radius: 10px;
|
||||
left: 0px;
|
||||
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 {
|
||||
|
@ -1535,6 +1549,14 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
|
|||
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 {
|
||||
margin-top: 8px;
|
||||
display: none;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<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-header">
|
||||
<div class="modal-title">Cast To Devices</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<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-header">
|
||||
<div class="modal-title">{{$root.getLz('term.equalizer')}}</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<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-header">
|
||||
<div class="modal-title">{{$root.getLz('spatial.spatialProperties')}}</div>
|
||||
|
|
|
@ -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://opencollective.com/ciderapp')" class="md-btn sponsorBtn"><img src="./assets/open_collective.svg"/>Open Collective</button>
|
||||
<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://discord.gg/applemusic')" class="md-btn sponsorBtn"><img 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://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 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 src="./assets/twitter.svg"/>Twitter</button>
|
||||
|
||||
</div>
|
||||
<div class="col">
|
||||
|
@ -113,7 +113,7 @@
|
|||
name: 'NoseySG',
|
||||
link: 'https://twitter.com/noah_grose',
|
||||
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'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1,158 +1,195 @@
|
|||
<script type="text/x-template" id="audiolabs-page">
|
||||
<div class="content-inner settings-page">
|
||||
<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="md-option-line" v-show="!app.cfg.advanced.AudioContext">
|
||||
<div class="content-inner audiolabs-page ">
|
||||
<div class="md-option-container">
|
||||
|
||||
<div class="settings-option-body">
|
||||
<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">
|
||||
{{$root.getLz('settings.warn.audioLab.withoutAF')}}
|
||||
</div>
|
||||
<button class="md-btn" style="margin-top: 5px;" onclick="app.appRoute('settings')">
|
||||
{{$root.getLz('term.settings')}}
|
||||
</button>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE.description')}}</small>
|
||||
</div>
|
||||
<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/>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE.description')}}</small>
|
||||
</div>
|
||||
<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/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.audio.maikiwiAudio.ciderPPE === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description')}}</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<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')}}
|
||||
</option>
|
||||
<option value="AGGRESSIVE">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive')}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmth')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmth.description')}}</small>
|
||||
</div>
|
||||
<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/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line"
|
||||
v-show="app.cfg.advanced.AudioContext === true && app.cfg.audio.maikiwiAudio.analogWarmth === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description')}}</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<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')}}
|
||||
</option>
|
||||
<option value="WARM">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm')}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description')}}</small>
|
||||
</div>
|
||||
<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/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description')}}</small>
|
||||
</div>
|
||||
<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/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line"
|
||||
v-show="app.cfg.audio.maikiwiAudio.spatial === true && app.cfg.audio.spatial === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description')}}</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<select class="md-select" style="width:180px;"
|
||||
v-model="$root.cfg.audio.maikiwiAudio.spatialProfile"
|
||||
v-on:change="toggleMaikiwiSpatial">
|
||||
<option v-for="profile in spprofiles" :value="profile.id">{{ profile.name }}</option>
|
||||
</select>
|
||||
</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 style="opacity: 0.5; pointer-events: none">
|
||||
<div class="md-option-header">
|
||||
<span>{{$root.getLz('settings.header.unfinished')}}</span>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
Cider Atmosphere Realizer™️
|
||||
<br>
|
||||
<small>Realizes an entirely different musical atmosphere only to be found on state of the
|
||||
art audio setups.</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn">
|
||||
Signature
|
||||
</button>
|
||||
<button class="md-btn">
|
||||
Signature+
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
Cider Origami™️ Vocal Enhancer/Remasterer
|
||||
<br>
|
||||
<small>Re-textures the vocals by carving out the frequencies and adjusts them to the
|
||||
selected profile.<br>
|
||||
<b>Modern:</b>
|
||||
Embracing 21st Century Equipment, this revives old recordings while preserving the
|
||||
Master's original intent.<br>
|
||||
<b>Intimate:</b>
|
||||
Bringing the vocals closer to your heart, communicating only the most personal
|
||||
connection between you and the artist.<br>
|
||||
<b>Breathy:</b>
|
||||
Giving the perfectionists a new voice, this adds naturality to the vocals by making them
|
||||
more breathy and more natural. <br>
|
||||
<b>Articulate:</b>
|
||||
Wrapping every detail of the vocal to your ear, resulting in a more expressive voice.
|
||||
</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<select class="md-select">
|
||||
<option value="none">
|
||||
{{$root.getLz('settings.header.visual.windowBackgroundStyle.none')}}
|
||||
</option>
|
||||
<option value="modern">
|
||||
Modern
|
||||
</option>
|
||||
<option value="intimate">
|
||||
Intimate
|
||||
</option>
|
||||
<option value="breathy">
|
||||
Breathy
|
||||
</option>
|
||||
<option value="articulate">
|
||||
Articulate
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext && app.cfg.audio.maikiwiAudio.ciderPPE === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description')}}</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.5" v-model="app.cfg.audio.maikiwiAudio.ciderPPE_value" v-on:click="ciderPPEStandard">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard')}}
|
||||
</button>
|
||||
<button class="md-btn" style="margin-top: 5px;" :disabled="app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.55" v-model="app.cfg.audio.maikiwiAudio.ciderPPE_value" v-on:click="ciderPPEClarity">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive')}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmth')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmth.description')}}</small>
|
||||
</div>
|
||||
<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/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true && app.cfg.audio.maikiwiAudio.analogWarmth === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description')}}</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.analogWarmth_value === 1.25" v-model="app.cfg.audio.maikiwiAudio.analogWarmth_value" v-on:click="ChangeanalogWarmth(1.25)">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth')}}
|
||||
</button>
|
||||
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.analogWarmth_value === 1.75" v-model="app.cfg.audio.maikiwiAudio.analogWarmth_value" v-on:click="ChangeanalogWarmth(1.75)">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm')}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description')}}</small>
|
||||
</div>
|
||||
<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/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description')}}</small>
|
||||
</div>
|
||||
<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/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.audio.maikiwiAudio.spatial === true && app.cfg.audio.spatial === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description')}}</small>
|
||||
</div>
|
||||
<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">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard')}}
|
||||
</button>
|
||||
<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">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile')}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div style="opacity: 0.5; pointer-events: none">
|
||||
<div class="md-option-header">
|
||||
<span>{{$root.getLz('settings.header.unfinished')}}</span>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
Cider Atmosphere Realizer™️
|
||||
<br>
|
||||
<small>Realizes an entirely different musical atmosphere only to be found on state of the art audio setups.</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn">
|
||||
Signature
|
||||
</button>
|
||||
<button class="md-btn">
|
||||
Signature+
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
Cider Origami™️ Vocal Enhancer/Remasterer
|
||||
<br>
|
||||
<small>Re-textures the vocals by carving out the frequencies and adjusts them to the selected profile.<br>
|
||||
<b>Modern:</b>
|
||||
Embracing 21st Century Equipment, this revives old recordings while preserving the Master's original intent.<br>
|
||||
<b>Intimate:</b>
|
||||
Bringing the vocals closer to your heart, communicating only the most personal connection between you and the artist.<br>
|
||||
<b>Breathy:</b>
|
||||
Giving the perfectionists a new voice, this adds naturality to the vocals by making them more breathy and more natural. <br>
|
||||
<b>Articulate:</b>
|
||||
Wrapping every detail of the vocal to your ear, resulting in a more expressive voice.
|
||||
</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<select class="md-select">
|
||||
<option value="none">{{$root.getLz('settings.header.visual.windowBackgroundStyle.none')}}
|
||||
</option>
|
||||
<option value="modern">
|
||||
Modern
|
||||
</option>
|
||||
<option value="intimate">
|
||||
Intimate
|
||||
</option>
|
||||
<option value="breathy">
|
||||
Breathy
|
||||
</option>
|
||||
<option value="articulate">
|
||||
Articulate
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
@ -162,55 +199,85 @@
|
|||
data: function () {
|
||||
return {
|
||||
app: this.$root,
|
||||
spprofiles: CiderAudio.spatialProfiles
|
||||
}
|
||||
},
|
||||
mounted: function () {
|
||||
|
||||
},
|
||||
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 () {
|
||||
if (app.cfg.audio.spatial) {
|
||||
if (app.cfg.audio.spatial) {
|
||||
CiderAudio.spatialOn()
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
else {
|
||||
CiderAudio.spatialOff()
|
||||
} else {
|
||||
CiderAudio.spatialOff()
|
||||
}
|
||||
},
|
||||
toggleMaikiwiSpatial: function () {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.spatialOn()
|
||||
CiderAudio.hierarchical_loading();
|
||||
let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) + 12) / 20));
|
||||
if (normalized > 1.0) {app.mk.volume = 1}
|
||||
else {app.mk.volume = normalized}
|
||||
}
|
||||
else {
|
||||
let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) - 12) / 20));
|
||||
app.mk.volume = normalized
|
||||
//let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) - 14) / 20));
|
||||
//app.mk.volume = normalized
|
||||
// -13dBFS Target
|
||||
} else {
|
||||
//let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) + 14) / 20));
|
||||
//app.mk.volume = normalized
|
||||
CiderAudio.spatialOn()
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
},
|
||||
ciderPPEStandard: function () {
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE_value = 0.5;
|
||||
let LLPW_GAIN = [0.38, -1.81, -0.23, -0.51, 0.4, 0.84, 0.36, -0.34, 0.27, -1.2, -0.42, -0.67, 0.81, 1.31, -0.71, 0.68, -1.04, 0.79, -0.73, -1.33, 1.17, 0.57, 0.35, 6.33];
|
||||
for (let i = 0; i < 24; i++) {
|
||||
CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i];
|
||||
}
|
||||
},
|
||||
ciderPPEClarity: function () {
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE_value = 0.55;
|
||||
let c_LLPW_GAIN = [-0.11, 0.27, -0.8, 0.57, 1.84, -0.38, 0.47, -1.56, 0.83, 1.58, -1.79, -0.45, 0.48, 1.22, -1.58, -1.59, -2.03, 2.56, -2.2, -2.48, 4.75, 10.5, 1.43, 3.76];
|
||||
for (let i = 0; i < 24; i++) {
|
||||
CiderAudio.audioNodes.llpw[i].gain.value = c_LLPW_GAIN[i];
|
||||
}
|
||||
},
|
||||
ChangeanalogWarmth: function (multiplier) {
|
||||
app.cfg.audio.maikiwiAudio.analogWarmth_value = multiplier
|
||||
ChangeanalogWarmth: function () {
|
||||
let WARMTH_GAIN = [-4.81, 0.74, 0.55, -0.84, -1.52, 0.84, 0.66, -0.29, 0.29, 0.94, 1.67, 1.62, -0.53, -0.81, -4.98, 1.43, 0.86, 1.13, -1.06, -0.95, -1.13, 1.78, -3.86];
|
||||
for (let i = 0; i < 23; i++) {
|
||||
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * multiplier;
|
||||
}
|
||||
|
||||
switch (app.cfg.audio.maikiwiAudio.analogWarmth_value) {
|
||||
case "SMOOTH":
|
||||
for (let i = 0; i < 23; i++) {
|
||||
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>
|
|
@ -9,6 +9,7 @@
|
|||
</div>
|
||||
<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="seeAllRecentlyPlayed()">{{app.getLz('term.seeAll')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="well artistfeed-well">
|
||||
|
@ -120,12 +121,19 @@
|
|||
this.getListenNowData()
|
||||
await this.getArtistFeed()
|
||||
await this.getFavorites()
|
||||
await this.getRecentlyPlayed()
|
||||
if (new Date().getMonth() == 11) {
|
||||
this.seenReplay = false
|
||||
localStorage.setItem('seenReplay', false)
|
||||
}
|
||||
},
|
||||
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() {
|
||||
let hist = await app.mk.api.v3.music(`/v1/me/recent/played/tracks`, {
|
||||
l: this.$root.mklang
|
||||
|
@ -199,8 +207,11 @@
|
|||
})
|
||||
} 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() {
|
||||
let self = this
|
||||
|
@ -216,7 +227,6 @@
|
|||
self.sectionsReady.push("madeForYou")
|
||||
|
||||
try {
|
||||
self.recentlyPlayed = data.data.data[1].relationships.contents.data
|
||||
self.friendsListeningTo = data.data.data.filter(section => {
|
||||
if (section.meta.metrics.moduleType == "11") {
|
||||
return section
|
||||
|
|
|
@ -44,9 +44,11 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="well">
|
||||
<mediaitem-square v-if="library.albums.viewAs == 'covers'" :item="item"
|
||||
v-for="item in library.albums.displayListing">
|
||||
</mediaitem-square>
|
||||
<div class="albums-square-container">
|
||||
<mediaitem-square v-if="library.albums.viewAs == 'covers'" :item="item"
|
||||
v-for="item in library.albums.displayListing">
|
||||
</mediaitem-square>
|
||||
</div>
|
||||
<mediaitem-list-item v-if="library.albums.viewAs == 'list'" :show-duration="false" :show-meta-data="true"
|
||||
:show-library-status="false" :item="item"
|
||||
v-for="item in library.albums.displayListing">
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<mediaitem-square :item="artistData.relationships.artist.data[0]"></mediaitem-square>
|
||||
</div>
|
||||
<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')}}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -55,7 +55,7 @@
|
|||
<mediaitem-square :item="albumData.relationships.album.data[0]"></mediaitem-square>
|
||||
</div>
|
||||
<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')}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -24,6 +24,22 @@
|
|||
<input type="checkbox" v-model="$root.cfg.general.privateEnabled" v-on:change="$root.mk.privateEnabled = $root.cfg.general.privateEnabled" switch/>
|
||||
</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-segment">
|
||||
{{$root.getLz('settings.option.general.resumebehavior')}}<br>
|
||||
|
@ -121,8 +137,13 @@
|
|||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioNormalization.description')}}</small>
|
||||
</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">
|
||||
<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>
|
||||
|
@ -164,7 +185,7 @@
|
|||
{{$root.getLz('settings.option.visual.windowBackgroundStyle')}}
|
||||
</div>
|
||||
<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">
|
||||
<option value="none">{{$root.getLz('settings.header.visual.windowBackgroundStyle.none')}}
|
||||
</option>
|
||||
|
@ -257,22 +278,6 @@
|
|||
<span>{{$root.getLz('settings.header.window')}}</span>
|
||||
</div>
|
||||
<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-segment">
|
||||
{{$root.getLz("settings.option.window.close_button_hide")}}
|
||||
|
@ -881,6 +886,12 @@
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
windowBgStyleChange() {
|
||||
this.$root.getNowPlayingArtworkBG(undefined, true)
|
||||
if(this.$root.cfg.visual.window_background_style == "mica") {
|
||||
this.$root.spawnMica()
|
||||
}
|
||||
},
|
||||
reinstallWidevineCDM () {
|
||||
bootbox.confirm("Are you sure you want to reinstall Widevine?", (ok)=>{
|
||||
if(ok) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"electronVersion": "16.0.7",
|
||||
"electronVersion": "16.0.07",
|
||||
"electronDownload": {
|
||||
"version": "16.0.7+wvcus",
|
||||
"mirror": "https://github.com/castlabs/electron-releases/releases/download/v"
|
||||
|
@ -38,4 +38,4 @@
|
|||
],
|
||||
"icon": "resources/icons/icon.ico"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue