backport audio fixes

This commit is contained in:
Maikiwi 2022-03-08 21:36:43 -08:00
parent df2f7b7216
commit bc43d742ff
2 changed files with 26 additions and 31 deletions

View file

@ -67,14 +67,14 @@ const CiderAudio = {
} else {try{CiderAudio.source.disconnect(CiderAudio.context.destination)}catch(e){}} } else {try{CiderAudio.source.disconnect(CiderAudio.context.destination)}catch(e){}}
CiderAudio.audioNodes.gainNode = CiderAudio.context.createGain() CiderAudio.audioNodes.gainNode = CiderAudio.context.createGain()
CiderAudio.source.connect(CiderAudio.audioNodes.gainNode); CiderAudio.source.connect(CiderAudio.audioNodes.gainNode);
CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination);
if(app.cfg.audio.normalization){ if(app.cfg.audio.normalization){
CiderAudio.normalizerOn() CiderAudio.normalizerOn()
} }
if (app.cfg.audio.spatial){ if (app.cfg.audio.spatial){
CiderAudio.spatialOn() CiderAudio.spatialOn()
} }
CiderAudio.equalizer() CiderAudio.equalizer();
CiderAudio.hierarchical_loading();
}, },
normalizerOn: function (){ normalizerOn: function (){
}, },
@ -108,15 +108,11 @@ const CiderAudio = {
}); });
app.cfg.audio.maikiwiAudio.spatialType = 0; app.cfg.audio.maikiwiAudio.spatialType = 0;
break; break;
} }
CiderAudio.audioNodes.spatialNode.connect(CiderAudio.context.destination);
} }
else { else {
try{ CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context);
CiderAudio.audioNodes.gainNode.disconnect(CiderAudio.context.destination);} catch(e){}
CiderAudio.audioNodes.spatialNode = new ResonanceAudio(CiderAudio.context);
CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.context.destination);
let roomDimensions = { let roomDimensions = {
width: 32, width: 32,
height: 12, height: 12,
@ -134,7 +130,7 @@ const CiderAudio = {
CiderAudio.audioNodes.spatialNode.setRoomProperties(roomDimensions, roomMaterials); CiderAudio.audioNodes.spatialNode.setRoomProperties(roomDimensions, roomMaterials);
CiderAudio.audioNodes.spatialInput = CiderAudio.audioNodes.spatialNode.createSource(); CiderAudio.audioNodes.spatialInput = CiderAudio.audioNodes.spatialNode.createSource();
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);} CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input);}
}, },
spatialOff: function (){ spatialOff: function (){
CiderAudio.hierarchical_loading(); CiderAudio.hierarchical_loading();
}, },
@ -643,13 +639,11 @@ const CiderAudio = {
CiderAudio.audioNodes.audioBands[i].gain.value = GAIN[i] * app.cfg.audio.equalizer.mix; 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 ++) { for (let i = 1; i < BANDS.length; i ++) {
CiderAudio.audioNodes.audioBands[i-1].connect(CiderAudio.audioNodes.audioBands[i]); CiderAudio.audioNodes.audioBands[i-1].connect(CiderAudio.audioNodes.audioBands[i]);
} }
CiderAudio.audioNodes.audioBands[BANDS.length-1].connect(CiderAudio.context.destination); CiderAudio.audioNodes.audioBands[BANDS.length-1].connect(CiderAudio.context.destination);
} }
} }

View file

@ -70,7 +70,7 @@
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.spatial" v-on:change="toggleSpatial" switch/> <input type="checkbox" v-model="app.cfg.audio.spatial" :disabled="app.cfg.audio.maikiwiAudio.spatial === true" v-on:change="toggleSpatial" switch/>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true"> <div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
@ -80,7 +80,7 @@
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.spatial" :disabled="app.cfg.audio.spatial === false" v-on:change="toggleSpatial" switch/> <input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.spatial" :disabled="app.cfg.audio.spatial === false" v-on:change="toggleMaikiwiSpatial" switch/>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.audio.maikiwiAudio.spatial === true && app.cfg.audio.spatial === true"> <div class="md-option-line" v-show="app.cfg.audio.maikiwiAudio.spatial === true && app.cfg.audio.spatial === true">
@ -169,26 +169,27 @@
methods: { methods: {
toggleSpatial: function () { toggleSpatial: function () {
if (app.cfg.audio.spatial) { if (app.cfg.audio.spatial) {
if (app.cfg.audio.maikiwiAudio.spatial === false) { CiderAudio.spatialOn()
if (app.mk.volume - 0.2512 > 0) {app.mk.volume -= 0.2512} CiderAudio.hierarchical_loading();
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}
}
} }
else { 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() 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 () { ciderPPEStandard: function () {
app.cfg.audio.maikiwiAudio.ciderPPE_value = 0.5; app.cfg.audio.maikiwiAudio.ciderPPE_value = 0.5;