Merge branch 'develop' of https://github.com/mefsaal/Cider into develop

This commit is contained in:
Mefsaal 2022-05-14 18:00:06 -03:00
commit b4d6ead422
22 changed files with 16246 additions and 21577 deletions

View file

@ -22,9 +22,9 @@ Russian is in Plural rule #7 (3 forms) : ```one```, ```few``` and ```other```
How it is implemented for English:
```
`term.track`: {
`one` : `track`,
`other` : `tracks`
"term.track": {
"one` : "track",
"other" : "tracks"
},
```
@ -375,4 +375,15 @@ Update 12/05/2022 22:50 UTC
* `settings.option.audio.dbspl.display`: Added for `en_US`,
* `settings.option.audio.dbspl.description`: Added for `en_US`,
* `settings.option.audio.dbfs.calibration`: Added for `en_US`,
* `settings.option.audio.dbfs.description`: Added for `en_US`,
* `settings.option.audio.dbfs.description`: Added for `en_US`
Update 14/05/2022 02:00 UTC
* `settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_HIGH`: Deleted for all language files
* `settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_STANDARD`: Renamed for `en_US`,
* `settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_PLUS`: Renamed for `en_US`,
* `settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_1`: Added for `en_US`,
* `settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_2`: Added for `en_US`,
* `settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E168_1`: Added for `en_US`,
* `settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z3600`: Added for `en_US`,
* `settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500`: Added for `en_US`

View file

@ -346,6 +346,8 @@
"settings.notyf.general.keybindings.update.success": "Keybind updated successfully",
"settings.prompt.general.keybindings.update.success": "Keybind updated successfully. Press OK to relaunch Cider",
"settings.option.general.keybindings.open": "Open",
"settings.option.general.themeUpdateNotification": "Automatically check for theme updates",
"settings.option.general.showLovedTracksInline": "Show loved tracks inline",
"settings.description.search": "Search",
"settings.description.albums": "Library Albums",
"settings.description.artists": "Library Artists",
@ -399,9 +401,13 @@
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer.description": "Realizes a different musical atmosphere modelled after the state of the art audio setups.",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode": "Cider Atmosphere Realizer™ Mode",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.description": "Changes the mode of operation of the Atmosphere Realizer module.",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_STANDARD": "Natural (Standard)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_HIGH": "Natural (High)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_PLUS": "Natural (Plus)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_STANDARD": "Hōjicha Cheese Foam Tea",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_PLUS": "Genmaicha Tapioca Milk Tea",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_1": "Rock Salt Cheese Foam Tea",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_2": "Uji Matcha Milk Tea",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E168_1": "Jasmine Macchiato",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z3600": "Hokkaido Milk Tea",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500": "Moonlight Softcake",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Enhances the perceived audio quality of 256 kbps AAC audio by using a real-time algorithm that takes advantage of both psychoacoustic models of human hearing and AAC encoding characteristics.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.",
@ -420,6 +426,7 @@
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.soundstage": "Soundstage",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.separation": "Separation",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.minimal": "Minimal",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Spatialization is not compatible with CAP. Please disable CAP to continue.",
"settings.option.audio.dbspl.display": "dB SPL Display",
"settings.option.audio.dbspl.description": "(Advanced users only) Display dB SPL instead of dBFS on the volume slider.",

View file

@ -46,7 +46,7 @@
"term.newPlaylist": "Nouvelle Playlist",
"term.newPlaylistFolder": "Nouveau dossier de playlist",
"term.createNewPlaylist": "Créer une nouvelle playlist",
"term.createNewPlaylistFolder": "Create New Playlist Folder",
"term.createNewPlaylistFolder": "Créer un nouveau dossier de playlist",
"term.deletePlaylist": "Êtes-vous sûr de vouloir supprimer cette playlist ?",
"term.navigateBack": "Naviguer en arrière",
"term.navigateForward": "Naviguer en avant",
@ -247,7 +247,7 @@
"action.unlove": "Ne plus aimer",
"action.dislike": "Je n'aime pas",
"action.undoDislike": "Je n'aime plus",
"action.showWebRemoteQR": "Afficher le QR Code de la télécommande à distance",
"action.showWebRemoteQR": "Télécommande Web",
"action.playTracksNext": "Jouer ${app.selectedMediaItems.length} musiques après",
"action.playTracksLater": "Jouer ${app.selectedMediaItems.length} musiques plus tard",
"action.removeTracks": "Retirer ${self.selectedItems.length} musiques de la file d'attente",
@ -343,6 +343,8 @@
"settings.notyf.general.keybindings.update.success": "Le raccourci clavier a bien été mis à jour",
"settings.prompt.general.keybindings.update.success": "Le raccourci clavier a bien été mis à jour. Appuyez sur OK pour relancer Cider",
"settings.option.general.keybindings.open": "Ouvrir",
"settings.option.general.themeUpdateNotification": "Vérifier automatiquement les mises à jour des thèmes",
"settings.option.general.showLovedTracksInline": "Afficher les pistes aimées en ligne",
"settings.description.search": "Rechercher",
"settings.description.albums": "Albums de la bibliothèque",
"settings.description.artists": "Artites de la bibliothèque",
@ -414,8 +416,15 @@
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Profil de spatialisation Cider",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Modifie le profil de réglage de la spatialisation.",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standard",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.soundstage": "Scène sonore",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.separation": "Séparation",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.minimal": "Minimale",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "La spatialisation n'est pas compatible avec le moteur de traitement psycho-acoustique. Veuillez le désactiver pour continuer.",
"settings.option.audio.dbspl.display": "Affichage dB SPL",
"settings.option.audio.dbspl.description": "(Utilisateurs avancés uniquement) Affichez dB SPL au lieu de dBFS sur le curseur de volume.",
"settings.option.audio.dbfs.calibration": "Calibration 0 dBFS",
"settings.option.audio.dbfs.description": "Entrez le SPL de crête pondéré en Z lorsque Cider est à 0 dBFS.",
"settings.header.visual": "Visuel",
"settings.header.visual.description": "Ajuster les paramètres visuels de Cider.",
"settings.option.visual.windowStyle": "Style de la fenêtre",
@ -469,7 +478,7 @@
"settings.option.visual.showPersonalInfo": "Afficher vos informations personnelles",
"settings.header.window": "Fenêtre",
"settings.header.window.description": "Ajustez les paramètres de la fenêtre pour Cider.",
"settings.option.window.openOnStartup": "Ouvrir Cider au démarrage.",
"settings.option.window.openOnStartup": "Ouvrir Cider au démarrage",
"settings.option.window.openOnStartup.hidden": "Ouvrir caché",
"settings.option.window.useNativeTitleBar": "Utiliser la barre de titre native",
"settings.option.window.windowControlStyle": "Style de contrôle de la fenêtre",
@ -489,7 +498,7 @@
"settings.option.connectivity.discordRPC.clientName": "Nom du client",
"settings.option.connectivity.discordRPC.clearOnPause": "Désactiver le Discord Rich Presence quand la musique est en pause",
"settings.option.connectivity.discordRPC.hideButtons": "Cacher les bouttons sur le Discord Rich Presence",
"settings.option.connectivity.discordRPC.hideTimestamp": "Cacher le timestamp sur le Discord Rich Presence",
"settings.option.connectivity.discordRPC.hideTimestamp": "Cacher le temps restant sur le Discord Rich Presence",
"settings.option.connectivity.discordRPC.detailsFormat": "Format des détails",
"settings.option.connectivity.discordRPC.stateFormat": "Format de l'état",
"settings.option.connectivity.lastfmScrobble": "Scrobble LastFM",
@ -509,14 +518,14 @@
"settings.option.experimental.compactUI": "Interface utilisateur compacte",
"settings.option.window.close_button_hide": "Le bouton de fermeture doit masquer l'application",
"settings.option.experimental.inline_playlists": "Playlists et albums en ligne",
"settings.option.advanced.playlistTrackMapping": "Playlist Track Mapping",
"settings.option.advanced.playlistTrackMapping.description": "Permet une analyse approfondie des listes de lecture pour déterminer quels titres se trouvent dans quelles listes de lecture. Les temps de construction du cache des listes de lecture peuvent augmenter de manière significative.",
"settings.option.advanced.playlistTrackMapping": "Cartographie des pistes de la playlists",
"settings.option.advanced.playlistTrackMapping.description": "Permet une analyse approfondie des playlists pour déterminer quels titres se trouvent dans quelles playlists. Les temps de construction du cache des playlists peuvent augmenter de manière significative.",
"settings.option.visual.transparent": "Cadre transparent",
"settings.option.visual.transparent.description": "(requière le support de thème, nécessite un relancement)",
"settings.option.visual.transparent.description": "Requière le support de thème, nécessite un relancement",
"settings.header.advanced": "Avancé",
"settings.header.connect": "Synchroniser",
"settings.option.connect.link_account": "Activer la synchronisation avec Cider Connect",
"settings.option.connect.link_account.description": "Lier votre compte Discord avec Cider Connect vous permet de stocker les données de l'utilisateur, y compris les paramètres, les EQ, et éventuellement plus une fois terminé. (Travail en cours)",
"settings.option.connect.link_account.description": "Lier votre compte Discord avec Cider Connect vous permet de stocker les données de l'utilisateur, y compris les paramètres, les EQ, et éventuellement plus une fois terminé. (en cours de développement)",
"spatial.notTurnedOn": "La spatialisation audio est désactivée. Pour l'utiliser, vous devez d'abord l'activer.",
"spatial.spatialProperties": "Propriétés spatiales",
"spatial.width": "Largeur",

View file

@ -334,9 +334,13 @@
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer.description": "最先端のオーディオセットアップを模した、異なる音楽の雰囲気を実現します。",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode": "Cider Atmosphere Realizer™ モード",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.description": "Atmosphere Realizer™のモードを変更します",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_STANDARD": "自然 (普通)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_HIGH": "自然 (高い)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_PLUS": "自然 (プラス)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_STANDARD": "ほうじ茶チーズクリーマティー",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_PLUS": "玄米茶タピオカミルクティー",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_1": "岩塩クリームチーズティー",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_2": "宇治抹茶ミルクティー",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E168_1": "春毫ジャスミンマキアート",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z3600": "北海道のロイヤルミルクティー",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500": "ムーンライトソフトケーキ",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "音楽をより豊かに、生き生きとさせます",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAPはSpatializationと互換性がありません",

View file

@ -343,6 +343,8 @@
"settings.notyf.general.keybindings.update.success": "Keybind updated successfully",
"settings.prompt.general.keybindings.update.success": "Keybind updated successfully. Press OK to relaunch Cider",
"settings.option.general.keybindings.open": "Open",
"settings.option.general.themeUpdateNotification": "Automatically check for theme updates",
"settings.option.general.showLovedTracksInline": "Show loved tracks inline",
"settings.description.search": "Search",
"settings.description.albums": "Library Albums",
"settings.description.artists": "Library Artists",
@ -414,6 +416,9 @@
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cider Spatialization Profile",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Changes the Tuning Profile of the Spatialization.",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standard",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.soundstage": "Soundstage",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.separation": "Separation",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.minimal": "Minimal",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Spatialization is not compatible with CAP. Please disable CAP to continue.",
"settings.option.audio.dbspl.display": "dB SPL Display",

View file

@ -283,9 +283,13 @@
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer.description": "以最先进的音频置为蓝本,实现不同的音乐气氛。",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode": "Cider 音乐气氛™️模式",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.description": "更改气氛实现器模块的操作模式。",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_STANDARD": "自然(标准)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_HIGH": "自然(高)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_PLUS": "自然(增强)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_STANDARD": "红茶芝士奶盖",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_PLUS": "玄米珍珠奶茶",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_1": "岩盐芝士奶茶",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_2": "宇治抹茶奶茶",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E168_1": "春毫茉莉玛琪雅朵",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z3600": "北海道奶茶",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500": "月光软饼干",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 数码增强音频处理™️",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "通过人类的听力心理学模型和 AAC 编码特色的即时算法,强化 256 kbps AAC 音频的感知音频质量。",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "数码增强音频处理设置",

View file

@ -458,6 +458,16 @@ export class BrowserWindow {
}
})
app.get("/cideraudio/impulses/:file", (req, res) => {
const impulseExternals = join(utils.getPath("externals"), "/impulses/")
const impulseFile = join(impulseExternals, req.params.file)
if(existsSync(impulseFile)) {
res.sendFile(impulseFile)
}else{
res.sendFile(join(utils.getPath('srcPath'), "./renderer/audio/impulses/" + req.params.file))
}
})
app.get("/api/playback/:action", (req, res) => {
const action = req.params.action;
switch (action) {
@ -938,13 +948,23 @@ export class BrowserWindow {
switch (path) {
default:
case "plugins":
shell.openPath(utils.getPath("plugins"));
if (existsSync(utils.getPath("plugins"))) {
shell.openPath(utils.getPath("plugins"));
} else {
mkdirSync(utils.getPath("plugins"));
shell.openPath(utils.getPath("plugins"));
}
break;
case "userdata":
shell.openPath(app.getPath("userData"));
break;
case "themes":
shell.openPath(utils.getPath("themes"));
if (existsSync(utils.getPath("themes"))) {
shell.openPath(utils.getPath("themes"));
} else {
mkdirSync(utils.getPath("themes"));
shell.openPath(utils.getPath("themes"));
}
break;
}
});

View file

@ -108,7 +108,8 @@ export class Store {
process.platform == "darwin" ? "Option" : "Shift",
"I"
]
}
},
"showLovedTracksInline": true
},
"home": {
"followedArtists": [],

File diff suppressed because it is too large Load diff

View file

@ -94,7 +94,7 @@ const CiderAudio = {
spatialProfiles: [
{
"id": "72_420maikiwi",
"file": './audio/impulses/CiderSpatial_v72.420_Maikiwi.wav',
"file": './cideraudio/impulses/CiderSpatial_v72.420_Maikiwi.wav',
"name": "Maikiwi",
"description": "",
"gainComp": "1.3381352151540196",
@ -102,7 +102,7 @@ const CiderAudio = {
},
{
"id": "71_420maikiwi",
"file": './audio/impulses/CiderSpatial_v71.420_Maikiwi.wav',
"file": './cideraudio/impulses/CiderSpatial_v71.420_Maikiwi.wav',
"name": "Soundstage",
"description": "",
"gainComp": "1.3963683610559376",
@ -110,7 +110,7 @@ const CiderAudio = {
},
{
"id": "70_422maikiwi",
"file": './audio/impulses/CiderSpatial_v70.422_Maikiwi.wav',
"file": './cideraudio/impulses/CiderSpatial_v70.422_Maikiwi.wav',
"name": "Separation",
"description": "",
"gainComp": "1.30767553892022",
@ -118,7 +118,7 @@ const CiderAudio = {
},
{
"id": "standard",
"file": './audio/impulses/CiderSpatial_v69_Standard.wav',
"file": './cideraudio/impulses/CiderSpatial_v69_Standard.wav',
"name": "Minimal",
"description": "",
"gainComp": "1.2647363474711515",
@ -128,25 +128,19 @@ const CiderAudio = {
atmosphereRealizerProfiles: [
{
"id": "NATURAL_STANDARD",
"file": './audio/impulses/AtmosphereRealizer_NaturalStandard.wav',
"file": './cideraudio/impulses/AtmosphereRealizer_NaturalStandard.wav',
"name": "Natural (Standard)",
"description": "",
},
{
"id": "NATURAL_HIGH",
"file": './audio/impulses/AtmosphereRealizer_NaturalHigh.wav',
"name": "Natural (High)",
"description": "",
},
{
"id": "NATURAL_PLUS",
"file": './audio/impulses/AtmosphereRealizer_Natural+.wav',
"file": './cideraudio/impulses/AtmosphereRealizer_Natural+.wav',
"name": "Natural (Plus)",
"description": "",
},
{
"id": "CRYPTO",
"file": './audio/impulses/AtmosphereRealizer_Cryptofyre.wav',
"file": './cideraudio/impulses/AtmosphereRealizer_Cryptofyre.wav',
"name": "Cryptofyre",
"description": "",
}
@ -504,7 +498,7 @@ const CiderAudio = {
case "MAIKIWI":
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.llpw[0].normalize = false;
fetch('./audio/impulses/CAP_Maikiwi.wav').then(async (impulseData) => {
fetch('./cideraudio/impulses/CAP_Maikiwi.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
@ -528,7 +522,7 @@ const CiderAudio = {
case "NATURAL":
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.llpw[0].normalize = false;
fetch('./audio/impulses/CAP_Natural.wav').then(async (impulseData) => {
fetch('./cideraudio/impulses/CAP_Natural.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
@ -580,7 +574,7 @@ const CiderAudio = {
default:
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
CiderAudio.audioNodes.llpw[0].normalize = false;
fetch('./audio/impulses/CAP_Maikiwi.wav').then(async (impulseData) => {
fetch('./cideraudio/impulses/CAP_Maikiwi.wav').then(async (impulseData) => {
let bufferedImpulse = await impulseData.arrayBuffer();
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
});
@ -740,7 +734,7 @@ const CiderAudio = {
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.audioBands[0]);
}
else {
CiderAudio.audioNodes.spatialgainNodeNode.connect(CiderAudio.audioNodes.audioBands[0]);
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]);
}
break;
case 'h0':

View file

@ -235,7 +235,9 @@ const app = new Vue({
pages: [],
},
moreinfodata: [],
notyf: notyf
notyf: notyf,
idleTimer : null,
idleState : false,
},
watch: {
cfg: {
@ -784,8 +786,8 @@ const app = new Vue({
MusicKit.getInstance().videoContainerElement = document.getElementById("apple-music-video-player")
ipcRenderer.on('theme-update', (event, arg) => {
less.refresh(true, true, true)
ipcRenderer.on('theme-update', async (event, arg) => {
await less.refresh(true, true, true)
self.setTheme(self.cfg.visual.theme, true)
if (app.cfg.visual.styles.length != 0) {
app.reloadStyles()
@ -936,12 +938,26 @@ const app = new Vue({
this.getBrowsePage();
this.$forceUpdate()
}, 500)
document.querySelector('#apple-music-video-player-controls').addEventListener('mousemove', () => {
this.showFoo('.music-player-info',2000);
})
ipcRenderer.invoke("renderer-ready", true)
document.querySelector("#LOADER").remove()
if (this.cfg.general.themeUpdateNotification && !this.isDev) {
this.checkForThemeUpdates()
}
},
showFoo(querySelector,time) {
clearTimeout(this.idleTimer);
if (this.idleState == true) {
document.querySelector(querySelector).classList.remove("inactive");
}
this.idleState = false;
this.idleTimer = setTimeout(() => {
document.querySelector(querySelector).classList.add("inactive");
this.idleState = true;
}, time);
},
setContentScrollPos(scroll) {
this.chrome.contentScrollPosY = scroll.target.scrollTop
},
@ -991,7 +1007,7 @@ const app = new Vue({
document.querySelectorAll(`[id*='less']`).forEach(el => {
el.remove()
});
less.refresh()
await less.refresh()
}
},
async reloadStyles() {
@ -1019,7 +1035,7 @@ const app = new Vue({
}
})
less.registerStylesheetsImmediately()
less.refresh(true, true, true)
await less.refresh(true, true, true)
this.$forceUpdate()
return
},

View file

@ -417,7 +417,7 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
position: absolute;
right: 16px;
top: 3%;
background: #1c1c1c8f;
background: var(--color2);
border-radius: 12px;
z-index: 10;
height: 94%;
@ -875,17 +875,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);
// animation: expandIndicator .2s cubic-bezier(0.25, 1, 0.5, 1);
@keyframes expandIndicator {
0% {
transform: scaleY(0);
}
// @keyframes expandIndicator {
// 0% {
// transform: scaleY(0);
// }
100% {
transform: scaleY(1);
}
}
// 100% {
// transform: scaleY(1);
// }
// }
}
.app-chrome {
@ -2885,38 +2885,40 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
.wpfade_transform-enter-active,
.wpfade_transform-leave-active {
--transitionTime: 0.2s;
transition: opacity var(--transitionTime) var(--appleEase), transform var(--transitionTime) var(--appleEase);
will-change: opacity, transform;
--transitionTime: 0.2s;
transition : opacity var(--transitionTime) var(--appleEase);
will-change : opacity, transform;
}
.wpfade_transform-enter {
opacity: 0;
transform: translateX(50%) translate3d(0,0,0);
will-change: opacity, transform;
opacity : 0;
transform : unset;
will-change: opacity;
}
.wpfade_transform-leave-to {
opacity: 0;
transform: translateX(-50%) translate3d(0,0,0);
will-change: opacity, transform;
opacity : 0;
transform : unset;
will-change: opacity;
}
.wpfade_transform_backwards-enter-active,
.wpfade_transform_backwards-leave-active {
--transitionTime: 0.2s;
transition: opacity var(--transitionTime) var(--appleEase), transform var(--transitionTime) var(--appleEase);
--transitionTime: 0.2s;
transition : opacity var(--transitionTime) var(--appleEase);
}
.wpfade_transform_backwards-enter {
opacity: 0;
transform: translateX(-50%) translate3d(0,0,0);
will-change: opacity, transform;
opacity : 0;
transform : unset;
will-change: opacity;
}
.wpfade_transform_backwards-leave-to {
opacity: 0;
transform: translateX(50%) translate3d(0,0,0);
will-change: opacity, transform;
opacity : 0;
transform : unset;
will-change: opacity;
}
.fabfade-enter-active,
@ -2944,12 +2946,12 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
.drawertransition-enter-active,
.drawertransition-leave-active {
transition: right .25s var(--appleEase);
transition: transform .25s var(--appleEase);
}
.drawertransition-enter,
.drawertransition-leave-to {
right: -300px;
transform: translateX(400px);
}
@media (prefers-color-scheme: dark) {
@ -2988,13 +2990,70 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
top: var(--chromeHeight1);
bottom: unset;
}
.inactive {
opacity: 0;
}
#apple-music-video-player-controls {
position: absolute;
z-index: 100001;
float: left;
width: 100%;
height: 100%;
.playback-info{
position: absolute;
bottom: 2vw;
left: 2vw;
width: 97%;
.song-progress {
display: flex;
}
.app-chrome-item.display--large{
position: relative;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
.playback-button {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
padding: 3px;
}
}
.song-artist-album {
font-weight: 400;
font-size: 12px;
text-align: center;
/*height: 1.2em;
line-height: 1.2em;*/
z-index: 1;
align-items: center;
justify-content: center;
width: 80%;
max-width: 340px;
overflow: hidden;
.song-artist-album-content {
font-weight: 400;
font-size: 12px;
text-align: center;
width: 100%;
&.song-artist-normal {
height: inherit;
}
}
&.song-artist-marquee {
> marquee {
margin-bottom: -3px;
}
}
}
}
}
#apple-music-video-player-controls #player-exit {
@ -3111,6 +3170,27 @@ body.no-gpu {
}
}
.floating-header {
background: black;
backdrop-filter: unset;
}
.artworkContainer {
animation: unset!important;
opacity: 0.7;
}
.info-rect-card {
&:before {
display: none;
}
}
.menu-panel .menu-panel-body {
background: rgb(30 30 30);
backdrop-filter: unset;
}
#navigation-bar {
backdrop-filter: unset;
mix-blend-mode: unset;

View file

@ -86,4 +86,40 @@
&:active {
}
}
.wpfade_transform-enter-active,
.wpfade_transform-leave-active {
--transitionTime: 0.2s;
transition: opacity var(--transitionTime) var(--appleEase), transform var(--transitionTime) var(--appleEase);
will-change: opacity, transform;
}
.wpfade_transform-enter {
opacity: 0;
transform: translateX(50%) translate3d(0,0,0);
will-change: opacity, transform;
}
.wpfade_transform-leave-to {
opacity: 0;
transform: translateX(-50%) translate3d(0,0,0);
will-change: opacity, transform;
}
.wpfade_transform_backwards-enter-active,
.wpfade_transform_backwards-leave-active {
--transitionTime: 0.2s;
transition: opacity var(--transitionTime) var(--appleEase), transform var(--transitionTime) var(--appleEase);
}
.wpfade_transform_backwards-enter {
opacity: 0;
transform: translateX(-50%) translate3d(0,0,0);
will-change: opacity, transform;
}
.wpfade_transform_backwards-leave-to {
opacity: 0;
transform: translateX(50%) translate3d(0,0,0);
will-change: opacity, transform;
}

View file

@ -72,6 +72,57 @@
title="Fullscreen">
<%- include("../svg/fullscreen.svg") %>
</div>
<div class="playback-info music-player-info">
<div class="song-artist-album-content"
style="display: inline-block; -webkit-box-orient: horizontal; white-space: nowrap;">
<div class="song-artist" style="display: inline-block">
{{ mk.nowPlayingItem?.attributes?.artistName ?? '' }}
</div>
</div>
<div class="song-name">
{{ mk.nowPlayingItem?.attributes?.name ?? '' }}
<div class="explicit-icon"
v-if="mk.nowPlayingItem?.attributes?.contentRating == 'explicit'"
style="display: inline-block"></div>
</div>
<div class="song-progress">
<p style="width: auto">{{ convertTime(getSongProgress()) }}</p>
<input type="range" step="0.01" min="0" :style="progressBarStyle()" style="width: 95%"
@input="playerLCD.desiredDuration = $event.target.value;playerLCD.userInteraction = true"
@mouseup="mk.seekToTime($event.target.value);setTimeout(()=>{playerLCD.desiredDuration = 0;playerLCD.userInteraction = false}, 1000);"
@touchend="mk.seekToTime($event.target.value);setTimeout(()=>{playerLCD.desiredDuration = 0;playerLCD.userInteraction = false}, 1000);"
:max="mk.currentPlaybackDuration" :value="getSongProgress()">
<p style="width: auto">{{ convertTime(mk.currentPlaybackDuration) }}
</div>
<div class="app-chrome-item display--large">
<div class="app-chrome-item volume display--large">
<button class="volume-button--small volume" @click="muteButtonPressed()"
:class="{'active': this.cfg.audio.volume == 0}"
:title="cfg.audio.muted ? $root.getLz('term.unmute') : $root.getLz('term.mute')"
v-b-tooltip.hover></button>
<input type="range" @wheel="volumeWheel" :step="cfg.audio.volumeStep" min="0" :max="cfg.audio.maxVolume"
v-model="mk.volume" v-if="typeof mk.volume != 'undefined'" @change="checkMuteChange()"
v-b-tooltip.hover :title="formatVolumeTooltip()">
</div>
<button class="playback-button pause" @click="mk.pause()" v-if="mk.isPlaying"
:title="$root.getLz('term.pause')" v-b-tooltip.hover></button>
<button class="playback-button play" @click="mk.play()" v-else
:title="$root.getLz('term.play')" v-b-tooltip.hover></button>
<div class="app-chrome-item generic">
<template v-if="lyrics && lyrics != [] && lyrics.length > 0">
<button class="playback-button--small lyrics"
:title="$root.getLz('term.lyrics')"
v-b-tooltip.hover
:class="{'active': drawer.panel == 'lyrics'}"
@click="invokeDrawer('lyrics')"></button>
</template>
<template v-else>
<button class="playback-button--small lyrics"
:style="{'opacity': 0.3, 'pointer-events': 'none'}"></button>
</template>
</div>
</div>
</div>
</div>
<div id="apple-music-video-player"></div>
</div>

View file

@ -3,11 +3,11 @@
<div class="modal-window">
<div class="modal-header">
<div class="modal-title">{{$root.getLz('action.cast.todevices')}}</div>
<button class="close-btn" @click="close()" :aria-label="app.getLz('action.close')"></button>
<button class="close-btn" @click="close()" :aria-label="$root.getLz('action.close')"></button>
</div>
<div class="modal-content" style="overflow-y: overlay; padding: 3%">
<div class="md-labeltext">{{$root.getLz('action.cast.chromecast')}}</div>
<div class="md-option-container" style="margin-top: 12px;margin-bottom: 12px;">
<div class="md-option-container" style="margin-top: 12px;margin-bottom: 12px;overflow-y: scroll;">
<template v-if="!scanning">
<template v-for="(device) in devices.cast">
<div class="md-option-line" style="cursor: pointer" @click="setCast(device)">
@ -34,7 +34,7 @@
</template>
</div>
<div class="md-labeltext" >{{$root.getLz('action.cast.airplay')}}</div>
<div class="md-option-container" style="margin-top: 12px;margin-bottom: 12px;">
<div class="md-option-container" style="margin-top: 12px;margin-bottom: 12px;overflow-y: scroll;">
<div class="md-option-line">
<div class="md-option-segment">
{{'EXPERIMENTAL!!! Supports Homepods / Apple TVs / Shairport for now, AirPlay on Samsung/LG/Sony devices will be added later'}}

View file

@ -128,7 +128,7 @@
} else {
this.itemId = this.item.id;
}
if (this.item.attributes.playParams) {
if (this.item.attributes.playParams && this.$root.cfg.general.showLovedTracksInline) {
this.getHeartStatus();
}
let duration = this.item.attributes.durationInMillis ?? 0

View file

@ -2,8 +2,15 @@
<div class="mini-view" tabindex="0">
<div class="background">
</div>
<div class="player-pin" title="Pin to Top" @click="app.pinMiniPlayer()">
<span id="mini-pin">📌</span>
<div class="player-pin" title="Pin to Top" v-if="app.cfg.visual.miniplayer_top_toggle === false" @click="app.pinMiniPlayer()">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="none" class="feather feather-pin">
<path d="M7.05664 16.3613C7.05664 17.1523 7.59277 17.6797 8.42773 17.6797H13.1299V21.8369C13.1299 23.0762 13.7539 24.3242 14 24.3242C14.2373 24.3242 14.8613 23.0762 14.8613 21.8369V17.6797H19.5635C20.3984 17.6797 20.9346 17.1523 20.9346 16.3613C20.9346 14.4717 19.4316 12.5293 16.9531 11.6152L16.6631 7.52832C17.9727 6.78125 19.0098 5.96387 19.4668 5.38379C19.7041 5.06738 19.8271 4.75098 19.8271 4.46973C19.8271 3.88965 19.3789 3.45898 18.7197 3.45898H9.27148C8.6123 3.45898 8.16406 3.88965 8.16406 4.46973C8.16406 4.75098 8.28711 5.06738 8.52441 5.38379C8.98145 5.96387 10.0186 6.78125 11.3281 7.52832L11.0469 11.6152C8.55957 12.5293 7.05664 14.4717 7.05664 16.3613Z" fill="#ff2654"/>
</svg>
</div>
<div class="player-pin" title="Unpin to Top" v-if="app.cfg.visual.miniplayer_top_toggle === true" @click="app.pinMiniPlayer(false)">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="none" class="feather feather-pin-slashed">
<path d="M9.271 3.459c-.659 0-1.107.43-1.107 1.01 0 .282.114.59.352.897.448.59 1.494 1.415 2.777 2.162l-.07 1.02 8.99 8.991c.458-.202.722-.615.722-1.178 0-1.89-1.503-3.832-3.947-4.746l-.29-4.087c1.275-.747 2.312-1.555 2.76-2.144.246-.308.37-.633.37-.914 0-.58-.45-1.011-1.108-1.011H9.27ZM5.15 6.061l16.076 16.057c.272.281.73.273.993 0a.703.703 0 0 0 0-.984L6.15 5.076a.716.716 0 0 0-1.002 0 .711.711 0 0 0 0 .985Zm1.908 10.3c0 .791.536 1.319 1.37 1.319h4.703v4.157c0 1.24.624 2.487.861 2.487.246 0 .87-1.248.87-2.487V17.81h.413l-5.537-5.545c-1.678 1.002-2.68 2.557-2.68 4.095Z" fill="#ff2654"/>
</svg>
</div>
<div class="player-exit" title="Close" @click="app.miniPlayer(false)">
<svg fill="#323232e3" width="21" height="21" viewBox="0 0 21 21" aria-role="presentation" focusable="false" xmlns="http://www.w3.org/2000/svg">

View file

@ -21,7 +21,7 @@
<div class="cd-queue-item"
:class="{selected: selectedItems.includes(position)}"
@click="select($event, position)"
@dblclick="playQueueItem(position)" :key="position"
@dblclick="playQueueItem(queueItem.item.id)" :key="position"
@contextmenu="selected = position;queueContext($event, queueItem.item, position)">
<div class="row">
<div class="col-auto flex-center">
@ -150,8 +150,8 @@
}
app.showMenuPanel(menus[useMenu], event);
},
playQueueItem(index) {
app.mk.changeToMediaAtIndex(index)
playQueueItem(id) {
app.mk.changeToMediaAtIndex(app.mk.queue._itemIDs.indexOf(id))
},
updateQueue() {
this.selected = -1

View file

@ -63,10 +63,10 @@
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.description')}}</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<select class="md-select" style="width:180px;"
<select class="md-select" style="width:230px;"
v-model="$root.cfg.audio.maikiwiAudio.atmosphereRealizer1_value"
v-on:change="CiderAudio.hierarchical_loading();">
<option v-for="profile in arprofiles" :value="profile.id">{{ getProfileLz("CTS", profile.name) }}</option>
<option v-for="profile in arprofiles" :value="profile.id">{{ getProfileLz("CAR", profile.id) }}</option>
</select>
</div>
</div>
@ -88,10 +88,10 @@
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.description')}}</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<select class="md-select" style="width:180px;"
<select class="md-select" style="width:230px;"
v-model="$root.cfg.audio.maikiwiAudio.atmosphereRealizer2_value"
v-on:change="CiderAudio.hierarchical_loading();">
<option v-for="profile in arprofiles" :value="profile.id">{{ getProfileLz("CTS", profile.name) }}</option>
<option v-for="profile in arprofiles" :value="profile.id">{{ getProfileLz("CAR", profile.id) }}</option>
</select>
</div>
</div>
@ -117,7 +117,7 @@
<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">{{ getProfileLz("CAR", profile.id) }}</option>
<option v-for="profile in spprofiles" :value="profile.id">{{ getProfileLz("CTS", profile.name) }}</option>
</select>
</div>
</div>
@ -187,15 +187,21 @@
},
methods: {
getProfileLz(type, name) {
if (name === "Cryptofyre" || name === "Maikiwi") {
return name;
switch (name) {
case "CRYPTO":
return "Cryptofyre";
break;
case "Maikiwi":
return "Maikiwi";
break;
}
switch (type) {
case "CAR":
return this.$root.getLz('settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.' + name);
break;
case "CTS":
return this.$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.' + name);
return this.$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.' + name.toLowerCase());
break;
default:
return name;

View file

@ -195,7 +195,29 @@
{{$root.getLz('settings.option.general.keybindings.open')}}
</button>
</div>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.option.general.themeUpdateNotification')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<label>
<input type="checkbox" v-model="app.cfg.general.themeUpdateNotification"
switch/>
</label>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.option.general.showLovedTracksInline')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<label>
<input type="checkbox" v-model="app.cfg.general.showLovedTracksInline"
switch/>
</label>
</div>
</div>
</div>
</div>
</b-tab>