From acf66945c38bad5dbdb734763320a80116170a24 Mon Sep 17 00:00:00 2001 From: vapormusic Date: Thu, 30 Dec 2021 13:42:23 +0700 Subject: [PATCH] 'Spatialization' i repeat this aint Atmos --- index.js | 1 + src/renderer/audio/audio.js | 38 ++++++++++++++++++++++++++- src/renderer/views/main.ejs | 1 + src/renderer/views/pages/settings.ejs | 19 +++++++++++++- 4 files changed, 57 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index ffe470e0..5abb3eb4 100644 --- a/index.js +++ b/index.js @@ -23,6 +23,7 @@ const configSchema = { "quality": "990", "seamless_audio": true, "normalization": false, + "spatial" : false, }, "visual": { "theme": "", diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index cffb98a6..1c8f8bf1 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -3,7 +3,8 @@ var CiderAudio = { source : null, audioNodes : { gainNode : null, - compressorNode : null, + spatialNode : null, + spatialInput: null, }, init: function (cb = function () { }) { //AudioOutputs.fInit = true; @@ -21,6 +22,7 @@ var CiderAudio = { off: function(){ try{ CiderAudio.audioNodes.gainNode.disconnect(); + CiderAudio.audioNodes.spatialNode.disconnect(); CiderAudio.source.connect(CiderAudio.context.destination);} catch(e){} }, connectContext: function (mediaElem){ @@ -37,10 +39,44 @@ var CiderAudio = { if(app.cfg.audio.normalization){ CiderAudio.normalizerOn() } + if (app.cfg.audio.spatial){ + CiderAudio.spatialOn() + } }, normalizerOn: function (){}, normalizerOff: function (){ CiderAudio.audioNodes.gainNode.gain.setTargetAtTime(1, CiderAudio.context.currentTime+ 1, 0.5); + }, + spatialOn: function (){ + try{ + CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination);} catch(e){} + CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.context.destination); + let roomDimensions = { + width: 5, + height: 6, + depth: 4, + }; + let roomMaterials = { + // Room wall materials + left: 'acoustic-ceiling-tiles', + right: 'acoustic-ceiling-tiles', + front: 'glass-thin', + back: 'plywood-panel', + // Room floor + down: 'grass', + // Room ceiling + up: 'acoustic-ceiling-tiles', + }; + CiderAudio.audioNodes.spatialNode.setRoomProperties(roomDimensions, roomMaterials); + CiderAudio.audioNodes.spatialInput = CiderAudio.audioNodes.spatialNode.createSource(); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); + }, + spatialOff: function (){ + try{ + CiderAudio.audioNodes.spatialNode.output.disconnect(CiderAudio.context.destination); + CiderAudio.audioNodes.gainNode.disconnect(CiderAudio.audioNodes.spatialInput.input);} catch(e){} + CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination); } } diff --git a/src/renderer/views/main.ejs b/src/renderer/views/main.ejs index eebe525f..89c1d80f 100644 --- a/src/renderer/views/main.ejs +++ b/src/renderer/views/main.ejs @@ -594,6 +594,7 @@ } + \ No newline at end of file diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index dcf49aad..66f6d3af 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -27,7 +27,7 @@
- Enable AudioContext Functionality + Enable Advanced Functionality
Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.
@@ -43,6 +43,16 @@
+
+
+ Audio Spatialization +
+ Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos) +
+
+ +
+
Visual
@@ -560,6 +570,8 @@ CiderAudio.init(); if (app.cfg.audio.normalization){ CiderAudio.normalizerOn()} + if (app.cfg.audio.spatial){ + CiderAudio.spatialOn()} } else { CiderAudio.off(); } @@ -569,6 +581,11 @@ CiderAudio.normalizerOn() } else {CiderAudio.normalizerOff()} }, + toggleSpatial : function(){ + if (app.cfg.audio.spatial){ + CiderAudio.spatialOn() + } else {CiderAudio.spatialOff()} + }, changeAudioQuality : function(){ app.mk.bitrate = app.cfg.audio.quality }