From bc43d742ff89fc46a76cdaa7f1432258e6f95f5c Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Tue, 8 Mar 2022 21:36:43 -0800 Subject: [PATCH] backport audio fixes --- src/renderer/audio/audio.js | 20 +++++--------- src/renderer/views/pages/audiolabs.ejs | 37 +++++++++++++------------- 2 files changed, 26 insertions(+), 31 deletions(-) diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index 34740568..6252840e 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -67,14 +67,14 @@ const CiderAudio = { } else {try{CiderAudio.source.disconnect(CiderAudio.context.destination)}catch(e){}} CiderAudio.audioNodes.gainNode = CiderAudio.context.createGain() CiderAudio.source.connect(CiderAudio.audioNodes.gainNode); - CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination); if(app.cfg.audio.normalization){ CiderAudio.normalizerOn() } if (app.cfg.audio.spatial){ CiderAudio.spatialOn() } - CiderAudio.equalizer() + CiderAudio.equalizer(); + CiderAudio.hierarchical_loading(); }, normalizerOn: function (){ }, @@ -108,15 +108,11 @@ const CiderAudio = { }); app.cfg.audio.maikiwiAudio.spatialType = 0; - break; - } - CiderAudio.audioNodes.spatialNode.connect(CiderAudio.context.destination); + break; + } } else { - try{ - CiderAudio.audioNodes.gainNode.disconnect(CiderAudio.context.destination);} catch(e){} - CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context); - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.context.destination); + CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context); let roomDimensions = { width: 32, height: 12, @@ -134,7 +130,7 @@ const CiderAudio = { CiderAudio.audioNodes.spatialNode.setRoomProperties(roomDimensions, roomMaterials); CiderAudio.audioNodes.spatialInput = CiderAudio.audioNodes.spatialNode.createSource(); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);} - }, + }, spatialOff: function (){ CiderAudio.hierarchical_loading(); }, @@ -643,13 +639,11 @@ const CiderAudio = { CiderAudio.audioNodes.audioBands[i].gain.value = GAIN[i] * app.cfg.audio.equalizer.mix; } - // Dynamic-ish loading - CiderAudio.hierarchical_loading(); - for (let i = 1; i < BANDS.length; i ++) { CiderAudio.audioNodes.audioBands[i-1].connect(CiderAudio.audioNodes.audioBands[i]); } CiderAudio.audioNodes.audioBands[BANDS.length-1].connect(CiderAudio.context.destination); + } } diff --git a/src/renderer/views/pages/audiolabs.ejs b/src/renderer/views/pages/audiolabs.ejs index 21b2a6c1..abeb7d07 100644 --- a/src/renderer/views/pages/audiolabs.ejs +++ b/src/renderer/views/pages/audiolabs.ejs @@ -70,7 +70,7 @@ {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description')}}
- +
@@ -80,7 +80,7 @@ {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description')}}
- +
@@ -169,26 +169,27 @@ methods: { toggleSpatial: function () { if (app.cfg.audio.spatial) { - if (app.cfg.audio.maikiwiAudio.spatial === false) { - if (app.mk.volume - 0.2512 > 0) {app.mk.volume -= 0.2512} - else {app.mk.volume = 0.0001} - } - CiderAudio.spatialOn() - CiderAudio.hierarchical_loading(); - if (app.cfg.audio.maikiwiAudio.spatial === true) { - if (app.mk.volume + 0.2512 < 1) {app.mk.volume += 0.2512} - else {app.mk.volume = 1} - } + CiderAudio.spatialOn() + CiderAudio.hierarchical_loading(); } else { - if (app.cfg.audio.maikiwiAudio.spatial === true) { - if (app.mk.volume - 0.2512 > 0) {app.mk.volume -= 0.2512} - else {app.mk.volume = 0.0001} - } - app.cfg.audio.maikiwiAudio.spatial = false; CiderAudio.spatialOff() } - + }, + 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) + 12) / 20)); + if (normalized > 1.0) {app.mk.volume = 1} + else {app.mk.volume = normalized} + } + else { + let normalized = Math.pow(10, (((Math.log10(app.mk.volume) * 20) - 12) / 20)); + app.mk.volume = normalized + CiderAudio.spatialOn() + CiderAudio.hierarchical_loading(); + } }, ciderPPEStandard: function () { app.cfg.audio.maikiwiAudio.ciderPPE_value = 0.5;