Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
4a46fa1194
22 changed files with 677 additions and 223 deletions
|
@ -113,7 +113,7 @@
|
||||||
"term.contributors": "Mithelfer",
|
"term.contributors": "Mithelfer",
|
||||||
"term.equalizer": "Equalizer",
|
"term.equalizer": "Equalizer",
|
||||||
"term.reset": "Zurücksetzen",
|
"term.reset": "Zurücksetzen",
|
||||||
"term.tracks": "Lieder",
|
"term.tracks": "Titel",
|
||||||
"term.videos": "Videos",
|
"term.videos": "Videos",
|
||||||
"term.menu": "Menü",
|
"term.menu": "Menü",
|
||||||
"term.check": "Nach Updates suchen",
|
"term.check": "Nach Updates suchen",
|
||||||
|
@ -179,8 +179,8 @@
|
||||||
"action.unfollow": "Entfolgen",
|
"action.unfollow": "Entfolgen",
|
||||||
"action.unfollow.success": "Entfolgt",
|
"action.unfollow.success": "Entfolgt",
|
||||||
"action.unfollow.error": "Fehler beim Entfolgen",
|
"action.unfollow.error": "Fehler beim Entfolgen",
|
||||||
"action.playNext": "Spiele als Nächstes",
|
"action.playNext": "Nächster Titel",
|
||||||
"action.playLater": "Spiele später",
|
"action.playLater": "Zuletzt wiedergeben",
|
||||||
"action.startRadio": "Starte Radio",
|
"action.startRadio": "Starte Radio",
|
||||||
"action.goToArtist": "Gehe zu Künstler",
|
"action.goToArtist": "Gehe zu Künstler",
|
||||||
"action.goToAlbum": "Gehe zu Album",
|
"action.goToAlbum": "Gehe zu Album",
|
||||||
|
@ -192,9 +192,9 @@
|
||||||
"action.dislike": "Dislike",
|
"action.dislike": "Dislike",
|
||||||
"action.undoDislike": "Dislike entfernen",
|
"action.undoDislike": "Dislike entfernen",
|
||||||
"action.showWebRemoteQR": "Web-Remote",
|
"action.showWebRemoteQR": "Web-Remote",
|
||||||
"action.playTracksNext": "Spiele ${app.selectedMediaItems.length} Lieder als Nächstes",
|
"action.playTracksNext": "Spiele ${app.selectedMediaItems.length} Titel als Nächstes",
|
||||||
"action.playTracksLater": "Spiele ${app.selectedMediaItems.length} Lieder später",
|
"action.playTracksLater": "Spiele ${app.selectedMediaItems.length} Titel später",
|
||||||
"action.removeTracks": "Entferne ${self.selectedItems.length} Lieder aus der Warteschlange",
|
"action.removeTracks": "Entferne ${self.selectedItems.length} Titel aus der Warteschlange",
|
||||||
"action.import": "Importieren",
|
"action.import": "Importieren",
|
||||||
"action.export": "Exportieren",
|
"action.export": "Exportieren",
|
||||||
"action.showAlbum": "Ganzes Album anzeigen",
|
"action.showAlbum": "Ganzes Album anzeigen",
|
||||||
|
@ -371,5 +371,20 @@
|
||||||
"settings.option.visual.theme.github.openfolder": "Öffne Themes Ordner",
|
"settings.option.visual.theme.github.openfolder": "Öffne Themes Ordner",
|
||||||
"settings.option.debug.copy_log": "Logs in die Zwischenablage kopieren",
|
"settings.option.debug.copy_log": "Logs in die Zwischenablage kopieren",
|
||||||
"settings.header.visual.theme.github.page": "Themes von GitHub",
|
"settings.header.visual.theme.github.page": "Themes von GitHub",
|
||||||
"settings.header.visual.plugin.github.page": "Plugins von GitHub"
|
"settings.header.visual.plugin.github.page": "Plugins von GitHub",
|
||||||
|
"settings.option.connectivity.discordRPC.reload": "DiscordRPC neu laden",
|
||||||
|
"menubar.options.reload": "Neu laden",
|
||||||
|
"settings.option.general.customizeSidebar": "Seitenleistenelemente anpassen",
|
||||||
|
"settings.option.general.customizeSidebar.customize": "Anpassen",
|
||||||
|
"settings.header.window": "Fenster",
|
||||||
|
"settings.option.visual.theme.github.available": "Verfügbar",
|
||||||
|
"settings.option.visual.theme.github.applied": "Angewandt",
|
||||||
|
"action.createNew": "Erstellen...",
|
||||||
|
"settings.option.connect.link_account": "Synchronisierung mit Cider Connect aktivieren",
|
||||||
|
"settings.option.connect.link_account.description": "Wenn du deinen Discord-Account mit Cider Connect verknüpfst, kannst du Benutzerdaten speichern, einschließlich Einstellungen, EQs und eventuell mehr, sobald es fertig ist. (Work in Progress)",
|
||||||
|
"action.editTracklist": "Playlist bearbeiten",
|
||||||
|
"term.track": {
|
||||||
|
"one": "Titel",
|
||||||
|
"other": "Titel"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
"term.artists": "Artists",
|
"term.artists": "Artists",
|
||||||
"term.podcasts": "Podcasts",
|
"term.podcasts": "Podcasts",
|
||||||
"term.playlists": "Playlists",
|
"term.playlists": "Playlists",
|
||||||
|
"term.charts": "Charts",
|
||||||
"term.playlist": "Playlist",
|
"term.playlist": "Playlist",
|
||||||
"term.newPlaylist": "New Playlist",
|
"term.newPlaylist": "New Playlist",
|
||||||
"term.newPlaylistFolder": "New Playlist Folder",
|
"term.newPlaylistFolder": "New Playlist Folder",
|
||||||
|
|
|
@ -59,6 +59,7 @@ export class BrowserWindow {
|
||||||
"pages/library-recentlyadded",
|
"pages/library-recentlyadded",
|
||||||
"pages/browse",
|
"pages/browse",
|
||||||
"pages/groupings",
|
"pages/groupings",
|
||||||
|
"pages/charts",
|
||||||
"pages/settings",
|
"pages/settings",
|
||||||
"pages/installed-themes",
|
"pages/installed-themes",
|
||||||
"pages/listen_now",
|
"pages/listen_now",
|
||||||
|
@ -201,6 +202,11 @@ export class BrowserWindow {
|
||||||
component: `<cider-groupings :data="browsepage"></cider-groupings>`,
|
component: `<cider-groupings :data="browsepage"></cider-groupings>`,
|
||||||
condition: `page == 'groupings'`,
|
condition: `page == 'groupings'`,
|
||||||
onEnter: ``
|
onEnter: ``
|
||||||
|
},{
|
||||||
|
page: "charts",
|
||||||
|
component: `<cider-charts :data="browsepage"></cider-charts>`,
|
||||||
|
condition: `page == 'charts'`,
|
||||||
|
onEnter: ``
|
||||||
}, {
|
}, {
|
||||||
page: "listen_now",
|
page: "listen_now",
|
||||||
component: `<cider-listen-now :data="listennow"></cider-listen-now>`,
|
component: `<cider-listen-now :data="listennow"></cider-listen-now>`,
|
||||||
|
|
|
@ -95,6 +95,11 @@
|
||||||
"component": "<cider-groupings :data=\"browsepage\"></cider-groupings>",
|
"component": "<cider-groupings :data=\"browsepage\"></cider-groupings>",
|
||||||
"condition": "page == 'groupings'",
|
"condition": "page == 'groupings'",
|
||||||
"onEnter": ""
|
"onEnter": ""
|
||||||
|
},{
|
||||||
|
"page": "charts",
|
||||||
|
"component": "<cider-charts :data=\"browsepage\"></cider-charts>",
|
||||||
|
"condition": "page == 'charts'",
|
||||||
|
"onEnter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"page": "listen_now",
|
"page": "listen_now",
|
||||||
|
|
|
@ -4,14 +4,13 @@ const CiderAudio = {
|
||||||
audioNodes: {
|
audioNodes: {
|
||||||
gainNode: null,
|
gainNode: null,
|
||||||
spatialNode: null,
|
spatialNode: null,
|
||||||
spatialInput: null,
|
|
||||||
audioBands: null,
|
audioBands: null,
|
||||||
vibrantbassNode: null,
|
vibrantbassNode: null,
|
||||||
llpw: null,
|
llpw: null,
|
||||||
recorderNode: null,
|
recorderNode: null,
|
||||||
intelliGainComp: null,
|
intelliGainComp: null,
|
||||||
atmosphereRealizer1: null,
|
|
||||||
atmosphereRealizer2: null,
|
atmosphereRealizer2: null,
|
||||||
|
atmosphereRealizer1: null,
|
||||||
},
|
},
|
||||||
ccON: false,
|
ccON: false,
|
||||||
mediaRecorder: null,
|
mediaRecorder: null,
|
||||||
|
@ -30,19 +29,17 @@ const CiderAudio = {
|
||||||
},
|
},
|
||||||
off: function () {
|
off: function () {
|
||||||
try {
|
try {
|
||||||
CiderAudio.hierarchical_unloading();
|
|
||||||
try {
|
try {
|
||||||
CiderAudio.audioNodes = {
|
CiderAudio.audioNodes = {
|
||||||
gainNode: null,
|
gainNode: null,
|
||||||
spatialNode: null,
|
spatialNode: null,
|
||||||
spatialInput: null,
|
|
||||||
audioBands: null,
|
audioBands: null,
|
||||||
vibrantbassNode: null,
|
vibrantbassNode: null,
|
||||||
llpw: null,
|
llpw: null,
|
||||||
recorderNode: null,
|
recorderNode: null,
|
||||||
intelliGainComp: null,
|
intelliGainComp: null,
|
||||||
atmosphereRealizer1: null,
|
|
||||||
atmosphereRealizer2: null,
|
atmosphereRealizer2: null,
|
||||||
|
atmosphereRealizer1: null,
|
||||||
}
|
}
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
CiderAudio.source.connect(CiderAudio.context.destination);
|
CiderAudio.source.connect(CiderAudio.context.destination);
|
||||||
|
@ -62,9 +59,6 @@ const CiderAudio = {
|
||||||
if (app.cfg.audio.normalization) {
|
if (app.cfg.audio.normalization) {
|
||||||
CiderAudio.normalizerOn()
|
CiderAudio.normalizerOn()
|
||||||
}
|
}
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial) {
|
|
||||||
CiderAudio.spatialOn()
|
|
||||||
}
|
|
||||||
CiderAudio.hierarchical_loading();
|
CiderAudio.hierarchical_loading();
|
||||||
},
|
},
|
||||||
normalizerOn: function () {
|
normalizerOn: function () {
|
||||||
|
@ -93,55 +87,91 @@ const CiderAudio = {
|
||||||
},
|
},
|
||||||
spatialProfiles: [
|
spatialProfiles: [
|
||||||
{
|
{
|
||||||
"id": "72_420maikiwi",
|
"id": "maikiwi",
|
||||||
"file": './cideraudio/impulses/CiderSpatial_v72.420_Maikiwi.wav',
|
"file": './cideraudio/impulses/CiderSpatial_Maikiwi.wav',
|
||||||
"name": "Maikiwi",
|
"name": "Maikiwi",
|
||||||
"description": "",
|
"description": "",
|
||||||
"gainComp": "1.3381352151540196",
|
"gainComp": "1.044"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "maikiwiplus",
|
||||||
|
"file": './cideraudio/impulses/CiderSpatial_MaikiwiPlus.wav',
|
||||||
|
"name": "Maikiwi+",
|
||||||
|
"description": "",
|
||||||
|
"gainComp": "1.044"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "71_420maikiwi",
|
"id": "71_420maikiwi",
|
||||||
"file": './cideraudio/impulses/CiderSpatial_v71.420_Maikiwi.wav',
|
"file": './cideraudio/impulses/CiderSpatial_v71.420_Maikiwi.wav',
|
||||||
"name": "Soundstage",
|
"name": "Soundstage",
|
||||||
"description": "",
|
"description": "",
|
||||||
"gainComp": "1.3963683610559376",
|
"gainComp": "1.3963683610559376"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "70_422maikiwi",
|
"id": "70_422maikiwi",
|
||||||
"file": './cideraudio/impulses/CiderSpatial_v70.422_Maikiwi.wav',
|
"file": './cideraudio/impulses/CiderSpatial_v70.422_Maikiwi.wav',
|
||||||
"name": "Separation",
|
"name": "Separation",
|
||||||
"description": "",
|
"description": "",
|
||||||
"gainComp": "1.30767553892022",
|
"gainComp": "1.30767553892022"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "standard",
|
"id": "standard",
|
||||||
"file": './cideraudio/impulses/CiderSpatial_v69_Standard.wav',
|
"file": './cideraudio/impulses/CiderSpatial_Natural.wav',
|
||||||
"name": "Minimal",
|
"name": "Minimal",
|
||||||
"description": "",
|
"description": "",
|
||||||
"gainComp": "1.2647363474711515",
|
"gainComp": "1.044"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "standardplus",
|
||||||
|
"file": './cideraudio/impulses/CiderSpatial_Natural+.wav',
|
||||||
|
"name": "Minimal+",
|
||||||
|
"description": "",
|
||||||
|
"gainComp": "1.044"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "diffused",
|
||||||
|
"file": './cideraudio/impulses/CiderSpatial_Diffuse.wav',
|
||||||
|
"name": "Diffused",
|
||||||
|
"description": "",
|
||||||
|
"gainComp": "1.044"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "BPLK",
|
||||||
|
"file": './cideraudio/impulses/CiderSpatial_BPLK.wav',
|
||||||
|
"name": "BPLK",
|
||||||
|
"description": "",
|
||||||
|
"gainComp": "1.044"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "HW2K",
|
||||||
|
"file": './cideraudio/impulses/CiderSpatial_HW2K.wav',
|
||||||
|
"name": "HW2K",
|
||||||
|
"description": "",
|
||||||
|
"gainComp": "1.044"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "live",
|
||||||
|
"file": './cideraudio/impulses/CiderSpatial_LIVE_2.wav',
|
||||||
|
"name": "live",
|
||||||
|
"description": "",
|
||||||
|
"gainComp": "1.2647363474711515"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
atmosphereRealizerProfiles: [
|
atmosphereRealizerProfiles: [
|
||||||
{
|
{
|
||||||
"id": "NATURAL_STANDARD",
|
"id": "NATURAL_STANDARD",
|
||||||
"file": './cideraudio/impulses/AtmosphereRealizer_NaturalStandard.wav',
|
"file": './cideraudio/impulses/AtmosphereRealizer_NaturalStandard.wav',
|
||||||
"name": "Natural (Standard)",
|
"name": "ほうじ茶チーズクリーマティー",
|
||||||
"description": "",
|
"description": "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "NATURAL_PLUS",
|
"id": "NATURAL_PLUS",
|
||||||
"file": './cideraudio/impulses/AtmosphereRealizer_Natural+.wav',
|
"file": './cideraudio/impulses/AtmosphereRealizer_Natural+.wav',
|
||||||
"name": "Natural (Plus)",
|
"name": "玄米茶タピオカミルクティー",
|
||||||
"description": "",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "CRYPTO",
|
|
||||||
"file": './cideraudio/impulses/AtmosphereRealizer_Cryptofyre.wav',
|
|
||||||
"name": "Cryptofyre",
|
|
||||||
"description": "",
|
"description": "",
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
spatialOn: function () {
|
spatial_ninf: function () {
|
||||||
CiderAudio.audioNodes.spatialNode = null;
|
CiderAudio.audioNodes.spatialNode = null;
|
||||||
CiderAudio.audioNodes.spatialNode = CiderAudio.context.createConvolver();
|
CiderAudio.audioNodes.spatialNode = CiderAudio.context.createConvolver();
|
||||||
CiderAudio.audioNodes.spatialNode.normalize = false;
|
CiderAudio.audioNodes.spatialNode.normalize = false;
|
||||||
|
@ -157,18 +187,28 @@ const CiderAudio = {
|
||||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||||
CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Always destination
|
||||||
|
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.context.destination)
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
intelliGainComp_h0_0: function () {
|
spatialOff: function () {
|
||||||
|
CiderAudio.hierarchical_loading();
|
||||||
|
},
|
||||||
|
intelliGainComp_n0_0: function () {
|
||||||
let filters = []; const precisionHz = 12;
|
let filters = []; const precisionHz = 12;
|
||||||
|
// Biquad calculation
|
||||||
if (CiderAudio.audioNodes.audioBands !== null) { filters = filters.concat(CiderAudio.audioNodes.audioBands) }
|
if (CiderAudio.audioNodes.audioBands !== null) { filters = filters.concat(CiderAudio.audioNodes.audioBands) }
|
||||||
if (CiderAudio.audioNodes.vibrantbassNode !== null) { filters = filters.concat(CiderAudio.audioNodes.vibrantbassNode) }
|
if (CiderAudio.audioNodes.vibrantbassNode !== null) { filters = filters.concat(CiderAudio.audioNodes.vibrantbassNode) }
|
||||||
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw.length > 1) { filters = filters.concat(CiderAudio.audioNodes.llpw); }
|
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw.length > 2) { filters = filters.concat(CiderAudio.audioNodes.llpw); }
|
||||||
|
|
||||||
if (!filters || filters.length === 0) {
|
if (!filters || filters.length === 0) {
|
||||||
let filterlessGain = 1;
|
let filterlessGain = 1;
|
||||||
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw.length == 1) { filterlessGain = filterlessGain * 1.109174815262401 }
|
// Impulse Calculation
|
||||||
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer1 === true) { filterlessGain = filterlessGain * 1.096478196143185 }
|
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw.length <= 2) { filterlessGain = filterlessGain * 1.109174815262401 }
|
||||||
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer2 === true) { filterlessGain = filterlessGain * 1.096478196143185 }
|
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer2 === true) { filterlessGain = filterlessGain * 1.096478196143185 }
|
||||||
|
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer1 === true) { filterlessGain = filterlessGain * 1.096478196143185 }
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial == true) {
|
if (app.cfg.audio.maikiwiAudio.spatial == true) {
|
||||||
let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) {
|
let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) {
|
||||||
return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile;
|
return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile;
|
||||||
|
@ -213,9 +253,11 @@ const CiderAudio = {
|
||||||
if (gain > maxGain)
|
if (gain > maxGain)
|
||||||
maxGain = gain;
|
maxGain = gain;
|
||||||
}
|
}
|
||||||
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw.length == 1) { maxGain = maxGain * 1.109174815262401 }
|
|
||||||
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer1 === true) { maxGain = maxGain * 1.096478196143185 }
|
// Impulse Calculation
|
||||||
|
if (CiderAudio.audioNodes.llpw !== null && CiderAudio.audioNodes.llpw.length <= 2) { maxGain = maxGain * 1.109174815262401 }
|
||||||
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer2 === true) { maxGain = maxGain * 1.096478196143185 }
|
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer2 === true) { maxGain = maxGain * 1.096478196143185 }
|
||||||
|
if (app.cfg.audio.maikiwiAudio.atmosphereRealizer1 === true) { maxGain = maxGain * 1.096478196143185 }
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial == true) {
|
if (app.cfg.audio.maikiwiAudio.spatial == true) {
|
||||||
let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) {
|
let spatialProfile = CiderAudio.spatialProfiles.find(function (profile) {
|
||||||
return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile;
|
return profile.id === app.cfg.audio.maikiwiAudio.spatialProfile;
|
||||||
|
@ -263,7 +305,7 @@ const CiderAudio = {
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
this._bufferSize = 2048;
|
this._bufferSize = 1024;
|
||||||
this._buffers = null;
|
this._buffers = null;
|
||||||
this._initBuffer();
|
this._initBuffer();
|
||||||
}
|
}
|
||||||
|
@ -289,7 +331,6 @@ const CiderAudio = {
|
||||||
if (this._isBufferFull()) {
|
if (this._isBufferFull()) {
|
||||||
this._flush();
|
this._flush();
|
||||||
}
|
}
|
||||||
try{
|
|
||||||
let dataLength = audioRawData[0].length;
|
let dataLength = audioRawData[0].length;
|
||||||
for (let idx=0; idx<dataLength; idx++) {
|
for (let idx=0; idx<dataLength; idx++) {
|
||||||
for (let channel=0; channel < numberOfChannels; channel++) {
|
for (let channel=0; channel < numberOfChannels; channel++) {
|
||||||
|
@ -297,8 +338,6 @@ const CiderAudio = {
|
||||||
this._buffers[channel][this._bytesWritten] = value;
|
this._buffers[channel][this._bytesWritten] = value;
|
||||||
}
|
}
|
||||||
this._bytesWritten += 1;
|
this._bytesWritten += 1;
|
||||||
}} catch (e){
|
|
||||||
// console.log(e)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -373,7 +412,7 @@ const CiderAudio = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CiderAudio.audioNodes.recorderNode.parameters.get('isRecording').setValueAtTime(1, CiderAudio.context.currentTime);
|
CiderAudio.audioNodes.recorderNode.parameters.get('isRecording').setValueAtTime(1, CiderAudio.context.currentTime);
|
||||||
CiderAudio.audioNodes.intelliGainComp.connect(CiderAudio.audioNodes.recorderNode);
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.recorderNode);
|
||||||
|
|
||||||
});
|
});
|
||||||
clearInterval(searchInt);
|
clearInterval(searchInt);
|
||||||
|
@ -395,7 +434,7 @@ const CiderAudio = {
|
||||||
// CiderAudio.ccON = false;
|
// CiderAudio.ccON = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
atmosphereRealizer2_h2_4: function (status, hierarchy) {
|
atmosphereRealizer2_n5: function (status, destination) {
|
||||||
if (status === true) {
|
if (status === true) {
|
||||||
CiderAudio.audioNodes.atmosphereRealizer2 = CiderAudio.context.createConvolver();
|
CiderAudio.audioNodes.atmosphereRealizer2 = CiderAudio.context.createConvolver();
|
||||||
CiderAudio.audioNodes.atmosphereRealizer2.normalize = false;
|
CiderAudio.audioNodes.atmosphereRealizer2.normalize = false;
|
||||||
|
@ -411,36 +450,50 @@ const CiderAudio = {
|
||||||
CiderAudio.audioNodes.atmosphereRealizer2.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
CiderAudio.audioNodes.atmosphereRealizer2.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||||
});
|
});
|
||||||
|
|
||||||
switch (hierarchy) {
|
switch (destination) {
|
||||||
case 'h2_3':
|
case "spatial":
|
||||||
|
try { CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] atmosphereRealizer2_n5 -> Spatial");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case "n5":
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||||
|
console.debug("[Cider][Audio] atmosphereRealizer2_n5 -> atmosphereRealizer2");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n4':
|
||||||
try {
|
try {
|
||||||
CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||||
|
console.debug("[Cider][Audio] atmosphereRealizer2_n5 -> atmosphereRealizer1");
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
case 'h2_2':
|
case 'n3':
|
||||||
try {
|
|
||||||
CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.audioNodes.llpw[0]);
|
|
||||||
} catch (e) { }
|
|
||||||
break;
|
|
||||||
case 'h2_1':
|
|
||||||
try {
|
try {
|
||||||
CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||||
|
console.debug("[Cider][Audio] atmosphereRealizer2_n5 -> vibrantbassNode");
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
case 'h1':
|
case 'n2':
|
||||||
try {
|
try {
|
||||||
CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.audioNodes.audioBands[0]);
|
CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.audioNodes.audioBands[0]);
|
||||||
|
console.debug("[Cider][Audio] atmosphereRealizer2_n5 -> audioBands");
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
case 'h0':
|
case 'n1':
|
||||||
try { CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.context.destination); } catch (e) { }
|
try {
|
||||||
|
CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.audioNodes.llpw[0]);
|
||||||
|
console.debug("[Cider][Audio] atmosphereRealizer2_n5 -> llpw");
|
||||||
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
|
case 'n0':
|
||||||
|
try { CiderAudio.audioNodes.atmosphereRealizer2.connect(CiderAudio.context.destination); console.debug("[Cider][Audio] atmosphereRealizer2_n5 -> destination");} catch (e) { }
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
atmosphereRealizer1_h2_3: function (status, hierarchy) {
|
atmosphereRealizer1_n4: function (status, destination) {
|
||||||
if (status === true) {
|
if (status === true) {
|
||||||
CiderAudio.audioNodes.atmosphereRealizer1 = CiderAudio.context.createConvolver();
|
CiderAudio.audioNodes.atmosphereRealizer1 = CiderAudio.context.createConvolver();
|
||||||
CiderAudio.audioNodes.atmosphereRealizer1.normalize = false;
|
CiderAudio.audioNodes.atmosphereRealizer1.normalize = false;
|
||||||
|
@ -456,31 +509,50 @@ const CiderAudio = {
|
||||||
CiderAudio.audioNodes.atmosphereRealizer1.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
CiderAudio.audioNodes.atmosphereRealizer1.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||||
});
|
});
|
||||||
|
|
||||||
switch (hierarchy) {
|
switch (destination) {
|
||||||
case 'h2_2':
|
case "spatial":
|
||||||
|
try { CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] atmosphereRealizer1_n4 -> Spatial");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case "n5":
|
||||||
try {
|
try {
|
||||||
CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.audioNodes.llpw[0]);
|
CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||||
|
console.debug("[Cider][Audio] atmosphereRealizer1_n4 -> atmosphereRealizer2");
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
case 'h2_1':
|
case 'n4':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||||
|
console.debug("[Cider][Audio] atmosphereRealizer1_n4 -> atmosphereRealizer1");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n3':
|
||||||
try {
|
try {
|
||||||
CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||||
|
console.debug("[Cider][Audio] atmosphereRealizer1_n4 -> vibrantbassNode");
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
case 'h1':
|
case 'n2':
|
||||||
try {
|
try {
|
||||||
CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.audioNodes.audioBands[0]);
|
CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.audioNodes.audioBands[0]);
|
||||||
|
console.debug("[Cider][Audio] atmosphereRealizer1_n4 -> audioBands");
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
case 'h0':
|
case 'n1':
|
||||||
try { CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.context.destination); } catch (e) { }
|
try {
|
||||||
|
CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.audioNodes.llpw[0]);
|
||||||
|
console.debug("[Cider][Audio] atmosphereRealizer1_n4 -> llpw");
|
||||||
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
|
case 'n0':
|
||||||
|
try { CiderAudio.audioNodes.atmosphereRealizer1.connect(CiderAudio.context.destination); console.debug("[Cider][Audio] atmosphereRealizer1_n4 -> destination");} catch (e) { }
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
llpw_h2_2: function (status, hierarchy) {
|
llpw_n1: function (status, destination) {
|
||||||
if (status === true) {
|
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_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_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];
|
||||||
|
@ -492,6 +564,91 @@ const CiderAudio = {
|
||||||
|
|
||||||
switch (app.cfg.audio.maikiwiAudio.ciderPPE_value) {
|
switch (app.cfg.audio.maikiwiAudio.ciderPPE_value) {
|
||||||
case "MAIKIWI":
|
case "MAIKIWI":
|
||||||
|
|
||||||
|
try {
|
||||||
|
switch (localStorage.getItem("playingBitrate")) {
|
||||||
|
case "64":
|
||||||
|
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
|
||||||
|
CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||||
|
fetch('./cideraudio/impulses/CAP_64.wav').then(async (impulseData) => {
|
||||||
|
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||||
|
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||||
|
});
|
||||||
|
console.debug("[Cider][Audio] CAP Adaptive - 64kbps");
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "256":
|
||||||
|
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||||
|
CiderAudio.audioNodes.llpw[1] = CiderAudio.context.createGain(); CiderAudio.audioNodes.llpw[1].gain.value = 2.37; // Post Gain Compensation
|
||||||
|
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[1]);
|
||||||
|
fetch('./cideraudio/impulses/CAP_256_FINAL_48k.wav').then(async (impulseData) => {
|
||||||
|
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||||
|
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||||
|
});
|
||||||
|
console.debug("[Cider][Audio] CAP Adaptive - 256kbps_2_48k");
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||||
|
CiderAudio.audioNodes.llpw[1] = CiderAudio.context.createGain(); CiderAudio.audioNodes.llpw[1].gain.value = 2.37; // Post Gain Compensation
|
||||||
|
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[1]);
|
||||||
|
fetch('./cideraudio/impulses/CAP_256_FINAL_48k.wav').then(async (impulseData) => {
|
||||||
|
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||||
|
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||||
|
});
|
||||||
|
console.debug("[Cider][Audio] CAP Adaptive - CONFIG FALLBACK - 256kbps_2_48k");
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||||
|
CiderAudio.audioNodes.llpw[1] = CiderAudio.context.createGain(); CiderAudio.audioNodes.llpw[1].gain.value = 2.37;
|
||||||
|
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[1]);
|
||||||
|
fetch('./cideraudio/impulses/CAP_256_FINAL_48k.wav').then(async (impulseData) => {
|
||||||
|
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||||
|
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||||
|
});
|
||||||
|
console.debug("[Cider][Audio] CAP Adaptive - (Error Fallback) 256kbps");
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (destination) {
|
||||||
|
case "spatial":
|
||||||
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case "n5":
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n4':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'n3':
|
||||||
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n2':
|
||||||
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n1':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.llpw[0]);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n0':
|
||||||
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "MAIKIWI_LEGACY":
|
||||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
|
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
|
||||||
CiderAudio.audioNodes.llpw[0].normalize = false;
|
CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||||
fetch('./cideraudio/impulses/CAP_Maikiwi.wav').then(async (impulseData) => {
|
fetch('./cideraudio/impulses/CAP_Maikiwi.wav').then(async (impulseData) => {
|
||||||
|
@ -499,22 +656,42 @@ const CiderAudio = {
|
||||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||||
});
|
});
|
||||||
|
|
||||||
switch (hierarchy) {
|
switch (destination) {
|
||||||
case 'h2_1':
|
case "spatial":
|
||||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.vibrantbassNode[0]); } catch (e) { }
|
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||||
break;
|
break;
|
||||||
case 'h1':
|
case "n5":
|
||||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.audioBands[0]); } catch (e) { }
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||||
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
case 'h0':
|
case 'n4':
|
||||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.context.destination); } catch (e) { }
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||||
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
|
case 'n1':
|
||||||
}
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[0]);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n3':
|
||||||
|
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n2':
|
||||||
|
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n0':
|
||||||
|
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
console.debug("[Cider][Audio] CAP - Maikiwi Signature Mode");
|
console.debug("[Cider][Audio] CAP - Maikiwi Signature Mode");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "NATURAL":
|
case "NATURAL":
|
||||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
|
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
|
||||||
CiderAudio.audioNodes.llpw[0].normalize = false;
|
CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||||
|
@ -523,15 +700,37 @@ const CiderAudio = {
|
||||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||||
});
|
});
|
||||||
|
|
||||||
switch (hierarchy) {
|
switch (destination) {
|
||||||
case 'h2_1':
|
case "spatial":
|
||||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.vibrantbassNode[0]); } catch (e) { }
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||||
break;
|
break;
|
||||||
case 'h1':
|
case "n5":
|
||||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.audioBands[0]); } catch (e) { }
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||||
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
case 'h0':
|
case 'n4':
|
||||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.context.destination); } catch (e) { }
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n1':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[0]);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n3':
|
||||||
|
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n2':
|
||||||
|
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n0':
|
||||||
|
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -539,34 +738,105 @@ const CiderAudio = {
|
||||||
console.debug("[Cider][Audio] CAP - Natural Mode");
|
console.debug("[Cider][Audio] CAP - Natural Mode");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "LEGACY":
|
||||||
|
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 (destination) {
|
||||||
|
case "spatial":
|
||||||
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case "n5":
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n4':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n1':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.llpw[0]);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n3':
|
||||||
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n2':
|
||||||
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n0':
|
||||||
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
console.debug("[Cider][Audio] CAP - Legacy Mode");
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
|
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||||
CiderAudio.audioNodes.llpw[0].normalize = false;
|
CiderAudio.audioNodes.llpw[1] = CiderAudio.context.createGain(); CiderAudio.audioNodes.llpw[1].gain.value = 2.57;
|
||||||
fetch('./cideraudio/impulses/CAP_Maikiwi.wav').then(async (impulseData) => {
|
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[1]);
|
||||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
fetch('./cideraudio/impulses/CAP_256_FINAL_48k.wav').then(async (impulseData) => {
|
||||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||||
});
|
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||||
|
});
|
||||||
switch (hierarchy) {
|
|
||||||
case 'h2_1':
|
|
||||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.vibrantbassNode[0]); } catch (e) { }
|
|
||||||
break;
|
|
||||||
case 'h1':
|
|
||||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.audioBands[0]); } catch (e) { }
|
|
||||||
break;
|
|
||||||
case 'h0':
|
|
||||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.context.destination); } catch (e) { }
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
app.cfg.audio.maikiwiAudio.ciderPPE_value = "MAIKIWI";
|
app.cfg.audio.maikiwiAudio.ciderPPE_value = "MAIKIWI";
|
||||||
console.debug("[Cider][Audio] CAP - MaikiwiSignature Mode (Defaulted from broki config)");
|
|
||||||
|
switch (destination) {
|
||||||
|
case "spatial":
|
||||||
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case "n5":
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw[1].connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n4':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw[1].connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n1':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.llpw[1].connect(CiderAudio.audioNodes.llpw[0]);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n3':
|
||||||
|
try { CiderAudio.audioNodes.llpw[1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||||
|
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n2':
|
||||||
|
try { CiderAudio.audioNodes.llpw[1].connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n0':
|
||||||
|
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
console.debug("[Cider][Audio] CAP - Maikiwi Adaptive Mode (Defaulted from broki config)");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
vibrantbass_h2_1: function (status, hierarchy) {
|
vibrantbass_n3: function (status, destination) {
|
||||||
if (status === true) {
|
if (status === true) {
|
||||||
let VIBRANTBASSBANDS = app.cfg.audio.maikiwiAudio.vibrantBass.frequencies;
|
let VIBRANTBASSBANDS = app.cfg.audio.maikiwiAudio.vibrantBass.frequencies;
|
||||||
let VIBRANTBASSGAIN = app.cfg.audio.maikiwiAudio.vibrantBass.gain;
|
let VIBRANTBASSGAIN = app.cfg.audio.maikiwiAudio.vibrantBass.gain;
|
||||||
|
@ -585,144 +855,143 @@ const CiderAudio = {
|
||||||
CiderAudio.audioNodes.vibrantbassNode[i - 1].connect(CiderAudio.audioNodes.vibrantbassNode[i]);
|
CiderAudio.audioNodes.vibrantbassNode[i - 1].connect(CiderAudio.audioNodes.vibrantbassNode[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (hierarchy) {
|
switch (destination) {
|
||||||
case 'h0':
|
case "spatial":
|
||||||
try {
|
try { CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] vibrantbass_n3 -> Spatial");} catch (e) { }
|
||||||
CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.context.destination);
|
|
||||||
} catch (e) { }
|
|
||||||
break;
|
|
||||||
case 'h1':
|
|
||||||
try { CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.audioNodes.audioBands[0]); } catch (e) { }
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "n5":
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||||
|
console.debug("[Cider][Audio] vibrantbass_n3 -> atmosphereRealizer2");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n4':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||||
|
console.debug("[Cider][Audio] vibrantbass_n3 -> atmosphereRealizer1");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n3':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||||
|
console.debug("[Cider][Audio] vibrantbass_n3 -> vibrantbassNode");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n2':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.audioNodes.audioBands[0]);
|
||||||
|
console.debug("[Cider][Audio] vibrantbass_n3 -> audioBands");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n1':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.audioNodes.llpw[0]);
|
||||||
|
console.debug("[Cider][Audio] vibrantbass_n3 -> llpw");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n0':
|
||||||
|
try { CiderAudio.audioNodes.vibrantbassNode[0].connect(CiderAudio.context.destination); console.debug("[Cider][Audio] vibrantbass_n3 -> destination");} catch (e) { }
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
hierarchical_unloading: function () {
|
hierarchical_unloading: function () {
|
||||||
try { CiderAudio.audioNodes.spatialNode.output.disconnect(); } catch (e) { }
|
try { CiderAudio.audioNodes.spatialNode.disconnect(); CiderAudio.audioNodes.spatialNode = null} catch (e) { }
|
||||||
try { CiderAudio.audioNodes.spatialNode.disconnect(); } catch (e) { }
|
|
||||||
try { CiderAudio.audioNodes.gainNode.disconnect(); } catch (e) { }
|
try { CiderAudio.audioNodes.gainNode.disconnect(); } catch (e) { }
|
||||||
try { CiderAudio.audioNodes.atmosphereRealizer1.disconnect(); CiderAudio.audioNodes.atmosphereRealizer1 = null } catch (e) { }
|
|
||||||
try { CiderAudio.audioNodes.atmosphereRealizer2.disconnect(); CiderAudio.audioNodes.atmosphereRealizer2 = null } catch (e) { }
|
try { CiderAudio.audioNodes.atmosphereRealizer2.disconnect(); CiderAudio.audioNodes.atmosphereRealizer2 = null } catch (e) { }
|
||||||
|
try { CiderAudio.audioNodes.atmosphereRealizer1.disconnect(); CiderAudio.audioNodes.atmosphereRealizer1 = 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.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.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) { }
|
try { for (var i of CiderAudio.audioNodes.audioBands) { i.disconnect(); } CiderAudio.audioNodes.vibrantbassNode = null} catch (e) { };
|
||||||
|
console.debug("[Cider][Audio] Finished hierarchical unloading")
|
||||||
console.debug("[Cider][Audio] Finished hierarchical unloading");
|
|
||||||
|
|
||||||
},
|
},
|
||||||
config_mapping: function () {
|
hierarchical_loading: function () {
|
||||||
return new Promise(resolve => {
|
const configMap = new Map([
|
||||||
const map = new Map([
|
['spatial', app.cfg.audio.maikiwiAudio.spatial === true],
|
||||||
['h1', Math.max(...app.cfg.audio.equalizer.gain) != 0],
|
['n5', app.cfg.audio.maikiwiAudio.atmosphereRealizer2 === true],
|
||||||
['h2_1', app.cfg.audio.equalizer.vibrantBass != 0],
|
['n4', app.cfg.audio.maikiwiAudio.atmosphereRealizer1 === true],
|
||||||
['h2_2', app.cfg.audio.maikiwiAudio.ciderPPE === true],
|
['n3', app.cfg.audio.equalizer.vibrantBass != 0],
|
||||||
['h2_3', app.cfg.audio.maikiwiAudio.atmosphereRealizer1 === true],
|
['n2', Math.max(...app.cfg.audio.equalizer.gain) != 0],
|
||||||
['h2_4', app.cfg.audio.maikiwiAudio.atmosphereRealizer2 === true],
|
['n1', app.cfg.audio.maikiwiAudio.ciderPPE === true]
|
||||||
['spatial', app.cfg.audio.maikiwiAudio.spatial === true]
|
]);
|
||||||
]);
|
|
||||||
|
|
||||||
resolve(map);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
hierarchical_loading: async function () {
|
|
||||||
const configMap = await CiderAudio.config_mapping();
|
|
||||||
CiderAudio.hierarchical_unloading();
|
CiderAudio.hierarchical_unloading();
|
||||||
|
let lastNode = 'n0';
|
||||||
let nextTier = 0, lastNode = 'h0';
|
|
||||||
for (let [tier, value] of configMap.entries()) {
|
for (let [tier, value] of configMap.entries()) {
|
||||||
if (value === true) {
|
if (value === true) {
|
||||||
switch (tier) {
|
switch (tier) {
|
||||||
case 'h1':
|
|
||||||
CiderAudio.equalizer(true, lastNode);
|
|
||||||
lastNode = 'h1';
|
|
||||||
break;
|
|
||||||
case 'h2_1':
|
|
||||||
CiderAudio.vibrantbass_h2_1(true, lastNode);
|
|
||||||
lastNode = 'h2_1';
|
|
||||||
break;
|
|
||||||
case 'h2_2':
|
|
||||||
app.cfg.audio.normalization = true;
|
|
||||||
CiderAudio.llpw_h2_2(true, lastNode);
|
|
||||||
lastNode = 'h2_2';
|
|
||||||
break;
|
|
||||||
case 'h2_3':
|
|
||||||
app.cfg.audio.normalization = true;
|
|
||||||
CiderAudio.atmosphereRealizer1_h2_3(true, lastNode);
|
|
||||||
lastNode = 'h2_3';
|
|
||||||
break;
|
|
||||||
case 'h2_4':
|
|
||||||
app.cfg.audio.normalization = true;
|
|
||||||
CiderAudio.atmosphereRealizer2_h2_4(true, lastNode);
|
|
||||||
lastNode = 'h2_4';
|
|
||||||
break;
|
|
||||||
case 'spatial':
|
case 'spatial':
|
||||||
app.cfg.audio.normalization = true
|
CiderAudio.spatial_ninf();
|
||||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
lastNode = 'spatial';
|
||||||
|
break;
|
||||||
|
case 'n5':
|
||||||
|
app.cfg.audio.normalization = true;
|
||||||
|
CiderAudio.atmosphereRealizer2_n5(true, lastNode);
|
||||||
|
lastNode = 'n5';
|
||||||
|
break;
|
||||||
|
case 'n4':
|
||||||
|
app.cfg.audio.normalization = true;
|
||||||
|
CiderAudio.atmosphereRealizer1_n4(true, lastNode);
|
||||||
|
lastNode = 'n4';
|
||||||
|
break;
|
||||||
|
case 'n3':
|
||||||
|
CiderAudio.vibrantbass_n3(true, lastNode);
|
||||||
|
lastNode = 'n3';
|
||||||
|
break;
|
||||||
|
case 'n2':
|
||||||
|
CiderAudio.equalizer(true, lastNode);
|
||||||
|
lastNode = 'n2';
|
||||||
|
break;
|
||||||
|
case 'n1':
|
||||||
|
app.cfg.audio.normalization = true;
|
||||||
|
CiderAudio.llpw_n1(true, lastNode);
|
||||||
|
lastNode = 'n1';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (lastNode) {
|
switch (lastNode) {
|
||||||
case 'h2_4':
|
case 'spatial':
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode);
|
||||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
console.debug("[Cider][Audio] gainNode -> Spatial");
|
||||||
}
|
|
||||||
else {
|
|
||||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'h2_3':
|
case 'n5':
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
console.debug("[Cider][Audio] gainNode -> atmosphereRealizer2");
|
||||||
}
|
|
||||||
else {
|
|
||||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'h2_2':
|
case 'n4':
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]);
|
console.debug("[Cider][Audio] gainNode -> atmosphereRealizer1");
|
||||||
}
|
|
||||||
else {
|
|
||||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'h2_1':
|
case 'n3':
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
console.debug("[Cider][Audio] gainNode -> vibrantbass");
|
||||||
}
|
|
||||||
else {
|
|
||||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'h1':
|
case 'n2':
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]);
|
||||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.audioBands[0]);
|
console.debug("[Cider][Audio] gainNode -> audioBands");
|
||||||
}
|
|
||||||
else {
|
|
||||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'h0':
|
case 'n1':
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]);
|
||||||
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.context.destination)
|
console.debug("[Cider][Audio] gainNode -> llpw");
|
||||||
}
|
break;
|
||||||
else {
|
case 'n0':
|
||||||
CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination);
|
CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination);
|
||||||
}
|
console.debug("[Cider][Audio] gainNode -> destination");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.debug('[Cider][Audio]\n' + [...configMap.entries()] + '\n lastNode: ' + lastNode);
|
console.debug('[Cider][Audio]\n' + [...configMap.entries()] + '\n lastNode: ' + lastNode);
|
||||||
|
|
||||||
CiderAudio.intelliGainComp_h0_0();
|
CiderAudio.intelliGainComp_n0_0();
|
||||||
console.debug("[Cider][Audio] Finished hierarchical loading");
|
console.debug("[Cider][Audio] Finished hierarchical loading");
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
equalizer: function (status, hierarchy) { // h1_1
|
equalizer: function (status, destination) { // n2_1
|
||||||
if (status === true) {
|
if (status === true) {
|
||||||
let BANDS = app.cfg.audio.equalizer.frequencies;
|
let BANDS = app.cfg.audio.equalizer.frequencies;
|
||||||
let GAIN = app.cfg.audio.equalizer.gain;
|
let GAIN = app.cfg.audio.equalizer.gain;
|
||||||
|
@ -741,12 +1010,44 @@ const CiderAudio = {
|
||||||
CiderAudio.audioNodes.audioBands[i - 1].connect(CiderAudio.audioNodes.audioBands[i]);
|
CiderAudio.audioNodes.audioBands[i - 1].connect(CiderAudio.audioNodes.audioBands[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (hierarchy) {
|
switch (destination) {
|
||||||
case 'h0':
|
case 'spatial':
|
||||||
|
CiderAudio.audioNodes.audioBands[BANDS.length - 1].connect(CiderAudio.audioNodes.spatialNode);
|
||||||
|
console.debug("[Cider][Audio] Equalizer -> Spatial");
|
||||||
|
break;
|
||||||
|
case "n5":
|
||||||
try {
|
try {
|
||||||
CiderAudio.audioNodes.audioBands[BANDS.length - 1].connect(CiderAudio.context.destination);
|
CiderAudio.audioNodes.audioBands[BANDS.length - 1].connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||||
|
console.debug("[Cider][Audio] Equalizer -> atmosphereRealizer2");
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
break;
|
break;
|
||||||
|
case 'n4':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.audioBands[BANDS.length - 1].connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||||
|
console.debug("[Cider][Audio] Equalizer -> atmosphereRealizer1");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n3':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.audioBands[BANDS.length - 1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||||
|
console.debug("[Cider][Audio] Equalizer -> vibrantbassNode");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n2':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.audioBands[BANDS.length - 1].connect(CiderAudio.audioNodes.audioBands[0]);
|
||||||
|
console.debug("[Cider][Audio] Equalizer -> audioBands");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n1':
|
||||||
|
try {
|
||||||
|
CiderAudio.audioNodes.audioBands[BANDS.length - 1].connect(CiderAudio.audioNodes.llpw[0]);
|
||||||
|
console.debug("[Cider][Audio] Equalizer -> llpw");
|
||||||
|
} catch (e) { }
|
||||||
|
break;
|
||||||
|
case 'n0':
|
||||||
|
try { CiderAudio.audioNodes.audioBands[BANDS.length - 1].connect(CiderAudio.context.destination); console.debug("[Cider][Audio] Equalizer -> destination");} catch (e) { }
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
BIN
src/renderer/audio/impulses/CAP_256_FINAL_48k.wav
Normal file
BIN
src/renderer/audio/impulses/CAP_256_FINAL_48k.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CAP_64.wav
Normal file
BIN
src/renderer/audio/impulses/CAP_64.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CiderSpatial_BPLK.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_BPLK.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CiderSpatial_Diffuse.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_Diffuse.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CiderSpatial_HW2K.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_HW2K.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CiderSpatial_LIVE.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_LIVE.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CiderSpatial_LIVE_2.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_LIVE_2.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CiderSpatial_Maikiwi.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_Maikiwi.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CiderSpatial_MaikiwiPlus.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_MaikiwiPlus.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CiderSpatial_Natural+.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_Natural+.wav
Normal file
Binary file not shown.
BIN
src/renderer/audio/impulses/CiderSpatial_Natural.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_Natural.wav
Normal file
Binary file not shown.
Binary file not shown.
|
@ -500,8 +500,11 @@ const app = new Vue({
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
goToGrouping(url = "https://music.apple.com/WebObjects/MZStore.woa/wa/viewGrouping?cc=us&id=34") {
|
goToGrouping(url = "https://music.apple.com/WebObjects/MZStore.woa/wa/viewGrouping?cc=us&id=34") {
|
||||||
|
if (url.includes('viewTop')){
|
||||||
|
window.location.hash = `#charts/top`
|
||||||
|
} else {
|
||||||
const id = url.split("id=")[1];
|
const id = url.split("id=")[1];
|
||||||
window.location.hash = `#groupings/${id}`
|
window.location.hash = `#groupings/${id}`}
|
||||||
},
|
},
|
||||||
navigateForward() {
|
navigateForward() {
|
||||||
history.forward()
|
history.forward()
|
||||||
|
|
|
@ -35,10 +35,12 @@
|
||||||
<select class="md-select" style="width:180px;"
|
<select class="md-select" style="width:180px;"
|
||||||
v-model="app.cfg.audio.maikiwiAudio.ciderPPE_value"
|
v-model="app.cfg.audio.maikiwiAudio.ciderPPE_value"
|
||||||
v-on:change="CiderAudio.hierarchical_loading()">
|
v-on:change="CiderAudio.hierarchical_loading()">
|
||||||
<option value="MAIKIWI">Maikiwi</option>
|
<option value="MAIKIWI">Maikiwi ({{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.adaptive')}})</option>
|
||||||
|
<option value="MAIKIWI_LEGACY">Maikiwi ({{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.legacy')}})</option>
|
||||||
<option value="NATURAL">
|
<option value="NATURAL">
|
||||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard')}}
|
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard')}}
|
||||||
</option>
|
</option>
|
||||||
|
<option value="LEGACY">{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.legacy')}}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -100,7 +102,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-segment md-option-segment_auto">
|
<div class="md-option-segment md-option-segment_auto">
|
||||||
<input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.spatial"
|
<input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.spatial"
|
||||||
v-on:change="toggleMaikiwiSpatial" switch/>
|
v-on:change="CiderAudio.hierarchical_loading();" switch/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-line"
|
<div class="md-option-line"
|
||||||
|
@ -113,7 +115,7 @@
|
||||||
<div class="md-option-segment md-option-segment_auto">
|
<div class="md-option-segment md-option-segment_auto">
|
||||||
<select class="md-select" style="width:180px;"
|
<select class="md-select" style="width:180px;"
|
||||||
v-model="$root.cfg.audio.maikiwiAudio.spatialProfile"
|
v-model="$root.cfg.audio.maikiwiAudio.spatialProfile"
|
||||||
v-on:change="toggleMaikiwiSpatial">
|
v-on:change="CiderAudio.hierarchical_loading();">
|
||||||
<option v-for="profile in spprofiles" :value="profile.id">{{ getProfileLz("CTS", profile.name) }}</option>
|
<option v-for="profile in spprofiles" :value="profile.id">{{ getProfileLz("CTS", profile.name) }}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
@ -183,6 +185,10 @@
|
||||||
return "Maikiwi+";
|
return "Maikiwi+";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "Minimal+":
|
||||||
|
return this.$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.minimal') + "+";
|
||||||
|
break;
|
||||||
|
|
||||||
case "live":
|
case "live":
|
||||||
return "LIVE";
|
return "LIVE";
|
||||||
break;
|
break;
|
||||||
|
@ -197,21 +203,7 @@
|
||||||
default:
|
default:
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
toggleMaikiwiSpatial: function () {
|
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
|
||||||
CiderAudio.spatialOn()
|
|
||||||
CiderAudio.hierarchical_loading();
|
|
||||||
//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();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
133
src/renderer/views/pages/charts.ejs
Normal file
133
src/renderer/views/pages/charts.ejs
Normal file
|
@ -0,0 +1,133 @@
|
||||||
|
<script type="text/x-template" id="cider-charts">
|
||||||
|
<div class="content-inner">
|
||||||
|
<h1 class="header-text">{{$root.getLz("term.charts")}}</h1>
|
||||||
|
<template v-if="songs != []">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h3>{{ songs.name ?? ""}}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto flex-center" v-if="songs.data.length > 12">
|
||||||
|
<button class="cd-btn-seeall" @click="app.showCollection((songs ?? []), songs.name ?? '', 'default')" >{{app.getLz('term.seeAll')}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mediaitem-list-item__grid">
|
||||||
|
<listitem-horizontal :items="(songs?.data ?? []).limit(12)">
|
||||||
|
</listitem-horizontal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template v-if="albums != []">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h3>{{ albums.name ?? ""}}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto flex-center" v-if="songs.data.length > 12">
|
||||||
|
<button class="cd-btn-seeall" @click="app.showCollection((albums ?? []), albums.name ?? '', 'default')" >{{app.getLz('term.seeAll')}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<mediaitem-scroller-horizontal-large
|
||||||
|
:items="(albums?.data ?? []).limit(10)"></mediaitem-scroller-horizontal-large>
|
||||||
|
</template>
|
||||||
|
<template v-if="playlists != []">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h3>{{ playlists.name ?? ""}}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto flex-center" v-if="playlists.data.length > 12">
|
||||||
|
<button class="cd-btn-seeall" @click="app.showCollection((playlists ?? []), playlists.name ?? '', 'default')" >{{app.getLz('term.seeAll')}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<mediaitem-scroller-horizontal-large
|
||||||
|
:items="(playlists?.data ?? []).limit(10)"></mediaitem-scroller-horizontal-large>
|
||||||
|
</template>
|
||||||
|
<template v-if="musicvideos != []">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h3>{{ musicvideos.name ?? ""}}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto flex-center" v-if="musicvideos.data.length > 12">
|
||||||
|
<button class="cd-btn-seeall" @click="app.showCollection((musicvideos ?? []), musicvideos.name ?? '', 'default')" >{{app.getLz('term.seeAll')}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<mediaitem-scroller-horizontal-large
|
||||||
|
:items="(musicvideos?.data ?? []).limit(10)"></mediaitem-scroller-horizontal-large>
|
||||||
|
</template>
|
||||||
|
<template v-if="globalcharts != []">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h3>{{ globalcharts.name ?? ""}}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto flex-center" v-if="globalcharts.data.length > 12">
|
||||||
|
<button class="cd-btn-seeall" @click="app.showCollection((globalcharts ?? []), globalcharts.name ?? '', 'default')" >{{app.getLz('term.seeAll')}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<mediaitem-scroller-horizontal-large
|
||||||
|
:items="(globalcharts?.data ?? []).limit(10)"></mediaitem-scroller-horizontal-large>
|
||||||
|
</template>
|
||||||
|
<template v-if="citycharts != []">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h3>{{ citycharts.name ?? ""}}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto flex-center" v-if="citycharts.data.length > 12">
|
||||||
|
<button class="cd-btn-seeall" @click="app.showCollection((citycharts ?? []), citycharts.name ?? '', 'default')" >{{app.getLz('term.seeAll')}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<mediaitem-scroller-horizontal-large
|
||||||
|
:items="(citycharts?.data ?? []).limit(10)"></mediaitem-scroller-horizontal-large>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
Vue.component('cider-charts', {
|
||||||
|
template: "#cider-charts",
|
||||||
|
data: function () {
|
||||||
|
return {
|
||||||
|
app: this.$root,
|
||||||
|
songs: [],
|
||||||
|
albums: [],
|
||||||
|
playlists: [],
|
||||||
|
musicvideos: [],
|
||||||
|
citycharts: [],
|
||||||
|
globalcharts: [],
|
||||||
|
categories: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getData() {
|
||||||
|
let self = this;
|
||||||
|
app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/charts`, {
|
||||||
|
types: 'albums,songs,music-videos,playlists',
|
||||||
|
l: 'en-gb',
|
||||||
|
platform: 'auto',
|
||||||
|
limit: '50',
|
||||||
|
genre: '34',
|
||||||
|
include: 'tracks',
|
||||||
|
with: 'cityCharts,dailyGlobalTopCharts',
|
||||||
|
extend: 'artistUrl',
|
||||||
|
'fields[albums]': 'artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url',
|
||||||
|
'fields[playlists]': 'artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url,curatorName'
|
||||||
|
}).then(res => {
|
||||||
|
let page = res.data?.results ?? [];
|
||||||
|
self.songs = page.songs[0] ?? [];
|
||||||
|
self.albums = page.albums[0] ?? [];
|
||||||
|
self.playlists = page.playlists[0] ?? [];
|
||||||
|
self.musicvideos = page['music-videos'][0] ?? [];
|
||||||
|
self.citycharts = page.cityCharts[0] ?? [];
|
||||||
|
self.globalcharts = page.dailyGlobalTopCharts[0] ?? [];
|
||||||
|
})
|
||||||
|
// let self = this;
|
||||||
|
// app.mk.api.music(`/v1/catalog/${app.mk.storefrontId}/charts?types=songs%2Calbums%2Cplaylists&limit=36`).then(res => {
|
||||||
|
// let page = res.data?.results ?? [];
|
||||||
|
// self.songs = page.songs[0] ?? [];
|
||||||
|
// self.albums = page.albums[0] ?? [];
|
||||||
|
// self.playlists = page.playlists[0] ?? [];
|
||||||
|
// })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
|
@ -1405,7 +1405,6 @@
|
||||||
CiderAudio.normalizerOn()
|
CiderAudio.normalizerOn()
|
||||||
}
|
}
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||||
CiderAudio.spatialOn()
|
|
||||||
CiderAudio.hierarchical_loading();
|
CiderAudio.hierarchical_loading();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1416,7 +1415,6 @@
|
||||||
CiderAudio.normalizerOn()
|
CiderAudio.normalizerOn()
|
||||||
}
|
}
|
||||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||||
CiderAudio.spatialOn()
|
|
||||||
CiderAudio.hierarchical_loading();
|
CiderAudio.hierarchical_loading();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue