diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index 9c89b50f..d15a92d1 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -664,7 +664,7 @@ export class BrowserWindow { console.log(err) }); }); - +/* ipcMain.on('check-for-update', async (_event) => { const branch = utils.getStoreValue('general.update_branch') let latestbranch = await fetch(`https://circleci.com/api/v1.1/project/gh/ciderapp/Cider/latest/artifacts?branch=${branch}&filter=successful`) @@ -680,10 +680,10 @@ export class BrowserWindow { const options: any = { provider: 'generic', url: `${base_url}` - } + }*/ /* * Have to handle the auto updaters seperatly until we can support macOS. electron-builder limitation -q - */ + */ /* const win_autoUpdater = new NsisUpdater(options) //Windows const linux_autoUpdater = new AppImageUpdater(options) //Linux await win_autoUpdater.checkForUpdatesAndNotify() @@ -697,7 +697,7 @@ export class BrowserWindow { event.returnValue = true } }) - +*/ ipcMain.on('share-menu', async (_event, url) => { if (process.platform != 'darwin') return; diff --git a/src/main/base/store.ts b/src/main/base/store.ts index 0e9267f0..26629f9d 100644 --- a/src/main/base/store.ts +++ b/src/main/base/store.ts @@ -12,7 +12,7 @@ export class Store { "discord_rpc_clear_on_pause": true, "language": "en_US", // electron.app.getLocale().replace('-', '_') this can be used in future "playbackNotifications": true, - "update_branch": "main" + "update_branch": "innolab" }, "home": { "followedArtists": [], @@ -36,6 +36,8 @@ export class Store { "normalization": false, "ciderPPE": false, "ciderPPE_value": 0.5, + "analogWarmth": false, + "analogWarmth_value": 1.25, "spatial": false, "spatial_properties": { "presets": [], diff --git a/src/renderer/audio/CiderSpatial_Conv.wav b/src/renderer/audio/CiderSpatial_Conv.wav new file mode 100644 index 00000000..06b2551e Binary files /dev/null and b/src/renderer/audio/CiderSpatial_Conv.wav differ diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index 8dbaccac..1d21644e 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -8,7 +8,8 @@ var CiderAudio = { audioBands : null, vibrantbassNode: null, llpw: null, - llpwEnabled: null + llpwEnabled: null, + analogWarmth: null }, init: function (cb = function () { }) { //AudioOutputs.fInit = true; @@ -29,6 +30,9 @@ var CiderAudio = { CiderAudio.audioNodes.gainNode.disconnect(); } catch(e){} try{ CiderAudio.audioNodes.spatialNode.disconnect();} catch(e){} try{ + for (var i of CiderAudio.audioNodes.analogWarmth){ + i.disconnect(); + } for (var i of CiderAudio.audioNodes.llpw){ i.disconnect(); } @@ -47,7 +51,8 @@ var CiderAudio = { audioBands : null, vibrantbassNode: null, llpw: null, - llpwEnabled: null + llpwEnabled: null, + analogWarmth: null } } catch (e) {} CiderAudio.source.connect(CiderAudio.context.destination);} catch(e){} @@ -74,9 +79,13 @@ var CiderAudio = { normalizerOff: function (){ CiderAudio.audioNodes.gainNode.gain.setTargetAtTime(1, CiderAudio.context.currentTime+ 1, 0.5); }, + spatialOn: function (){ + + + /** CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context); - //CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.context.destination); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.context.destination); let roomDimensions = { width: 32, height: 12, @@ -91,9 +100,17 @@ var CiderAudio = { down: 'acoustic-ceiling-tiles', up: 'acoustic-ceiling-tiles', }; - CiderAudio.audioNodes.spatialNode.setRoomProperties(roomDimensions, roomMaterials); - CiderAudio.audioNodes.spatialInput = CiderAudio.audioNodes.spatialNode.createSource(); - CiderAudio.hierarchical_loading(); + CiderAudio.audioNodes.spatialNode.setRoomProperties(roomDimensions, roomMaterials);*/ + + CiderAudio.audioNodes.spatialNode = CiderAudio.context.createConvolver(); + + fetch('./audio/CiderSpatial_Conv.wav').then(async (impulseData) => { + let bufferedImpulse = await impulseData.arrayBuffer(); + CiderAudio.audioNodes.spatialNode.buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse); + + }); + CiderAudio.audioNodes.spatialNode.normalize = true; + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.context.destination); }, spatialOff: function (){ CiderAudio.hierarchical_loading(); @@ -113,6 +130,44 @@ var CiderAudio = { ); } }, + analogWarmth_h2_3: function (status, hierarchy){ + if (status === true) { // 23 Band Adjustment + let WARMTH_FREQUENCIES = [10.513, 15.756, 224.01, 677.77, 1245.4, 2326.8, 2847.3, 4215.3, 11057, 12793, 16235, 16235, 17838, 18112, 18112, 19326, 19372, 19372, 20061, 20280, 20280, 20853, 22276]; + let WARMTH_GAIN = [-4.81, 0.74, 0.55, -0.84, -1.52, 0.84, 0.66, -0.29, 0.29, 0.94, 1.67, 1.62, -0.53, -0.81, -4.98, 1.43, 0.86, 1.13, -1.06, -0.95, -1.13, 1.78, -3.86]; + let WARMTH_Q = [0.442, 3.536, 2.102, 8.409, 0.625, 16.82, 5, 2.973, 3.536, 2.5, 2.5, 11.89, 0.625, 1.487, 1.153, 5, 5.453, 5, 2.973, 3.386, 3.386, 14.14, 8.409]; + CiderAudio.audioNodes.analogWarmth = [] + + + for (i = 0; i < WARMTH_FREQUENCIES.length; i++) { + CiderAudio.audioNodes.analogWarmth[i] = CiderAudio.context.createBiquadFilter(); + CiderAudio.audioNodes.analogWarmth[i].type = 'peaking'; // 'peaking'; + CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i]; + CiderAudio.audioNodes.analogWarmth[i].Q.value = WARMTH_Q[i]; + CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * app.cfg.audio.analogWarmth_value; + } + + for (i = 1; i < WARMTH_FREQUENCIES.length; i ++) { + CiderAudio.audioNodes.analogWarmth[i-1].connect(CiderAudio.audioNodes.analogWarmth[i]); + } + + switch (hierarchy) { + case 3: + try{ + CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.llpw[0]);} catch(e){} + break; + case 2: + try{ + CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);} catch(e){} + break; + case 1: + try{ + CiderAudio.audioNodes.analogWarmth[WARMTH_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.audioBands[0]);} catch(e){} + break; + } + + + } + }, llpw_h2_2: function (status, hierarchy){ if (status === true) { let LLPW_Q = [5, 1, 3.536, 1.25, 8.409, 1.25, 14.14, 7.071, 5, 0.625, 16.82, 20, 20, 20, 28.28, 28.28, 28.28, 20, 33.64, 33.64, 10, 28.28, 7.071, 3.856]; @@ -131,13 +186,17 @@ var CiderAudio = { for (i = 1; i < LLPW_FREQUENCIES.length; i ++) { CiderAudio.audioNodes.llpw[i-1].connect(CiderAudio.audioNodes.llpw[i]); } - if (hierarchy === 2) { - try{ - CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);} catch(e){}} - else if (hierarchy === 1) { - try{ - CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.audioBands[0]);} catch(e){}} + switch (hierarchy) { + case 2: + try{ + CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);} catch(e){} + break; + case 1: + try{CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.audioBands[0]);} catch(e){} + break; + + } } }, @@ -165,8 +224,9 @@ var CiderAudio = { }, hierarchical_unloading: function (){ - try {CiderAudio.audioNodes.spatialNode.output.disconnect();} catch(e){} + try {CiderAudio.audioNodes.spatialNode.disconnect();} catch(e){} try {CiderAudio.audioNodes.gainNode.disconnect();} catch(e){} + try {for (var i of CiderAudio.audioNodes.analogWarmth){i.disconnect();} CiderAudio.audioNodes.analogWarmth = []} catch(e){} try {for (var i of CiderAudio.audioNodes.llpw){i.disconnect();} CiderAudio.audioNodes.llpw = []} catch(e){} try {for (var i of CiderAudio.audioNodes.vibrantbassNode){i.disconnect();} CiderAudio.audioNodes.vibrantbassNode = []} catch(e){} @@ -175,45 +235,155 @@ var CiderAudio = { }, hierarchical_loading: function (){ CiderAudio.hierarchical_unloading(); - if (app.cfg.audio.vibrantBass.multiplier !== 0) { // If vibrant bass is enabled - if (app.cfg.advanced.ciderPPE) { // If CAP & vibrant bass is enabled - CiderAudio.vibrantbass_h2_1(true) - if (app.cfg.audio.spatial) { - app.cfg.advanced.ciderPPE = false; - notyf.error(app.getLz('settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility')); - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.vibrantbassNode[0]); - } - else {CiderAudio.llpw_h2_2(true, 2); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]);} + + // Vibrant Bass, CAP, Analog Warmth, Spatial + if (app.cfg.audio.vibrantBass.multiplier !== 0 && + app.cfg.advanced.ciderPPE === true && + app.cfg.audio.spatial === true && + app.cfg.audio.analogWarmth === true) { + + CiderAudio.vibrantbass_h2_1(true) + CiderAudio.llpw_h2_2(true, 2); + CiderAudio.analogWarmth_h2_3(true, 3); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.log('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Spatial') } - else { // If only vibrant bass is enabled - CiderAudio.vibrantbass_h2_1(true) - //CiderAudio.llpw_h2_2(false, 0) - if (app.cfg.audio.spatial) { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.vibrantbassNode[0]);} - else {CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]);} - } + // Vibrant Bass, CAP, Spatial + else if (app.cfg.audio.vibrantBass.multiplier !== 0 && + app.cfg.advanced.ciderPPE === true && + app.cfg.audio.spatial === true && + app.cfg.audio.analogWarmth === false) { + + CiderAudio.vibrantbass_h2_1(true) + CiderAudio.llpw_h2_2(true, 2); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]); + console.log('[Cider][Audio] Vibrant Bass, CAP, Spatial') } - else { // If vibrant bass is disabled - if (app.cfg.advanced.ciderPPE) { // If CAP is enabled & vibrant bass is disabled - //CiderAudio.vibrantbass_h2_1(false) - if (app.cfg.audio.spatial) { - app.cfg.advanced.ciderPPE = false; - notyf.error(app.getLz('settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility')); - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.audioBands[0]); - } - else {CiderAudio.llpw_h2_2(true, 1); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]);} - } - else { // If CAP & vibrant bass is disabled - //CiderAudio.vibrantbass_h2_1(false) - //CiderAudio.llpw_h2_2(false, 0) - if (app.cfg.audio.spatial) { - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.audioBands[0]);} - else {CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]);} - } + // Vibrant Bass, CAP, Analog Warmth + else if (app.cfg.audio.vibrantBass.multiplier !== 0 && + app.cfg.advanced.ciderPPE === true && + app.cfg.audio.spatial === false && + app.cfg.audio.analogWarmth === true) { + + CiderAudio.vibrantbass_h2_1(true) + CiderAudio.llpw_h2_2(true, 2); + CiderAudio.analogWarmth_h2_3(true, 3); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.log('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth') + } + // CAP, Spatial + else if (app.cfg.audio.vibrantBass.multiplier === 0 && + app.cfg.advanced.ciderPPE === true && + app.cfg.audio.spatial === true && + app.cfg.audio.analogWarmth === false) { + + CiderAudio.llpw_h2_2(true, 1); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]); + console.log('[Cider][Audio] CAP, Spatial') + } + // Analog Warmth, Spatial + else if (app.cfg.audio.vibrantBass.multiplier === 0 && + app.cfg.advanced.ciderPPE === false && + app.cfg.audio.spatial === true && + app.cfg.audio.analogWarmth === true) { + + CCiderAudio.analogWarmth_h2_3(true, 1); + //CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.log('[Cider][Audio] Analog Warmth, Spatial') + } + // CAP, Analog Warmth + else if (app.cfg.audio.vibrantBass.multiplier === 0 && + app.cfg.advanced.ciderPPE === true && + app.cfg.audio.spatial === false && + app.cfg.audio.analogWarmth === true) { + + CiderAudio.llpw_h2_2(true, 1); + CiderAudio.analogWarmth_h2_3(true, 3); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.log('[Cider][Audio] CAP and Analog Warmth') + } + // Vibrant Bass, Analog Warmth + else if (app.cfg.audio.vibrantBass.multiplier !== 0 && + app.cfg.advanced.ciderPPE === false && + app.cfg.audio.spatial === false && + app.cfg.audio.analogWarmth === true) { + + CiderAudio.vibrantbass_h2_1(true) + CiderAudio.analogWarmth_h2_3(true, 2); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.log('[Cider][Audio] Vibrant Bass, Analog Warmth') + } + + // Vibrant Bass, CAP + else if (app.cfg.audio.vibrantBass.multiplier !== 0 && + app.cfg.advanced.ciderPPE === true && + app.cfg.audio.spatial === false && + app.cfg.audio.analogWarmth === false) { + + CiderAudio.vibrantbass_h2_1(true) + CiderAudio.llpw_h2_2(true, 2); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); + console.log('[Cider][Audio] Vibrant Bass, CAP') + } + // Vibrant Bass, Spatial + else if (app.cfg.audio.vibrantBass.multiplier !== 0 && + app.cfg.advanced.ciderPPE === false && + app.cfg.audio.spatial === true && + app.cfg.audio.analogWarmth === false) { + + CiderAudio.vibrantbass_h2_1(true) + //CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); + console.log('[Cider][Audio] Vibrant Bass, Spatial') + } + // Vibrant Bass + else if (app.cfg.audio.vibrantBass.multiplier !== 0 && + app.cfg.advanced.ciderPPE === false && + app.cfg.audio.spatial === false && + app.cfg.audio.analogWarmth === false) { + CiderAudio.vibrantbass_h2_1(true) + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); + console.log('[Cider][Audio] Vibrant Bass') + } + // CAP + else if (app.cfg.audio.vibrantBass.multiplier === 0 && + app.cfg.advanced.ciderPPE === true && + app.cfg.audio.spatial === false && + app.cfg.audio.analogWarmth === false) { + CiderAudio.llpw_h2_2(true, 1); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); + console.log('[Cider][Audio] CAP') + } + // Analog Warmth + else if (app.cfg.audio.vibrantBass.multiplier === 0 && + app.cfg.advanced.ciderPPE === false && + app.cfg.audio.spatial === false && + app.cfg.audio.analogWarmth === true) { + CiderAudio.analogWarmth_h2_3(true, 1); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); + console.log('[Cider][Audio] Analog Warmth') + } + // Spatial + else if (app.cfg.audio.vibrantBass.multiplier === 0 && + app.cfg.advanced.ciderPPE === false && + app.cfg.audio.spatial === true && + app.cfg.audio.analogWarmth === false){ + //CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); + CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.audioBands[0]); + console.log('[Cider][Audio] Spatial') + + } + // Nothing + else { + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]); + console.log('[Cider][Audio] Nothing') // If CAP & vibrant bass is disabled } console.log("[Cider][Audio] Finished hierarchical loading"); diff --git a/src/renderer/index.js b/src/renderer/index.js index a08eeb2d..fa9cc246 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -3689,9 +3689,6 @@ const app = new Vue({ closeWindow() { ipcRenderer.send('close'); }, - checkForUpdate() { - ipcRenderer.send('check-for-update') - }, darwinShare(url) { ipcRenderer.send('share-menu', url) }, diff --git a/src/renderer/less/pages.less b/src/renderer/less/pages.less index 013a4d72..561433a8 100644 --- a/src/renderer/less/pages.less +++ b/src/renderer/less/pages.less @@ -948,7 +948,6 @@ object-fit: cover; } } - .top-genres-container { .genre-name { diff --git a/src/renderer/views/components/equalizer.ejs b/src/renderer/views/components/equalizer.ejs index 68cf40ac..fa1c9945 100644 --- a/src/renderer/views/components/equalizer.ejs +++ b/src/renderer/views/components/equalizer.ejs @@ -147,11 +147,11 @@ 'vibrantBass': 0, 'userGenerated': false }, { - 'preset': 'boostBrightness', - 'name': 'Boost Brightness', - 'frequencies': [32, 63, 125, 250, 466, 1000, 2000, 4000, 8000, 20000], - 'gain': [0, 0, 0, 0, -2, 0, 0, 0, 0, 10], - 'Q': [1, 1, 1, 1, 0.6, 1, 1, 1, 1, 0.1], + 'preset': 'boostAiriness', + 'name': 'Boost Airiness', + 'frequencies': [1169, 1733, 5962, 8688, 14125, 18628, 18628, 19000, 19500, 20000], + 'gain': [-1.41, 0.25, 3.33, 0.22, -0.53, 0.2, 3.64, 0, 0, 0], + 'Q': [0.405, 2.102, 0.025, 2.5, 7.071, 1.768, 1.146, 1, 1, 1], 'mix': 1, 'vibrantBass': 0, 'userGenerated': false @@ -201,16 +201,6 @@ 'vibrantBass': 0, 'userGenerated': false }, - { - 'preset': 'bassBoostGentle', - 'name': 'Gentle Bass Boost', - 'frequencies': [45.53,88.06,116.18,161.3,247.05,295.6,365.79,495.13,716.85,960.76], - 'gain': [-0.36,4.07,-1.3,1.92,0.77,-0.53,-1.33,0.44,0.46,-0.5], - 'Q': [1.768,0.625,5,8.409,10,16.82,5.946,7.071,20,10], - 'mix': 1, - 'vibrantBass': 0, - 'userGenerated': false - }, { 'preset': 'bassBoostSurgical', 'name': 'Surgical Bass Boost', diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index 5c51f5ab..d9c6ea7b 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -78,7 +78,7 @@ {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE.description')}}
- +
@@ -96,6 +96,31 @@
+
+
+ Analog Warmth +
+ Simulates the analog warmth modelled after the Korg Nutube 6P1 +
+
+ +
+
+
+
+ Analog Warmth Intensity +
+ Changes the intensity of the Analog Warmth Module processing. +
+
+ + +
+
{{$root.getLz('term.equalizer')}} @@ -124,7 +149,7 @@ {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description')}}
- +
@@ -846,6 +871,7 @@ } if (app.cfg.audio.spatial) { CiderAudio.spatialOn() + CiderAudio.hierarchical_loading(); } } else { app.cfg.advanced.ciderPPE = false; @@ -861,13 +887,14 @@ }, toggleSpatial: function () { if (app.cfg.audio.spatial) { - if (!app.cfg.advanced.ciderPPE) { - CiderAudio.spatialOn() - } - else { + if (app.cfg.advanced.ciderPPE === true) { CiderAudio.spatialOff() app.cfg.audio.spatial = false; - notyf.error(app.getLz('settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility')) + notyf.error(app.getLz('settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility')) + } + else { + CiderAudio.spatialOn() + CiderAudio.hierarchical_loading(); } } else { CiderAudio.spatialOff()