'Spatialization'

i repeat this aint Atmos
This commit is contained in:
vapormusic 2021-12-30 13:42:23 +07:00
parent 691a592d8c
commit acf66945c3
4 changed files with 57 additions and 2 deletions

View file

@ -23,6 +23,7 @@ const configSchema = {
"quality": "990", "quality": "990",
"seamless_audio": true, "seamless_audio": true,
"normalization": false, "normalization": false,
"spatial" : false,
}, },
"visual": { "visual": {
"theme": "", "theme": "",

View file

@ -3,7 +3,8 @@ var CiderAudio = {
source : null, source : null,
audioNodes : { audioNodes : {
gainNode : null, gainNode : null,
compressorNode : null, spatialNode : null,
spatialInput: null,
}, },
init: function (cb = function () { }) { init: function (cb = function () { }) {
//AudioOutputs.fInit = true; //AudioOutputs.fInit = true;
@ -21,6 +22,7 @@ var CiderAudio = {
off: function(){ off: function(){
try{ try{
CiderAudio.audioNodes.gainNode.disconnect(); CiderAudio.audioNodes.gainNode.disconnect();
CiderAudio.audioNodes.spatialNode.disconnect();
CiderAudio.source.connect(CiderAudio.context.destination);} catch(e){} CiderAudio.source.connect(CiderAudio.context.destination);} catch(e){}
}, },
connectContext: function (mediaElem){ connectContext: function (mediaElem){
@ -37,10 +39,44 @@ var CiderAudio = {
if(app.cfg.audio.normalization){ if(app.cfg.audio.normalization){
CiderAudio.normalizerOn() CiderAudio.normalizerOn()
} }
if (app.cfg.audio.spatial){
CiderAudio.spatialOn()
}
}, },
normalizerOn: function (){}, normalizerOn: function (){},
normalizerOff: function (){ normalizerOff: function (){
CiderAudio.audioNodes.gainNode.gain.setTargetAtTime(1, CiderAudio.context.currentTime+ 1, 0.5); 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);
} }
} }

View file

@ -594,6 +594,7 @@
} }
</script> </script>
<script src="index.js?v=1"></script> <script src="index.js?v=1"></script>
<script src="https://cdn.jsdelivr.net/npm/resonance-audio/build/resonance-audio.min.js"></script>
<script src="/audio/audio.js?v=1"></script> <script src="/audio/audio.js?v=1"></script>
</body> </body>
</html> </html>

View file

@ -27,7 +27,7 @@
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Enable AudioContext Functionality Enable Advanced Functionality
<br> <br>
<small>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.</small> <small>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.</small>
</div> </div>
@ -43,6 +43,16 @@
<input type="checkbox" v-model="app.cfg.audio.normalization" v-on:change="toggleNormalization" switch/> <input type="checkbox" v-model="app.cfg.audio.normalization" v-on:change="toggleNormalization" switch/>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
<div class="md-option-segment" >
Audio Spatialization
<br>
<small>Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.spatial" v-on:change="toggleSpatial" switch/>
</div>
</div>
<div class="md-option-header"> <div class="md-option-header">
<span>Visual</span> <span>Visual</span>
</div> </div>
@ -560,6 +570,8 @@
CiderAudio.init(); CiderAudio.init();
if (app.cfg.audio.normalization){ if (app.cfg.audio.normalization){
CiderAudio.normalizerOn()} CiderAudio.normalizerOn()}
if (app.cfg.audio.spatial){
CiderAudio.spatialOn()}
} else { } else {
CiderAudio.off(); CiderAudio.off();
} }
@ -569,6 +581,11 @@
CiderAudio.normalizerOn() CiderAudio.normalizerOn()
} else {CiderAudio.normalizerOff()} } else {CiderAudio.normalizerOff()}
}, },
toggleSpatial : function(){
if (app.cfg.audio.spatial){
CiderAudio.spatialOn()
} else {CiderAudio.spatialOff()}
},
changeAudioQuality : function(){ changeAudioQuality : function(){
app.mk.bitrate = app.cfg.audio.quality app.mk.bitrate = app.cfg.audio.quality
} }