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 @@
}
+